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

📄 sysdep.c

📁 NASA 开发使用的一个专家系统
💻 C
📖 第 1 页 / 共 3 页
字号:
/********************************************************//* 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 + -