# Home    # nevrax.com   
Nevrax
Nevrax.org
#News
#Mailing-list
#Documentation
#CVS
#Bugs
#License
Docs
 
Documentation  
Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages   Search  

factbase.h

Go 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_FACTBASE_H
00027 #define NL_FACTBASE_H
00028 
00029 #include "nel/ai/agent/agent.h"
00030 #include "nel/ai/agent/agent_string.h"
00031 
00032 namespace NLAILOGIC
00033 {
00034         class IBaseAssert;
00035         class CVarSet;
00036         class CFactPattern;
00037         class CValueSet;
00038         class CFact;
00039         
00040         class CFactBase : public NLAIAGENT::IObjetOp {
00041                 private:
00042                         std::list<IBaseAssert *> _Asserts;
00043 
00044                 private:
00045                         IBaseAssert *findAssert(IBaseAssert *);
00046                         IBaseAssert *findAssert(NLAIAGENT::IVarName &, sint32);
00047 
00048                 public:
00049                         static const NLAIC::CIdentType IdFactBase;                      
00050                         
00051                 public:
00052                         CFactBase();
00053                         virtual ~CFactBase();
00054                         void addFact(NLAIAGENT::IVarName &, CValueSet *);               
00055                         void addFact(CFact *);
00056 
00057                         void removeFact(CFact *);
00058                         IBaseAssert *addAssert(NLAIAGENT::IVarName &, sint32);
00059                         void addAssert(IBaseAssert *);
00060 
00061                         virtual const NLAIC::IBasicType *clone() const;
00062                         virtual const NLAIC::IBasicType *newInstance() const;
00063                         virtual const NLAIC::CIdentType &getType() const;
00064                         virtual void save(NLMISC::IStream &os);
00065                         virtual void load(NLMISC::IStream &is);
00066                         virtual void getDebugString(std::string &) const;
00067 
00068                         virtual bool isEqual(const NLAIAGENT::IBasicObjectIA &a) const;
00069                         virtual const CProcessResult &run();
00070                         virtual bool isTrue() const;
00071 
00072                         virtual std::list<CFact *> *getAssertFacts(IBaseAssert *);
00073 
00074                         virtual void addGoal(NLAIAGENT::IVarName &, CValueSet *);
00075         };
00076 }
00077 #endif