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

📄 sysdep.c

📁 clips源代码
💻 C
📖 第 1 页 / 共 4 页
字号:
   /*******************************************************/   /*      "C" Language Integrated Production System      */   /*                                                     */   /*             CLIPS Version 6.24  05/17/06            */   /*                                                     */   /*               SYSTEM DEPENDENT MODULE               */   /*******************************************************//*************************************************************//* Purpose: Isolation of system dependent routines.          *//*                                                           *//* Principal Programmer(s):                                  *//*      Gary D. Riley                                        *//*                                                           *//* Contributing Programmer(s):                               *//*      Brian L. Donnell                                     *//*                                                           *//* Revision History:                                         *//*      6.23: Modified GenOpen to check the file length      *//*            against the system constant FILENAME_MAX.      *//*                                                           *//*      6.24: Support for run-time programs directly passing *//*            the hash tables for initialization.            *//*                                                           *//*            Made gensystem functional for Xcode.           */ /*                                                           *//*            Added BeforeOpenFunction and AfterOpenFunction *//*            hooks.                                         *//*                                                           *//*            Added environment parameter to GenClose.       *//*            Added environment parameter to GenOpen.        *//*                                                           *//*            Updated UNIX_V gentime functionality.          *//*                                                           *//*************************************************************/#define _SYSDEP_SOURCE_#include "setup.h"#include <stdio.h>#define _STDIO_INCLUDED_#include <string.h>#include <stdlib.h>#include <time.h>#include <stdarg.h>#if   VAX_VMS#include timeb#include <descrip.h>#include <ssdef.h>#include <stsdef.h>#include signalextern int LIB$SPAWN();#endif#if MAC#if MAC_MCW || MAC_XCD#include <Carbon/Carbon.h> #endif#define kTwoPower32 (4294967296.0)      /* 2^32 */#if MAC_MCW || MAC_XCD#include <strings.h>#endif#endif#if MAC_MCW || IBM_MCW || MAC_XCD #include <unistd.h>#endif#if   IBM_MSC#include <sys\types.h>#include <sys\timeb.h>#include <io.h>#include <fcntl.h>#include <limits.h>#include <process.h>#endif#if   IBM_TBC#include <bios.h>#include <io.h>#include <fcntl.h>#include <limits.h>#endif#if IBM_MCW#include <io.h>#include <limits.h>#endif#if   UNIX_7 || IBM_GCC#include <sys/types.h>#include <sys/timeb.h>#include <signal.h>#endif#if   UNIX_V#include <sys/types.h>#include <sys/time.h>#include <sys/times.h>#include <unistd.h>#include <signal.h>#endif#include "argacces.h"#include "bmathfun.h"#include "commline.h"#include "conscomp.h"#include "constrnt.h"#include "constrct.h"#include "cstrcpsr.h"#include "emathfun.h"#include "envrnmnt.h"#include "filecom.h"#include "iofun.h"#include "memalloc.h"#include "miscfun.h"#include "multifld.h"#include "multifun.h"#include "parsefun.h"#include "prccode.h"#include "prdctfun.h"#include "proflfun.h"#include "prcdrfun.h"#include "router.h"#include "sortfun.h"#include "strngfun.h"#include "textpro.h"#include "utility.h"#include "watch.h"#include "sysdep.h"#if DEFFACTS_CONSTRUCT#include "dffctdef.h"#endif#if DEFRULE_CONSTRUCT#include "ruledef.h"#endif#if DEFGENERIC_CONSTRUCT#include "genrccom.h"#endif#if DEFFUNCTION_CONSTRUCT#include "dffnxfun.h"#endif#if DEFGLOBAL_CONSTRUCT#include "globldef.h"#endif#if DEFTEMPLATE_CONSTRUCT#include "tmpltdef.h"#endif#if OBJECT_SYSTEM#include "classini.h"#endif#include "moduldef.h"#if EMACS_EDITOR#include "ed.h"#endif#if DEVELOPER#include "developr.h"#endif/***************//* DEFINITIONS *//***************/#define NO_SWITCH         0#define BATCH_SWITCH      1#define BATCH_STAR_SWITCH 2#define LOAD_SWITCH       3/********************//* ENVIRONMENT DATA *//********************/#define SYSTEM_DEPENDENT_DATA 58struct systemDependentData  {    void (*RedrawScreenFunction)(void *);   void (*PauseEnvFunction)(void *);   void (*ContinueEnvFunction)(void *,int);#if ! WINDOW_INTERFACE#if IBM_TBC   void interrupt (*OldCtrlC)(void);   void interrupt (*OldBreak)(void);#endif#if IBM_MSC   void (interrupt *OldCtrlC)(void);   void (interrupt *OldBreak)(void);#endif#endif#if IBM_TBC || IBM_MSC   int BinaryFileHandle;#endif#if (! IBM_TBC) && (! IBM_MSC)   FILE *BinaryFP;#endif   int (*BeforeOpenFunction)(void *);   int (*AfterOpenFunction)(void *);   jmp_buf *jmpBuffer;  };#define SystemDependentData(theEnv) ((struct systemDependentData *) GetEnvironmentData(theEnv,SYSTEM_DEPENDENT_DATA))/****************************************//* GLOBAL EXTERNAL FUNCTION DEFINITIONS *//****************************************/   extern void                    UserFunctions(void);   extern void                    EnvUserFunctions(void *);/***************************************//* LOCAL INTERNAL FUNCTION DEFINITIONS *//***************************************/   static void                    InitializeSystemDependentData(void *);   static void                    SystemFunctionDefinitions(void *);   static void                    InitializeKeywords(void *);   static void                    InitializeNonportableFeatures(void *);#if   (VAX_VMS || UNIX_V || UNIX_7 || IBM_GCC) && (! WINDOW_INTERFACE)   static void                    CatchCtrlC(int);#endif#if   (IBM_TBC || IBM_MSC) && (! WINDOW_INTERFACE)   static void interrupt          CatchCtrlC(void);   static void                    RestoreInterruptVectors(void);#endif#if MAC && (! WINDOW_INTERFACE)   static void                    CallSystemTask(void);#endif/********************************************************//* InitializeSystemDependentData: Allocates environment *//*    data for system dependent routines.               *//********************************************************/static void InitializeSystemDependentData(  void *theEnv)  {   AllocateEnvironmentData(theEnv,SYSTEM_DEPENDENT_DATA,sizeof(struct systemDependentData),NULL);  }/**************************************************//* InitializeEnvironment: Performs initialization *//*   of the KB environment.                       *//**************************************************/#if (! ENVIRONMENT_API_ONLY) && ALLOW_ENVIRONMENT_GLOBALSgloble void InitializeEnvironment()   {    if (GetCurrentEnvironment() == NULL)      { CreateEnvironment(); }   }#endif/*****************************************************//* EnvInitializeEnvironment: Performs initialization *//*   of the KB environment.                          *//*****************************************************/globle void EnvInitializeEnvironment(  void *vtheEnvironment,  struct symbolHashNode **symbolTable,  struct floatHashNode **floatTable,  struct integerHashNode **integerTable,  struct bitMapHashNode **bitmapTable)  {   struct environmentData *theEnvironment = (struct environmentData *) vtheEnvironment;      /*================================================*/   /* Don't allow the initialization to occur twice. */   /*================================================*/   if (theEnvironment->initialized) return;        /*================================*/   /* Initialize the memory manager. */   /*================================*/   InitializeMemory(theEnvironment);   /*===================================================*/   /* Initialize environment data for various features. */   /*===================================================*/      InitializeCommandLineData(theEnvironment);#if CONSTRUCT_COMPILER && (! RUN_TIME)   InitializeConstructCompilerData(theEnvironment);#endif   InitializeConstructData(theEnvironment);   InitializeEvaluationData(theEnvironment);   InitializeExternalFunctionData(theEnvironment);   InitializeMultifieldData(theEnvironment);   InitializePrettyPrintData(theEnvironment);   InitializePrintUtilityData(theEnvironment);   InitializeScannerData(theEnvironment);   InitializeSystemDependentData(theEnvironment);   InitializeUserDataData(theEnvironment);   InitializeUtilityData(theEnvironment);#if DEBUGGING_FUNCTIONS   InitializeWatchData(theEnvironment);#endif      /*===============================================*/   /* Initialize the hash tables for atomic values. */   /*===============================================*/   InitializeAtomTables(theEnvironment,symbolTable,floatTable,integerTable,bitmapTable);   /*=========================================*/   /* Initialize file and string I/O routers. */   /*=========================================*/   InitializeDefaultRouters(theEnvironment);   /*=========================================================*/   /* Initialize some system dependent features such as time. */   /*=========================================================*/   InitializeNonportableFeatures(theEnvironment);   /*=============================================*/   /* Register system and user defined functions. */   /*=============================================*/   SystemFunctionDefinitions(theEnvironment);   UserFunctions();   EnvUserFunctions(theEnvironment);   /*====================================*/   /* Initialize the constraint manager. */   /*====================================*/   InitializeConstraints(theEnvironment);   /*==========================================*/   /* Initialize the expression hash table and */   /* pointers to specific functions.          */   /*==========================================*/   InitExpressionData(theEnvironment);   /*===================================*/   /* Initialize the construct manager. */   /*===================================*/#if ! RUN_TIME   InitializeConstructs(theEnvironment);#endif   /*=====================================*/   /* Initialize the defmodule construct. */   /*=====================================*/   AllocateDefmoduleGlobals(theEnvironment);   /*===================================*/   /* Initialize the defrule construct. */   /*===================================*/#if DEFRULE_CONSTRUCT   InitializeDefrules(theEnvironment);#endif   /*====================================*/   /* Initialize the deffacts construct. */   /*====================================*/#if DEFFACTS_CONSTRUCT   InitializeDeffacts(theEnvironment);#endif   /*=====================================================*/   /* Initialize the defgeneric and defmethod constructs. */   /*=====================================================*/#if DEFGENERIC_CONSTRUCT   SetupGenericFunctions(theEnvironment);#endif   /*=======================================*/   /* Initialize the deffunction construct. */   /*=======================================*/#if DEFFUNCTION_CONSTRUCT   SetupDeffunctions(theEnvironment);#endif   /*=====================================*/   /* Initialize the defglobal construct. */

⌨️ 快捷键说明

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