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

📄 clips_bc.cpp

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

/***************************************************************************
		Function	:	CCLIPSWrap::GetAgendaPtr(void)
		Author		:	Mark Tomlinson
		Desc.		:	access agendaPtr
		Returns		:	agendaPtr
****************************************************************************/
void* CCLIPSWrap::GetAgendaPtr(void)
{
	return agendaPtr;
}

/***************************************************************************
		Function	:	CCLIPSWrap::GetActivationPtr(void)
		Author		:	Mark Tomlinson
		Desc.		:	access activationPtr
		Returns		:	activationPtr
****************************************************************************/
void* CCLIPSWrap::GetActivationPtr(void)
{
	return activationPtr;
}

/****************************************************************************
		Function	: 	CCLIPSWrap::CLIPSInit(void)
		Author		: 	Mark Tomlinson
		Desc.		: 	Accessor function to CLIPS InitilizeCLIPS(), also will
						load the DLL into memory, get procedure entry points &
						initialize the default capture router.
		Returns 	: 	TRUE on success, FALSE if it fails.
****************************************************************************/
BOOL CCLIPSWrap::CLIPSInit(void)
{
	if(m_fClipsInit)
		return TRUE;
	if(m_hLib == NULL)	{
//now decide which DLL to load...
#ifdef __FLAT__
		m_hLib = LoadLibrary ("clips.dll");
#else
		m_hLib = LoadLibrary ("clipsdll.dll");
#endif
	}
	if(m_hLib == NULL)
		return FALSE;

	if(LoadDllReferences() == FALSE)	{
		//unload the library
		FreeLibrary(m_hLib);
		m_hLib = NULL;
		return FALSE;
	}

	//call init clips
	(dl_InitializeCLIPS)();

	//set message pump callback function to prevent a hang
	//of the system when CLIPS is doing lengthy processing
	//not exactly needed in WIN32 - essential in WIN16
	(dl_AddPeriodicFunction)("msgpump",MsgLoopProc,1);

	//set out of memory handler function
	(dl_SetOutOfMemoryFunction)((unsigned long)ReportMemoryProblems);

	//tell CLIPS to be quiet while loading files
	(dl_SetPrintWhileLoading)(FALSE);

	// add router to handle output from DLL functions, (if any), although
	// you are best to assume some output so as not to overwrite the
	// windows desktop with TTY output from the DLL. Then return.
	if((dl_AddRouter)("capture", 20, captureQuery, capturePrint, NULL, NULL, NULL))	{
		m_fClipsInit = TRUE;
		return TRUE;
		}
	//failed
	return FALSE;
}

/***************************************************************************
		Function	:	CCLIPSWrap::CLIPSReset(void)
		Author		:	Mark Tomlinson
		Desc.		:	Accessor function for CLIPS Reset
		Returns		:	TRUE on success, FALSE on error
****************************************************************************/
BOOL CCLIPSWrap::CLIPSReset(void)
{
	INITCHK(FALSE)
	(dl_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(String* FactString)
{
	INITCHK(FALSE)
	CLEARMBUF
	factPtr=(dl_GetNextFact)(factPtr);
	if(factPtr)	{  //place fact into string buffer
		(dl_GetFactPPForm)(m_buf,MAX_FACT_LEN,factPtr);
		FactString->assign(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 = (dl_Run)(numIterations);
	Running = FALSE;
	if(CBfunctPtr != NULL)	{
		CBfunctPtr(FALSE);
		}       
	return ret;
}

/****************************************************************************
		Function	: CCLIPSWrap::CLIPSLoad(String* 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(String* scriptFile)
{
	int	retval;

	INITCHK(READ_NOT_INIT);
	CLEARMBUF
	if((scriptFile == NULL) ||
		 (scriptFile->length()==0))	{
		retval = -2;
		}
	else	{
		scriptFile->copy(m_buf);
		retval = (dl_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 (dl_GetNumberOfFacts)();
}

/****************************************************************************
		Function	: 	CCLIPSWrap::CLIPSExit(void)
		Author		: 	Mark Tomlinson
		Desc.		: 	Accessor function to CLIPS ExitCLIPS(), this will end
						CLIPS and unload the DLL. To continue using the same
						class instance after this would require a call to
						CLIPSInit() again. [any version of the DLL dated before
						5/96 - this will also terminate the calling process]
		Returns 	: 	none
****************************************************************************/
void CCLIPSWrap::CLIPSExit(int retVal)
{
	(dl_ExitCLIPS)(retVal);
	//CLIPS may have already unloaded itself...
	FreeLibrary(m_hLib);
	m_hLib = NULL;
	m_fClipsInit = FALSE;
	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)
	(dl_Clear)();
	return TRUE;
}

/****************************************************************************
		Function	: 	CCLIPSWrap::CLIPSBSave(String* 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(String* BinName)
{
	int	retval;

	INITCHK(SAVE_NOT_INIT);
	CLEARMBUF
	if((BinName == NULL) ||
		 (BinName->length()==0))	{
		retval = -2;
		}
	else	{
		BinName->copy(m_buf);
		retval = (dl_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(String* 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(String* BinFile)
{
	int	retval;

	INITCHK(READ_NOT_INIT);
	CLEARMBUF
	if((BinFile == NULL) ||
	   (BinFile->length()==0))	{
		retval = -2;
		}
	else	{
		BinFile->copy(m_buf);
		retval = (dl_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 (dl_Retract)(factPtr);
		}
	return (dl_Retract)(Fact);
}

/***************************************************************************
		Function	:	CCLIPSWrap::CLIPSWatch(String* 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(String* Item)
{
	CLEARMBUF
	if((!m_fClipsInit) ||
	   (Item == NULL)  ||
	   (Item->length()==0))	{
		return FALSE;
		}
	Item->copy(m_buf);
	return (dl_Watch)(m_buf);
}

/***************************************************************************
		Function	:	CCLIPSWrap::CLIPSUnWatch(String* 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(String* Item)
{
	CLEARMBUF
	if((!m_fClipsInit) ||
	   (Item == NULL)  ||
	   (Item->length()==0))	{
		return FALSE;
		}
	Item->copy(m_buf);
	return (dl_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)
{
	if((!m_fClipsInit) ||
		(Rule == NULL))	{
		return FALSE;
		}
	return (dl_Matches)(Rule);
}

/****************************************************************************
		Function	: CCLIPSWrap::CLIPSSaveFacts(String* 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(String* FileName, BOOL Visable)
{
	int	retval;

	INITCHK(SAVE_NOT_INIT);
	CLEARMBUF
	if((FileName == NULL) ||
		 (FileName->length()==0))	{
		retval = -2;
		}
	else	{
		FileName->copy(m_buf);
		if(Visable)	{
			retval = (dl_SaveFacts)(m_buf,VISIBLE_SAVE,NULL);
			}
		else	{
			retval = (dl_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(String* 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(String* FileName)
{
	int	retval;

	INITCHK(READ_NOT_INIT);
	CLEARMBUF

⌨️ 快捷键说明

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