|
libFAUDES
Sections
Index
|
faudes::TypeRegistry Class Reference
|
Public Types | |
typedef std::map< std::string, TypeDefinition * > ::const_iterator | Iterator |
Convenience typedef to access registry entries. | |
Public Member Functions | |
void | Clear () |
Clear all registered type definitions. | |
void | ClearAll () |
Clear all registered type definitions. | |
int | Size () const |
Return number of registered type definitions. | |
bool | Exists (const std::string &rName) const |
Test existence of a faudes-type by its name. | |
bool | Exists (const Type &rType) const |
Test existence of a faudes-type by faudes object. | |
Iterator | Begin (void) const |
STL interator to the internal type-name map. | |
Iterator | End (void) const |
STL interator to the internal type-name map. | |
void | Insert (TypeDefinition *pTypeDef) |
Add another type definition to the registry. | |
template<class T > | |
void | Insert (const std::string &rTypeName="") |
Register a faudes-type with specified type name. | |
void | Insert (Type *pProto, const std::string &rTypeName) |
Register a faudes-type with specified type name. | |
void | MergeDocumentation (TokenReader &rTr) |
Scan token input for type documentation. | |
void | MergeDocumentation (const std::string &rFileName) |
Scan file for type documentation. | |
void | XElementTag (const std::string &rTypeName, const std::string &rTag) |
Set Xml element tag for given faudes-type. | |
const std::string & | XElementTag (const std::string &rTypeName) const |
Get Xml element tag for given faudes-type. | |
bool | AutoRegister (const std::string &rTypeName) const |
Get AutoRegister flag for given faudes-type. | |
void | AutoRegister (const std::string &rTypeName, bool flag) |
Set AutoRegister flag for given faudes-type. | |
Type * | NewObject (const std::string &rTypeName) const |
Construct a faudes object by type name. | |
Type * | NewObject (const Type &rType) const |
Construct a faudes object by prototype object. | |
const TypeDefinition & | Definition (const std::string &rTypeName) const |
Look up the type definition by faudes-type name. | |
const TypeDefinition & | Definition (const Type &rType) const |
Look up the type definition by faudes object. | |
const TypeDefinition * | Definitionp (const std::string &rTypeName) const |
Look up the type definition by faudes-type name. | |
const TypeDefinition * | Definitionp (const Type &rType) const |
Look up the type definition by faudes object. | |
const Type * | Prototype (const std::string &rTypeName) const |
Look up the prototype object by faudes-type name. | |
const std::string & | TypeName (const Type &rType) const |
Look up the type name by faudes object. | |
Static Public Member Functions | |
static TypeRegistry * | G () |
Method to access the single global instance of the registry. | |
Protected Types | |
typedef std::map< std::string, TypeDefinition * >::iterator | iterator |
Convenience typedef to access registry entries. | |
Protected Member Functions | |
virtual void | DoWrite (TokenWriter &rTw, const std::string &rLabel="", const Type *pContext=0) const |
Write registry data of this to TokenWriter. | |
TypeRegistry () | |
Constructor. | |
virtual | ~TypeRegistry () |
Destructor. | |
Protected Attributes | |
std::map< std::string, TypeDefinition * > | mNameToTypeDef |
Map to associate labels and faudes::TypeDefinitions. | |
std::map< std::string, TypeDefinition * > | mIdToTypeDef |
Static Protected Attributes | |
static TypeRegistry * | mpInstance = 0 |
Singleton instance. |
The TypeRegistry registers faudes-types.
A faudes-type may be any class derived from faudes::Type, e.g. EventSet and generator. The registry maintains a mapping from faudes-type names to registred faudes::TypeDefinition. It provides an interface to inspect TypeDefinitions or to construct faudes-type objects by their type name.
Technical note: the class is implemented according to the "Singleton" design pattern, ie, only one global instance of the registry can exist.
Definition at line 47 of file cfl_registry.h.
typedef std::map<std::string, TypeDefinition*>::iterator faudes::TypeRegistry::iterator [protected] |
Convenience typedef to access registry entries.
Definition at line 400 of file cfl_registry.h.
typedef std::map<std::string, TypeDefinition*>::const_iterator faudes::TypeRegistry::Iterator |
Convenience typedef to access registry entries.
Definition at line 52 of file cfl_registry.h.
faudes::TypeRegistry::TypeRegistry | ( | ) | [inline, protected] |
Constructor.
Definition at line 406 of file cfl_registry.h.
virtual faudes::TypeRegistry::~TypeRegistry | ( | ) | [inline, protected, virtual] |
Destructor.
Definition at line 409 of file cfl_registry.h.
void faudes::TypeRegistry::AutoRegister | ( | const std::string & | rTypeName, | |
bool | flag | |||
) |
Set AutoRegister flag for given faudes-type.
Access the AutoRegister flag of a type definition. The flag is true for entries with were instantiated by automatically by static constructor objects. AutoRegistered flags will not be cleared.
rTypeName | Name of faudes-type | |
rTag | New value of flag |
Definition at line 217 of file cfl_registry.cpp.
bool faudes::TypeRegistry::AutoRegister | ( | const std::string & | rTypeName | ) | const |
Get AutoRegister flag for given faudes-type.
Access the AutoRegister flag of a type definition. The flag is true for entries with were instantiated by automatically by static constructor objects. AutoRegistered flags will not be cleared.
rTypeName | Name of faudes-type |
Definition at line 227 of file cfl_registry.cpp.
TypeRegistry::Iterator faudes::TypeRegistry::Begin | ( | void | ) | const |
STL interator to the internal type-name map.
Definition at line 117 of file cfl_registry.cpp.
void faudes::TypeRegistry::Clear | ( | void | ) | [virtual] |
Clear all registered type definitions.
This will also delete the correponsing prototype objects. It will, however, not delete autoregistered registry entries.
Reimplemented from faudes::Type.
Definition at line 62 of file cfl_registry.cpp.
void faudes::TypeRegistry::ClearAll | ( | void | ) |
Clear all registered type definitions.
This will also delete the correponsing prototype objects. It will, however, not delete autoregistered registry entries.
Definition at line 96 of file cfl_registry.cpp.
const TypeDefinition & faudes::TypeRegistry::Definition | ( | const Type & | rType | ) | const |
Look up the type definition by faudes object.
rType | Reference to faudes::Type to search for. |
Exception |
|
Definition at line 278 of file cfl_registry.cpp.
const TypeDefinition & faudes::TypeRegistry::Definition | ( | const std::string & | rTypeName | ) | const |
Look up the type definition by faudes-type name.
rTypeName | Faudes-tyep name to search for. |
Exception |
|
Definition at line 266 of file cfl_registry.cpp.
const TypeDefinition * faudes::TypeRegistry::Definitionp | ( | const Type & | rType | ) | const |
Look up the type definition by faudes object.
rType | Reference to faudes::Type to search for. |
Definition at line 297 of file cfl_registry.cpp.
const TypeDefinition * faudes::TypeRegistry::Definitionp | ( | const std::string & | rTypeName | ) | const |
Look up the type definition by faudes-type name.
rTypeName | Faudes-tyep name to search for. |
Definition at line 289 of file cfl_registry.cpp.
void faudes::TypeRegistry::DoWrite | ( | TokenWriter & | rTw, | |
const std::string & | rLabel = "" , |
|||
const Type * | pContext = 0 | |||
) | const [protected, virtual] |
Write registry data of this to TokenWriter.
Since the registry cannot reconfigure itself from a token stream, this output is informative only. However, MergeDocumentation will accept the format to extract documentation.
rTw | Reference to TokenWriter | |
rLabel | Label of section to write | |
pContext | Write context to provide contextual information |
Exception |
|
Reimplemented from faudes::Type.
Definition at line 335 of file cfl_registry.cpp.
TypeRegistry::Iterator faudes::TypeRegistry::End | ( | void | ) | const |
STL interator to the internal type-name map.
Definition at line 122 of file cfl_registry.cpp.
bool faudes::TypeRegistry::Exists | ( | const Type & | rType | ) | const |
Test existence of a faudes-type by faudes object.
rType | Object of type to look up |
Definition at line 329 of file cfl_registry.cpp.
bool faudes::TypeRegistry::Exists | ( | const std::string & | rName | ) | const |
Test existence of a faudes-type by its name.
rName | Name of type to look up |
Definition at line 324 of file cfl_registry.cpp.
TypeRegistry * faudes::TypeRegistry::G | ( | void | ) | [static] |
Method to access the single global instance of the registry.
Definition at line 52 of file cfl_registry.cpp.
void faudes::TypeRegistry::Insert | ( | Type * | pProto, | |
const std::string & | rTypeName | |||
) | [inline] |
Register a faudes-type with specified type name.
This is a convenience function: it uses the specified object as a a prototype and registers it under the given name. The registry takes ownership of the prototype. However, no documentation is added. See also MergeDocumentation.
pProto | Prototype object | |
rTypeName | Specify the faudes-type name |
Exception |
|
Definition at line 172 of file cfl_registry.h.
void faudes::TypeRegistry::Insert | ( | const std::string & | rTypeName = "" |
) | [inline] |
Register a faudes-type with specified type name.
This is a convenience function: it uses the template parameter to construct the new instance of TypeDefinition to be registered. However, no documentation is added. See also MergeDocumentation.
T | Template parameter to specify c++ type to register |
rTypeName | Specify the faudes-type name |
Exception |
|
Definition at line 151 of file cfl_registry.h.
void faudes::TypeRegistry::Insert | ( | TypeDefinition * | pTypeDef | ) |
Add another type definition to the registry.
The registry takes the ownership pf the provided type definition. It will be deleted either in Clear() or when the registry is destructed. The insertion of an allready registered type is ignored as long as the ctype matches. If the ctype fails to match, an exception is thrown.
pTypeDef | Type definition to insert |
Exception |
|
Definition at line 127 of file cfl_registry.cpp.
void faudes::TypeRegistry::MergeDocumentation | ( | const std::string & | rFileName | ) |
Scan file for type documentation.
Convenience method, see also MergeDocumentation(TokenReader& rTr)
rFileName | Name of file to scan. |
Definition at line 194 of file cfl_registry.cpp.
void faudes::TypeRegistry::MergeDocumentation | ( | TokenReader & | rTr | ) |
Scan token input for type documentation.
This function scans the entire token stream for sections with label "TypeDefinition". Any such section that refers to a type name which is known to the registry, will be applied to the corresponding registry entry. Typical invokation is as follows
TypeRegistry::G()->Insert<EventSet>("EventSet"); TypeRegistry::G()->Insert<Generator>("Generator"); TypeRegistry::G()->MergeDocumentation("alldocufile.rti");
rTr | Token stream. |
Definition at line 166 of file cfl_registry.cpp.
Construct a faudes object by prototype object.
Depreciated: use new on the faudes object instead.
rType | Prototype object. |
Exception |
|
Definition at line 253 of file cfl_registry.cpp.
Type * faudes::TypeRegistry::NewObject | ( | const std::string & | rTypeName | ) | const |
Construct a faudes object by type name.
Uses the internal prototype object to construct an object of the same c type on the heap.
rTypeName | Label of TypeDefinition to search for. |
Exception |
|
Definition at line 235 of file cfl_registry.cpp.
const Type * faudes::TypeRegistry::Prototype | ( | const std::string & | rTypeName | ) | const |
Look up the prototype object by faudes-type name.
rTypeName | Label of faudes::TypeDefinition to search for. |
Definition at line 306 of file cfl_registry.cpp.
int faudes::TypeRegistry::Size | ( | void | ) | const |
Return number of registered type definitions.
Definition at line 112 of file cfl_registry.cpp.
const std::string & faudes::TypeRegistry::TypeName | ( | const Type & | rType | ) | const |
Look up the type name by faudes object.
rType | Reference to faudes::Type to search for. |
Definition at line 314 of file cfl_registry.cpp.
const std::string & faudes::TypeRegistry::XElementTag | ( | const std::string & | rTypeName | ) | const |
Get Xml element tag for given faudes-type.
Access to the XElementTag of a type definition. The latter is used for Xml token IO of sets and vectors. Unregistered types return the empty string.
rTypeName | Name of faudes-type |
Definition at line 208 of file cfl_registry.cpp.
void faudes::TypeRegistry::XElementTag | ( | const std::string & | rTypeName, | |
const std::string & | rTag | |||
) |
Set Xml element tag for given faudes-type.
Access to the XElementTag of a type definition. The latter is used for Xml token IO of sets and vectors. Unregistered types are silently ignored.
rTypeName | Name of faudes-type | |
rTag | New value of tag |
Definition at line 201 of file cfl_registry.cpp.
std::map<std::string, TypeDefinition*> faudes::TypeRegistry::mIdToTypeDef [protected] |
Definition at line 415 of file cfl_registry.h.
std::map<std::string, TypeDefinition*> faudes::TypeRegistry::mNameToTypeDef [protected] |
Map to associate labels and faudes::TypeDefinitions.
Definition at line 414 of file cfl_registry.h.
TypeRegistry * faudes::TypeRegistry::mpInstance = 0 [static, protected] |
Singleton instance.
Definition at line 403 of file cfl_registry.h.
libFAUDES 2.18b --- 2010-12-17 --- c++ source docu by doxygen 1.6.3