📄 clips_bc.cpp
字号:
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 + -