fparser
-
class FunctionParser
- #include <fparser.hpp>
Public Types
-
enum ParseErrorType
Values:
-
enumerator SYNTAX_ERROR
-
enumerator MISM_PARENTH
-
enumerator MISSING_PARENTH
-
enumerator EMPTY_PARENTH
-
enumerator EXPECT_OPERATOR
-
enumerator OUT_OF_MEMORY
-
enumerator UNEXPECTED_ERROR
-
enumerator INVALID_VARS
-
enumerator ILL_PARAMS_AMOUNT
-
enumerator PREMATURE_EOS
-
enumerator EXPECT_PARENTH_FUNC
-
enumerator FP_NO_ERROR
-
enumerator SYNTAX_ERROR
-
typedef double (*FunctionPtr)(const double*)
Public Functions
-
int Parse(const std::string &Function, const std::string &Vars, bool useDegrees = false)
-
const char *ErrorMsg() const
-
inline ParseErrorType GetParseErrorType() const
-
double Eval(const double *Vars)
-
inline int EvalError() const
-
bool AddConstant(const std::string &name, double value)
-
bool AddFunction(const std::string &name, FunctionPtr, unsigned paramsAmount)
-
bool AddFunction(const std::string &name, FunctionParser&)
-
void Optimize()
-
FunctionParser()
-
~FunctionParser()
-
FunctionParser(const FunctionParser&)
-
FunctionParser &operator=(const FunctionParser&)
Private Functions
-
void copyOnWrite()
-
bool checkRecursiveLinking(const FunctionParser*) const
-
bool isValidName(const std::string&) const
-
inline Data::ConstMap_t::const_iterator FindConstant(const char*) const
-
int CheckSyntax(const char*)
-
bool Compile(const char*)
-
bool IsVariable(int)
-
inline void AddCompiledByte(unsigned)
-
inline void AddImmediate(double)
-
inline void AddFunctionOpcode(unsigned)
-
inline void incStackPtr()
-
int CompileIf(const char*, int)
-
int CompileFunctionParams(const char*, int, unsigned)
-
int CompileElement(const char*, int)
-
int CompilePow(const char*, int)
-
int CompileUnaryMinus(const char*, int)
-
int CompileMult(const char*, int)
-
int CompileAddition(const char*, int)
-
int CompileComparison(const char*, int)
-
int CompileAnd(const char*, int)
-
int CompileOr(const char*, int)
-
int CompileExpression(const char*, int, bool = false)
-
void MakeTree(void*) const
Private Members
-
ParseErrorType parseErrorType
-
int evalErrorType
-
unsigned evalRecursionLevel
-
unsigned StackPtr
-
std::vector<unsigned> *tempByteCode
-
std::vector<double> *tempImmed
-
struct Data
Public Types
-
typedef std::map<std::string, unsigned> VarMap_t
-
typedef std::map<std::string, double> ConstMap_t
Public Members
-
unsigned referenceCounter
-
int varAmount
-
bool useDegreeConversion
-
ConstMap_t Constants
-
std::vector<FuncPtrData> FuncPtrs
-
std::vector<FunctionParser*> FuncParsers
-
unsigned *ByteCode
-
unsigned ByteCodeSize
-
double *Immed
-
unsigned ImmedSize
-
double *Stack
-
unsigned StackSize
-
struct FuncPtrData
- #include <fparser.hpp>
Public Functions
-
inline FuncPtrData(FunctionPtr p, unsigned par)
-
inline FuncPtrData(FunctionPtr p, unsigned par)
-
typedef std::map<std::string, unsigned> VarMap_t
-
enum ParseErrorType