#ifndef _CONDITION_NODES_ #define _CONDITION_NODES_ //common ancestor to all node classes class CNodeBase { public: CNodeBase(); virtual ~CNodeBase(); bool GetValue(); virtual void Reevaluate() = 0; void SetParent(CNodeBase*); protected: bool m_value; CNodeBase* m_parent; }; class CNodeAnd : public CNodeBase { public: CNodeAnd(CNodeBase*, CNodeBase*); ~CNodeAnd(); void Reevaluate(); private: //operands CNodeBase* m_lchild; CNodeBase* m_rchild; }; class CNodeOr : public CNodeBase { public: CNodeOr(CNodeBase*, CNodeBase*); ~CNodeOr(); virtual void Reevaluate(); private: //operands CNodeBase* m_lchild; CNodeBase* m_rchild; }; class CNodeNot : public CNodeBase { public: CNodeNot(CNodeBase*); ~CNodeNot(); virtual void Reevaluate(); private: //operand CNodeBase* m_child; bool m_first; }; struct CElement : public CNodeBase { public: void SetValue(bool); virtual void Reevaluate(); private: }; #endif