|
libFAUDES
Sections
Index
|
faudes::LuaFunctionDefinition Class Reference
|
Public Member Functions | |
LuaFunctionDefinition (const std::string &name="") | |
Constructor. | |
LuaFunctionDefinition (const LuaFunctionDefinition &rSrc) | |
Copy constructor. | |
virtual | ~LuaFunctionDefinition (void) |
Destructor. | |
void | Clear (void) |
Clear documentation-data, signature and script (keep prototype). | |
const std::string & | LuaCode (void) const |
Get Lua code. | |
void | LuaCode (const std::string &rCode) |
Set Lua code. | |
std::string | SyntaxCheck (void) |
Syntax check lua code. | |
Protected Member Functions | |
virtual void | DoAssign (const LuaFunctionDefinition &rSrc) |
Std faudes type interface: assignment. | |
virtual bool | DoEqual (const LuaFunctionDefinition &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 | |
LuaFunction * | pLuaFunction |
Typed prototype instance. | |
std::string | mLuaCode |
Lua code. | |
std::string | mLuaFile |
Lua file. |
A LuaFunctionDefinition is derived from FaunctionDefinition to defines a faudes-function to be a luafaudes script.
Thus, it has the lua code as an additional member variable and uses a LuaFunction as a prototype object. In particular, LuaFunctionDefinitions are allways valid in the sense that hey have a prototype. The LuaFunction object implements DoTypeCheck and DoExecute to run the specifed lua code.
The token io format is demonstrated by the following example:
<LuaFunctionDefinition name="LuaExtension::LargeGenerator"> <Documentation> Construct a generator by random. </Documentation> <Keywords> "luaextension" "example" </Keywords> <VariantSignatures> <Signature name="LargeGen(#Q,#Sigma,GRes)"> <Parameter name="SizeQ" ftype="Integer" access="In"/> <Parameter name="SizeSigma" ftype="Integer" access="In"/> <Parameter name="Res" ftype="Generator" access="Out" /> </Signature> </VariantSignatures> <LuaCode> __VERBATIM__ -- Extension reports on loading print('loading luaextension "LargeGenerator"') -- Define my function (mangled version of variant name) function LargeGen_Q_Sigma_GRes_(qn,sn,gen) -- Function reports on execution print(string.format('LargeGen(...): qn=%d sn=%d',qn,sn)) -- Exeution code gen:Clear() for i=1,qn do gen:InsState(i) end for i=1,sn do gen:InsEvent(string.format('ev_%d',i)) end -- By convention, we return all arguments return qn,sn,gen -- End of function definition end -- Extension reports on loading print('loading luaextension: done') __VERBATIM__ </LuaCode> </LuaFunctionDefinition>
Alternatively to the embedded code, the luacode can be read from an external file, specified by a section LuaFile
. (not implemented)
Restrictions and conventions:
Definition at line 121 of file lbp_function.h.
faudes::LuaFunctionDefinition::LuaFunctionDefinition | ( | const std::string & | name = "" |
) |
Constructor.
In contrast to the std FunctionDefinition, the default constructor sets up a valid lua function definition with a newly created LuaFunction as prototype. Of course, you will need to set the signatures and the lua code to obtain an operational function.
Definition at line 44 of file lbp_function.cpp.
faudes::LuaFunctionDefinition::LuaFunctionDefinition | ( | const LuaFunctionDefinition & | rSrc | ) |
Copy constructor.
Definition at line 54 of file lbp_function.cpp.
virtual faudes::LuaFunctionDefinition::~LuaFunctionDefinition | ( | void | ) | [inline, virtual] |
Destructor.
Definition at line 147 of file lbp_function.h.
void faudes::LuaFunctionDefinition::Clear | ( | void | ) | [virtual] |
Clear documentation-data, signature and script (keep prototype).
Reimplemented from faudes::FunctionDefinition.
Definition at line 88 of file lbp_function.cpp.
void faudes::LuaFunctionDefinition::DoAssign | ( | const LuaFunctionDefinition & | rSrc | ) | [protected, virtual] |
Std faudes type interface: assignment.
rSrc | Source to copy from |
Definition at line 62 of file lbp_function.cpp.
bool faudes::LuaFunctionDefinition::DoEqual | ( | const LuaFunctionDefinition & | rOther | ) | const [protected, virtual] |
Std faudes type interface: test equality.
rOther | Other object to compare with. |
Definition at line 78 of file lbp_function.cpp.
void faudes::LuaFunctionDefinition::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 "LuaFunctionDefinition", context ignored.
rTr | TokenReader to read from | |
rLabel | Section to read | |
pContext | Read context to provide contextual information (ignored) |
Reimplemented from faudes::FunctionDefinition.
Definition at line 155 of file lbp_function.cpp.
void faudes::LuaFunctionDefinition::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::FunctionDefinition.
Definition at line 170 of file lbp_function.cpp.
void faudes::LuaFunctionDefinition::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 "LuaFunctionDefinition", context ignored.
rTw | Reference to TokenWriter | |
rLabel | Label of section to write | |
pContext | Write context to provide contextual information |
Exception |
|
Reimplemented from faudes::FunctionDefinition.
Definition at line 197 of file lbp_function.cpp.
void faudes::LuaFunctionDefinition::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::FunctionDefinition.
Definition at line 206 of file lbp_function.cpp.
void faudes::LuaFunctionDefinition::LuaCode | ( | const std::string & | rCode | ) |
Set Lua code.
rCode | Lua code as std string |
Definition at line 111 of file lbp_function.cpp.
const std::string & faudes::LuaFunctionDefinition::LuaCode | ( | void | ) | const |
void faudes::LuaFunctionDefinition::Prototype | ( | Function * | pFunc | ) | [protected, virtual] |
Assign prototype object.
pFunc | Function instance |
Reimplemented from faudes::FunctionDefinition.
Definition at line 98 of file lbp_function.cpp.
std::string faudes::LuaFunctionDefinition::SyntaxCheck | ( | void | ) |
Syntax check lua code.
This routine instantiates a LuaFunction from this function definition and does all it needs to run the script, except to invoke the any of the variant functions. The reasoning is, that the script may hang and, thus, never return. Errors are indicated by an exception.
Definition at line 117 of file lbp_function.cpp.
std::string faudes::LuaFunctionDefinition::mLuaCode [protected] |
Lua code.
Definition at line 284 of file lbp_function.h.
std::string faudes::LuaFunctionDefinition::mLuaFile [protected] |
Lua file.
Definition at line 287 of file lbp_function.h.
LuaFunction* faudes::LuaFunctionDefinition::pLuaFunction [protected] |
Typed prototype instance.
Definition at line 281 of file lbp_function.h.
libFAUDES 2.18b --- 2010-12-17 --- c++ source docu by doxygen 1.6.3