Home | nevrax.com |
|
ai_assert.hGo to the documentation of this file.00001 00007 /* Copyright, 2000 Nevrax Ltd. 00008 * 00009 * This file is part of NEVRAX NEL. 00010 * NEVRAX NEL is free software; you can redistribute it and/or modify 00011 * it under the terms of the GNU General Public License as published by 00012 * the Free Software Foundation; either version 2, or (at your option) 00013 * any later version. 00014 00015 * NEVRAX NEL is distributed in the hope that it will be useful, but 00016 * WITHOUT ANY WARRANTY; without even the implied warranty of 00017 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00018 * General Public License for more details. 00019 00020 * You should have received a copy of the GNU General Public License 00021 * along with NEVRAX NEL; see the file COPYING. If not, write to the 00022 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, 00023 * MA 02111-1307, USA. 00024 */ 00025 00026 #ifndef NL_IA_ASSERT_H 00027 #define NL_IA_ASSERT_H 00028 00029 #include "nel/ai/agent/agent.h" 00030 #include "nel/ai/logic/var.h" 00031 00032 namespace NLAILOGIC 00033 { 00034 class CClause; 00035 class CVarSet; 00036 class CValueSet; 00037 class CFact; 00038 class IBaseOperator; 00039 00040 class IBaseAssert : public NLAIAGENT::IObjetOp 00041 { 00042 protected: 00043 NLAIAGENT::IVarName *_Name; 00044 std::vector<IBaseOperator *> _Outputs; // Operators referecing the assertion in their preconditions 00045 std::vector<IBaseOperator *> _Inputs; // Operators referecing the assertion in their postconditions 00046 00047 public: 00048 IBaseAssert(const NLAIAGENT::IVarName &n ); 00049 virtual ~IBaseAssert(); 00050 00051 //virtual void connectClause(CClause *) = 0; 00052 virtual void addFact(CValueSet *) = 0; 00053 virtual void addFact(CVarSet *) = 0; 00054 virtual void removeFact(CFact *) = 0; 00055 00056 virtual NLAIAGENT::IVarName &getName() const 00057 { 00058 return *_Name; 00059 } 00060 00061 virtual bool operator==(IBaseAssert *cp) 00062 { 00063 return ( _Name == cp->_Name ); 00064 } 00065 00066 virtual void addInput(IBaseOperator *); 00067 virtual const std::vector<IBaseOperator *> &getInputs(); 00068 virtual void addOutput(IBaseOperator *); 00069 virtual const std::vector<IBaseOperator *> &getOutputs(); 00070 00071 virtual const NLAIC::CIdentType &getType() const = 0; 00072 virtual sint32 nbVars() const = 0; 00073 virtual std::list<CFact *> *getFacts() const = 0; 00074 }; 00075 } 00076 00077 #endif |