ROOT logo
#ifndef ALIEXPRESSION_H
#define ALIEXPRESSION_H

/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id$ */

///////////////////////////////////////////////////////////////////////////////
//                                                                           //
//  AliExpression Class                                                      //                                                                           //
//                                                                           //
///////////////////////////////////////////////////////////////////////////////

#include <TObject.h>
class TString;
class TObjArray;

// These are the valid operators types.

enum { kOpAND=1,   // AND '&'
       kOpOR,      // OR '|'
       kOpNOT };   // Unary negation '!'

class AliExpression : public TObject {

public:
                           AliExpression() : fVname(0), fArg1(0), fArg2(0), fOperator(0)  {}
                           AliExpression( TString exp );
               virtual    ~AliExpression();
                           AliExpression( const AliExpression& exp ) : TObject( exp ),
                                          fVname(exp.fVname),
                                          fArg1(exp.fArg1), fArg2(exp.fArg2),
                                          fOperator(exp.fOperator)  {}
         AliExpression&    operator=(const AliExpression& exp);

        virtual Bool_t     Value( const TObjArray & vars );
       virtual TString     Unparse() const;

                TString    fVname;   // Variable name

private:
         AliExpression*    fArg1;         // left argument
         AliExpression*    fArg2;         // right argument
                 Int_t     fOperator;     // operator

                           AliExpression( int op, AliExpression* a );
                           AliExpression( int op, AliExpression* a, AliExpression* b );

             TObjArray*    Tokenize( TString str ) const;
  static AliExpression*    Element( TObjArray &st, Int_t &i );
  static AliExpression*    Primary( TObjArray &st, Int_t &i );
  static AliExpression*    Expression( TObjArray &st, Int_t &i );

   ClassDef( AliExpression, 2 )  // Class to evaluate an expression
};




///////////////////////////////////////////////////////////////////////////

class AliVariableExpression: public AliExpression {
public:
                     AliVariableExpression( TString a ): AliExpression() { fVname = a; };
                    ~AliVariableExpression() {}
   virtual Bool_t    Value( const TObjArray& pgm );
  virtual TString    Unparse() const { return fVname; }

   ClassDef( AliVariableExpression, 2 )  // Class to define a variable expression
};

#endif
 AliExpression.h:1
 AliExpression.h:2
 AliExpression.h:3
 AliExpression.h:4
 AliExpression.h:5
 AliExpression.h:6
 AliExpression.h:7
 AliExpression.h:8
 AliExpression.h:9
 AliExpression.h:10
 AliExpression.h:11
 AliExpression.h:12
 AliExpression.h:13
 AliExpression.h:14
 AliExpression.h:15
 AliExpression.h:16
 AliExpression.h:17
 AliExpression.h:18
 AliExpression.h:19
 AliExpression.h:20
 AliExpression.h:21
 AliExpression.h:22
 AliExpression.h:23
 AliExpression.h:24
 AliExpression.h:25
 AliExpression.h:26
 AliExpression.h:27
 AliExpression.h:28
 AliExpression.h:29
 AliExpression.h:30
 AliExpression.h:31
 AliExpression.h:32
 AliExpression.h:33
 AliExpression.h:34
 AliExpression.h:35
 AliExpression.h:36
 AliExpression.h:37
 AliExpression.h:38
 AliExpression.h:39
 AliExpression.h:40
 AliExpression.h:41
 AliExpression.h:42
 AliExpression.h:43
 AliExpression.h:44
 AliExpression.h:45
 AliExpression.h:46
 AliExpression.h:47
 AliExpression.h:48
 AliExpression.h:49
 AliExpression.h:50
 AliExpression.h:51
 AliExpression.h:52
 AliExpression.h:53
 AliExpression.h:54
 AliExpression.h:55
 AliExpression.h:56
 AliExpression.h:57
 AliExpression.h:58
 AliExpression.h:59
 AliExpression.h:60
 AliExpression.h:61
 AliExpression.h:62
 AliExpression.h:63
 AliExpression.h:64
 AliExpression.h:65
 AliExpression.h:66
 AliExpression.h:67
 AliExpression.h:68
 AliExpression.h:69
 AliExpression.h:70
 AliExpression.h:71
 AliExpression.h:72
 AliExpression.h:73