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

📄 clipslibwrap_old.cpp

📁 clips专家系统内核打包类,很有参考性.
💻 CPP
📖 第 1 页 / 共 5 页
字号:
		Author		:	Mark Tomlinson
		Desc.		:	Accessor function for CLIPS Reset
		Returns		:	true on success, false on error
****************************************************************************/
bool CCLIPSWrap::CLIPSReset(void)
{
	INITCHK(false)
	Reset();
	return true;
}

/****************************************************************************
		Function	: CCLIPSWrap::CLIPSNextFactString(string* FactString)
		Author		: Mark Tomlinson
		Desc.		: Accessor for CLIPS GetNextFact(); places returned fact
					  into string parameter.
		Returns 	: true if it succeeded, and false on failure - or if
					  no more facts exist.
****************************************************************************/
bool CCLIPSWrap::CLIPSNextFactString(CString& FactString, void *pFact)
{									
	INITCHK(false)
	CLEARMBUF
	if(pFact != NULL)	{
		factPtr= (struct fact *)GetNextFact(pFact);
	}
	else	{
		factPtr= (struct fact *)GetNextFact(factPtr);
	}
	if(factPtr)	{  //place fact into string buffer
		GetFactPPForm(m_buf,MAX_FACT_LEN,factPtr);
		FactString = m_buf;
		return true;
	}
	return false;
}

/****************************************************************************
		Function	:	CCLIPSWrap::CLIPSRun(int numIterations)
		Author		:	Mark Tomlinson
		Desc.		:	Accessor function for CLIPS Run(). Passes in numIterations
						parameter to CLIPS, (-1 by default).
		Returns 	:	Number of iterations performed, (Run() - return value) or
						-1 on error
****************************************************************************/
long int CCLIPSWrap::CLIPSRun(long int numIterations)
{
	long int	ret;

	INITCHK(-1L)
	Running = true;
	ret = Run(numIterations);
	Running = false;
	if(CBfunctPtr != NULL)	{
		CBfunctPtr(false);
	}       
	return ret;
}

/****************************************************************************
		Function	: CCLIPSWrap::CLIPSLoad(CString& scriptFile)
		Author		: Mark Tomlinson
		Desc.		: Accessor function to CLIPS Load(), will attempt to load
					  the file specified by scriptFile parameter.
		Returns 	: Enumerated value for success or failure
****************************************************************************/
int CCLIPSWrap::CLIPSLoad(CString& scriptFile)
{
	int	retval,j,i;
	OFSTRUCT	of;

	INITCHK(READ_NOT_INIT);
	if(scriptFile.IsEmpty())	{
		retval = -2;
		}
	else	{
		SETMBUF((LPCSTR)scriptFile)
		if(OpenFile(m_buf,&of,OF_EXIST) == HFILE_ERROR)
			return BAD_LOAD_NAME;
		j = strlen(m_buf);
		//insure we convert backslash to forwardslash
		for(i = 0;i < j;i++)	{
			if(m_buf[i] == '\\')	{
				m_buf[i] = '/';
			}
		}
		retval = Load(m_buf);
		}

	switch(retval)	{
		case 0:	{
			return READ_FAIL;
			}
		case 1:	{
			return READ_OK;
			}
		case -1:	{
			return PARSE_FAIL;
			}
		case -2:	{
			return BAD_LOAD_NAME;
			}
		}
	return READ_FAIL;
}

/****************************************************************************
		Function	: CCLIPSWrap::CLIPSGetNumberOfFacts(void)
		Author		: Mark Tomlinson
		Desc.		: Accessor function to CLIPS GetNumberOfFacts()
		Returns 	: The number of facts in the workspace, -1 on error
****************************************************************************/
long int CCLIPSWrap::CLIPSGetNumberOfFacts(void)
{
	INITCHK(-1L)
	return GetNumberOfFacts();
}

/****************************************************************************
		Function	: 	CCLIPSWrap::CLIPSExit(void)
		Author		: 	Mark Tomlinson
		Desc.		: 	Accessor function to CLIPS ExitCLIPS(), this will end
						CLIPS and unload the DLL this will also terminate 
						the calling process.
		Returns 	: 	none
****************************************************************************/
void CCLIPSWrap::CLIPSExit(int retVal)
{
	ExitCLIPS(retVal);
	return;
}

/****************************************************************************
		Function	: 	CCLIPSWrap::CLIPSClear(void)
		Author		: 	Mark Tomlinson
		Desc.		: 	Accessor function to CLIPS Clear(), this will clear
						CLIPS workspace.
		Returns 	: 	true on success, false on error
****************************************************************************/
bool CCLIPSWrap::CLIPSClear(void)
{
	INITCHK(false)
	Clear();
	return true;
}

/****************************************************************************
		Function	: 	CCLIPSWrap::CLIPSBSave(CString& FileName)
		Author		: 	Mark Tomlinson
		Desc.		: 	Accessor function to CLIPS BSave(), this will save
						a binary image of the CLIPS environment.
		Returns 	: 	true on success, false on error
****************************************************************************/
int CCLIPSWrap::CLIPSBSave(CString& BinName)
{
	int	retval,i;

	INITCHK(SAVE_NOT_INIT);
	if(BinName.IsEmpty())	{
		retval = -2;
		}
	else	{
		SETMBUF((LPCSTR)BinName)
		//insure we convert backslash to forwardslash
		for(i = 0;i < (int)strlen(m_buf);i++)	{
			if(m_buf[i] == '\\')	{
				m_buf[i] = '/';
			}
		}
		retval = Bsave(m_buf);
		}

	switch(retval)	{
		case 0:	{
			return SAVE_FAIL;
			}
		case 1:	{
			return SAVE_OK;
			}
		case -2:	{
			return BAD_SAVE_NAME;
			}
		}
	return SAVE_FAIL;
}

/****************************************************************************
		Function	: CCLIPSWrap::CLIPSBLoad(CString& BinFile)
		Author		: Mark Tomlinson
		Desc.		: Accessor function to CLIPS Bload(), will attempt to load
					  a binary image of the CLIPS environment. [with the 16 bit
					  DLL, due to a Borland compiler bug, do not attempt to Bload
					  a file in which any object set is greater than 64k]
		Returns 	: Enumerated value for success or failure
****************************************************************************/
int CCLIPSWrap::CLIPSBLoad(CString& BinFile)
{
	int			retval;
	int			i;
	OFSTRUCT	of;


	INITCHK(READ_NOT_INIT);
	if(BinFile.IsEmpty())	{
		retval = -2;
		}
	else	{
		SETMBUF((LPCSTR)BinFile)
		if(OpenFile(m_buf,&of,OF_EXIST) == HFILE_ERROR)
			return BAD_LOAD_NAME;
		//insure we convert backslash to forwardslash
		for(i = 0;i < (int)strlen(m_buf);i++)	{
			if(m_buf[i] == '\\')	{
				m_buf[i] = '/';
			}
		}
		retval = Bload(m_buf);
		}

	switch(retval)	{
		case 0:	{
			return READ_FAIL;
			}
		case 1:	{
			return READ_OK;
			}
		case -2:	{
			return BAD_LOAD_NAME;
			}
		}
	return READ_FAIL;
}

/***************************************************************************
		Function	:	CCLIPSWrap::CLIPSRetract(void *Fact)
		Author		:	Mark Tomlinson
		Desc.		:	Accessor function for CLIPS Retract command, will retract
						a fact in the CLIPS environment.
		Returns		:	true on success, false on error
****************************************************************************/
bool CCLIPSWrap::CLIPSRetract(void *Fact)
{
	INITCHK(false)
	if((Fact == NULL)	&&
		(factPtr == NULL))	{
		return false;
		}
	if(Fact == NULL)	{
		return BOOLCHK(Retract(factPtr));
		}
	return BOOLCHK(Retract(Fact));
}

/***************************************************************************
		Function	:	CCLIPSWrap::CLIPSWatch(CString& Item)
		Author		:	Mark Tomlinson
		Desc.		:	Accessor function for CLIPS Watch command, will set a
						watch on Item.
		Returns		:	true on success, false on error
****************************************************************************/
bool CCLIPSWrap::CLIPSWatch(CString& Item)
{										   
	INITCHK(false)
	if(Item.IsEmpty())	{
		return false;
	}
	SETMBUF((LPCSTR)Item)
	return BOOLCHK(Watch(m_buf));
}

/***************************************************************************
		Function	:	CCLIPSWrap::CLIPSUnWatch(CString& Item)
		Author		:	Mark Tomlinson
		Desc.		:	Accessor function for CLIPS Unwatch command, will remove
						a watch on Item.
		Returns		:	true on success, false on error
****************************************************************************/
bool CCLIPSWrap::CLIPSUnWatch(CString& Item)
{
	INITCHK(false)
	if(Item.IsEmpty())	{
		return false;
	}
	SETMBUF((LPCSTR)Item)
	return BOOLCHK(Unwatch(m_buf));
}

/***************************************************************************
		Function	:	CCLIPSWrap::CLIPSMatches(void *Rule)
		Author		:	Mark Tomlinson
		Desc.		:	Accessor function for CLIPS Matches command, this appears
						to always return CLIPS_true, as the optput from this command
						is routed to WDISPLAY or WERROR. We return false if CLIPS is
						not initalized or if the Rule pointer is NULL.
		Returns		:	true on success, false on error
****************************************************************************/
bool CCLIPSWrap::CLIPSMatches(void *Rule)
{
	INITCHK(false)
	if((Rule == NULL) &&
	   (rulePtr == NULL))	{
		return false;
	}
	if(Rule != NULL)	{
		return BOOLCHK(Matches(Rule, NULL));
	}
	else	{
		return BOOLCHK(Matches(rulePtr, NULL));
	}	
}

/****************************************************************************
		Function	: CCLIPSWrap::CLIPSSaveFacts(CString& FileName, bool Visable)
		Author		: Mark Tomlinson
		Desc.		: Accessor function to CLIPS SaveFacts(), will save
					  either LOCAL facts or VISIBLE facts based upon Visable
					  parameter
		Returns 	: Enumerated value for success or failure
****************************************************************************/
int CCLIPSWrap::CLIPSSaveFacts(CString& FileName, bool Visable)
{
	int	retval,j,i;

	INITCHK(SAVE_NOT_INIT);
	if(FileName.IsEmpty())	{
		retval = -2;
	}
	else	{
		SETMBUF((LPCSTR)FileName)
		j = strlen(m_buf);
		//insure we convert backslash to forwardslash
		for(i = 0;i < j;i++)	{
			if(m_buf[i] == '\\')	{
				m_buf[i] = '/';
			}
		}
		if(Visable)	{
			retval = SaveFacts(m_buf,VISIBLE_SAVE,NULL);
		}
		else	{
			retval = SaveFacts(m_buf,LOCAL_SAVE,NULL);
		}
	}
	
	switch(retval)	{
		case 0:	{
			return SAVE_FAIL;
			}
		case 1:	{
			return SAVE_OK;
			}
		case -2:	{
			return BAD_SAVE_NAME;
			}
		}
	return SAVE_FAIL;
}

/****************************************************************************
		Function	: CCLIPSWrap::CLIPSLoadFacts(CString& FileName)
		Author		: Mark Tomlinson
		Desc.		: Accessor function to CLIPS LoadFacts, will attempt to load
					  a set of Facts into CLIPS
		Returns 	: Enumerated value for success or failure
****************************************************************************/
int CCLIPSWrap::CLIPSLoadFacts(CString& FileName)
{
	int	retval,j,i;
	OFSTRUCT	of;

	INITCHK(READ_NOT_INIT);
	if(FileName.IsEmpty())	{
		retval = -2;
	}
	else	{
		SETMBUF((LPCSTR)FileName)
		if(OpenFile(m_buf,&of,OF_EXIST) == HFILE_ERROR)
			return BAD_LOAD_NAME;
		j = strlen(m_buf);
		//insure we convert backslash to forwardslash
		for(i = 0;i < j;i++)	{
			if(m_buf[i] == '\\')	{
				m_buf[i] = '/';
			}
		}
		retval = LoadFacts(m_buf);
	}

	switch(retval)	{
		case 0:	{
			return READ_FAIL;
			}
		case 1:	{
			return READ_OK;
			}
		case -2:	{
			return BAD_LOAD_NAME;
			}
		}
	return READ_FAIL;
}

/****************************************************************************
		Function	: CCLIPSWrap::CLIPSNextFact(void)
		Author		: Mark Tomlinson
		Desc.		: Accessor for CLIPS GetNextFact(); places returned fact
					  into factPtr
		Returns 	: true if it succeeded, and false on failure - or if
					  no more facts exist.
		Notes       : you can't pass in a NULL fact pointer. To start with 
		              the first fact you must set factPtr member to NULL and 
					  then call this function.
****************************************************************************/
bool CCLIPSWrap::CLIPSNextFact(void *pFact)
{							  
	INITCHK(false)
	if(pFact != NULL)	{
		factPtr = (struct fact *)GetNextFact(pFact);
	}
	else	{
		factPtr = (struct fact *)GetNextFact(factPtr);
	}
	if(factPtr)	{
		return true;
	}
	return false;
}

/****************************************************************************
		Function	: CCLIPSWrap::CLIPSFactString(CString& Data, void *pFact)
		Author		: Mark Tomlinson
		Desc.		: Accessor for CLIPS GetFactPPForm(); places fact Data
					  into string parameter.
		Returns 	: true if it succeeded, and false on failure
****************************************************************************/
bool CCLIPSWrap::CLIPSFactString(CString& Data, void *pFact)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -