📄 clips_bc.cpp
字号:
/****************************************************************************
Function : CCLIPSWrap::CLIPSSaveInstances(String* FileName, BOOL Visable)
Author : Mark Tomlinson
Desc. : Accessor function to CLIPS SaveInstances(), will save
either LOCAL Instances or VISIBLE based upon Visable
parameter. ClassList is set to NULL. Inherit flag is TRUE.
Returns : number of instances saved, or -1 on error
****************************************************************************/
long int CCLIPSWrap::CLIPSSaveInstances(String* FileName, BOOL Visable)
{
long int retval;
INITCHK(-1L)
CLEARMBUF
if((FileName == NULL) ||
(FileName->length()==0)) {
return -1;
}
else {
FileName->copy(m_buf);
if(Visable) {
retval = (dl_SaveInstances)(m_buf,VISIBLE_SAVE,NULL,TRUE);
}
else {
retval = (dl_SaveInstances)(m_buf,LOCAL_SAVE,NULL,TRUE);
}
}
return retval;
}
/****************************************************************************
Function : CCLIPSWrap::CLIPSLoadInstances(String* FileName)
Author : Mark Tomlinson
Desc. : Accessor function to CLIPS LoadInstances, will attempt to load
a set of Instances into CLIPS
Returns : number of instances loaded, or -1 on error
****************************************************************************/
long int CCLIPSWrap::CLIPSLoadInstances(String* FileName)
{
long int retval;
INITCHK(-1L)
CLEARMBUF
if((FileName == NULL) ||
(FileName->length()==0)) {
return -1;
}
else {
FileName->copy(m_buf);
retval = (dl_LoadInstances)(m_buf);
}
return retval;
}
/****************************************************************************
Function : CCLIPSWrap::CLIPSSetStrategy(long int data)
Author : Mark Tomlinson
Desc. : Accessor for CLIPS function SetStrategy():
Returns : old strategy value or -1 on error
****************************************************************************/
long int CCLIPSWrap::CLIPSSetStrategy(long int data)
{
INITCHK(-1L)
return (dl_SetStrategy)((int)data);
}
/****************************************************************************
Function : CCLIPSWrap::CLIPSGetStrategy(void)
Author : Mark Tomlinson
Desc. : Accessor for CLIPS function GetStrategy():
Returns : GetStrategy return value or -1 on error
****************************************************************************/
long int CCLIPSWrap::CLIPSGetStrategy(void)
{
INITCHK(-1L)
return (dl_GetStrategy)();
}
/****************************************************************************
Function : CCLIPSWrap::CLIPSAddSymbol(String* Symbol)
Author : Mark Tomlinson
Desc. : Accessor for CLIPS function AddSymbol():
Returns : pointer to symbol, NULL on error
****************************************************************************/
void* CCLIPSWrap::CLIPSAddSymbol(String* Symbol)
{
INITCHK(NULL)
if((Symbol == NULL) ||
(Symbol->length()==0)) {
return NULL;
}
CLEARMBUF
Symbol->copy(m_buf);
return (dl_AddSymbol)(m_buf);
}
/****************************************************************************
Function : CCLIPSWrap::CLIPSMemoryUsed(void)
Author : Mark Tomlinson
Desc. : Accessor for CLIPS function MemUsed():
Returns : return value from MemUsed() or -1 on error
****************************************************************************/
long int CCLIPSWrap::CLIPSMemoryUsed(void)
{
INITCHK(FALSE)
return (dl_MemUsed)();
}
/****************************************************************************
Function : CCLIPSWrap::CLIPSMemoryRequests(void)
Author : Mark Tomlinson
Desc. : Accessor for CLIPS function MemRequests():
Returns : return value from MemRequests() or -1 on error
****************************************************************************/
long int CCLIPSWrap::CLIPSMemoryRequests(void)
{
INITCHK(-1L)
return (dl_MemRequests)();
}
/****************************************************************************
Function : CCLIPSWrap::CLIPSGetFocus(void)
Author : Mark Tomlinson
Desc. : Accessor for CLIPS function WRGetFocus(), updates modulePtr
Returns : TRUE on success, FALSE on error
****************************************************************************/
BOOL CCLIPSWrap::CLIPSGetFocus(void)
{
INITCHK(FALSE)
modulePtr = (dl_WRGetFocus)();
if(modulePtr == NULL) {
return FALSE;
}
return TRUE;
}
/****************************************************************************
Function : CCLIPSWrap::CLIPSRemoveAllFacts(void)
Author : Mark Tomlinson
Desc. : Accessor for CLIPS function RemoveAllFacts(),
updates factPtr
Returns : TRUE on success, FALSE on error
****************************************************************************/
BOOL CCLIPSWrap::CLIPSRemoveAllFacts(void)
{
INITCHK(FALSE)
(dl_RemoveAllFacts)();
factPtr = NULL;
return TRUE;
}
/****************************************************************************
Function : CCLIPSWrap::CLIPSAddFactArray(StringArray* List)
Author : Mark Tomlinson
Desc. : Accessor for CLIPS function RemoveAllFacts(),
updates factPtr
Returns : TRUE on success, FALSE on error
****************************************************************************/
BOOL CCLIPSWrap::AddFactArray(StringArray* List, int NumFacts)
{
int i;
String cTemp;
INITCHK(FALSE)
if(NumFacts == 0)
NumFacts = (int) List->getm_ItemCount();
if((!m_fClipsInit) ||
(!NumFacts)) { //insure CLIPS is ready
return FALSE;
}
for(i = 0; i < NumFacts; i++) {
cTemp = (*List)[i]; //get string from array
CLEARMBUF
cTemp.copy(m_buf); //copy string to buffer
if(!CLIPSAssert(m_buf)) { //assert string, bail if fail
return FALSE;
}
}
return TRUE;
}
/****************************************************************************
Function : CCLIPSWrap::SetRouteBuffer(StringArray* pBuffer,String* pRoute)
Author : Mark Tomlinson
Desc. : assigns a string arrary pointer for a route name to
a given array pointer, calling app is responsible for
all maintenance of these string arrays. (FORM 1)
Returns : Old Route buffer pointer. since the pBuffer param
can be NULL, you can use this to de-assign a route to
an array also.
****************************************************************************/
StringArray* CCLIPSWrap::SetRouteBuffer(StringArray* pBuffer, String* pRoute)
{
StringArray* old;
int rnum;
CLEARMBUF
pRoute->copy(m_buf);
rnum = GetRouteNum(m_buf);
if(rnum != -1) {
old = pRoutes[rnum];
pRoutes[rnum] = pBuffer;
}
return old;
}
/****************************************************************************
Function : CCLIPSWrap::SetRouteBuffer(StringArray* pBuffer,String& Route)
Author : Mark Tomlinson
Desc. : assigns a string arrary pointer for a route name to
a given array pointer, calling app is responsible for
all maintenance of these string arrays. (FORM 2)
Returns : Old buffer pointer
****************************************************************************/
StringArray* CCLIPSWrap::SetRouteBuffer(StringArray* pBuffer, String& Route)
{
return SetRouteBuffer(pBuffer, &Route);
}
/****************************************************************************
Function : CCLIPSWrap::SetRouteFile(String& RouteName,String& FileName) form -1
Author : Mark Tomlinson
Desc. : Assigns the output from a specified route to a
specified filespec.
Returns : TRUE on success, FALSE on error
****************************************************************************/
BOOL CCLIPSWrap::SetRouteFile(String& Route, String& FileName)
{
char filen[256];
memset(filen,0,256);
FileName.copy(filen);
return SetRouteFile(Route, filen);
}
/****************************************************************************
Function : CCLIPSWrap::SetRouteFile(String& RouteName,char far* FileName) form -2
Author : Mark Tomlinson
Desc. : Assigns the output from a specified route to a
specified filespec. this form allows 'de-routing'
by use of a NULL pointer for FileName
Returns : TRUE on success, FALSE on error
****************************************************************************/
BOOL CCLIPSWrap::SetRouteFile(String& Route, const char far* FileName)
{
long n = -1L;
if(FileRoutes == NULL) {
if(FileName != NULL) {
FileRoutes = new StringArray();
FileNames = new StringArray();
if(FileRoutes == NULL) {
return FALSE;
}
}
}
n = FileRoutes->IsMember(Route);
if(n != -1) {
if(FileName != NULL) {
(*FileNames)[n] = FileName;
}
else {
FileNames->Delete(n);
FileRoutes->Delete(n);
}
}
else {
if(FileName != NULL) {
FileNames->Add(FileName);
FileRoutes->Add(Route);
}
else {
return FALSE;
}
}
return TRUE;
}
/****************************************************************************
Function : CCLIPSWrap::GetGlobal(String* name)
Author : Mark Tomlinson
Desc. : Rtreive the value of a global
Returns : pointer to char string containing value
****************************************************************************/
char far* CCLIPSWrap::GetGlobal(String* name)
{
CLEARMBUF
name->copy(m_buf);
globalPtr = (dl_FindDefglobal)(m_buf);
if(globalPtr == NULL)
return NULL;
CLEARMBUF
(dl_GetDefglobalValueForm)(m_buf,MBUFSIZE,globalPtr);
return strstr(m_buf, "=");
}
/****************************************************************************
Function : CCLIPSWrap::GetDefglobalFloat(String* name)
Author : Mark Tomlinson
Desc. : returns the floating point value of a named Defglobal
casts the return type. Be sure that you have the right
type defined!.
Returns : cast value, or -9999.99 on error
****************************************************************************/
float CCLIPSWrap::GetDefglobalFloat(String* name)
{
char* ptc;
double ival = -9999.99;
ptc = GetGlobal(name);
if(ptc!=NULL) {
++ptc;
//read 'm in
sscanf(ptc,"%f",&ival);
}
//send it back
return ((float)ival);
}
/****************************************************************************
Function : CCLIPSWrap::GetDefglobalInt(String* name)
Author : Mark Tomlinson
Desc. : returns the int value of a named Defglobal
casts the return type. Be sure that you have the right
type defined!.
Returns : cast value, or -9999 on error
****************************************************************************/
int CCLIPSWrap::GetDefglobalInt(String* name)
{
char* ptc;
int ival = -9999;
ptc = GetGlobal(name);
if(ptc!=NULL) {
++ptc;
//read 'm in
sscanf(ptc,"%d",&ival);
}
return ival;
}
/****************************************************************************
Function : CCLIPSWrap::GetDefglobalLong(String* name)
Author : Mark Tomlinson
Desc. : returns the long value of a named Defglobal
casts the return type. Be sure that you have the right
type defined!.
Returns : cast value, or -999999 on error
****************************************************************************/
long CCLIPSWrap::GetDefglobalLong(String* name)
{
char* ptc;
long int ival = -999999L;
ptc = GetGlobal(name);
if(ptc!=NULL) {
++ptc;
//read 'm in
sscanf(ptc,"%ld",&ival);
}
return ival;
}
/****************************************************************************
Function : CCLIPSWrap::GetDefglobalString(String* name)
Author : Mark Tomlinson
Desc. : returns the string value of a named Defglobal
casts the return type. Be sure that you have the right
type defined!.
Returns : cast value, or NULL on error
****************************************************************************/
const char far* CCLIPSWrap::GetDefglobalString(String* name)
{
char * ptc;
String Temp;
ptc = GetGlobal(name);
if(ptc!=NULL) {
++ptc;
//read 'm in
Temp = ptc;
}
CLEARMBUF
Temp.copy(m_buf);
//send it back
return m_buf;
}
/****************************************************************************
Function : CCLIPSWrap::GetDefglobalAddress(String* name)
Author : Mark Tomlinson
Desc. : returns the address value of a named Defglobal
casts the return type. Be sure that you have the right
type defined!.
Returns : cast value, or NULL on error
****************************************************************************/
void* CCLIPSWrap::GetDefglobalAddress(String* name)
{
char var[256];
DATA_OBJECT theVar;
INITCHK(NULL)
memset(var,0,256);
memset(&theVar,0,sizeof(DATA_OBJECT));
name->copy(var); //this is necessary because CLIPS is not defined
//as using a CONST CHAR *
if(!(dl_GetDefglobalValue)(var,&theVar)) {
return NULL;
}
return theVar.value;
}
/****************************************************************************
Function : CCLIPSWrap::CLIPSGetNextDefglobal(void)
Author : Mark Tomlinson
Desc. : updates globalPtr
Returns : TRUE on success, FALSE on error
****************************************************************************/
BOOL CCLIPSWrap::CLIPSGetNextDefglobal(void)
{
INITCHK(FALSE)
globalPtr = (dl_GetNextDefglobal)(globalPtr);
if(globalPtr == NULL)
return FALSE;
return TRUE;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -