⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clips_bc.cpp

📁 clips专家系统内核打包类,很有参考性.
💻 CPP
📖 第 1 页 / 共 5 页
字号:

/****************************************************************************
		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 + -