📄 clipsmfc.cpp
字号:
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(CString& FactString)
{
INITCHK(false)
CLEARMBUF
factPtr= (struct fact *)(dl_GetNextFact)(factPtr);
if(factPtr) { //place fact into string buffer
(dl_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 = (dl_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 = (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(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 = (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(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 = (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 BOOLCHK((dl_Retract)(factPtr));
}
return BOOLCHK((dl_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)
{
if((!m_fClipsInit) ||
(Item.IsEmpty())) {
return false;
}
SETMBUF((LPCSTR)Item)
return BOOLCHK((dl_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)
{
if((!m_fClipsInit) ||
(Item.IsEmpty())) {
return false;
}
SETMBUF((LPCSTR)Item)
return BOOLCHK((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) &&
(rulePtr == NULL))) {
return false;
}
if(Rule != NULL)
return BOOLCHK((dl_Matches)(Rule, "WDISPLAY"));
else
return BOOLCHK((dl_Matches)(rulePtr, "WDISPLAY"));
}
/****************************************************************************
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 = (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(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 = (dl_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.
****************************************************************************/
bool CCLIPSWrap::CLIPSNextFact(void)
{
INITCHK(false)
factPtr = (struct fact *)(dl_GetNextFact)(factPtr);
if(factPtr) {
return true;
}
return false;
}
/****************************************************************************
Function : CCLIPSWrap::CLIPSFactString(CString& Data)
Author : Mark Tomlinson
Desc. : Accessor for CLIPS GetFactPPForm(); places factPtr Data
into string parameter.
Returns : true if it succeeded, and false on failure
****************************************************************************/
bool CCLIPSWrap::CLIPSFactString(CString& Data)
{
INITCHK(false)
CLEARMBUF
if(factPtr) { //place fact into string buffer
(dl_GetFactPPForm)(m_buf,MAX_FACT_LEN,factPtr);
Data = m_buf;
return true;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -