faudes::FunctionRegistry Class Reference
|
Public Types | |
typedef std::map< std::string, FunctionDefinition * > ::const_iterator | Iterator |
Convenience typedef to access registry entries. | |
Public Member Functions | |
void | Clear () |
Clear all registered function definitions. | |
int | Size () const |
Return number of registered function definitions. | |
bool | Exists (const std::string &rName) const |
Test existence of a faudes-function by its name. | |
bool | Exists (const Function &rFunction) const |
Test existence of a faudes-function by faudes object. | |
Iterator | Begin (void) const |
STL interator to the internal function-name map. | |
Iterator | End (void) const |
STL interator to the internal function-name map. | |
void | Insert (FunctionDefinition *pFunctionDef) |
Add another function definition to the registry. | |
template<class T > | |
void | Insert (const std::string &rFunctionName="") |
Register a faudes-function with specified function name. | |
void | MergeDocumentation (TokenReader &rTr) |
Scan token input for function documentation. | |
void | MergeDocumentation (const std::string &rFileName) |
Scan file for function documentation. | |
Function * | NewFunction (const std::string &rFunctionName) const |
Construct a faudes object by function name. | |
Function * | NewFunction (const Function &rFunction) const |
Construct a faudes object by protofunction object. | |
const FunctionDefinition & | Definition (const std::string &rFunctionName) const |
Look up the function definition by faudes-function name. | |
const FunctionDefinition & | Definition (const Function &rFunction) const |
Look up the function definition by faudes object. | |
const std::string & | FunctionName (const Function &rFunction) const |
Look up the function name by faudes object. | |
Static Public Member Functions | |
static FunctionRegistry * | G () |
Method to access the single global instance of the registry. | |
Protected Types | |
typedef std::map< std::string, FunctionDefinition * > ::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. | |
FunctionRegistry () | |
Constructor. | |
virtual | ~FunctionRegistry () |
Destructor. | |
Protected Attributes | |
std::map< std::string, FunctionDefinition * > | mNameToFunctionDef |
Map to associate labels and faudes::FunctionDefinitions. | |
std::map< std::string, FunctionDefinition * > | mIdToFunctionDef |
Static Protected Attributes | |
static FunctionRegistry * | mpInstance = 0 |
Singleton instance. |
The FunctionRegistry registers faudes-functions.
A faudes-functions operates on faudes objects, eg the parallel composition of two generators is available as faudes-function. The registry maintains a mapping between function names and a coresponding function::Definition. The latter provides signatures, ie parameter types the function can take. The registry provides an interface to inspect TypeDefinitions or to construct function 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 491 of file cfl_registry.h.
typedef std::map<std::string, FunctionDefinition*>::iterator faudes::FunctionRegistry::iterator [protected] |
Convenience typedef to access registry entries.
Definition at line 715 of file cfl_registry.h.
typedef std::map<std::string, FunctionDefinition*>::const_iterator faudes::FunctionRegistry::Iterator |
Convenience typedef to access registry entries.
Definition at line 496 of file cfl_registry.h.
faudes::FunctionRegistry::FunctionRegistry | ( | ) | [inline, protected] |
Constructor.
Definition at line 721 of file cfl_registry.h.
virtual faudes::FunctionRegistry::~FunctionRegistry | ( | ) | [inline, protected, virtual] |
Destructor.
Definition at line 724 of file cfl_registry.h.
FunctionRegistry::Iterator faudes::FunctionRegistry::Begin | ( | void | ) | const |
STL interator to the internal function-name map.
Definition at line 422 of file cfl_registry.cpp.
void faudes::FunctionRegistry::Clear | ( | void | ) | [virtual] |
Clear all registered function definitions.
This will also delete the correponsing prototype objects.
Reimplemented from faudes::Type.
Definition at line 400 of file cfl_registry.cpp.
const FunctionDefinition & faudes::FunctionRegistry::Definition | ( | const Function & | rFunction | ) | const |
Look up the function definition by faudes object.
Techcal note: this implementation is slow, we should use a function id map.
rFunction | Reference to faudes::Function to search for. |
Exception |
|
Definition at line 544 of file cfl_registry.cpp.
const FunctionDefinition & faudes::FunctionRegistry::Definition | ( | const std::string & | rFunctionName | ) | const |
Look up the function definition by faudes-function name.
rFunctionName | Label of faudes::FunctionDefinition to search for. |
Exception |
|
Definition at line 532 of file cfl_registry.cpp.
void faudes::FunctionRegistry::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 insert/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 576 of file cfl_registry.cpp.
FunctionRegistry::Iterator faudes::FunctionRegistry::End | ( | void | ) | const |
STL interator to the internal function-name map.
Definition at line 427 of file cfl_registry.cpp.
bool faudes::FunctionRegistry::Exists | ( | const Function & | rFunction | ) | const |
Test existence of a faudes-function by faudes object.
rFunction | Object of function to look up |
Definition at line 570 of file cfl_registry.cpp.
bool faudes::FunctionRegistry::Exists | ( | const std::string & | rName | ) | const |
Test existence of a faudes-function by its name.
rName | Name of function to look up |
Definition at line 565 of file cfl_registry.cpp.
const std::string & faudes::FunctionRegistry::FunctionName | ( | const Function & | rFunction | ) | const |
Look up the function name by faudes object.
rFunction | Reference to faudes::Function to search for. |
Definition at line 555 of file cfl_registry.cpp.
FunctionRegistry * faudes::FunctionRegistry::G | ( | void | ) | [static] |
Method to access the single global instance of the registry.
Definition at line 390 of file cfl_registry.cpp.
void faudes::FunctionRegistry::Insert | ( | const std::string & | rFunctionName = "" |
) | [inline] |
Register a faudes-function with specified function name.
This is a convenience function: it uses the template parameter to construct the new instance of FunctionDefinition to be registered. However, no documentation is added. See also MergeDocumentation.
T | Template parameter to specify c++ function to register |
rFunctionName | Specify the faudes-function name |
Exception |
|
Definition at line 585 of file cfl_registry.h.
void faudes::FunctionRegistry::Insert | ( | FunctionDefinition * | pFunctionDef | ) |
Add another function definition to the registry.
The registry takes the ownership pf the provided function definition. It will be deleted either in Clear() or when the registry is destructed.
pFunctionDef | Function definition to insert |
Exception |
|
Definition at line 432 of file cfl_registry.cpp.
void faudes::FunctionRegistry::MergeDocumentation | ( | const std::string & | rFileName | ) |
Scan file for function documentation.
Convenience method, see also MergeDocumentation(TokenReader& rTr)
rFileName | Name of file to scan. |
Definition at line 494 of file cfl_registry.cpp.
void faudes::FunctionRegistry::MergeDocumentation | ( | TokenReader & | rTr | ) |
Scan token input for function documentation.
This function scans the entire token stream for sections with label "FunctionDefinition". Any such section that refers to a function name which is known to the registry, will be applied to the corresponding registry entry.
rTr | Token stream. |
Definition at line 461 of file cfl_registry.cpp.
Construct a faudes object by protofunction object.
Depreciated: use new on the faudes object instead.
rFunction | Protofunction object. |
Exception |
|
Definition at line 519 of file cfl_registry.cpp.
Function * faudes::FunctionRegistry::NewFunction | ( | const std::string & | rFunctionName | ) | const |
Construct a faudes object by function name.
Uses the internal prototype object to construct an object of the same c function on the heap.
rFunctionName | Label of FunctionDefinition to search for. |
Exception |
|
Definition at line 501 of file cfl_registry.cpp.
int faudes::FunctionRegistry::Size | ( | void | ) | const |
Return number of registered function definitions.
Definition at line 417 of file cfl_registry.cpp.
std::map<std::string, FunctionDefinition*> faudes::FunctionRegistry::mIdToFunctionDef [protected] |
Definition at line 730 of file cfl_registry.h.
std::map<std::string, FunctionDefinition*> faudes::FunctionRegistry::mNameToFunctionDef [protected] |
Map to associate labels and faudes::FunctionDefinitions.
Definition at line 729 of file cfl_registry.h.
FunctionRegistry * faudes::FunctionRegistry::mpInstance = 0 [static, protected] |
Singleton instance.
Definition at line 718 of file cfl_registry.h.
libFAUDES 2.23h --- 2014.04.03 --- c++ api documentaion by doxygen