Registration class for extending NED with arbitrary new functions.
Objects of this class are usually created via the Define_NED_Function() macro.
Public Member Functions | |
Constructors, destructor, assignment | |
cNedFunction (NedFunction f, const char *signature, const char *category=nullptr, const char *description=nullptr) | |
cNedFunction (NedFunctionExt f, const char *signature, const char *category=nullptr, const char *description=nullptr) | |
virtual | ~cNedFunction () |
Redefined cObject member functions. | |
virtual std::string | str () const override |
Public Member Functions inherited from cNoncopyableOwnedObject | |
cNoncopyableOwnedObject (const char *name=nullptr, bool namepooling=true) | |
virtual cNoncopyableOwnedObject * | dup () const override |
Public Member Functions inherited from cOwnedObject | |
cOwnedObject () | |
cOwnedObject (const char *name, bool namepooling=true) | |
cOwnedObject (const cOwnedObject &obj) | |
virtual | ~cOwnedObject () |
cOwnedObject & | operator= (const cOwnedObject &o) |
virtual cObject * | getOwner () const override |
virtual bool | isOwnedObject () const override |
Public Member Functions inherited from cNamedObject | |
cNamedObject () | |
cNamedObject (const char *name, bool namepooling=true) | |
cNamedObject (const cNamedObject &obj) | |
virtual | ~cNamedObject () |
cNamedObject & | operator= (const cNamedObject &o) |
virtual void | setName (const char *s) |
virtual const char * | getName () const override |
virtual void | setNamePooling (bool b) |
virtual bool | getNamePooling () |
Public Member Functions inherited from cObject | |
cObject () | |
cObject (const cObject &other)=default | |
virtual | ~cObject () |
virtual const char * | getClassName () const |
bool | isName (const char *s) const |
virtual const char * | getFullName () const |
virtual std::string | getFullPath () const |
virtual std::string | getClassAndFullName () const |
virtual std::string | getClassAndFullPath () const |
const cObject * | getThisPtr () const |
virtual std::ostream & | printOn (std::ostream &os) const |
virtual bool | isSoftOwner () const |
virtual void | forEachChild (cVisitor *v) |
cObject * | findObject (const char *name, bool deep=true) |
virtual cClassDescriptor * | getDescriptor () const |
void | copyNotSupported () const |
Member access. | |
cValue | invoke (cExpression::Context *context, cValue argv[], int argc) |
NedFunction | getFunctionPointer () const |
const char * | getSignature () const |
Type | getReturnType () const |
Type | getArgType (int k) const |
int | getMinArgs () const |
int | getMaxArgs () const |
bool | hasVarArgs () const |
bool | acceptsArgCount (int argCount) |
const char * | getCategory () const |
const char * | getDescription () const |
static cNedFunction * | find (const char *name) |
static cNedFunction * | find (const char *name, int argCount) |
static cNedFunction * | get (const char *name) |
static cNedFunction * | get (const char *name, int argCount) |
static cNedFunction * | findByPointer (NedFunction f) |
Additional Inherited Members | |
Static Public Member Functions inherited from cOwnedObject | |
static long | getTotalObjectCount () |
static long | getLiveObjectCount () |
static void | resetObjectCounters () |
static cSoftOwner * | getOwningContext () |
Protected Member Functions inherited from cObject | |
virtual void | take (cOwnedObject *obj) |
virtual void | drop (cOwnedObject *obj) |
void | dropAndDelete (cOwnedObject *obj) |
cNedFunction | ( | NedFunction | f, |
const char * | signature, | ||
const char * | category = nullptr , |
||
const char * | description = nullptr |
||
) |
Constructor. Signature is expected in the following syntax: returntype name(argtype argname,...), where types can be bool, long, double, quantity, intquantity, string, xml, any; names of optional arguments end in '?'. The object name will be the function name, as extracted from the signature string. The signature may end in an ellipsis, i.e. "...", to mean that any number of extra args of unspecified types should be accepted. (When there are both optional args and an ellipsis, then extra arguments can only be passed when all optional arguments are all supplied.)
Examples: "quantity uniform(quantity a, quantity b, long rng?)" "string sprintf(format, ...)" "any max(...)"
cNedFunction | ( | NedFunctionExt | f, |
const char * | signature, | ||
const char * | category = nullptr , |
||
const char * | description = nullptr |
||
) |
Alternative constructor. Usage is similar to the first constructor, except that it takes a function with a slightly different signature (NedFunctionExt instead of NedFunction).
|
inlinevirtual |
Destructor.
|
overridevirtual |
Produces a one-line description of the object's contents.
Reimplemented from cObject.
cValue invoke | ( | cExpression::Context * | context, |
cValue | argv[], | ||
int | argc | ||
) |
Performs argument type checking, and invokes the function.
|
inline |
Returns the function pointer. Do not call the function directly, because that would bypass argument type validation.
|
inline |
Returns the functions signature, as passed to the constructor
|
inline |
Returns the function return type.
|
inline |
Returns the type of the kth argument.
|
inline |
Returns the minimum number of arguments (i.e. the number of mandatory arguments).
|
inline |
Returns the maximum number of typed arguments (i.e. the last max-min args are optional). If hasVarArgs() is true, the function actually accepts more than getMaxArgs() arguments.
|
inline |
Returns true if the function signature ends in an ellipsis ("..."), that is, the function supports varargs.
|
inline |
Convenience method: Returns true if the function accepts the given number of arguments.
|
inline |
Returns a string that can be useful in classifying NED functions, e.g. "trigonometric".
|
inline |
Returns the function's documentation as a string.
|
static |
Finds a registered function by name. Returns nullptr if not found.
|
static |
Finds a registered function with the given name that accepts the given number or arguments. Returns nullptr if not found.
|
static |
Finds a registered function by name. Throws an error if not found.
|
static |
Finds a registered function with the given name that accepts the given number or arguments. Throws an error if not found.
|
static |
Finds a registered function by function pointer.