mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/AbuseFilter.git
synced 2024-11-14 09:44:44 +00:00
46 lines
1.2 KiB
C++
Executable file
46 lines
1.2 KiB
C++
Executable file
#ifndef AFEVAL_H
|
|
#define AFEVAL_H
|
|
|
|
#include "afparser.h"
|
|
#include "afutils.h"
|
|
// #include "aftypes.h"
|
|
#include <map>
|
|
|
|
class FilterEvaluator {
|
|
public:
|
|
void reset();
|
|
void setVar( string key, AFPData value );
|
|
void setVars( map<string,AFPData> 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<AFPToken> tokens;
|
|
map<string, vector<AFPToken> > tokenCache;
|
|
unsigned int pos;
|
|
map<string,AFPData> vars;
|
|
bool forceResult;
|
|
};
|
|
|
|
// typedef AFPData (*AFPFunction) (vector<AFPData>);
|
|
|
|
vector<string> getOpsForType( string type );
|
|
|
|
#endif /* !AFEVAL_H */
|