faudes::FunctionDefinition Class Reference
|
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 Function * | Prototype (void) const |
Return pointer to function object prototype. | |
Function * | NewFunction () 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 Signature & | Variant (const std::string &rName) const |
Return reference to Signature by name. | |
const Signature & | Variant (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 FunctionDefinition * | Constructor (const std::string &rFunctName="") |
Construct empty FunctionDefinition object. | |
template<class T > | |
static FunctionDefinition * | FromFile (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 | |
Function * | mpFunction |
Prototype instance. | |
std::vector< faudes::Signature > | mVariants |
Vector containing all supported Signatures. | |
std::map< std::string, int > | mVariantIndexMap |
Variant name to index map. |
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.
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.
void faudes::FunctionDefinition::AppendVariant | ( | const Signature & | pVar | ) | [virtual] |
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.
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.
T | Actual function class, derived from Function |
rFunctName | Name to identify this faudes-function |
Definition at line 1046 of file cfl_functions.h.
void faudes::FunctionDefinition::DoAssign | ( | const FunctionDefinition & | rSrc | ) | [protected, virtual] |
Std faudes type interface: assignment.
rSrc | Source to copy from |
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.
rOther | Other object to compare with. |
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.
rTr | TokenReader to read from | |
rLabel | Section to read | |
pContext | Read context to provide contextual information (ignored) |
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.
rTr | TokenReader to read from |
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.
rTw | Reference to TokenWriter | |
rLabel | Label of section to write | |
pContext | Write context to provide contextual information |
Exception |
|
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.
rTw | Reference to TokenWriter |
Exception |
|
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.
Definition at line 446 of file cfl_functions.cpp.
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.
T | Actual function class, derived from Function |
rFileName | File to read documentation and signatures from. |
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.
Definition at line 433 of file cfl_functions.cpp.
void faudes::FunctionDefinition::Prototype | ( | Function * | pFunc | ) | [protected, virtual] |
Assign prototype object.
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.
Definition at line 416 of file cfl_functions.cpp.
const Signature & faudes::FunctionDefinition::Variant | ( | int | n | ) | const |
Return reference to Signature by index.
n | Index to look up |
Exception |
|
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.
rName | Name of signature to search. |
Exception |
|
Definition at line 473 of file cfl_functions.cpp.
int faudes::FunctionDefinition::VariantIndex | ( | const std::string & | rName | ) | const |
Return index of Signature by name.
rName | Name of signature to search. |
Definition at line 451 of file cfl_functions.cpp.
int faudes::FunctionDefinition::VariantsSize | ( | void | ) | const |
Return number of supported Signature instances.
Definition at line 441 of file cfl_functions.cpp.
Function* faudes::FunctionDefinition::mpFunction [protected] |
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.
std::vector<faudes::Signature> faudes::FunctionDefinition::mVariants [protected] |
Vector containing all supported Signatures.
Definition at line 680 of file cfl_functions.h.
libFAUDES 2.23h --- 2014.04.03 --- c++ api documentaion by doxygen