📄 clipsmfc_old.cpp
字号:
globalPtr = NULL;
return true;
}
}
else {
if((dl_Undefglobal)(Defglobal)) {
return true;
}
}
return false;
}
/****************************************************************************
Function : CCLIPSWrap::SetConstruct(CString& theVar)
Author : Mark Tomlinson
Desc. : sets the construct:
ex. "(defglobal ?*x* = 3)"
Returns : true on success, false on Error
****************************************************************************/
bool CCLIPSWrap::SetConstruct(CString& theVar)
{
INITCHK(false)
SETMBUF((LPCSTR)theVar)
if((dl_OpenStringSource)("load-construct",m_buf,0) == 0)
return false;
if((dl_LoadConstructsFromLogicalName)("load-construct") == 0) {
(dl_CloseStringSource)("load-construct");
return false;
}
(dl_CloseStringSource)("load-construct");
return true;
}
/****************************************************************************
Function : CCLIPSWrap::GetAllFacts(CStringArray& buffer)
Author : Mark Tomlinson
Desc. : returns all facts in buffer
Returns : true on success, false on error or if no facts retrieved
****************************************************************************/
bool CCLIPSWrap::GetAllFacts(CStringArray& buffer)
{
CString temp;
//reset factPtr to initial fact
factPtr = (struct fact *) (dl_GetNextFact)(NULL);
//start looping
while(CLIPSNextFactString(temp)) {
buffer.Add(temp);
}
if(buffer.GetSize() == 0) {
return false;
}
return true;
}
/****************************************************************************
Function : CCLIPSWrap::CLIPSMemUsed(void)
Author : Mark Tomlinson
Desc. : returns amount of memory CLIPS has
Returns : memused
****************************************************************************/
long int CCLIPSWrap::CLIPSMemUsed(void)
{
return (dl_MemUsed)();
}
/****************************************************************************
Function : CCLIPSWrap::CLIPSBatch(void)
Author : Mark Tomlinson
Desc. : access the Batch Command
Returns : memused
****************************************************************************/
bool CCLIPSWrap::CLIPSBatch(CString& FileName)
{
char var[256];
int i, j;
memset(var,0,256);
strcpy(var,(LPCSTR)(*FileName));
j = strlen(var);
//insure we convert backslash to forwardslash
for(i = 0;i < j;i++) {
if(var[i] == '\\') {
var[i] = '/';
}
}
return BOOLCHK((dl_Batch)(var));
}
/****************************************************************************
Function : CCLIPSWrap::CLIPSBatchStar(void)
Author : Mark Tomlinson
Desc. : access the Batch* Command
Returns : memused
****************************************************************************/
bool CCLIPSWrap::CLIPSBatchStar(CString& FileName)
{
char var[256];
int i, j;
OFSTRUCT of;
memset(var,0,256);
strcpy(var,(LPCSTR)(FileName));
j = strlen(var);
//insure we convert backslash to forwardslash
for(i = 0;i < j;i++) {
if(var[i] == '\\') {
var[i] = '/';
}
}
// check it out...
if(OpenFile(var,&of,OF_EXIST) == HFILE_ERROR) {
return BOOLCHK((dl_BatchStar)(var));
}
else {
return false;
}
}
/****************************************************************************
Function : CCLIPSWrap::CLIPSFreeMem(void)
Author : Mark Tomlinson
Desc. : attempts to free all of clips memory
Returns : memused
****************************************************************************/
void CCLIPSWrap::CLIPSFreeMem()
{
(dl_Reset)();
(dl_Clear)();
(dl_FreeAtomicValueStorage)();
(dl_ReleaseMem)(-1L, CLIPS_TRUE);
}
/****************************************************************************
Function : CCLIPSWrap::CLIPSSetHaltExecution(void)
Author : Mark Tomlinson
Desc. : sets the CLIPS halt flag
Returns : memused
****************************************************************************/
void CCLIPSWrap::CLIPSSetHaltExecution(bool mode)
{
if(mode) {
(dl_SetHaltExecution)(CLIPS_TRUE);
}
else {
(dl_SetHaltExecution)(CLIPS_FALSE);
}
}
/****************************************************************************
Function : CCLIPSWrap::CLIPSMakeInstance(CString& Data)
Author : Mark Tomlinson
Desc. : creates a new COOL object, sets instancePtr to new instance
(ex. "(Test of MINE)", assuming a definstance of MINE)
Returns : true on success, otherwise false
****************************************************************************/
bool CCLIPSWrap::CLIPSMakeInstance(CString& Data)
{
INITCHK(false)
SETMBUF((LPCSTR)Data)
//attempt the MakeInstance call
if((instancePtr = (struct instance *) (dl_MakeInstance)(m_buf)) == NULL) {
return false;
}
return true;
}
/****************************************************************************
Function : CCLIPSWrap::CLIPSFindInstance(CString& Name = NULL)
Author : Mark Tomlinson
Desc. : locates a COOL object, sets instancePtr to found obj.
(ex. "Test", given the above example)
Returns : true on success, otherwise false
****************************************************************************/
bool CCLIPSWrap::CLIPSFindInstance(CString& Name, bool SearchImports)
{
INITCHK(false)
SETMBUF((LPCSTR)Name)
if((instancePtr = (struct instance *) (dl_FindInstance)(modulePtr,m_buf,SearchImports)) == NULL) {
return false;
}
return true;
}
/****************************************************************************
Function : CCLIPSWrap::CLIPSDeleteInstance()
Author : Mark Tomlinson
Desc. : deletes current instance
Returns : true on success, otherwise false
****************************************************************************/
bool CCLIPSWrap::CLIPSDeleteInstance(void* Instance)
{
bool ret = false;
INITCHK(false)
if((instancePtr == NULL) &&
(Instance == NULL)) {
return false;
}
if(CLIPSValidInstance(Instance)) {
if(Instance == NULL) {
ret = (dl_DeleteInstance)(instancePtr) ? true : false;
instancePtr = NULL;
}
else {
ret = (dl_DeleteInstance)(Instance) ? true : false;
}
}
return ret;
}
/****************************************************************************
Function : CCLIPSWrap::DeleteAllInstances()
Author : Mark Tomlinson
Desc. : deletes all instances
Returns : true on success, otherwise false
****************************************************************************/
bool CCLIPSWrap::DeleteAllInstances(void)
{
INITCHK(false)
instancePtr = NULL;
return BOOLCHK((dl_DeleteInstance)(NULL));
}
/****************************************************************************
Function : CCLIPSWrap::CLIPSGetNextInstanceInClass(void)
Author : Mark Tomlinson
Desc. : Accessor for CLIPS function GetNextInstanceInClass():
uses classPtr. updates instancePtr.
Returns : true on success, false on error
****************************************************************************/
bool CCLIPSWrap::CLIPSGetNextInstanceInClass(void *pClass)
{
INITCHK(false)
//!!!
instancePtr = (struct instance *) (dl_GetNextInstanceInClass)(classPtr,instancePtr);
if(instancePtr == NULL) {
return false;
}
return true;
}
/****************************************************************************
Function : CCLIPSWrap::CLIPSGetInstancePPForm(CString& Data)
Author : Mark Tomlinson
Desc. : Accessor for CLIPS function GetInstancePPForm():
uses instancePtr.
Returns : true on success, false on error
****************************************************************************/
bool CCLIPSWrap::CLIPSGetInstancePPForm(CString& Data)
{
INITCHK(false)
if(instancePtr == NULL)
return false;
CLEARMBUF
(dl_GetInstancePPForm)(m_buf,1023,instancePtr);
if(strlen(m_buf) > 0) {
Data = m_buf;
return true;
}
return false;
}
/****************************************************************************
Function : CCLIPSWrap::CLIPSGetGlobalNumberOfInstances()
Author : Mark Tomlinson
Desc. : Accessor for CLIPS function GetGlobalNumberOfInstances():
Returns : total number of instances, all modules
****************************************************************************/
unsigned long CCLIPSWrap::CLIPSGetGlobalNumberOfInstances(void)
{
INITCHK(false)
return (dl_GetGlobalNumberOfInstances)();
}
/****************************************************************************
Function : CCLIPSWrap::CLIPSDirectGetSlot(CString& Slot, CString& Value)
Author : Mark Tomlinson
Desc. : Accessor for CLIPS function DirectGetSlot()
(slot names are case sensitive)
Returns : true on success, false on Error
****************************************************************************/
bool CCLIPSWrap::CLIPSDirectGetSlot(CString& Class, CString& Slot, CString& Value)
{
char slot[256];
struct dataObject value;
long temp_l = 0;
double temp_f = 0.0;
memset(slot,0,256);
INITCHK(false)
if(!Class.IsEmpty()) {
SETMBUF((LPCSTR)Class)
instancePtr = (struct instance *) (dl_FindInstance)(modulePtr,m_buf,0);
}
if((instancePtr == NULL) ||
(Slot.IsEmpty()))
return false;
strcpy(slot,(LPCSTR)(Slot));
(dl_DirectGetSlot)(instancePtr,slot,&value);
switch (value.type) {
case INTEGER:
temp_l = ValueToLong(GetValue(value));
sprintf(m_buf,"%ld",temp_l);
break;
case FLOAT:
temp_f = ValueToDouble(GetValue(value));
sprintf(m_buf,"%lf",temp_f);
break;
case SYMBOL:
case STRING:
default:
SETMBUF((char *)ValueToString(GetValue(value)))
break;
}
Value = m_buf;
if (Value.GetLength() > 0)
return true;
return false;
}
/****************************************************************************
Function : CCLIPSWrap::CLIPSDirectPutSlot(CString& Slot, CString& Value, int type)
Author : Mark Tomlinson
Desc. : Accessor for CLIPS function DirectPutSlot()
(slot names are case sensitive)
Returns : true on success, false on Error
****************************************************************************/
bool CCLIPSWrap::CLIPSDirectPutSlot(CString& Class, CString& Slot, CString& Value, int type)
{
char slot[256];
struct dataObject value;
long temp_l = 0;
double temp_f = 0.0;
memset(slot,0,256);
INITCHK(false)
if(!Class.IsEmpty()) {
SETMBUF((LPCSTR)Class)
instancePtr = (struct instance *) (dl_FindInstance)(modulePtr,m_buf,0);
}
if((instancePtr == NULL) ||
(Slot.IsEmpty()))
return false;
strcpy(slot,(LPCSTR)(Slot));
SETMBUF((LPCSTR)Value)
SetType(value,type);
switch(type) {
case INTEGER:
sscanf(m_buf,"%ld",&temp_l);
SetValue(value,(dl_AddLong)(temp_l));
break;
case FLOAT:
sscanf(m_buf,"%lf",&temp_f);
SetValue(value,(dl_AddDouble)(temp_f));
break;
case SYMBOL:
case STRING:
SetValue(value,(dl_AddSymbol)(m_buf));
}
return BOOLCHK((dl_DirectPutSlot)(instancePtr,slot,&value));
}
//not implemented
bool CCLIPSWrap::SetSlotValue(CString& Class, CString& Slot, CString& Value)
{
return 0;
}
//not implemented
bool CCLIPSWrap::GetSlotValue(CString& Class, CString& Slot, CString& Value)
{
return 0;
}
/****************************************************************************
Function : CCLIPSWrap::CLIPSRouteCommand(CString& Command,
CString& route, int do_print)
Author : Mark Tomlinson
Desc. : Accessor for CLIPS function RouteCommand()
takes a fully qualified CLIPS command line and executes
it, just as it you entered it in the interactive CLIPS.
Arguments : Command = the CLIPS command to execute
route = the std route for the output to be displayed on
do_print= set to non-zero to actually display output
Returns : true on success, false on Error
****************************************************************************/
bool CCLIPSWrap::CLIPSRouteCommand(CString& Command, CString &route, int do_print)
{
char tbuf[MAX_ITEM_SIZE];
SETMBUF((LPCSTR)Command)
if(do_print) {
if(route.GetLength() < MAX_ITEM_SIZE) {
strcpy(tbuf, (LPCSTR)route);
return BOOLCHK((dl_RouteCommand)(m_buf,1,tbuf));
}
}
else {
return BOOLCHK((dl_RouteCommand)(m_buf,0,NULL));
}
return false;
}
/****************************************************************************
Function : CCLIPSWrap::CLIPSBuild(CString& Command)
Author : Mark Tomlinson
Desc. : Accessor for CLIPS function Build()
Returns : true on success, false on Error
****************************************************************************/
bool CCLIPSWrap::CLIPSBuild(CString& Command)
{
SETMBUF((LPCSTR)Command)
return BOOLCHK((dl_Build)(m_buf));
}
/****************************************************************************
Function : CCLIPSWrap::ReadFactSlot(CString& Slot, CString& Data)
Author : Mark Tomlinson
Desc. : Read the data from a slot on the default fact, (factPtr)
Returns : true on success, false on Error
****************************************************************************/
bool CCLIPSWrap::ReadFactSlot(CString& Slot, CString& Data)
{
struct dataObject *theValue;
struct dataObj
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -