Show
Ignore:
Timestamp:
08/11/10 19:17:21 (22 months ago)
Author:
Carsten
Message:

Our libraries *declare* (module-)global pointers to implementations of their interfaces,
i.e. pointers that are available for convenient access from the entire exe or dll.

Some libraries also (erroneously) provided *definitions* for these pointer instances,
namely the ConsoleInterpreter, the MaterialManager and the SoundShaderManager.

These definitions have been removed (and moved into the application code instead).

This change makes all our libraries consistent, and linking them to an application or dll easier.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • cafu/branches/cafu_to_wx/Libs/MaterialSystem/MaterialManager.hpp

    r36 r113  
    8080 
    8181 
    82 /// A global pointer to the material manager that currently defaults to &MaterialManagerI::Get(). 
    83 /// This pointer should be used by all code (e.g. models) that potentially is included in a DLL and should share the common Material Manager 
    84 /// of another module (e.g. the main executable). As the DLL will during its initialization reset this pointer to the one provided by the 
    85 /// executable, this goal is thus automatically achieved. 
     82/// A global pointer to an implementation of the MaterialManagerI interface. 
     83/// 
     84/// Each module (exe or dll) that uses this pointer must somewhere provide exactly one definition for it (none is provided by the MatSys). 
     85/// That is, typically the main.cpp or similar file of each exe and dll must contain a line like 
     86///     MaterialManagerI* MaterialManager=NULL; 
     87/// or else the module will not link successfully due to an undefined symbol. 
     88/// 
     89/// Exe files will then want to reset this pointer to an instance of a MaterialManagerImplT during their initialization 
     90/// e.g. by code like:   MaterialManager=new MaterialManagerImplT; 
     91/// Note that the MaterialManagerImplT ctor may require that other interfaces (e.g. the Console) have been inited first. 
     92/// 
     93/// Dlls typically get one of their init functions called immediately after they have been loaded. 
     94/// By doing so, the exe passes a pointer to its above instance to the dll, which in turn copies it to its MaterialManager variable. 
    8695extern MaterialManagerI* MaterialManager; 
    8796