#ifndef ALIRSNEXPRESSION_H
#define ALIRSNEXPRESSION_H
#include <TObject.h>
class TObjArray;
#include "AliRsnCutSet.h"
class AliRsnVariableExpression;
class AliRsnExpression : public TObject {
public:
enum ECutOp {
kOpAND = 1,
kOpOR,
kOpNOT
};
AliRsnExpression() : fVname(0), fArg1(0), fArg2(0), fOperator(0) {}
AliRsnExpression(TString exp);
virtual ~AliRsnExpression();
AliRsnExpression(const AliRsnExpression &exp);
AliRsnExpression &operator= (const AliRsnExpression &exp);
virtual Bool_t Value(TObjArray &vars);
virtual TString Unparse() const;
void SetCutSet(AliRsnCutSet *const theValue) { fgCutSet = theValue; }
AliRsnCutSet *GetCutSet() const { return fgCutSet; }
TString fVname;
static AliRsnCutSet *fgCutSet;
private:
AliRsnExpression *fArg1;
AliRsnExpression *fArg2;
Int_t fOperator;
AliRsnExpression(int op, AliRsnExpression *a);
AliRsnExpression(int op, AliRsnExpression *a, AliRsnExpression *b);
TObjArray *Tokenize(TString str) const;
static AliRsnExpression *Element(TObjArray &st, Int_t &i);
static AliRsnExpression *Primary(TObjArray &st, Int_t &i);
static AliRsnExpression *Expression(TObjArray &st, Int_t &i);
ClassDef(AliRsnExpression, 1);
};
#endif