From: <jwm...@ao...> - 2010-05-11 02:46:56
|
Rick, I tried to add evaluate() to examples/environment/envsimple.cpp like this: CLIPS::Values vfact; // vector of facts .... env1.reset(); //env2.reset(); vfact = env1.evaluate("(get-fact-list)"); for (vector<CLIPS::Value>::const_iterator cit = vfact.begin(); cit != vfact.end(); ++cit) { cout <<"Within for loop"<< endl; //cout << static_cast<string>(*cit) <<" "; } the example compiles, but execution aborts: $ ./envsimple <== f-0 (initial-fact) ==> f-0 (initial-fact) ==> f-1 (in (object robot) (location RoomA)) ==> f-2 (in (object box) (location RoomB)) ==> f-3 (goal (action push) (object box) (from RoomB) (to RoomA)) terminate called after throwing an instance of 'std::logic_error' what(): clipsmm::data_object_to_values: Unhandled multifield type Aborted Do you find something obviously wrong there? May be you could share a piece of code with evaluate() as an example to expedite our work? Thanks, Jerzy Miernik. |
From: <jwm...@ao...> - 2010-05-13 04:07:28
|
It appears that case MULTIFIELD is not handled within case MULTIFIELD in function data_object_to_values( dataObject& clipsdo ) in file factory.cpp. In CLIPS constant.h we have #define MULTIFIELD 4 but this value is not part of CLIPS::Type in value.h. It looks like for evaluating commands involving facts from deftemplates we will need vector of vectors. I'll be looking into EnvEval(..) source to figure out how DATA_OBJECT gets created, then try to edit data_object_to_values. If Rick or someone else has this solved earlier please let us know. Regards, Jerzy Miernik. jwm...@ao... wrote: > Rick, > I tried to add evaluate() to examples/environment/envsimple.cpp like this: > > CLIPS::Values vfact; // vector of facts > > .... > > env1.reset(); > //env2.reset(); > > vfact = env1.evaluate("(get-fact-list)"); > > for (vector<CLIPS::Value>::const_iterator cit = vfact.begin(); > cit != vfact.end(); ++cit) { > cout <<"Within for loop"<< endl; > //cout << static_cast<string>(*cit) <<" "; > } > > the example compiles, but execution aborts: > > $ ./envsimple > <== f-0 (initial-fact) > ==> f-0 (initial-fact) > ==> f-1 (in (object robot) (location RoomA)) > ==> f-2 (in (object box) (location RoomB)) > ==> f-3 (goal (action push) (object box) (from RoomB) (to RoomA)) > terminate called after throwing an instance of 'std::logic_error' > what(): clipsmm::data_object_to_values: Unhandled multifield type > Aborted > > Do you find something obviously wrong there? May be you could share a > piece of code with evaluate() as an example to expedite our work? > Thanks, > Jerzy Miernik. > > > > > > > |
From: <jwm...@ao...> - 2010-05-14 22:01:55
|
> case MULTIFIELD is not handled within case MULTIFIELD This actually is the case of FACT_ADDRESS (=6) within case MULTIFIELD, after env1.evaluate("(get-fact-list)"); has been invoked. Jerzy. jwm...@ao... wrote: > It appears that case MULTIFIELD is not handled within case MULTIFIELD in > function > data_object_to_values( dataObject& clipsdo ) in file factory.cpp. > In CLIPS constant.h we have #define MULTIFIELD 4 but this value is not > part of CLIPS::Type in value.h. > It looks like for evaluating commands involving facts from deftemplates > we will need vector of vectors. > I'll be looking into EnvEval(..) source to figure out how DATA_OBJECT > gets created, then try to edit > data_object_to_values. If Rick or someone else has this solved earlier > please let us know. > Regards, > Jerzy Miernik. > > > jwm...@ao... wrote: > >> Rick, >> I tried to add evaluate() to examples/environment/envsimple.cpp like this: >> >> CLIPS::Values vfact; // vector of facts >> >> .... >> >> env1.reset(); >> //env2.reset(); >> >> vfact = env1.evaluate("(get-fact-list)"); >> >> for (vector<CLIPS::Value>::const_iterator cit = vfact.begin(); >> cit != vfact.end(); ++cit) { >> cout <<"Within for loop"<< endl; >> //cout << static_cast<string>(*cit) <<" "; >> } >> >> the example compiles, but execution aborts: >> >> $ ./envsimple >> <== f-0 (initial-fact) >> ==> f-0 (initial-fact) >> ==> f-1 (in (object robot) (location RoomA)) >> ==> f-2 (in (object box) (location RoomB)) >> ==> f-3 (goal (action push) (object box) (from RoomB) (to RoomA)) >> terminate called after throwing an instance of 'std::logic_error' >> what(): clipsmm::data_object_to_values: Unhandled multifield type >> Aborted >> >> Do you find something obviously wrong there? May be you could share a >> piece of code with evaluate() as an example to expedite our work? >> Thanks, >> Jerzy Miernik. >> >> >> >> >> >> >> >> > > ------------------------------------------------------------------------------ > > _______________________________________________ > Clipsmm-users mailing list > Cli...@li... > https://lists.sourceforge.net/lists/listinfo/clipsmm-users > > |
From: <jwm...@ao...> - 2010-05-30 04:25:47
|
Rick, I edited clipsmm/ files factory.cpp, value.h, value.cpp (attached) to have env1.evaluate("(get-fact-list)"); working. Could you please, or someone else, inspect the changes? I'll now look at other evaluate statements to see if they work or more changes are needed. Sincerely, Jerzy Miernik. jwm...@ao... wrote: >> case MULTIFIELD is not handled within case MULTIFIELD >> > This actually is the case of FACT_ADDRESS (=6) within case MULTIFIELD, > after env1.evaluate("(get-fact-list)"); has been invoked. > Jerzy. > > > jwm...@ao... wrote: > >> It appears that case MULTIFIELD is not handled within case MULTIFIELD in >> function >> data_object_to_values( dataObject& clipsdo ) in file factory.cpp. >> In CLIPS constant.h we have #define MULTIFIELD 4 but this value is not >> part of CLIPS::Type in value.h. >> It looks like for evaluating commands involving facts from deftemplates >> we will need vector of vectors. >> I'll be looking into EnvEval(..) source to figure out how DATA_OBJECT >> gets created, then try to edit >> data_object_to_values. If Rick or someone else has this solved earlier >> please let us know. >> Regards, >> Jerzy Miernik. >> >> >> jwm...@ao... wrote: >> >> >>> Rick, >>> I tried to add evaluate() to examples/environment/envsimple.cpp like this: >>> >>> CLIPS::Values vfact; // vector of facts >>> >>> .... >>> >>> env1.reset(); >>> //env2.reset(); >>> >>> vfact = env1.evaluate("(get-fact-list)"); >>> >>> for (vector<CLIPS::Value>::const_iterator cit = vfact.begin(); >>> cit != vfact.end(); ++cit) { >>> cout <<"Within for loop"<< endl; >>> //cout << static_cast<string>(*cit) <<" "; >>> } >>> >>> the example compiles, but execution aborts: >>> >>> $ ./envsimple >>> <== f-0 (initial-fact) >>> ==> f-0 (initial-fact) >>> ==> f-1 (in (object robot) (location RoomA)) >>> ==> f-2 (in (object box) (location RoomB)) >>> ==> f-3 (goal (action push) (object box) (from RoomB) (to RoomA)) >>> terminate called after throwing an instance of 'std::logic_error' >>> what(): clipsmm::data_object_to_values: Unhandled multifield type >>> Aborted >>> >>> Do you find something obviously wrong there? May be you could share a >>> piece of code with evaluate() as an example to expedite our work? >>> Thanks, >>> Jerzy Miernik. >>> >>> >>> >>> >>> >>> >>> >>> >>> >> ------------------------------------------------------------------------------ >> >> _______________________________________________ >> Clipsmm-users mailing list >> Cli...@li... >> https://lists.sourceforge.net/lists/listinfo/clipsmm-users >> >> >> > > ------------------------------------------------------------------------------ > > _______________________________________________ > Clipsmm-users mailing list > Cli...@li... > https://lists.sourceforge.net/lists/listinfo/clipsmm-users > > |