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

📄 objrtbin.c

📁 NASA 开发使用的一个专家系统
💻 C
📖 第 1 页 / 共 2 页
字号:
   /*******************************************************/   /*      "C" Language Integrated Production System      */   /*                                                     */   /*               CLIPS Version 6.05  04/09/97          */   /*                                                     */   /*                                                     */   /*******************************************************//*************************************************************//* Purpose: Binary Load/Save Functions Defrule               *//*          Object Pattern Network                           *//*                                                           *//* Principal Programmer(s):                                  *//*      Brian L. Donnell                                     *//*                                                           *//* Contributing Programmer(s):                               *//*                                                           *//* Revision History:                                         *//*                                                           *//*************************************************************/   /* =========================================   *****************************************               EXTERNAL DEFINITIONS   =========================================   ***************************************** */#include "setup.h"#if INSTANCE_PATTERN_MATCHING && (BLOAD || BLOAD_ONLY || BLOAD_AND_BSAVE)#include "bload.h"#include "bsave.h"#include "clipsmem.h"#include "insfun.h"#include "objrtmch.h"#include "rulebin.h"#define _OBJRTBIN_SOURCE_#include "objrtbin.h"/* =========================================   *****************************************                   CONSTANTS   =========================================   ***************************************** */   /* =========================================   *****************************************               MACROS AND TYPES   =========================================   ***************************************** */typedef unsigned long UNLN;typedef struct bsaveObjectPatternNode  {   unsigned multifieldNode : 1;   unsigned endSlot        : 1;   unsigned whichField     : 8;   unsigned leaveFields    : 8;   unsigned slotNameID;   long networkTest,        nextLevel,        lastLevel,        leftNode,        rightNode,        alphaNode;  } BSAVE_OBJECT_PATTERN_NODE;typedef struct bsaveObjectAlphaNode  {   struct bsavePatternNodeHeader header;   long classbmp,        slotbmp,        patternNode,        nxtInGroup,        nxtTerminal;  } BSAVE_OBJECT_ALPHA_NODE;#define BsaveObjectPatternIndex(op) ((op != NULL) ? op->bsaveID : -1L)#define BsaveObjectAlphaIndex(ap)   ((ap != NULL) ? ap->bsaveID : -1L)#define ObjectPatternPointer(i) ((i == -1L) ? NULL : (OBJECT_PATTERN_NODE *) &PatternArray[i])#define ObjectAlphaPointer(i)   ((i == -1L) ? NULL : (OBJECT_ALPHA_NODE *) &AlphaArray[i])/* =========================================   *****************************************      INTERNALLY VISIBLE FUNCTION HEADERS   =========================================   ***************************************** */#if ANSI_COMPILER#if BLOAD_AND_BSAVEstatic VOID BsaveObjectPatternsFind(void);static VOID BsaveStorageObjectPatterns(FILE *);static VOID BsaveObjectPatterns(FILE *);#endifstatic VOID BloadStorageObjectPatterns(void);static VOID BloadObjectPatterns(void);static VOID UpdateAlpha(VOID *,long);static VOID UpdatePattern(VOID *,long);static VOID ClearBloadObjectPatterns(void);#else#if BLOAD_AND_BSAVEstatic VOID BsaveObjectPatternsFind();static VOID BsaveStorageObjectPatterns();static VOID BsaveObjectPatterns();#endifstatic VOID BloadStorageObjectPatterns();static VOID BloadObjectPatterns();static VOID UpdateAlpha();static VOID UpdatePattern();static VOID ClearBloadObjectPatterns();#endif      /* =========================================   *****************************************      EXTERNALLY VISIBLE GLOBAL VARIABLES   =========================================   ***************************************** *//* =========================================   *****************************************      INTERNALLY VISIBLE GLOBAL VARIABLES   =========================================   ***************************************** */static long AlphaNodeCount = 0L,            PatternNodeCount = 0L;static OBJECT_ALPHA_NODE HUGE_ADDR *AlphaArray = NULL;static OBJECT_PATTERN_NODE HUGE_ADDR *PatternArray = NULL;            /* =========================================   *****************************************          EXTERNALLY VISIBLE FUNCTIONS   =========================================   ***************************************** */   /***********************************************************  NAME         : SetupObjectsBload  DESCRIPTION  : Initializes data structures and                   routines for binary loads of                   generic function constructs  INPUTS       : None  RETURNS      : Nothing useful  SIDE EFFECTS : Routines defined and structures initialized  NOTES        : None ***********************************************************/globle VOID SetupObjectPatternsBload()  {#if BLOAD_AND_BSAVE   AddBinaryItem("object patterns",0,BsaveObjectPatternsFind,NULL,                             BsaveStorageObjectPatterns,BsaveObjectPatterns,                             BloadStorageObjectPatterns,BloadObjectPatterns,                             ClearBloadObjectPatterns);#endif#if BLOAD || BLOAD_ONLY   AddBinaryItem("object patterns",0,NULL,NULL,NULL,NULL,                             BloadStorageObjectPatterns,BloadObjectPatterns,                             ClearBloadObjectPatterns);#endif  }   /* =========================================   *****************************************          INTERNALLY VISIBLE FUNCTIONS   =========================================   ***************************************** */#if BLOAD_AND_BSAVE/***************************************************  NAME         : BsaveObjectPatternsFind  DESCRIPTION  : Sets the Bsave IDs for the object                 pattern data structures and                 determines how much space                 (including padding) is necessary                 for the alpha node bitmPS  INPUTS       : None  RETURNS      : Nothing useful  SIDE EFFECTS : Counts written  NOTES        : None ***************************************************/static VOID BsaveObjectPatternsFind()  {   OBJECT_ALPHA_NODE *alphaPtr;   OBJECT_PATTERN_NODE *patternPtr;   if (Bloaded())     {      SaveBloadCount(AlphaNodeCount);      SaveBloadCount(PatternNodeCount);     }   AlphaNodeCount = 0L;   alphaPtr = ObjectNetworkTerminalPointer();   while (alphaPtr != NULL)     {      alphaPtr->classbmp->neededBitMap = CLIPS_TRUE;      if (alphaPtr->slotbmp != NULL)        alphaPtr->slotbmp->neededBitMap = CLIPS_TRUE;      alphaPtr->bsaveID = AlphaNodeCount++;      alphaPtr = alphaPtr->nxtTerminal;     }        PatternNodeCount = 0L;   patternPtr = ObjectNetworkPointer();   while (patternPtr != NULL)     {      patternPtr->bsaveID = PatternNodeCount++;        if (patternPtr->nextLevel == NULL)        {         while (patternPtr->rightNode == NULL)           {            patternPtr = patternPtr->lastLevel;            if (patternPtr == NULL)              return;           }         patternPtr = patternPtr->rightNode;        }      else        patternPtr = patternPtr->nextLevel;     }  }  /****************************************************  NAME         : BsaveStorageObjectPatterns  DESCRIPTION  : Writes out the number of bytes                 required for object pattern bitmaps,                 and the number of object pattern                 alpha an intermediate nodes  INPUTS       : Bsave file stream pointer  RETURNS      : Nothing useful  SIDE EFFECTS : Counts written  NOTES        : None ****************************************************/static VOID BsaveStorageObjectPatterns(fp)  FILE *fp;  {   UNLN space;   space = sizeof(long) * 2;   GenWrite(&space,(UNLN) sizeof(UNLN),fp);   GenWrite(&AlphaNodeCount,(UNLN) sizeof(long),fp);   GenWrite(&PatternNodeCount,(UNLN) sizeof(long),fp);  }  /***************************************************  NAME         : BsaveObjectPatterns  DESCRIPTION  : Writes ouyt object pattern data                 structures to binary save file  INPUTS       : Bsave file stream pointer  RETURNS      : Nothing useful  SIDE EFFECTS : Data structures written  NOTES        : Extra padding written with alpha                 node bitmaps to ensure correct                 alignment of structues on bload ***************************************************/static VOID BsaveObjectPatterns(fp)  FILE *fp;  {   UNLN space;   OBJECT_ALPHA_NODE *alphaPtr;   OBJECT_PATTERN_NODE *patternPtr;   BSAVE_OBJECT_ALPHA_NODE dummyAlpha;   BSAVE_OBJECT_PATTERN_NODE dummyPattern;      

⌨️ 快捷键说明

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