A LuaFunction is a faudes-function that executes a luafaudes script. More...

#include <lbp_function.h>

Public Member Functions

 LuaFunction (const LuaFunctionDefinition *fdef)
 Constructor.
 ~LuaFunction (void)
 Destructor.
virtual LuaFunctionNew () const
 Construct on heap.
void Definition (const FunctionDefinition *fdef)
 Set function definition.
const LuaFunctionDefinitionDefinition (void) const
 Get function definition.
void SyntaxCheck (void)
 Syntax check lua code.
void Evaluate (void)
 Evaluate lua code.
void L (LuaState *l)
 Set lua state.
LuaStateL (void)
 Get default lua state.
- Public Member Functions inherited from faudes::Function
 Function (const FunctionDefinition *fdef)
 Constructor For the function to be operational, a valid reference to the corresponding FunctionDefinition is required.
 ~Function ()
 Destructor.
int VariantsSize (void) const
 Return number of variants.
void Variant (int n)
 Set signature from function definition.
void Variant (const std::string &rVariantName)
 Set signature from function definition.
const SignatureVariant (void) const
 Return pointer to assigned faudes::Signature.
int ParamsSize (void) const
 Return number of parameters with current signature.
void ParamValue (int n, Type *param)
 Set parameter at certain position.
TypeParamValue (int n) const
 Get parameter value.
void AllocateValues (void)
 Construct parameter values.
void AllocateValue (int i)
void FreeValues (void)
 Destruct parameter values.
bool TypeCheck (int n)
 Perform a type check one parameter value.
bool TypeCheck (void)
 Perform a type check on the list of current parameter values.
void Execute (void)
 Perform operation.
- Public Member Functions inherited from faudes::Type
 Type (void)
 Constructor.
 Type (const Type &rType)
 Copy constructor.
virtual ~Type (void)
 Destructor.
virtual TypeCopy (void) const
 Construct on heap.
virtual const TypeCast (const Type *pOther) const
 Cast other object to this type.
virtual void Clear (void)
 Clear configuration data.
virtual TypeAssign (const Type &rSrc)
 Assign configuration data from other object.
virtual Typeoperator= (const Type &rSrc)
 Assign configurationdata from other object.
virtual bool Equal (const Type &rOther) const
 Test equality of configuration data.
virtual bool operator== (const Type &rOther) const
 Test equality of configuration data.
virtual bool operator!= (const Type &rOther) const
 Test equality of configuration data.
virtual void Name (const std::string &rName)
 Set the objects's name.
virtual const std::string & Name (void) const
 Get objects's name.
void Write (const Type *pContext=0) const
 Write configuration data to console.
void Write (const std::string &pFileName, const std::string &rLabel="", const Type *pContext=0, std::ios::openmode openmode=std::ios::out|std::ios::trunc) const
 Write configuration data to a file.
void Write (const std::string &pFileName, std::ios::openmode openmode) const
 Write configuration data to a file.
void Write (TokenWriter &rTw, const std::string &rLabel="", const Type *pContext=0) const
 Write configuration data to TokenWriter.
virtual void XWrite (const std::string &pFileName, const std::string &rLabel="", const Type *pContext=0) const
 Write configuration data to an XML file.
void XWrite (const Type *pContext=0) const
 Write configuration data in XML format to concole Note: this write function uses the virtual function DoXWrite(), to be reimplemented by derived classes.
void XWrite (TokenWriter &rTw, const std::string &rLabel="", const Type *pContext=0) const
 Write configuration data in XML format to TokenWriter.
std::string ToString (const std::string &rLabel="", const Type *pContext=0) const
 Write configuration data to a string.
std::string ToText (const std::string &rLabel="", const Type *pContext=0) const
 Write configuration data to a formated string.
void DWrite (const Type *pContext=0) const
 Write configuration data to console, debugging format.
void DWrite (const std::string &pFileName, const std::string &rLabel="", const Type *pContext=0, std::ios::openmode openmode=std::ios::out|std::ios::trunc) const
 Write configuration data to a file, debugging format.
void DWrite (TokenWriter &rTw, const std::string &rLabel="", const Type *pContext=0) const
 Write configuration data in debug format to TokenWriter.
void SWrite (TokenWriter &rTw) const
 Write statistics comment to TokenWriter.
void SWrite (void) const
 Write statistics comment to console.
std::string ToSText (void) const
 Write statistics to a string.
void Read (const std::string &rFileName, const std::string &rLabel="", const Type *pContext=0)
 Read configuration data from file with label specified.
void FromString (const std::string &rString, const std::string &rLabel="", const Type *pContext=0)
 Read configuration data from a string.
void Read (TokenReader &rTr, const std::string &rLabel="", const Type *pContext=0)
 Read configuration data from TokenReader with label sepcified.

Protected Member Functions

virtual void DoVariant (int n)
virtual bool DoTypeCheck (int n)
 Method to test the type of an assigned parameter with the specified faudes::Signature (i.e.
virtual void DoExecute ()
 Executes code as supplied by FunctionDefinition.
virtual void DoExecuteA ()
 Execute stages.
virtual void DoExecuteB ()
 Execute stages.
virtual void DoExecuteC ()
 Execute stages.
virtual void DoExecuteD ()
 Execute stages.
virtual void DoExecuteE ()
 Execute stages.
- Protected Member Functions inherited from faudes::Function
template<class T >
bool DoTypeCast (int n, T *&rTypedRef)
 Helper: generate typed reference for parameter.
void DoWrite (TokenWriter &rTw, const std::string &rLabel="", const Type *pContext=0) const
 Write function-data (typeid-name of arguments) to TokenWriter.
- Protected Member Functions inherited from faudes::Type
virtual void DoAssign (const Type &rSrc)
 Assign configuration data from other object.
virtual bool DoEqual (const Type &rOther) const
 Test equality of configuration data.
virtual void DoRead (TokenReader &rTr, const std::string &rLabel="", const Type *pContext=0)
 Read configuration data of this object from TokenReader.
virtual void DoXWrite (TokenWriter &rTw, const std::string &rLabel="", const Type *pContext=0) const
 Write configuration data of this object to TokenWriter in XML format.
virtual void DoDWrite (TokenWriter &rTw, const std::string &rLabel="", const Type *pContext=0) const
 Write configuration data in debugging format to TokenWriter.
virtual void DoSWrite (TokenWriter &rTw) const
 Write statistical data as a comment to TokenWriter.
virtual const TypeDefinitionTypeDefinitionp (void) const
 Get objects's type definition.
virtual const std::string & TypeName (void) const
 Get objects's type name.
virtual Token XBeginTag (const std::string &rLabel="", const std::string &rFallbackLabel="") const

Protected Attributes

const LuaFunctionDefinitionpLuaFuncDef
 Typed reference to definition.
LuaStatepL
 State of Lua interpreter.
lua_State * pLL
int mFtable
int mEntryStack
void * mFType
std::vector< bool > mLReturn
std::vector< bool > mLParameter
int mLReturnCount
int mLParameterCount
- Protected Attributes inherited from faudes::Function
const FunctionDefinitionpFuncDef
 corresponding function definition
int mVariantIndex
 current variant aka signature as index w.r.t.
std::vector< Type * > mParameterValues
 Vector of arguments.

Detailed Description

A LuaFunction is a faudes-function that executes a luafaudes script.

LuaFunction is derived from Function and implements the DoTypeCheck and DoExecute interface to run the lua code as supplied by the corresponding function defintion. Thus, it is considered an error to set the function definition to an object that does not cast to a LuaFunctionDefinition.

Definition at line 677 of file lbp_function.h.

Constructor & Destructor Documentation

faudes::LuaFunction::LuaFunction ( const LuaFunctionDefinition fdef)

Constructor.

For the function to be operational, a valid reference to the corresponding LuaFunctionDefinition is required. The only exception is the prototype function object used in the LuaFunctionDefinition itself.

Definition at line 644 of file lbp_function.cpp.

faudes::LuaFunction::~LuaFunction ( void  )
inline

Destructor.

Definition at line 689 of file lbp_function.h.

Member Function Documentation

void faudes::LuaFunction::Definition ( const FunctionDefinition fdef)
virtual

Set function definition.

Normally, functions are provided with a function definition on construction. The only exception are prototype objects used in function definitions themselfs and in the function registry.

Parameters
fdefFunction definition to set.

Reimplemented from faudes::Function.

Definition at line 659 of file lbp_function.cpp.

const LuaFunctionDefinition * faudes::LuaFunction::Definition ( void  ) const

Get function definition.

Returns
Function definition used by this function.

Reimplemented from faudes::Function.

Definition at line 666 of file lbp_function.cpp.

void faudes::LuaFunction::DoExecute ( void  )
protectedvirtual

Executes code as supplied by FunctionDefinition.

Exceptions
Exception
  • Exception during lua setup (id 49)
  • Any exception during execution of script

Implements faudes::Function.

Definition at line 712 of file lbp_function.cpp.

void faudes::LuaFunction::DoExecuteA ( void  )
protectedvirtual

Execute stages.

Exceptions
Exception

Definition at line 770 of file lbp_function.cpp.

void faudes::LuaFunction::DoExecuteB ( void  )
protectedvirtual

Execute stages.

Exceptions
Exception

Definition at line 804 of file lbp_function.cpp.

void faudes::LuaFunction::DoExecuteC ( void  )
protectedvirtual

Execute stages.

Exceptions
Exception
  • Exception during lua setup (id 49)
  • Any exception during execution of script

Definition at line 859 of file lbp_function.cpp.

void faudes::LuaFunction::DoExecuteD ( void  )
protectedvirtual

Execute stages.

Exceptions
Exception

Definition at line 974 of file lbp_function.cpp.

void faudes::LuaFunction::DoExecuteE ( void  )
protectedvirtual

Execute stages.

Exceptions
Exception

Definition at line 1031 of file lbp_function.cpp.

bool faudes::LuaFunction::DoTypeCheck ( int  n)
protectedvirtual

Method to test the type of an assigned parameter with the specified faudes::Signature (i.e.

their TypeDefinition label).

Note: this method is called by Function::Execute() before actual function execution via DoExecute(). It may be used to perform a dynamic cast in preparation of DoExecute(). The latter is only called, if all types match.

Parameters
nPosition of parameter to check
Returns
True if type matches signature.
Exceptions
Exception

Implements faudes::Function.

Definition at line 684 of file lbp_function.cpp.

void faudes::LuaFunction::DoVariant ( int  n)
protectedvirtual

Reimplemented from faudes::Function.

Definition at line 671 of file lbp_function.cpp.

void faudes::LuaFunction::Evaluate ( void  )

Evaluate lua code.

This routine avaluates the associated Lua code literally, i.e. no arguments are passed, no specific function is invoked. See also Execute().

Exceptions
Exception
  • Error in Lua script (id 49)

Definition at line 756 of file lbp_function.cpp.

void faudes::LuaFunction::L ( LuaState l)

Set lua state.

Sets the lua state which this function will use for execution. If set to NULL (e.g. on consruction), the function definition's default state will be used. If this is not set either, the global state is used.

Parameters
lLua state

Definition at line 706 of file lbp_function.cpp.

LuaState * faudes::LuaFunction::L ( void  )

Get default lua state.

Returns
Lua state

Definition at line 700 of file lbp_function.cpp.

LuaFunction * faudes::LuaFunction::New ( void  ) const
virtual

Construct on heap.

Create a new instance of this function class and return pointer. The new instance will use the same function definition as this instance.

Returns
Pointer to faudes::Function instance.

Implements faudes::Function.

Definition at line 654 of file lbp_function.cpp.

void faudes::LuaFunction::SyntaxCheck ( void  )

Syntax check lua code.

This routine does all it needs to run the script, except to invoke the specified function. The reasoning is, that the script may hang and, thus, never return. A consequence is, that you must set a variant and you must supply parameter values befor checking. You may use AllocateValues() and FreeValues() for this purpose. Errors are indicated by an exception.

Note that the LuaFunctionDefinition provides a convenience wrapper that runs the check on all variants and cares about value allocation.

Exceptions
Exception
  • No such variant (id 47)
  • Error in Lua script (id 49)

Definition at line 736 of file lbp_function.cpp.

Member Data Documentation

int faudes::LuaFunction::mEntryStack
protected

Definition at line 875 of file lbp_function.h.

int faudes::LuaFunction::mFtable
protected

Definition at line 874 of file lbp_function.h.

void* faudes::LuaFunction::mFType
protected

Definition at line 876 of file lbp_function.h.

std::vector<bool> faudes::LuaFunction::mLParameter
protected

Definition at line 878 of file lbp_function.h.

int faudes::LuaFunction::mLParameterCount
protected

Definition at line 880 of file lbp_function.h.

std::vector<bool> faudes::LuaFunction::mLReturn
protected

Definition at line 877 of file lbp_function.h.

int faudes::LuaFunction::mLReturnCount
protected

Definition at line 879 of file lbp_function.h.

LuaState* faudes::LuaFunction::pL
protected

State of Lua interpreter.

Definition at line 872 of file lbp_function.h.

lua_State* faudes::LuaFunction::pLL
protected

Definition at line 873 of file lbp_function.h.

const LuaFunctionDefinition* faudes::LuaFunction::pLuaFuncDef
protected

Typed reference to definition.

Definition at line 869 of file lbp_function.h.


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

libFAUDES 2.24g --- 2014.09.15 --- c++ api documentaion by doxygen