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

📄 clipslibwrap_old.cpp

📁 clips专家系统内核打包类,很有参考性.
💻 CPP
📖 第 1 页 / 共 5 页
字号:
{
	INITCHK(false)
	CLEARMBUF
	if(pFact == NULL)	{
		if(factPtr == NULL)	{			 
			return false;
		}
		else	{
			GetFactPPForm(m_buf,MAX_FACT_LEN,factPtr);
			Data = m_buf;
			return true;
		}
	}
	else	{
		GetFactPPForm(m_buf,MAX_FACT_LEN,pFact);
		Data = m_buf;
		return true;
	}
	return false;
}

/****************************************************************************
		Function	: CCLIPSWrap::CLIPSSetFactDup(int Value)
		Author		: Mark Tomlinson
		Desc.		: Accessor for CLIPS SetFactDuplication();
		Returns 	: return value of SetFactDuplication, appears to be old
					  FactDuplication value. -1 if an error.
****************************************************************************/
int	CCLIPSWrap::CLIPSSetFactDup(int Value)
{
	INITCHK(-1)
	return SetFactDuplication(Value);
}

/****************************************************************************
		Function	: CCLIPSWrap::CLIPSGetFactDup(void)
		Author		: Mark Tomlinson
		Desc.		: Accessor for CLIPS SetFactDuplication();
		Returns 	: return value of GetFactDuplication. -1 on error
****************************************************************************/
bool CCLIPSWrap::CLIPSGetFactDup(void)
{
	INITCHK(false)
	return BOOLCHK(GetFactDuplication());
}

/****************************************************************************
		Function	: CCLIPSWrap::CLIPSDribble(CString& FileName, bool Switch)
		Author		: Mark Tomlinson
		Desc.		: Accessor for CLIPS DribbleOn() and DribbleOff(); if Switch
					  is true it executes DribbleOn if Switch is false it
					  executes DribbleOff.
		Returns 	: true on success, false on error
****************************************************************************/
bool	CCLIPSWrap::CLIPSDribble(CString& FileName, bool Switch)
{
	INITCHK(false)
	if((Switch)	&&
		(FileName.IsEmpty()))	{
		return false;
		}
	if(Switch)	{
		SETMBUF((LPCSTR)FileName)
		return BOOLCHK(DribbleOn(m_buf));
		}
	else	{
		return BOOLCHK(DribbleOff());
		}
}

/****************************************************************************
		Function	: CCLIPSWrap::CLIPSAssert(CString& String)
		Author		: Mark Tomlinson
		Desc.		: first form for CLIPSAssert();
					  Accessor for CLIPS AssertString function. pointer to the
					  asserted fact is stored in factPtr.
		Returns 	: true on success, false on error
****************************************************************************/
bool	CCLIPSWrap::CLIPSAssert(CString& String)
{
	INITCHK(false)
	if(String.IsEmpty())	{
		return false;
	}
	SETMBUF((LPCSTR)String)
	factPtr = (struct fact *)AssertString(m_buf);
	if(factPtr == NULL)	{
		return false;
	}
	return true;
}

/****************************************************************************
		Function	: CCLIPSWrap::CLIPSAssert(void* Fact)
		Author		: Mark Tomlinson
		Desc.		: second form for CLIPSAssert(); (third form is implied)
					  Accessor for CLIPS Assert function. pointer to the
					  asserted fact is stored in factPtr. If the Fact parameter
					  is NULL then factPtr will be asserted unless it is NULL.
		Returns 	: true on success, false on error
****************************************************************************/
bool CCLIPSWrap::CLIPSAssert(void* Fact)
{
	INITCHK(false)
	if(Fact == NULL)	{
		if(factPtr != NULL)	{
			factPtr = (struct fact *)Assert(factPtr);
		}
		else	{
			return false;
		}
	}
	else	{
		factPtr = (fact *)Assert(Fact);
	}
	if(factPtr == NULL)	{
		return false;
	}
	return true;
}

/****************************************************************************
		Function	: CCLIPSWrap::CLIPSIncrementFactCtr(void* Fact)
		Author		: Mark Tomlinson
		Desc.		: Accessor for CLIPS IncrementFactCount. if Fact parameter
					  is NULL then factPtr is assumed to be the fact for which
					  the count is to be incremented.
		Returns 	: true on success, false on error
****************************************************************************/
bool	CCLIPSWrap::CLIPSIncrementFactCtr(void* Fact)
{
	INITCHK(false)
	if(Fact == NULL)	{
		if(factPtr != NULL)	{
			IncrementFactCount(factPtr);
		}
		else	{
			return false;
		}
	}
	else	{
		IncrementFactCount(Fact);
	}
	return true;
}

/****************************************************************************
		Function	: CCLIPSWrap::CLIPSDecrementFactCtr(void* Fact)
		Author		: Mark Tomlinson
		Desc.		: Accessor for CLIPS DecrementFactCount. if Fact parameter
					  is NULL then factPtr is assumed to be the fact for which
					  the count is to be decremented.
		Returns 	: true on success, false on error
****************************************************************************/
bool	CCLIPSWrap::CLIPSDecrementFactCtr(void* Fact)
{
	INITCHK(false)
	if(Fact == NULL)	{
		if(factPtr != NULL)	{
			DecrementFactCount(factPtr);
		}
		else	{
			return false;
		}
	}
	else	{
		DecrementFactCount(Fact);
	}
	return true;
}

/****************************************************************************
		Function	: CCLIPSWrap::CLIPSGetFactListChanged(void)
		Author		: Mark Tomlinson
		Desc.		: Accessor for CLIPS GetFactListChanged.
		Returns 	: return value of GetFactListChanged()
****************************************************************************/
bool CCLIPSWrap::CLIPSGetFactListChanged(void)
{
	INITCHK(false)
	return BOOLCHK(GetFactListChanged());
}

/****************************************************************************
		Function	: CCLIPSWrap::CLIPSSetFactListChanged(int Value)
		Author		: Mark Tomlinson
		Desc.		: Accessor for CLIPS SetFactListChanged.
		Returns 	: true on success, false on error
****************************************************************************/
bool CCLIPSWrap::CLIPSSetFactListChanged(bool Value)
{
	INITCHK(false)
	SetFactListChanged(Value);
	return true;
}

/****************************************************************************
		Function	: CCLIPSWrap::CLIPSGetNextInstance(int Which, void* Class)
		Author		: Mark Tomlinson
		Desc.		: Accessor for CLIPS functions:
					  GetNextInstance()
					  GetNextInstanceInScope()
					  GetNextInstanceInClass() <if Class is NULL classPtr is used>
					  determined by Which parameter. updates instancePtr.
		Returns 	: true on success, false on error
****************************************************************************/
bool	CCLIPSWrap::CLIPSGetNextInstance(int Which, void* Class)
{
	INITCHK(false)
	if((Which == I_CLASS) &&
		(Class == NULL)	 &&
		(classPtr == NULL))	{
		return false;
	}

	switch(Which)	{
		case I_PERIOD:
			instancePtr = (struct instance *) GetNextInstance(instancePtr);
			break;
		case I_SCOPE:
			instancePtr = (struct instance *) GetNextInstanceInScope(instancePtr);
			break;
		case I_CLASS:	{
			if(Class == NULL)	{
				instancePtr = (struct instance *) GetNextInstanceInClass(instancePtr, classPtr);
			}
			else	{
				instancePtr = (struct instance *) GetNextInstanceInClass(instancePtr, Class);
			}
		}
			break;
	}
	if(instancePtr == NULL)	{
		return false;
	}
	return true;
}

/****************************************************************************
		Function	: CCLIPSWrap::CLIPSGetInstanceClass(void* Instance)
		Author		: Mark Tomlinson
		Desc.		: Accessor for CLIPS function	GetInstanceClass():
					  updates classPtr. If Instance is NULL uses instancePtr.
		Returns 	: true on success, false on error
****************************************************************************/
bool	CCLIPSWrap::CLIPSGetInstanceClass(void* Instance)
{
	INITCHK(false)
	if((Instance == NULL)	 &&
		(instancePtr == NULL))	{
		return false;
	}
	if(Instance == NULL)	{
		classPtr = (struct defclass *) GetInstanceClass(instancePtr);
	}
	else	{
		if(CLIPSValidInstance(Instance))	{
			classPtr = (struct defclass *) GetInstanceClass(Instance);
		}
		else	{
			return false;
		}
	}

	if(classPtr == NULL)	{
		return false;
	}
	return true;
}

/****************************************************************************
		Function	: CCLIPSWrap::CLIPSGetInstanceName(CString& Data,void* Instance)
		Author		: Mark Tomlinson
		Desc.		: Accessor for CLIPS function	GetInstanceName():
					  If Instance is NULL uses instancePtr. Name is returned
					  in string class parameter Data.
		Returns 	: true on success, false on error
****************************************************************************/
bool	CCLIPSWrap::CLIPSGetInstanceName(CString& Data,void* Instance)
{
	char far *temp;

	INITCHK(false)
	if((Instance == NULL)	 &&
		(instancePtr == NULL))	{
		return false;
	}
	if(Instance == NULL)	{
		temp = GetInstanceName(instancePtr);
	}
	else	{
		temp = GetInstanceName(Instance);
	}
	if(temp == NULL)	{
		return false;
	}
	Data = temp;
	return true;
}

/****************************************************************************
		Function	: CCLIPSWrap::CLIPSGetInstanceData(CString& Data,void* Instance)
		Author		: Mark Tomlinson
		Desc.		: Accessor for CLIPS function	GetInstancePPForm():
					  If Instance is NULL uses instancePtr. Data is returned
					  in string class parameter Data.
		Returns 	: true on success, false on error
****************************************************************************/
bool	CCLIPSWrap::CLIPSGetInstanceData(CString& Data,void* Instance)
{
	INITCHK(false)
	if((Instance == NULL)	 &&
	   (instancePtr == NULL))	{
		return false;
	}
	CLEARMBUF
	if(Instance == NULL)	{
		GetInstancePPForm(m_buf,255,instancePtr);
	}
	else	{
		GetInstancePPForm(m_buf,255,Instance);
	}
	Data = m_buf;
	return true;
}

/****************************************************************************
		Function	: CCLIPSWrap::CLIPSCreateRawInstance(CString& Name, void *pClass)
		Author		: Mark Tomlinson
		Desc.		: Accessor for CLIPS function	CreateRawInstance():
		Returns 	: true on success, false on error
****************************************************************************/
bool	CCLIPSWrap::CLIPSCreateRawInstance(CString& Data, void *pClass)
{
	INITCHK(false)								   
	if(Data.IsEmpty())	{
		return false;
	}
	SETMBUF((LPCSTR)Data)
	if(pClass == NULL)	{
		if(classPtr == NULL)	{
			return false;
		}
		else	{
			instancePtr = (struct instance *) CreateRawInstance(classPtr,m_buf);
		}
	}
	else	{
		instancePtr = (struct instance *) CreateRawInstance(pClass,m_buf);
	}
	if(instancePtr == NULL)	{
		return false;
	}
	return true;
}

/****************************************************************************
		Function	: CCLIPSWrap::CLIPSValidInstance(void* Instance)
		Author		: Mark Tomlinson
		Desc.		: Accessor for CLIPS function ValidInstanceAddress():
					  uses instancePtr if Instance parameter is NULL.
		Returns 	: true if valid, false on error
****************************************************************************/
bool	CCLIPSWrap::CLIPSValidInstance(void* Instance)
{
	int	retVal;

	INITCHK(false)
	if((Instance == NULL)	&&
		(instancePtr == NULL))	{
		return false;
		}
	if(Instance == NULL)	{
		retVal = ValidInstanceAddress(instancePtr);
		}
	else	{
		retVal = ValidInstanceAddress(Instance);
		}
	if(retVal)	{
		return true;
		}
	return false;
}

/****************************************************************************
		Function	: CCLIPSWrap::CLIPSSaveInstances(CString& 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(CString& FileName, bool Visable)
{
	long int retval;

	INITCHK(-1L)
	if(FileName.IsEmpty())	{
		return -1;
		}
	else	{
		SETMBUF((LPCSTR)FileName)
		if(Visable)	{
			retval = SaveInstances(m_buf,VISIBLE_SAVE,NULL,true);
			}
		else	{
			retval = SaveInstances(m_buf,LOCAL_SAVE,NULL,true);
			}
		}
	return retval;
}

/****************************************************************************
		Function	: CCLIPSWrap::CLIPSLoadInstances(CString& 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(CString& FileName)
{
	long int	retval,j,i;
	OFSTRUCT	of;

	INITCHK(-1L)
	if(FileName.IsEmpty())	{
		return -1;
	}
	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] == '\\')	{

⌨️ 快捷键说明

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