libFAUDES

Sections

Index

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

#include <rtiregistry.h>

Inherits faudes::Type.

List of all members.


Detailed Description

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.

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.
FunctionNewFunction (const std::string &rFunctionName) const
 Construct a faudes object by function name.
FunctionNewFunction (const Function &rFunction) const
 Construct a faudes object by protofunction object.
const FunctionDefinitionDefinition (const std::string &rFunctionName) const
 Look up the function definition by faudes-function name.
const FunctionDefinitionDefinition (const Function &rFunction) const
 Look up the function definition by faudes object.

Static Public Member Functions

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


Member Typedef Documentation

typedef std::map<std::string, FunctionDefinition*>::const_iterator faudes::FunctionRegistry::Iterator

Convenience typedef to access registry entries.

typedef std::map<std::string, FunctionDefinition*>::iterator faudes::FunctionRegistry::iterator [protected]

Convenience typedef to access registry entries.


Constructor & Destructor Documentation

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

Constructor.

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

Destructor.


Member Function Documentation

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

Method to access the single global instance of the registry.

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

Clear all registered function definitions.

This will also delete the correponsing prototype objects.

Reimplemented from faudes::Type.

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

Return number of registered function definitions.

Returns:
Size of map.

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

Test existence of a faudes-function by its name.

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

bool faudes::FunctionRegistry::Exists ( const Function rFunction  )  const

Test existence of a faudes-function by faudes object.

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

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

STL interator to the internal function-name map.

Returns:
Iterator to the first element.

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

STL interator to the internal function-name map.

Returns:
Iterator to the end of the map.

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.

Parameters:
pFunctionDef Function definition to insert
Exceptions:
Exception 
  • Identical name found (id 46)

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

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

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.

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

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

Scan file for function 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)

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.

Parameters:
rFunctionName Label of FunctionDefinition to search for.
Returns:
Pointer to new faudes::Function instance
Exceptions:
Exception 
  • Unknown function (id 47)

Function * faudes::FunctionRegistry::NewFunction ( const Function rFunction  )  const

Construct a faudes object by protofunction object.

Depreciated: use new on the faudes object instead.

Parameters:
rFunction Protofunction object.
Returns:
Pointer to new faudes::Function instance
Exceptions:
Exception 
  • Unknown function (id 47)

const FunctionDefinition & faudes::FunctionRegistry::Definition ( const std::string &  rFunctionName  )  const

Look up the function definition by faudes-function name.

Parameters:
rFunctionName Label of faudes::FunctionDefinition to search for.
Returns:
Reference to faudes::FunctionDefinition
Exceptions:
Exception 
  • Unknown function (id 46)

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.

Parameters:
rFunction Reference to faudes::Function to search for.
Returns:
Reference to faudes::FunctionDefinition
Exceptions:
Exception 
  • Unknown function (id 46)

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


Member Data Documentation

Singleton instance.

Map to associate labels and faudes::FunctionDefinitions.


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

libFAUDES 2.13a c++ source docu by doxygen 1.5.6