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

📄 objrtcmp.c

📁 NASA 开发使用的一个专家系统
💻 C
📖 第 1 页 / 共 2 页
字号:
  SIDE EFFECTS : Object patterns code written to files  NOTES        : None ***********************************************************/static int ObjectPatternsToCode(fileName,fileID,headerFP,imageID,maxIndices)  char *fileName;  int fileID;  FILE *headerFP;  int imageID;  int maxIndices;  {   int version;      version = IntermediatePatternNodesToCode(fileName,fileID,              headerFP,imageID,maxIndices,1);   if (version == 0)     return(0);   if (! AlphaPatternNodesToCode(fileName,fileID,headerFP,imageID,maxIndices,version))     return(0);   return(1);  }  /***************************************************  NAME         : IntermediatePatternNodeReference  DESCRIPTION  : Prints out a reference to an                 object pattern intermediate node  INPUTS       : 1) A pointer to the object pattern                    intermediate node                 2) A pointer to the output file                 3) The id of constructs-to-c image                 4) The maximum number of indices                    allowed in any single array                    in the image  RETURNS      : 1 if OK, 0 if could not open a file  SIDE EFFECTS : Reference to object pattern alpha                 memory printed  NOTES        : None ***************************************************/static VOID IntermediatePatternNodeReference(thePattern,theFile,imageID,maxIndices)  OBJECT_PATTERN_NODE *thePattern;  FILE *theFile;  int imageID;  int maxIndices;  {   if (thePattern == NULL)     fprintf(theFile,"NULL");   else     {      fprintf(theFile,"&%s%d_%d[%d]",                    ObjectPNPrefix(),imageID,                    (((int) thePattern->bsaveID) / maxIndices) + 1,                    ((int) thePattern->bsaveID) % maxIndices);     }  }/*************************************************************  NAME         : IntermediatePatternNodesToCode  DESCRIPTION  : Writes out data structures for run-time                 creation of object pattern intermediate nodes  INPUTS       : 1) The base image output file name                 2) The base image file id                 3) A pointer to the header output file                 4) The id of constructs-to-c image                 5) The maximum number of indices                    allowed in any single array                    in the image  RETURNS      : Next version file to open, 0 if error  SIDE EFFECTS : Object patterns code written to files  NOTES        : None *************************************************************/static int IntermediatePatternNodesToCode(fileName,fileID,headerFP,imageID,maxIndices,version)  char *fileName;  int fileID;  FILE *headerFP;  int imageID;  int maxIndices;   int version;  {   FILE *fp;   int arrayVersion;   int newHeader;   int i;   OBJECT_PATTERN_NODE *thePattern;   /* ================      Create the file.      ================ */   if (ObjectNetworkPointer() == NULL)     return(1);        fprintf(headerFP,"#include \"objrtmch.h\"\n");   /* =================================      Dump the pattern node structures.      ================================= */   if ((fp = NewCFile(fileName,fileID,version,CLIPS_FALSE)) == NULL)     return(0);   newHeader = CLIPS_TRUE;   arrayVersion = 1;   i = 1;   thePattern = ObjectNetworkPointer();   while (thePattern != NULL)     {      if (newHeader)        {         fprintf(fp,"OBJECT_PATTERN_NODE %s%d_%d[] = {\n",                     ObjectPNPrefix(),imageID,arrayVersion);         fprintf(headerFP,"extern OBJECT_PATTERN_NODE %s%d_%d[];\n",                     ObjectPNPrefix(),imageID,arrayVersion);         newHeader = CLIPS_FALSE;        }      fprintf(fp,"{0,%u,%u,%u,%u,0L,%u,",thePattern->multifieldNode,                                        thePattern->endSlot,                                        thePattern->whichField,                                        thePattern->leaveFields,                                        thePattern->slotNameID);            PrintHashedExpressionReference(fp,thePattern->networkTest,imageID,maxIndices);      fprintf(fp,",");      IntermediatePatternNodeReference(thePattern->nextLevel,fp,imageID,maxIndices);      fprintf(fp,",");      IntermediatePatternNodeReference(thePattern->lastLevel,fp,imageID,maxIndices);      fprintf(fp,",");      IntermediatePatternNodeReference(thePattern->leftNode,fp,imageID,maxIndices);      fprintf(fp,",");      IntermediatePatternNodeReference(thePattern->rightNode,fp,imageID,maxIndices);      fprintf(fp,",");      ObjectPatternNodeReference((VOID *) thePattern->alphaNode,fp,imageID,maxIndices);      fprintf(fp,",0L}");      i++;      thePattern = GetNextObjectPatternNode(thePattern);      if ((i > maxIndices) || (thePattern == NULL))        {         fprintf(fp,"};\n");         fclose(fp);         i = 1;         version++;         arrayVersion++;         if (thePattern != NULL)           {            if ((fp = NewCFile(fileName,fileID,version,CLIPS_FALSE)) == NULL)              return(0);            newHeader = CLIPS_TRUE;           }        }      else if (thePattern != NULL)        { fprintf(fp,",\n"); }     }   return(version);  }/***********************************************************  NAME         : AlphaPatternNodesToCode  DESCRIPTION  : Writes out data structures for run-time                 creation of object pattern alpha memories  INPUTS       : 1) The base image output file name                 2) The base image file id                 3) A pointer to the header output file                 4) The id of constructs-to-c image                 5) The maximum number of indices                    allowed in any single array                    in the image  RETURNS      : Next version file to open, 0 if error  SIDE EFFECTS : Object patterns code written to files  NOTES        : None ***********************************************************/static int AlphaPatternNodesToCode(fileName,fileID,headerFP,imageID,maxIndices,version)  char *fileName;  int fileID;  FILE *headerFP;  int imageID;  int maxIndices;  int version;  {   FILE *fp;   int arrayVersion;   int newHeader;   int i;   OBJECT_ALPHA_NODE *thePattern;   /* ================      Create the file.      ================ */   if (ObjectNetworkTerminalPointer() == NULL)     return(version);        /* =================================      Dump the pattern node structures.      ================================= */   if ((fp = NewCFile(fileName,fileID,version,CLIPS_FALSE)) == NULL)     return(0);   newHeader = CLIPS_TRUE;   arrayVersion = 1;   i = 1;   thePattern = ObjectNetworkTerminalPointer();   while (thePattern != NULL)     {      if (newHeader)        {         fprintf(fp,"OBJECT_ALPHA_NODE %s%d_%d[] = {\n",                    ObjectANPrefix(),imageID,arrayVersion);         fprintf(headerFP,"extern OBJECT_ALPHA_NODE %s%d_%d[];\n",                          ObjectANPrefix(),imageID,arrayVersion);         newHeader = CLIPS_FALSE;        }       fprintf(fp,"{");            PatternNodeHeaderToCode(fp,&thePattern->header,imageID,maxIndices);      fprintf(fp,",0L,");      PrintBitMapReference(fp,thePattern->classbmp);      fprintf(fp,",");      PrintBitMapReference(fp,thePattern->slotbmp);      fprintf(fp,",");      IntermediatePatternNodeReference(thePattern->patternNode,fp,imageID,maxIndices);      fprintf(fp,",");      ObjectPatternNodeReference(thePattern->nxtInGroup,fp,imageID,maxIndices);      fprintf(fp,",");      ObjectPatternNodeReference(thePattern->nxtTerminal,fp,imageID,maxIndices);      fprintf(fp,",0L}");      i++;      thePattern = thePattern->nxtTerminal;      if ((i > maxIndices) || (thePattern == NULL))        {         fprintf(fp,"};\n");         fclose(fp);         i = 1;         version++;         arrayVersion++;         if (thePattern != NULL)           {            if ((fp = NewCFile(fileName,fileID,version,CLIPS_FALSE)) == NULL)              return(0);            newHeader = CLIPS_TRUE;           }        }      else if (thePattern != NULL)        { fprintf(fp,",\n"); }     }   return(version);  }#endif/***************************************************  NAME         :   DESCRIPTION  :   INPUTS       :   RETURNS      :   SIDE EFFECTS :   NOTES        :  ***************************************************/

⌨️ 快捷键说明

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