📄 sysdep.c
字号:
globle void GenReadBinary(
void *theEnv,
void *dataPtr,
unsigned long size)
{
/*
#if MAC
long dataSize;
dataSize = (long) size;
FSRead(SystemDependentData(theEnv)->BinaryRefNum,&dataSize,dataPtr);
#endif
*/
#if IBM_TBC || IBM_MSC || IBM_ICB /* || IBM_MCW */
char *tempPtr;
tempPtr = (char *) dataPtr;
while (size > INT_MAX)
{
read(SystemDependentData(theEnv)->BinaryFileHandle,tempPtr,INT_MAX);
size -= INT_MAX;
tempPtr = tempPtr + INT_MAX;
}
if (size > 0)
{ read(SystemDependentData(theEnv)->BinaryFileHandle,tempPtr,(STD_SIZE) size); }
#endif
#if (! IBM_TBC) && (! IBM_MSC) && (! IBM_ICB) /* && (! IBM_MCW) && (! IBM_ZTC) */
unsigned int temp, number_of_reads, read_size;
if (sizeof(int) == sizeof(long))
{ read_size = size; }
else
{ read_size = (1L << (sizeof(int) * 8L)) - 1L ; }
number_of_reads = size / read_size;
temp = size - ((long) number_of_reads * (long) read_size);
while (number_of_reads > 0)
{
fread(dataPtr,(STD_SIZE) read_size,1,SystemDependentData(theEnv)->BinaryFP);
dataPtr = ((char *) dataPtr) + read_size;
number_of_reads--;
}
fread(dataPtr,(STD_SIZE) temp,1,SystemDependentData(theEnv)->BinaryFP);
#endif
}
/***************************************************/
/* GetSeekCurBinary: Generic and machine specific */
/* code for seeking a position in a file. */
/***************************************************/
globle void GetSeekCurBinary(
void *theEnv,
long offset)
{
/*
#if MAC
SetFPos(SystemDependentData(theEnv)->BinaryRefNum,fsFromMark,offset);
#endif
*/
#if IBM_TBC || IBM_MSC || IBM_ICB /* || IBM_MCW || IBM_ZTC */
lseek(SystemDependentData(theEnv)->BinaryFileHandle,offset,SEEK_CUR);
#endif
#if (! IBM_TBC) && (! IBM_MSC) && (! IBM_ICB) /* && (! IBM_MCW) && (! IBM_ZTC) */
fseek(SystemDependentData(theEnv)->BinaryFP,offset,SEEK_CUR);
#endif
}
/***************************************************/
/* GetSeekSetBinary: Generic and machine specific */
/* code for seeking a position in a file. */
/***************************************************/
globle void GetSeekSetBinary(
void *theEnv,
long offset)
{
/*
#if MAC
SetFPos(SystemDependentData(theEnv)->BinaryRefNum,fsFromStart,offset);
#endif
*/
#if IBM_TBC || IBM_MSC || IBM_ICB /* || IBM_MCW || IBM_ZTC */
lseek(SystemDependentData(theEnv)->BinaryFileHandle,offset,SEEK_SET);
#endif
#if (! IBM_TBC) && (! IBM_MSC) && (! IBM_ICB) /* && (! IBM_MCW) && (! IBM_ZTC) */
fseek(SystemDependentData(theEnv)->BinaryFP,offset,SEEK_SET);
#endif
}
/************************************************/
/* GenTellBinary: Generic and machine specific */
/* code for telling a position in a file. */
/************************************************/
globle void GenTellBinary(
void *theEnv,
long *offset)
{
/*
#if MAC
GetFPos(SystemDependentData(theEnv)->BinaryRefNum,offset);
#endif
*/
#if IBM_TBC || IBM_MSC || IBM_ICB /* || IBM_MCW || IBM_ZTC */
*offset = lseek(SystemDependentData(theEnv)->BinaryFileHandle,0,SEEK_CUR);
#endif
#if (! IBM_TBC) && (! IBM_MSC) && (! IBM_ICB) /* && (! IBM_MCW) && (! IBM_ZTC) */
*offset = ftell(SystemDependentData(theEnv)->BinaryFP);
#endif
}
/****************************************/
/* GenCloseBinary: Generic and machine */
/* specific code for closing a file. */
/****************************************/
globle void GenCloseBinary(
void *theEnv)
{
/*
#if MAC
FSClose(SystemDependentData(theEnv)->BinaryRefNum);
#endif
*/
if (SystemDependentData(theEnv)->BeforeOpenFunction != NULL)
{ (*SystemDependentData(theEnv)->BeforeOpenFunction)(theEnv); }
#if IBM_TBC || IBM_MSC || IBM_ICB /* || IBM_MCW */
close(SystemDependentData(theEnv)->BinaryFileHandle);
#endif
#if (! IBM_TBC) && (! IBM_MSC) && (! IBM_ICB) /* && (! IBM_MCW) */
fclose(SystemDependentData(theEnv)->BinaryFP);
#endif
if (SystemDependentData(theEnv)->AfterOpenFunction != NULL)
{ (*SystemDependentData(theEnv)->AfterOpenFunction)(theEnv); }
}
/***********************************************/
/* GenWrite: Generic routine for writing to a */
/* file. No machine specific code as of yet. */
/***********************************************/
globle void GenWrite(
void *dataPtr,
unsigned long size,
FILE *fp)
{
if (size == 0) return;
#if UNIX_7
fwrite(dataPtr,(STD_SIZE) size,1,fp);
#else
fwrite(dataPtr,(STD_SIZE) size,1,fp);
#endif
}
/*********************************************/
/* InitializeKeywords: Adds key words to the */
/* symbol table so that they are available */
/* for command completion. */
/*********************************************/
static void InitializeKeywords(
void *theEnv)
{
#if (! RUN_TIME) && WINDOW_INTERFACE
void *ts;
/*====================*/
/* construct keywords */
/*====================*/
ts = EnvAddSymbol(theEnv,"defrule");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"defglobal");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"deftemplate");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"deffacts");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"deffunction");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"defmethod");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"defgeneric");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"defclass");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"defmessage-handler");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"definstances");
IncrementSymbolCount(ts);
/*=======================*/
/* set-strategy keywords */
/*=======================*/
ts = EnvAddSymbol(theEnv,"depth");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"breadth");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"lex");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"mea");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"simplicity");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"complexity");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"random");
IncrementSymbolCount(ts);
/*==================================*/
/* set-salience-evaluation keywords */
/*==================================*/
ts = EnvAddSymbol(theEnv,"when-defined");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"when-activated");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"every-cycle");
IncrementSymbolCount(ts);
/*======================*/
/* deftemplate keywords */
/*======================*/
ts = EnvAddSymbol(theEnv,"field");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"multifield");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"default");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"type");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"allowed-symbols");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"allowed-strings");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"allowed-numbers");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"allowed-integers");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"allowed-floats");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"allowed-values");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"min-number-of-elements");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"max-number-of-elements");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"NONE");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"VARIABLE");
IncrementSymbolCount(ts);
/*==================*/
/* defrule keywords */
/*==================*/
ts = EnvAddSymbol(theEnv,"declare");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"salience");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"test");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"or");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"and");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"not");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"logical");
IncrementSymbolCount(ts);
/*===============*/
/* COOL keywords */
/*===============*/
ts = EnvAddSymbol(theEnv,"is-a");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"role");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"abstract");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"concrete");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"pattern-match");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"reactive");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"non-reactive");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"slot");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"field");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"multiple");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"single");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"storage");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"shared");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"local");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"access");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"read");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"write");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"read-only");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"read-write");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"initialize-only");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"propagation");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"inherit");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"no-inherit");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"source");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"composite");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"exclusive");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"allowed-lexemes");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"allowed-instances");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"around");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"before");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"primary");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"after");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"of");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"self");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"visibility");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"override-message");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"private");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"public");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"create-accessor");
IncrementSymbolCount(ts);
/*================*/
/* watch keywords */
/*================*/
ts = EnvAddSymbol(theEnv,"compilations");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"deffunctions");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"globals");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"rules");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"activations");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"statistics");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"facts");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"generic-functions");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"methods");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"instances");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"slots");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"messages");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"message-handlers");
IncrementSymbolCount(ts);
ts = EnvAddSymbol(theEnv,"focus");
IncrementSymbolCount(ts);
#else
#if MAC_MCW || IBM_MCW || MAC_XCD
#pragma unused(theEnv)
#endif
#endif
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -