| 1 |
|
|---|
| 2 | #ifndef __EBMEXPR_H__
|
|---|
| 3 | #define __EBMEXPR_H__
|
|---|
| 4 |
|
|---|
| 5 | #include <list>
|
|---|
| 6 | #include "Ebm.h"
|
|---|
| 7 |
|
|---|
| 8 |
|
|---|
| 9 | class Ebm;
|
|---|
| 10 |
|
|---|
| 11 | class EbmExpr : public Ebm {
|
|---|
| 12 | private:
|
|---|
| 13 | OperatorType _operator; // operateur de ce noeud
|
|---|
| 14 | std::list<Ebm*> _operands; // pointeurs sur les operandes
|
|---|
| 15 | public:
|
|---|
| 16 | EbmExpr ( OperatorType, std::list<Ebm*>& operands );
|
|---|
| 17 | virtual ~EbmExpr ();
|
|---|
| 18 | static EbmExpr* Not ( Ebm* );
|
|---|
| 19 | static EbmExpr* Or ( Ebm*, Ebm* );
|
|---|
| 20 | static EbmExpr* Or ( Ebm*, Ebm*, Ebm* );
|
|---|
| 21 | static EbmExpr* Or ( Ebm*, Ebm*, Ebm*, Ebm* );
|
|---|
| 22 | static EbmExpr* Xor ( Ebm*, Ebm* );
|
|---|
| 23 | static EbmExpr* Xor ( Ebm*, Ebm*, Ebm* );
|
|---|
| 24 | static EbmExpr* Xor ( Ebm*, Ebm*, Ebm*, Ebm* );
|
|---|
| 25 | static EbmExpr* And ( Ebm*, Ebm* );
|
|---|
| 26 | static EbmExpr* And ( Ebm*, Ebm*, Ebm* );
|
|---|
| 27 | static EbmExpr* And ( Ebm*, Ebm*, Ebm*, Ebm* );
|
|---|
| 28 | public:
|
|---|
| 29 | virtual Ebm::Type getType ();
|
|---|
| 30 | inline OperatorType getOperator ();
|
|---|
| 31 | inline std::list<Ebm*>& getOperands ();
|
|---|
| 32 | };
|
|---|
| 33 |
|
|---|
| 34 |
|
|---|
| 35 | inline Ebm::OperatorType EbmExpr::getOperator () { return _operator; }
|
|---|
| 36 | inline std::list<Ebm*>& EbmExpr::getOperands () { return _operands; }
|
|---|
| 37 |
|
|---|
| 38 |
|
|---|
| 39 | #endif // __EBMEXPR_H__
|
|---|
| 40 |
|
|---|