📄 sysdep.c
字号:
/********************************************************//* RestoreInterruptVectors: IBM Intel C Code Builder *//* specific function for restoring interrupt vectors. *//********************************************************/static VOID RestoreInterruptVectors() { _dos_setvect(0x23,OldCtrlC); _dos_setvect(0x1b,OldBreak); }#endif#endif/**************************************//* GENEXIT: A generic exit function. *//**************************************/globle VOID genexit(num) int num; { exit(num); }/******************************************************//* genrand: Generic random number generator function. *//******************************************************/int genrand() {#if ANSI_COMPILER return(rand());#else return(0);#endif }/**********************************************************************//* genseed: Generic function for seeding the random number generator. *//**********************************************************************/globle VOID genseed(seed) int seed; {#if ANSI_COMPILER srand((unsigned) seed);#endif } /****************************************************//* genremove: Generic function for removing a file. *//****************************************************/globle int genremove(fileName) char *fileName; {#if ANSI_COMPILER if (remove(fileName)) return(CLIPS_FALSE); return(CLIPS_TRUE);#else#if UNIX_V || UNIX_7 || IBM_GCC if (unlink(fileName)) return(CLIPS_FALSE); return(CLIPS_TRUE);#else return(CLIPS_FALSE);#endif#endif } /****************************************************//* genrename: Generic function for renaming a file. *//****************************************************/globle int genrename(oldFileName,newFileName) char *oldFileName, *newFileName; {#if ANSI_COMPILER || UNIX_V || UNIX_7 || IBM_GCC if (rename(oldFileName,newFileName)) return(CLIPS_FALSE); return(CLIPS_TRUE);#else return(CLIPS_FALSE);#endif }/*****************************************************************//* GenOpen: Generic and machine specific code for opening a file *//* for binary access. Only one file may be open at a time when *//* using this function since the file pointer is stored in a *//* global variable. *//*****************************************************************/globle int GenOpen(funcName,fileName) char *funcName,*fileName; {#if MAC Str255 tempName; OSErr resultCode; Str255 volName; short int vRefNum; resultCode = GetVol(volName,&vRefNum); if (resultCode != noErr) { OpenErrorMessage(funcName,fileName); return(0); } strcpy((char *) tempName,fileName);#if MAC_SC7 || MAC_SC8 C2PStr((char *) tempName);#else c2pstr((char *) tempName);#endif resultCode = FSOpen(tempName,vRefNum,&BinaryRefNum); if (resultCode != noErr) { OpenErrorMessage(funcName,fileName); return(CLIPS_FALSE); }#endif#if IBM_TBC || IBM_MSC || IBM_ICB /* || IBM_ZTC */ BinaryFileHandle = open(fileName,O_RDONLY | O_BINARY); if (BinaryFileHandle == -1) { OpenErrorMessage(funcName,fileName); return(CLIPS_FALSE); }#endif#if (! MAC) && (! IBM_TBC) && (! IBM_MSC) && (! IBM_ICB) /* && (! IBM_ZTC) */ if ((BinaryFP = fopen(fileName,"rb")) == NULL) { OpenErrorMessage(funcName,fileName); return(CLIPS_FALSE); }#endif return(CLIPS_TRUE); }/*****************************************//* GenRead: Generic and machine specific *//* code for reading from a file. *//*****************************************/globle VOID GenRead(dataPtr,size) VOID *dataPtr; unsigned long size; {#if MAC long dataSize; dataSize = size; FSRead(BinaryRefNum,&dataSize,dataPtr);#endif#if IBM_TBC || IBM_MSC || IBM_ICB /* || IBM_ZTC */ char HUGE_ADDR *tempPtr; tempPtr = dataPtr; while (size > INT_MAX) { read(BinaryFileHandle,(VOID *) tempPtr,(unsigned int) INT_MAX); size -= INT_MAX; tempPtr = tempPtr + INT_MAX; } if (size > 0) read(BinaryFileHandle,(VOID *) tempPtr,(unsigned int) size);#endif#if (! MAC) && (! IBM_TBC) && (! IBM_MSC) && (! IBM_ICB) /* && (! 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,(CLIPS_STD_SIZE) read_size,1,BinaryFP); dataPtr = ((char *) dataPtr) + read_size; number_of_reads--; } fread(dataPtr,(CLIPS_STD_SIZE) temp,1,BinaryFP);#endif }/*******************************************//* GenSeek: Generic and machine specific *//* code for closing a file. *//*******************************************/globle VOID GenSeek(offset) long offset; {#if MAC SetFPos(BinaryRefNum,3,offset);#endif#if IBM_TBC || IBM_MSC || IBM_ICB /* || IBM_ZTC */ lseek(BinaryFileHandle,offset,SEEK_CUR);#endif#if (! MAC) && (! IBM_TBC) && (! IBM_MSC) && (! IBM_ICB) /* && (! IBM_ZTC) */#if ANSI_COMPILER fseek(BinaryFP,offset,SEEK_CUR);#else fseek(BinaryFP,offset,1);#endif#endif } /*******************************************//* GenClose: Generic and machine specific *//* code for closing a file. *//*******************************************/globle VOID GenClose() {#if MAC FSClose(BinaryRefNum);#endif#if IBM_TBC || IBM_MSC || IBM_ICB /* || IBM_ZTC */ close(BinaryFileHandle);#endif#if (! MAC) && (! IBM_TBC) && (! IBM_MSC) && (! IBM_ICB) /* && (! IBM_ZTC) */ fclose(BinaryFP);#endif } /*************************************************//* InitializeKeywords: Adds CLIPS key words to *//* the symbol table so that they are available *//* for command completion. *//*************************************************/static void InitializeKeywords() {#if (! RUN_TIME) && WINDOW_INTERFACE void *ts; /*====================*/ /* construct keywords */ /*====================*/ ts = AddSymbol("defrule"); IncrementSymbolCount(ts); ts = AddSymbol("defglobal"); IncrementSymbolCount(ts); ts = AddSymbol("deftemplate"); IncrementSymbolCount(ts); ts = AddSymbol("deffacts"); IncrementSymbolCount(ts); ts = AddSymbol("deffunction"); IncrementSymbolCount(ts); ts = AddSymbol("defmethod"); IncrementSymbolCount(ts); ts = AddSymbol("defgeneric"); IncrementSymbolCount(ts); ts = AddSymbol("defclass"); IncrementSymbolCount(ts); ts = AddSymbol("defmessage-handler"); IncrementSymbolCount(ts); ts = AddSymbol("definstances"); IncrementSymbolCount(ts); /*=======================*/ /* set-strategy keywords */ /*=======================*/ ts = AddSymbol("depth"); IncrementSymbolCount(ts); ts = AddSymbol("breadth"); IncrementSymbolCount(ts); ts = AddSymbol("lex"); IncrementSymbolCount(ts); ts = AddSymbol("mea"); IncrementSymbolCount(ts); ts = AddSymbol("simplicity"); IncrementSymbolCount(ts); ts = AddSymbol("complexity"); IncrementSymbolCount(ts); ts = AddSymbol("random"); IncrementSymbolCount(ts); /*==================================*/ /* set-salience-evaluation keywords */ /*==================================*/ ts = AddSymbol("when-defined"); IncrementSymbolCount(ts); ts = AddSymbol("when-activated"); IncrementSymbolCount(ts); ts = AddSymbol("every-cycle"); IncrementSymbolCount(ts); /*======================*/ /* deftemplate keywords */ /*======================*/ ts = AddSymbol("field"); IncrementSymbolCount(ts); ts = AddSymbol("multifield"); IncrementSymbolCount(ts); ts = AddSymbol("default"); IncrementSymbolCount(ts); ts = AddSymbol("type"); IncrementSymbolCount(ts); ts = AddSymbol("allowed-symbols"); IncrementSymbolCount(ts); ts = AddSymbol("allowed-strings"); IncrementSymbolCount(ts); ts = AddSymbol("allowed-numbers"); IncrementSymbolCount(ts); ts = AddSymbol("allowed-integers"); IncrementSymbolCount(ts); ts = AddSymbol("allowed-floats"); IncrementSymbolCount(ts); ts = AddSymbol("allowed-values"); IncrementSymbolCount(ts); ts = AddSymbol("min-number-of-elements"); IncrementSymbolCount(ts); ts = AddSymbol("max-number-of-elements"); IncrementSymbolCount(ts); ts = AddSymbol("NONE"); IncrementSymbolCount(ts); ts = AddSymbol("VARIABLE"); IncrementSymbolCount(ts); /*==================*/ /* defrule keywords */ /*==================*/ ts = AddSymbol("declare"); IncrementSymbolCount(ts); ts = AddSymbol("salience"); IncrementSymbolCount(ts); ts = AddSymbol("test"); IncrementSymbolCount(ts); ts = AddSymbol("or"); IncrementSymbolCount(ts); ts = AddSymbol("and"); IncrementSymbolCount(ts); ts = AddSymbol("not"); IncrementSymbolCount(ts); ts = AddSymbol("logical"); IncrementSymbolCount(ts); /*===============*/ /* COOL keywords */ /*===============*/ ts = AddSymbol("is-a"); IncrementSymbolCount(ts); ts = AddSymbol("role"); IncrementSymbolCount(ts); ts = AddSymbol("abstract"); IncrementSymbolCount(ts); ts = AddSymbol("concrete"); IncrementSymbolCount(ts); ts = AddSymbol("pattern-match"); IncrementSymbolCount(ts); ts = AddSymbol("reactive"); IncrementSymbolCount(ts); ts = AddSymbol("non-reactive"); IncrementSymbolCount(ts); ts = AddSymbol("slot"); IncrementSymbolCount(ts); ts = AddSymbol("field"); IncrementSymbolCount(ts); ts = AddSymbol("multiple"); IncrementSymbolCount(ts); ts = AddSymbol("single"); IncrementSymbolCount(ts); ts = AddSymbol("storage"); IncrementSymbolCount(ts); ts = AddSymbol("shared"); IncrementSymbolCount(ts); ts = AddSymbol("local"); IncrementSymbolCount(ts); ts = AddSymbol("access"); IncrementSymbolCount(ts); ts = AddSymbol("read"); IncrementSymbolCount(ts); ts = AddSymbol("write"); IncrementSymbolCount(ts); ts = AddSymbol("read-only"); IncrementSymbolCount(ts); ts = AddSymbol("read-write"); IncrementSymbolCount(ts); ts = AddSymbol("initialize-only"); IncrementSymbolCount(ts); ts = AddSymbol("propagation"); IncrementSymbolCount(ts); ts = AddSymbol("inherit"); IncrementSymbolCount(ts); ts = AddSymbol("no-inherit"); IncrementSymbolCount(ts); ts = AddSymbol("source"); IncrementSymbolCount(ts); ts = AddSymbol("composite"); IncrementSymbolCount(ts); ts = AddSymbol("exclusive"); IncrementSymbolCount(ts); ts = AddSymbol("allowed-lexemes"); IncrementSymbolCount(ts); ts = AddSymbol("allowed-instances"); IncrementSymbolCount(ts); ts = AddSymbol("around"); IncrementSymbolCount(ts); ts = AddSymbol("before"); IncrementSymbolCount(ts); ts = AddSymbol("primary"); IncrementSymbolCount(ts); ts = AddSymbol("after"); IncrementSymbolCount(ts); ts = AddSymbol("of"); IncrementSymbolCount(ts); ts = AddSymbol("self"); IncrementSymbolCount(ts); ts = AddSymbol("visibility"); IncrementSymbolCount(ts); ts = AddSymbol("override-message"); IncrementSymbolCount(ts); ts = AddSymbol("private"); IncrementSymbolCount(ts); ts = AddSymbol("public"); IncrementSymbolCount(ts); ts = AddSymbol("create-accessor"); IncrementSymbolCount(ts); /*================*/ /* watch keywords */ /*================*/ ts = AddSymbol("compilations"); IncrementSymbolCount(ts); ts = AddSymbol("deffunctions"); IncrementSymbolCount(ts); ts = AddSymbol("globals"); IncrementSymbolCount(ts); ts = AddSymbol("rules"); IncrementSymbolCount(ts); ts = AddSymbol("activations"); IncrementSymbolCount(ts); ts = AddSymbol("statistics"); IncrementSymbolCount(ts); ts = AddSymbol("facts"); IncrementSymbolCount(ts); ts = AddSymbol("generic-functions"); IncrementSymbolCount(ts); ts = AddSymbol("methods"); IncrementSymbolCount(ts); ts = AddSymbol("instances"); IncrementSymbolCount(ts); ts = AddSymbol("slots"); IncrementSymbolCount(ts); ts = AddSymbol("messages"); IncrementSymbolCount(ts); ts = AddSymbol("message-handlers"); IncrementSymbolCount(ts); ts = AddSymbol("focus"); IncrementSymbolCount(ts);#endif }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -