libFAUDES

Sections

Index

faudes::TypeRegistry Class Reference
[Run-Time Interface]

#include <rtiregistry.h>

Inherits faudes::Type.

List of all members.


Detailed Description

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 rtiregistry.h.


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.
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.
TypeNewObject (const std::string &rTypeName) const
 Construct a faudes object by type name.
TypeNewObject (const Type &rType) const
 Construct a faudes object by prototype object.
const TypeDefinitionDefinition (const std::string &rTypeName) const
 Look up the type definition by faudes-type name.
const TypeDefinitionDefinition (const Type &rType) const
 Look up the type definition by faudes object.
const std::string & TypeName (const Type &rType) const
 Look up the type name by faudes object.

Static Public Member Functions

static TypeRegistryG ()
 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 TypeRegistrympInstance = 0
 Singleton instance.

Member Typedef Documentation

typedef std::map<std::string, TypeDefinition*>::const_iterator faudes::TypeRegistry::Iterator

Convenience typedef to access registry entries.

Definition at line 52 of file rtiregistry.h.

typedef std::map<std::string, TypeDefinition*>::iterator faudes::TypeRegistry::iterator [protected]

Convenience typedef to access registry entries.

Definition at line 297 of file rtiregistry.h.


Constructor & Destructor Documentation

faudes::TypeRegistry::TypeRegistry (  )  [inline, protected]

Constructor.

Definition at line 303 of file rtiregistry.h.

virtual faudes::TypeRegistry::~TypeRegistry (  )  [inline, protected, virtual]

Destructor.

Definition at line 306 of file rtiregistry.h.


Member Function Documentation

TypeRegistry * faudes::TypeRegistry::G (  )  [static]

Method to access the single global instance of the registry.

Definition at line 55 of file rtiregistry.cpp.

void faudes::TypeRegistry::Clear ( void   )  [virtual]

Clear all registered type definitions.

This will also delete the correponsing prototype objects.

Reimplemented from faudes::Type.

Definition at line 65 of file rtiregistry.cpp.

int faudes::TypeRegistry::Size ( void   )  const

Return number of registered type definitions.

Returns:
Size of map.

Definition at line 80 of file rtiregistry.cpp.

bool faudes::TypeRegistry::Exists ( const std::string &  rName  )  const

Test existence of a faudes-type by its name.

Parameters:
rName Name of type to look up
Returns:
True, if a corresponding definition is registered.

Definition at line 215 of file rtiregistry.cpp.

bool faudes::TypeRegistry::Exists ( const Type rType  )  const

Test existence of a faudes-type by faudes object.

Parameters:
rType Object of type to look up
Returns:
True, if a corresponding definition is registered.

Definition at line 220 of file rtiregistry.cpp.

TypeRegistry::Iterator faudes::TypeRegistry::Begin ( void   )  const

STL interator to the internal type-name map.

Returns:
Iterator to the first element.

Definition at line 85 of file rtiregistry.cpp.

TypeRegistry::Iterator faudes::TypeRegistry::End ( void   )  const

STL interator to the internal type-name map.

Returns:
Iterator to the end of the map.

Definition at line 90 of file rtiregistry.cpp.

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.

Parameters:
pTypeDef Type definition to insert
Exceptions:
Exception 
  • Identical name found (id 46)

Definition at line 95 of file rtiregistry.cpp.

template<class T>
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.

Template Parameters:
T Template parameter to specify c++ type to register
Parameters:
rTypeName Specify the faudes-type name
Exceptions:
Exception 
  • Identical name found (id 46)

Definition at line 141 of file rtiregistry.h.

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.

Parameters:
pProto Prototype object
rTypeName Specify the faudes-type name
Exceptions:
Exception 
  • Identical name found (id 46)

Definition at line 162 of file rtiregistry.h.

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");

Parameters:
rTr Token stream.
Exceptions:
Exception 
  • Token mismatch (id 50, 51, 52)
  • IO Error (id 1)

Definition at line 112 of file rtiregistry.cpp.

void faudes::TypeRegistry::MergeDocumentation ( const std::string &  rFileName  ) 

Scan file for type documentation.

Convenience method, see also MergeDocumentation(TokenReader& rTr)

Parameters:
rFileName Name of file to scan.
Exceptions:
Exception 
  • Token mismatch (id 50, 51, 52)
  • IO Error (id 1)

Definition at line 144 of file rtiregistry.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.

Parameters:
rTypeName Label of TypeDefinition to search for.
Returns:
Pointer to new faudes::Type instance
Exceptions:
Exception 
  • Unknown type (id 47)

Definition at line 151 of file rtiregistry.cpp.

Type * faudes::TypeRegistry::NewObject ( const Type rType  )  const

Construct a faudes object by prototype object.

Depreciated: use new on the faudes object instead.

Parameters:
rType Prototype object.
Returns:
Pointer to new faudes::Type instance
Exceptions:
Exception 
  • Unknown type (id 47)

Definition at line 169 of file rtiregistry.cpp.

const TypeDefinition & faudes::TypeRegistry::Definition ( const std::string &  rTypeName  )  const

Look up the type definition by faudes-type name.

Parameters:
rTypeName Label of faudes::TypeDefinition to search for.
Returns:
Reference to faudes::TypeDefinition
Exceptions:
Exception 
  • Unknown type (id 46)

Definition at line 182 of file rtiregistry.cpp.

const TypeDefinition & faudes::TypeRegistry::Definition ( const Type rType  )  const

Look up the type definition by faudes object.

Techcal note: this implementation is slow, we should use a type id map.

Parameters:
rType Reference to faudes::Type to search for.
Returns:
Reference to faudes::TypeDefinition
Exceptions:
Exception 
  • Unknown type (id 46)

Definition at line 194 of file rtiregistry.cpp.

const std::string & faudes::TypeRegistry::TypeName ( const Type rType  )  const

Look up the type name by faudes object.

Parameters:
rType Reference to faudes::Type to search for.
Returns:
Type name as string or "" if unknown.

Definition at line 205 of file rtiregistry.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.

Parameters:
rTw Reference to TokenWriter
rLabel Label of section to write
pContext Write context to provide contextual information
Exceptions:
Exception 
  • IO errors (id 2)

Reimplemented from faudes::Type.

Definition at line 226 of file rtiregistry.cpp.


Member Data Documentation

Singleton instance.

Definition at line 300 of file rtiregistry.h.

std::map<std::string, TypeDefinition*> faudes::TypeRegistry::mNameToTypeDef [protected]

Map to associate labels and faudes::TypeDefinitions.

Definition at line 311 of file rtiregistry.h.

std::map<std::string, TypeDefinition*> faudes::TypeRegistry::mIdToTypeDef [protected]

Definition at line 312 of file rtiregistry.h.


The documentation for this class was generated from the following files:

libFAUDES 2.14g --- 2009-12-3 --- c++ source docu by doxygen 1.5.6