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

A FunctionDefinition defines the interface to a faudes-function. More...

#include <cfl_functions.h>

List of all members.

Public Member Functions

 FunctionDefinition (const std::string &name="")
 Constructor.
 FunctionDefinition (const FunctionDefinition &rSrc)
 Copy Constructor.
virtual ~FunctionDefinition ()
 Destructor.
virtual void Clear (void)
 Clear documentation-data and signature (keep prototype).
virtual void ClearVariants (void)
 Clear variants (keep docu and prototype).
const FunctionPrototype (void) const
 Return pointer to function object prototype.
FunctionNewFunction () const
 Construct function on heap.
int VariantsSize (void) const
 Return number of supported Signature instances.
bool ExistsVariant (const std::string &varname) const
 Test existence of variant by its name.
int VariantIndex (const std::string &rName) const
 Return index of Signature by name.
const SignatureVariant (const std::string &rName) const
 Return reference to Signature by name.
const SignatureVariant (int n) const
 Return reference to Signature by index.
virtual void AppendVariant (const Signature &pVar)
 Add Signature to function definition.

Static Public Member Functions

template<class T >
static FunctionDefinitionConstructor (const std::string &rFunctName="")
 Construct empty FunctionDefinition object.
template<class T >
static FunctionDefinitionFromFile (const std::string &rFileName)
 Construct FunctionDefinition object and get name and docu from file.

Protected Member Functions

virtual void DoAssign (const FunctionDefinition &rSrc)
 Std faudes type interface: assignment.
virtual bool DoEqual (const FunctionDefinition &rOther) const
 Std faudes type interface: test equality.
virtual void DoRead (TokenReader &rTr, const std::string &rLabel="", const Type *pContext=0)
 Read configuration data of this object from TokenReader.
virtual void DoReadCore (TokenReader &rTr)
 Read configuration data of this object from TokenReader.
virtual void DoWrite (TokenWriter &rTw, const std::string &rLabel="", const Type *pContext=0) const
 Write configuration data of this object to TokenWriter.
virtual void DoWriteCore (TokenWriter &rTw) const
 Write configuration data of this object to TokenWriter.
virtual void Prototype (Function *pFunc)
 Assign prototype object.

Protected Attributes

FunctionmpFunction
 Prototype instance.
std::vector< faudes::SignaturemVariants
 Vector containing all supported Signatures.
std::map< std::string, int > mVariantIndexMap
 Variant name to index map.

Detailed Description

A FunctionDefinition defines the interface to a faudes-function.

The latter consists of a descriptive name to identify the function and a list of Signatures the function can operate on. Technically, the class FunctionDefinition is derived from Documentation and thereby inherits members for additional documentation-data.

Similar to Type and TypeDefinition, a FunctionDefinition uses a prototype object to provide the method NewFunction() which instantiates the corresponding Function object.

FunctionDefinition inherits the token io interface from Type, however, the class is not intended to register as a faudes type. The token io format is demonstrated by the following example:

 <FunctionDefinition name="CoreFaudes::IntegerSum" ctype="faudes::IntegerSum">

 <Documentation ref="integersum.html">
 Returns the sum of integer arguments. 
 <Documentation/>

 <Keywords> "integer" "elemetary types" </Keywords>

 <VariantSignatures>

 <Signature name="Two arguments">
 <Parameter name="Arg1" ftype="Integer" access="In">
 <Parameter name="Arg2" ftype="Integer" access="In">
 <Parameter name="Res"  ftype="Integer" access="Out" creturn="true">
 </Signature>

 <Signature name="Three arguments">
 <Parameter name="Arg1" ftype="Integer" access="In">
 <Parameter name="Arg2" ftype="Integer" access="In">
 <Parameter name="Arg3" ftype="Integer" access="In">
 <Parameter name="Res"  ftype="Integer" access="Out" creturn="true">
 </Signature>

 </VariantSignatures>

 </FunctionDefinition>

Definition at line 420 of file cfl_functions.h.


Constructor & Destructor Documentation

faudes::FunctionDefinition::FunctionDefinition ( const std::string &  name = ""  ) 

Constructor.

The default constructor instantiates an invalid function definition without prototype. To construct a valid function definition, use the static Constructor() template function.

Definition at line 356 of file cfl_functions.cpp.

faudes::FunctionDefinition::FunctionDefinition ( const FunctionDefinition rSrc  ) 

Copy Constructor.

The copy constructor copies all members one-to-one, except for the prototype object. The latter is re-created using its factory function.

Definition at line 364 of file cfl_functions.cpp.

virtual faudes::FunctionDefinition::~FunctionDefinition (  )  [inline, virtual]

Destructor.

Definition at line 451 of file cfl_functions.h.


Member Function Documentation

void faudes::FunctionDefinition::AppendVariant ( const Signature pVar  )  [virtual]

Add Signature to function definition.

Parameters:
pVar Signature to insert
Exceptions:
Exception 

Definition at line 458 of file cfl_functions.cpp.

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

Clear documentation-data and signature (keep prototype).

Reimplemented from faudes::Documentation.

Reimplemented in faudes::LuaFunctionDefinition.

Definition at line 397 of file cfl_functions.cpp.

void faudes::FunctionDefinition::ClearVariants ( void   )  [virtual]

Clear variants (keep docu and prototype).

Definition at line 407 of file cfl_functions.cpp.

template<class T >
FunctionDefinition * faudes::FunctionDefinition::Constructor ( const std::string &  rFunctName = ""  )  [inline, static]

Construct empty FunctionDefinition object.

The given template parameter denotes a Function class. Member variable (mpFunction) is set to a new instance of that class whereas the name is set as specified. No further documentation or signatures are recorded.

Template Parameters:
T Actual function class, derived from Function
Parameters:
rFunctName Name to identify this faudes-function
Returns:
Newly constructed function definition.

Definition at line 1046 of file cfl_functions.h.

void faudes::FunctionDefinition::DoAssign ( const FunctionDefinition rSrc  )  [protected, virtual]

Std faudes type interface: assignment.

Parameters:
rSrc Source to copy from
Returns:
Reference to this object.

Definition at line 372 of file cfl_functions.cpp.

bool faudes::FunctionDefinition::DoEqual ( const FunctionDefinition rOther  )  const [protected, virtual]

Std faudes type interface: test equality.

Parameters:
rOther Other object to compare with.
Returns:
True on match.

Definition at line 388 of file cfl_functions.cpp.

void faudes::FunctionDefinition::DoRead ( TokenReader rTr,
const std::string &  rLabel = "",
const Type pContext = 0 
) [protected, virtual]

Read configuration data of this object from TokenReader.

Actual reading is done by DoReadCore.

The section defaults to "FunctionDefinition", context ignored.

Parameters:
rTr TokenReader to read from
rLabel Section to read
pContext Read context to provide contextual information (ignored)
Exceptions:
Exception 
  • Token mismatch (id 50, 51, 52)
  • IO error (id 1)

Reimplemented from faudes::Documentation.

Reimplemented in faudes::LuaFunctionDefinition.

Definition at line 497 of file cfl_functions.cpp.

void faudes::FunctionDefinition::DoReadCore ( TokenReader rTr  )  [protected, virtual]

Read configuration data of this object from TokenReader.

This method reads members only, it does not read the section.

Parameters:
rTr TokenReader to read from
Exceptions:
Exception 
  • Token mismatch (id 50, 51, 52)
  • IO error (id 1)

Reimplemented from faudes::Documentation.

Reimplemented in faudes::LuaFunctionDefinition.

Definition at line 510 of file cfl_functions.cpp.

void faudes::FunctionDefinition::DoWrite ( TokenWriter rTw,
const std::string &  rLabel = "",
const Type pContext = 0 
) const [protected, virtual]

Write configuration data of this object to TokenWriter.

The section defaults to "FunctionDefinition", context ignored.

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

Reimplemented in faudes::LuaFunctionDefinition.

Definition at line 529 of file cfl_functions.cpp.

void faudes::FunctionDefinition::DoWriteCore ( TokenWriter rTw  )  const [protected, virtual]

Write configuration data of this object to TokenWriter.

This method writes plain member data, the section lables are not written.

Parameters:
rTw Reference to TokenWriter
Exceptions:
Exception 
  • IO errors (id 2)

Reimplemented from faudes::Documentation.

Reimplemented in faudes::LuaFunctionDefinition.

Definition at line 538 of file cfl_functions.cpp.

bool faudes::FunctionDefinition::ExistsVariant ( const std::string &  varname  )  const

Test existence of variant by its name.

Returns:
True if variant exists

Definition at line 446 of file cfl_functions.cpp.

template<class T >
FunctionDefinition * faudes::FunctionDefinition::FromFile ( const std::string &  rFileName  )  [inline, static]

Construct FunctionDefinition object and get name and docu from file.

The member variable mpFunction is set to a new instance of class T. which must be derived from Function. The function name, any documentation as well as supported signatures are read from the specified file.

Template Parameters:
T Actual function class, derived from Function
Parameters:
rFileName File to read documentation and signatures from.
Returns:
Newly constructed function definition.

Definition at line 1063 of file cfl_functions.h.

Function * faudes::FunctionDefinition::NewFunction (  )  const

Construct function on heap.

Return pointer to new instance of assigned Function class.

Note: If no prototype is installed, NULL is returned.

Returns:
Pointer to new Function instance.

Definition at line 433 of file cfl_functions.cpp.

void faudes::FunctionDefinition::Prototype ( Function pFunc  )  [protected, virtual]

Assign prototype object.

Parameters:
pFunc Function instance

Reimplemented in faudes::LuaFunctionDefinition.

Definition at line 421 of file cfl_functions.cpp.

const Function * faudes::FunctionDefinition::Prototype ( void   )  const

Return pointer to function object prototype.

Note: this method is meant for inspection only, control over the prototype remains with the FunctionDefinition. Use NewFunction() to instantiate a new function object.

Returns:
Reference to prototype function.

Definition at line 416 of file cfl_functions.cpp.

const Signature & faudes::FunctionDefinition::Variant ( int  n  )  const

Return reference to Signature by index.

Parameters:
n Index to look up
Returns:
Reference to Signature
Exceptions:
Exception 
  • Index out of range (id 47)

Definition at line 485 of file cfl_functions.cpp.

const Signature & faudes::FunctionDefinition::Variant ( const std::string &  rName  )  const

Return reference to Signature by name.

Parameters:
rName Name of signature to search.
Returns:
Reference to Signature
Exceptions:
Exception 
  • No such signature (id 47)

Definition at line 473 of file cfl_functions.cpp.

int faudes::FunctionDefinition::VariantIndex ( const std::string &  rName  )  const

Return index of Signature by name.

Parameters:
rName Name of signature to search.
Returns:
Index of signature, or -1 if not existant

Definition at line 451 of file cfl_functions.cpp.

int faudes::FunctionDefinition::VariantsSize ( void   )  const

Return number of supported Signature instances.

Returns:
Size of signature vector.

Definition at line 441 of file cfl_functions.cpp.


Member Data Documentation

Prototype instance.

Definition at line 677 of file cfl_functions.h.

std::map<std::string,int> faudes::FunctionDefinition::mVariantIndexMap [protected]

Variant name to index map.

Definition at line 683 of file cfl_functions.h.

Vector containing all supported Signatures.

Definition at line 680 of file cfl_functions.h.


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

libFAUDES 2.23h --- 2014.04.03 --- c++ api documentaion by doxygen