KSeExpr 6.0.0.0
Public Types | Public Member Functions | Static Public Member Functions | Static Private Member Functions | Private Attributes | List of all members
KSeExpr::ExprFunc Class Reference

Function Definition, used in parse tree and func table. More...

#include <ExprFunc.h>

Public Types

using Define = void(*)(const char *, const ExprFunc &)
 
using Define3 = void(*)(const char *, const ExprFunc &, const char *)
 

Public Member Functions

 ExprFunc ()=default
 
 ExprFunc (ExprFuncX &f, int min=1, int max=1)
 User defined function with custom argument parsing.
 
 ExprFunc (ExprFuncStandard::Func0 *f)
 
 ExprFunc (ExprFuncStandard::Func1 *f)
 
 ExprFunc (ExprFuncStandard::Func2 *f)
 
 ExprFunc (ExprFuncStandard::Func3 *f)
 
 ExprFunc (ExprFuncStandard::Func4 *f)
 
 ExprFunc (ExprFuncStandard::Func5 *f)
 
 ExprFunc (ExprFuncStandard::Func6 *f)
 
 ExprFunc (ExprFuncStandard::Funcn *f, int minArgs, int maxArgs)
 
 ExprFunc (ExprFuncStandard::Func1v *f)
 
 ExprFunc (ExprFuncStandard::Func2v *f)
 
 ExprFunc (ExprFuncStandard::Funcnv *f, int minArgs, int maxArgs)
 
 ExprFunc (ExprFuncStandard::Func1vv *f)
 
 ExprFunc (ExprFuncStandard::Func2vv *f)
 
 ExprFunc (ExprFuncStandard::Funcnvv *f)
 
 ExprFunc (ExprFuncStandard::Funcnvv *f, int minArgs, int maxArgs)
 
int minArgs () const
 return the minimum number of acceptable arguments
 
int maxArgs () const
 return the maximum number of acceptable arguments
 
const ExprFuncXfuncx () const
 return pointer to the funcx
 

Static Public Member Functions

static void init ()
 call to define built-in funcs
 
static void cleanup ()
 cleanup all functions
 
static void define (const char *name, const ExprFunc &f, const char *docString)
 
static void define (const char *name, const ExprFunc &f)
 
static const ExprFunclookup (const std::string &name)
 Lookup a builtin function by name.
 
static void getFunctionNames (std::vector< std::string > &names)
 Get a list of registered builtin and DSO generated functions.
 
static std::string getDocString (const char *functionName)
 Get doc string for a specific function.
 
static size_t sizeInBytes ()
 Get the total size estimate of all plugins.
 
static Statistics statistics ()
 Dump statistics.
 

Static Private Member Functions

static void initInternal ()
 

Private Attributes

ExprFuncStandard _standardFunc
 
ExprFuncX_func {nullptr}
 
int _minargs {0}
 
int _maxargs {0}
 

Detailed Description

Function Definition, used in parse tree and func table.

This class in a static setting manages all builtin functions defined by SeExpr internally. These can be queried by name for documentation.

Users can create their own custom functions by creating one of these with the appropriate argument template. Any function that doesn't work within the given templates can be written using a ExprFuncX template instead

Note: If you use the convenience prototypes instead of ExprFuncX, the user defined function will be assumed to be thread safe. If you have a thread unsafe function be sure to use ExprFuncX and call the base constructor with false.

Definition at line 34 of file ExprFunc.h.

Member Typedef Documentation

◆ Define

Definition at line 49 of file ExprFunc.h.

◆ Define3

Definition at line 50 of file ExprFunc.h.

Constructor & Destructor Documentation

◆ ExprFunc() [1/17]

KSeExpr::ExprFunc::ExprFunc ( )
default

◆ ExprFunc() [2/17]

KSeExpr::ExprFunc::ExprFunc ( ExprFuncX f,
int  min = 1,
int  max = 1 
)
inline

User defined function with custom argument parsing.

Definition at line 72 of file ExprFunc.h.

References KSeExpr::max(), and KSeExpr::min().

◆ ExprFunc() [3/17]

KSeExpr::ExprFunc::ExprFunc ( ExprFuncStandard::Func0 f)
inline

Definition at line 77 of file ExprFunc.h.

◆ ExprFunc() [4/17]

KSeExpr::ExprFunc::ExprFunc ( ExprFuncStandard::Func1 f)
inline

Definition at line 81 of file ExprFunc.h.

◆ ExprFunc() [5/17]

KSeExpr::ExprFunc::ExprFunc ( ExprFuncStandard::Func2 f)
inline

Definition at line 87 of file ExprFunc.h.

◆ ExprFunc() [6/17]

KSeExpr::ExprFunc::ExprFunc ( ExprFuncStandard::Func3 f)
inline

Definition at line 93 of file ExprFunc.h.

◆ ExprFunc() [7/17]

KSeExpr::ExprFunc::ExprFunc ( ExprFuncStandard::Func4 f)
inline

Definition at line 99 of file ExprFunc.h.

◆ ExprFunc() [8/17]

KSeExpr::ExprFunc::ExprFunc ( ExprFuncStandard::Func5 f)
inline

Definition at line 105 of file ExprFunc.h.

◆ ExprFunc() [9/17]

KSeExpr::ExprFunc::ExprFunc ( ExprFuncStandard::Func6 f)
inline

Definition at line 111 of file ExprFunc.h.

◆ ExprFunc() [10/17]

KSeExpr::ExprFunc::ExprFunc ( ExprFuncStandard::Funcn f,
int  minArgs,
int  maxArgs 
)
inline

Definition at line 117 of file ExprFunc.h.

◆ ExprFunc() [11/17]

KSeExpr::ExprFunc::ExprFunc ( ExprFuncStandard::Func1v f)
inline

Definition at line 123 of file ExprFunc.h.

◆ ExprFunc() [12/17]

KSeExpr::ExprFunc::ExprFunc ( ExprFuncStandard::Func2v f)
inline

Definition at line 129 of file ExprFunc.h.

◆ ExprFunc() [13/17]

KSeExpr::ExprFunc::ExprFunc ( ExprFuncStandard::Funcnv f,
int  minArgs,
int  maxArgs 
)
inline

Definition at line 135 of file ExprFunc.h.

◆ ExprFunc() [14/17]

KSeExpr::ExprFunc::ExprFunc ( ExprFuncStandard::Func1vv f)
inline

Definition at line 141 of file ExprFunc.h.

◆ ExprFunc() [15/17]

KSeExpr::ExprFunc::ExprFunc ( ExprFuncStandard::Func2vv f)
inline

Definition at line 147 of file ExprFunc.h.

◆ ExprFunc() [16/17]

KSeExpr::ExprFunc::ExprFunc ( ExprFuncStandard::Funcnvv f)
inline

Definition at line 153 of file ExprFunc.h.

◆ ExprFunc() [17/17]

KSeExpr::ExprFunc::ExprFunc ( ExprFuncStandard::Funcnvv f,
int  minArgs,
int  maxArgs 
)
inline

Definition at line 159 of file ExprFunc.h.

Member Function Documentation

◆ cleanup()

void KSeExpr::ExprFunc::cleanup ( )
static

cleanup all functions

Definition at line 110 of file ExprFunc.cpp.

References KSeExpr::mutex.

Referenced by main().

◆ define() [1/2]

void KSeExpr::ExprFunc::define ( const char name,
const ExprFunc f 
)
static

Definition at line 150 of file ExprFunc.cpp.

References KSeExpr::defineInternal(), initInternal(), and KSeExpr::mutex.

◆ define() [2/2]

void KSeExpr::ExprFunc::define ( const char name,
const ExprFunc f,
const char docString 
)
static

Definition at line 158 of file ExprFunc.cpp.

References KSeExpr::defineInternal3(), initInternal(), and KSeExpr::mutex.

Referenced by main().

◆ funcx()

const ExprFuncX * KSeExpr::ExprFunc::funcx ( ) const
inline

return pointer to the funcx

Definition at line 177 of file ExprFunc.h.

References _func, and _standardFunc.

Referenced by KSeExprLLVMEvalCustomFunction().

◆ getDocString()

std::string KSeExpr::ExprFunc::getDocString ( const char functionName)
static

Get doc string for a specific function.

Definition at line 174 of file ExprFunc.cpp.

References initInternal(), and KSeExpr::mutex.

Referenced by ExprCompletionModel::data(), and ExprCompletionModel::getDocString().

◆ getFunctionNames()

void KSeExpr::ExprFunc::getFunctionNames ( std::vector< std::string > &  names)
static

Get a list of registered builtin and DSO generated functions.

Definition at line 166 of file ExprFunc.cpp.

References initInternal(), and KSeExpr::mutex.

Referenced by ExprCompletionModel::ExprCompletionModel().

◆ init()

void KSeExpr::ExprFunc::init ( )
static

call to define built-in funcs

Definition at line 104 of file ExprFunc.cpp.

References initInternal(), and KSeExpr::mutex.

Referenced by KSeExpr::Expression::Expression(), and KSeExpr::Expression::Expression().

◆ initInternal()

void KSeExpr::ExprFunc::initInternal ( )
staticprivate

◆ lookup()

const ExprFunc * KSeExpr::ExprFunc::lookup ( const std::string &  name)
static

Lookup a builtin function by name.

Definition at line 116 of file ExprFunc.cpp.

References initInternal(), and KSeExpr::mutex.

Referenced by KSeExpr::ExprFuncNode::prep(), and BasicExpression::resolveFunc().

◆ maxArgs()

int KSeExpr::ExprFunc::maxArgs ( ) const
inline

return the maximum number of acceptable arguments

Definition at line 172 of file ExprFunc.h.

References _maxargs.

◆ minArgs()

int KSeExpr::ExprFunc::minArgs ( ) const
inline

return the minimum number of acceptable arguments

Definition at line 167 of file ExprFunc.h.

References _minargs.

◆ sizeInBytes()

size_t KSeExpr::ExprFunc::sizeInBytes ( )
static

Get the total size estimate of all plugins.

Definition at line 183 of file ExprFunc.cpp.

References initInternal(), and KSeExpr::mutex.

◆ statistics()

KSeExpr::Statistics KSeExpr::ExprFunc::statistics ( )
static

Dump statistics.

Definition at line 191 of file ExprFunc.cpp.

References initInternal(), and KSeExpr::mutex.

Member Data Documentation

◆ _func

ExprFuncX* KSeExpr::ExprFunc::_func {nullptr}
private

Definition at line 184 of file ExprFunc.h.

Referenced by funcx().

◆ _maxargs

int KSeExpr::ExprFunc::_maxargs {0}
private

Definition at line 186 of file ExprFunc.h.

Referenced by maxArgs().

◆ _minargs

int KSeExpr::ExprFunc::_minargs {0}
private

Definition at line 185 of file ExprFunc.h.

Referenced by minArgs().

◆ _standardFunc

ExprFuncStandard KSeExpr::ExprFunc::_standardFunc
private

Definition at line 183 of file ExprFunc.h.

Referenced by funcx().


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