ezEngine  Milestone 7
ezConsoleFunctionBase Class Referenceabstract

Base class for all types of ezConsoleFunction, represents functions to be exposed to ezConsole. More...

#include <ConsoleFunction.h>

Inheritance diagram for ezConsoleFunctionBase:

Public Member Functions

 ezConsoleFunctionBase (const char *szFunctionName, const char *szDescription)
 The constructor takes the function name and description as it should appear in the console.
 
const char * GetName () const
 Returns the name of the function as it should be exposed in the console.
 
const char * GetDescription () const
 Returns the description of the function as it should appear in the console.
 
virtual ezUInt32 GetNumParameters () const =0
 Returns the number of parameters that this function takes.
 
virtual ezVariant::Type::Enum GetParameterType (ezUInt32 uiParam) const =0
 Returns the type of the n-th parameter.
 
virtual ezResult Call (ezArrayPtr< ezVariant > params)=0
 Calls the function. Each parameter must be put into an ezVariant and all of them are passed along as an array. More...
 

Private Member Functions

 EZ_DECLARE_ENUMERABLE_CLASS (ezConsoleFunctionBase)
 

Private Attributes

const char * m_szFunctionName
 
const char * m_szDescription
 

Additional Inherited Members

- Static Public Member Functions inherited from ezNoBase
static const ezRTTIGetStaticRTTI ()
 
- Protected Attributes inherited from ezEnumerable< ezConsoleFunctionBase >
ezEnumerablem_pNextInstance
 

Detailed Description

Base class for all types of ezConsoleFunction, represents functions to be exposed to ezConsole.

Console functions are similar to ezCVar's in that they can be executed from the ezConsole. A console function can wrap many different types of functions with differing number and types of parameters. ezConsoleFunction uses an ezDelegate internally to store the function reference, so even member functions would be possible.

All console functions are enumerable, as their base class ezConsoleFunctionBase is an ezEnumerable class.

Console functions can have between zero and six parameters. The LuaInterpreter for ezConsole only supports parameter types (unsigned) int, float/double, bool and string and uses the conversion feature of ezVariant to map the lua input to the final function.

To make a function available as a console function, create a global variable of type ezConsoleFunction with the proper template arguments to mirror its parameters and return type. Note that although functions with return types are accepted, the return value is currently always ignored.

void MyConsoleFunc1(int a, float b, const char* sz) { ... }
ezConsoleFunction<void ()> ConFunc_MyConsoleFunc1("MyConsoleFunc1", "()", MyConsoleFunc1);
int MyConsoleFunc2(int a, float b, const char* sz) { ... }
ezConsoleFunction<int (int, float, ezString)> ConFunc_MyConsoleFunc2("MyConsoleFunc2", "(int a, float b, string c)", MyConsoleFunc2);

Here the global function MyConsoleFunc2 is exposed to the console. The return value type and parameter types are passed as template arguments. ConFunc_MyConsoleFunc2 is now the global variable that represents the function for the console. The first string is the name with which the function is exposed, which is also used for auto-completion. The second string is the description of the function. Here we inserted the parameter list with types, so that the user knows how to use it. Finally the last parameter is the actual function to expose.

Member Function Documentation

virtual ezResult ezConsoleFunctionBase::Call ( ezArrayPtr< ezVariant params)
pure virtual

Calls the function. Each parameter must be put into an ezVariant and all of them are passed along as an array.

Returns EZ_FAILURE, if the number of parameters did not match, or any parameter was not convertible to the actual type that the function expects.

Implemented in ezConsoleFunction< R(EZ_LIST(P, ARG_COUNT))>.


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