00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "nel/ai/logic/bool_assert.h"
00021 #include "nel/ai/logic/boolval.h"
00022 #include "nel/ai/logic/fact.h"
00023 #include "nel/ai/logic/varset.h"
00024
00025 namespace NLAILOGIC
00026 {
00027 using namespace NLAIAGENT;
00028
00029 CBoolAssert::CBoolAssert( const IVarName &n, bool truth) : IBaseAssert( n )
00030 {
00031 _Value = truth;
00032 }
00033
00034 CBoolAssert::CBoolAssert( const CBoolAssert &a) : IBaseAssert( *a._Name)
00035 {
00036 _Value = a._Value;
00037 }
00038
00039 CBoolAssert::~CBoolAssert()
00040 {
00041 }
00042
00043 void CBoolAssert::addFact(CVarSet *f)
00044 {
00045 _Value =( (CBoolType *) (*f)[0] )->isTrue();
00046 }
00047
00048 void CBoolAssert::addFact(CFact *f)
00049 {
00050 _Value =( (CBoolType *) f->getValue(0) )->isTrue();
00051 }
00052
00053 void CBoolAssert::removeFact(CFact *f)
00054 {
00055 _Value = ! ( (CBoolType *) f->getValue(0) )->isTrue();
00056 }
00057
00058
00059 void CBoolAssert::addFact(CValueSet *val)
00060 {
00061 _Value =( (CBoolType *) val->getValue(0) )->isTrue();
00062 }
00063
00064 bool CBoolAssert::isTrue() const
00065 {
00066 return _Value;
00067 }
00068
00069 const NLAIC::CIdentType &CBoolAssert::getType() const
00070 {
00071 return IdBoolAssert;
00072 }
00073
00074 const NLAIC::IBasicType *CBoolAssert::clone() const
00075 {
00076 CBoolAssert *clone = new CBoolAssert( *this );
00077 return clone;
00078 }
00079
00080 const NLAIC::IBasicType *CBoolAssert::newInstance() const
00081 {
00082 NLAIAGENT::CStringVarName x("");
00083 CBoolAssert *instance = new CBoolAssert(x);
00084 return instance;
00085 }
00086
00087 void CBoolAssert::save(NLMISC::IStream &os)
00088 {
00089 IObjetOp::save( os );
00090 os.serial( (bool &) _Value );
00091 }
00092
00093 void CBoolAssert::load(NLMISC::IStream &is)
00094 {
00095 IObjetOp::load( is );
00096 is.serial( _Value );
00097 }
00098
00099
00100 void CBoolAssert::getDebugString(std::string &text) const
00101 {
00102 text += "<CBoolAssert> = ";
00103 if ( _Value )
00104 text += "true" ;
00105 else
00106 text += "false" ;
00107 }
00108
00109 bool CBoolAssert::isEqual(const IBasicObjectIA &a) const
00110 {
00111 return ( ((CBoolAssert &)a)._Value == _Value );
00112 }
00113
00114 const IObjectIA::CProcessResult &CBoolAssert::run()
00115 {
00116 return IObjectIA::ProcessRun;
00117 }
00118
00119 sint32 CBoolAssert::nbVars() const
00120 {
00121 return 0;
00122 }
00123
00124 std::list<CFact *> *CBoolAssert::getFacts() const
00125 {
00126 return new std::list<CFact *>;
00127 }
00128 }