#ifndef AFEVAL_H #define AFEVAL_H #include "afparser.h" #include "afutils.h" // #include "aftypes.h" #include class FilterEvaluator { public: void reset(); void setVar( string key, AFPData value ); void setVars( map values ); bool evaluateFilter( string code ); string evaluateExpression( string code ); protected: bool move(); bool move( int shift ); void doLevelEntry( AFPData* result ); void doLevelSet( AFPData* result ); void doLevelBoolOps( AFPData* result ); void doLevelCompares( AFPData* result ); void doLevelMulRels( AFPData* result ); void doLevelSumRels( AFPData* result ); void doLevelPow( AFPData* result ); void doLevelBoolInvert( AFPData* result ); void doLevelSpecialWords( AFPData* result ); void doLevelUnarys( AFPData* result ); void doLevelBraces( AFPData* result ); void doLevelFunction( AFPData* result ); void doLevelAtom( AFPData* result ); AFPToken cur; vector tokens; map > tokenCache; unsigned int pos; map vars; bool forceResult; }; // typedef AFPData (*AFPFunction) (vector); vector getOpsForType( string type ); #endif /* !AFEVAL_H */