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

📄 dfinsbin.c

📁 NASA 开发使用的一个专家系统
💻 C
📖 第 1 页 / 共 2 页
字号:
   /*******************************************************/   /*      "C" Language Integrated Production System      */   /*                                                     */   /*               CLIPS Version 6.05  04/09/97          */   /*                                                     */   /*                                                     */   /*******************************************************//*************************************************************//* Purpose: Binary Load/Save Functions for Definstances      *//*                                                           *//* Principal Programmer(s):                                  *//*      Brian L. Donnell                                     *//*                                                           *//* Contributing Programmer(s):                               *//*                                                           *//* Revision History:                                         *//*                                                           *//*************************************************************/   /* =========================================   *****************************************               EXTERNAL DEFINITIONS   =========================================   ***************************************** */#include "setup.h"#if DEFINSTANCES_CONSTRUCT && (BLOAD || BLOAD_ONLY || BLOAD_AND_BSAVE)#include "bload.h"#include "bsave.h"#include "clipsmem.h"#include "cstrcbin.h"#include "defins.h"#include "modulbin.h"#define _DFINSBIN_SOURCE_#include "dfinsbin.h"/* =========================================   *****************************************                   CONSTANTS   =========================================   ***************************************** */   /* =========================================   *****************************************               MACROS AND TYPES   =========================================   ***************************************** */typedef struct bsaveDefinstancesModule  {   struct bsaveDefmoduleItemHeader header;  } BSAVE_DEFINSTANCES_MODULE;typedef struct bsaveDefinstances  {   struct bsaveConstructHeader header;   long mkinstance;  } BSAVE_DEFINSTANCES;     /* =========================================   *****************************************      INTERNALLY VISIBLE FUNCTION HEADERS   =========================================   ***************************************** */#if ANSI_COMPILER#if BLOAD_AND_BSAVEstatic VOID BsaveDefinstancesFind(void);static VOID MarkDefinstancesItems(struct constructHeader *,VOID *);static VOID BsaveDefinstancesExpressions(FILE *);static VOID BsaveDefinstancesExpression(struct constructHeader *,VOID *);static VOID BsaveStorageDefinstances(FILE *);static VOID BsaveDefinstancesDriver(FILE *);static VOID BsaveDefinstances(struct constructHeader *,VOID *);#endifstatic VOID BloadStorageDefinstances(void);static VOID BloadDefinstances(void);static VOID UpdateDefinstancesModule(VOID *,long);static VOID UpdateDefinstances(VOID *,long);static VOID ClearDefinstancesBload(void);#else#if BLOAD_AND_BSAVEstatic VOID BsaveDefinstancesFind();static VOID MarkDefinstancesItems();static VOID BsaveDefinstancesExpressions();static VOID BsaveDefinstancesExpression();static VOID BsaveStorageDefinstances();static VOID BsaveDefinstancesDriver();static VOID BsaveDefinstances();#endifstatic VOID BloadStorageDefinstances();static VOID BloadDefinstances();static VOID UpdateDefinstancesModule();static VOID UpdateDefinstances();static VOID ClearDefinstancesBload();#endif      /* =========================================   *****************************************      EXTERNALLY VISIBLE GLOBAL VARIABLES   =========================================   ***************************************** */globle DEFINSTANCES HUGE_ADDR *definstancesArray = NULL;/* =========================================   *****************************************      INTERNALLY VISIBLE GLOBAL VARIABLES   =========================================   ***************************************** */static long DefinstancesCount = 0L,            ModuleCount = 0L;static DEFINSTANCES_MODULE HUGE_ADDR *ModuleArray;/* =========================================   *****************************************          EXTERNALLY VISIBLE FUNCTIONS   =========================================   ***************************************** */   /***********************************************************  NAME         : SetupDefinstancesBload  DESCRIPTION  : Initializes data structures and                   routines for binary loads of definstances  INPUTS       : None  RETURNS      : Nothing useful  SIDE EFFECTS : Routines defined and structures initialized  NOTES        : None ***********************************************************/globle VOID SetupDefinstancesBload()  {#if BLOAD_AND_BSAVE   AddBinaryItem("definstances",0,BsaveDefinstancesFind,BsaveDefinstancesExpressions,                             BsaveStorageDefinstances,BsaveDefinstancesDriver,                             BloadStorageDefinstances,BloadDefinstances,                             ClearDefinstancesBload);#else   AddBinaryItem("definstances",0,NULL,NULL,NULL,NULL,                             BloadStorageDefinstances,BloadDefinstances,                             ClearDefinstancesBload);#endif  }   /***************************************************  NAME         : BloadDefinstancesModuleRef  DESCRIPTION  : Returns a pointer to the                 appropriate definstances module  INPUTS       : The index of the module  RETURNS      : A pointer to the module  SIDE EFFECTS : None  NOTES        : None ***************************************************/globle VOID *BloadDefinstancesModuleRef(index)  int index;  {   return ((VOID *) &ModuleArray[index]);  }/* =========================================   *****************************************          INTERNALLY VISIBLE FUNCTIONS   =========================================   ***************************************** */#if BLOAD_AND_BSAVE/***************************************************************************  NAME         : BsaveDefinstancesFind  DESCRIPTION  : For all definstances, this routine marks all                    the needed symbols.                 Also, it also counts the number of                   expression structures needed.                 Also, counts total number of definstances.  INPUTS       : None  RETURNS      : Nothing useful  SIDE EFFECTS : ExpressionCount (a global from BSAVE.C) is incremented                   for every expression needed                 Symbols are marked in their structures  NOTES        : Also sets bsaveIndex for each definstances (assumes                   definstances will be bsaved in order of binary list) ***************************************************************************/static VOID BsaveDefinstancesFind()  {   if (Bloaded())     {      SaveBloadCount(ModuleCount);      SaveBloadCount(DefinstancesCount);     }   DefinstancesCount = 0L;      ModuleCount = DoForAllConstructs(MarkDefinstancesItems,DefinstancesModuleIndex,                                    CLIPS_FALSE,NULL);  }  /***************************************************  NAME         : MarkDefinstancesItems  DESCRIPTION  : Marks the needed items for                 a definstances bsave  INPUTS       : 1) The definstances                 2) User data buffer (ignored)  RETURNS      : Nothing useful  SIDE EFFECTS : Needed items marked  NOTES        : None ***************************************************/#if IBM_TBC#pragma argsused#endifstatic VOID MarkDefinstancesItems(theDefinstances,userBuffer)  struct constructHeader *theDefinstances;  VOID *userBuffer;  {#if MAC_MPW || MAC_MCW#pragma unused(userBuffer)#endif   MarkConstructHeaderNeededItems(theDefinstances,DefinstancesCount++);   ExpressionCount += ExpressionSize(((DEFINSTANCES *) theDefinstances)->mkinstance);   MarkNeededItems(((DEFINSTANCES *) theDefinstances)->mkinstance);  }/***************************************************  NAME         : BsaveDefinstancesExpressions  DESCRIPTION  : Writes out all expressions needed                   by deffunctyions  INPUTS       : The file pointer of the binary file  RETURNS      : Nothing useful  SIDE EFFECTS : File updated  NOTES        : None ***************************************************/static VOID BsaveDefinstancesExpressions(fp)  FILE *fp;  {   DoForAllConstructs(BsaveDefinstancesExpression,DefinstancesModuleIndex,                      CLIPS_FALSE,(VOID *) fp);  }  /***************************************************  NAME         : BsaveDefinstancesExpression  DESCRIPTION  : Saves the needed expressions for                 a definstances bsave  INPUTS       : 1) The definstances                 2) Output data file pointer  RETURNS      : Nothing useful  SIDE EFFECTS : Expressions saved  NOTES        : None ***************************************************/static VOID BsaveDefinstancesExpression(theDefinstances,userBuffer)  struct constructHeader *theDefinstances;  VOID *userBuffer;  {

⌨️ 快捷键说明

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