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
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::VarMap_t::const_iterator FindVariable(const char*, const Data::VarMap_t&) 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
Data *data
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 Functions

Data()
~Data()
Data(const Data&)
Data &operator=(const Data&)

Public Members

unsigned referenceCounter
int varAmount
bool useDegreeConversion
VarMap_t Variables
ConstMap_t Constants
VarMap_t FuncPtrNames
std::vector<FuncPtrData> FuncPtrs
VarMap_t FuncParserNames
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)

Public Members

FunctionPtr ptr
unsigned params