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

📄 developr.c

📁 clips源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
   /* Print the information. */   /*========================*/   EnvPrintRouter(theEnv,WDISPLAY,"Total Symbols: ");   PrintLongInteger(theEnv,WDISPLAY,(long long) totalSymbolCount);   EnvPrintRouter(theEnv,WDISPLAY,"\n");   for (i = 0; i < COUNT_SIZE; i++)     {      PrintLongInteger(theEnv,WDISPLAY,(long long) i);      EnvPrintRouter(theEnv,WDISPLAY," ");      PrintLongInteger(theEnv,WDISPLAY,(long long) symbolCounts[i]);      EnvPrintRouter(theEnv,WDISPLAY,"\n");     }   EnvPrintRouter(theEnv,WDISPLAY,"\nTotal Floats: ");   PrintLongInteger(theEnv,WDISPLAY,(long long) totalFloatCount);   EnvPrintRouter(theEnv,WDISPLAY,"\n");   for (i = 0; i < COUNT_SIZE; i++)     {      PrintLongInteger(theEnv,WDISPLAY,(long long) i);      EnvPrintRouter(theEnv,WDISPLAY," ");      PrintLongInteger(theEnv,WDISPLAY,(long long) floatCounts[i]);      EnvPrintRouter(theEnv,WDISPLAY,"\n");     }  }#if DEFRULE_CONSTRUCT && DEFTEMPLATE_CONSTRUCT/*******************************************************//* ShowFactPatternNetwork: Command for displaying the  *//*   fact pattern network for a specified deftemplate. *//*******************************************************/globle void ShowFactPatternNetwork(  void *theEnv)  {   struct factPatternNode *patternPtr;   struct deftemplate *theDeftemplate;   char *theName;   int depth = 0, i;   theName = GetConstructName(theEnv,"show-fpn","template name");   if (theName == NULL) return;   theDeftemplate = (struct deftemplate *) EnvFindDeftemplate(theEnv,theName);   if (theDeftemplate == NULL) return;   patternPtr = theDeftemplate->patternNetwork;   while (patternPtr != NULL)     {      for (i = 0; i < depth; i++) EnvPrintRouter(theEnv,WDISPLAY," ");      if (patternPtr->header.singlefieldNode) EnvPrintRouter(theEnv,WDISPLAY,"SF   ");      else if (patternPtr->header.multifieldNode)        {         EnvPrintRouter(theEnv,WDISPLAY,"MF");         if (patternPtr->header.endSlot) EnvPrintRouter(theEnv,WDISPLAY,")");         else EnvPrintRouter(theEnv,WDISPLAY,"*");         PrintLongInteger(theEnv,WDISPLAY,(long long) patternPtr->leaveFields);         EnvPrintRouter(theEnv,WDISPLAY," ");        }      EnvPrintRouter(theEnv,WDISPLAY,"Slot: ");      PrintLongInteger(theEnv,WDISPLAY,(long long) patternPtr->whichSlot);      EnvPrintRouter(theEnv,WDISPLAY," Field: ");      PrintLongInteger(theEnv,WDISPLAY,(long long) patternPtr->whichField);      EnvPrintRouter(theEnv,WDISPLAY," Expression: ");      if (patternPtr->networkTest == NULL) EnvPrintRouter(theEnv,WDISPLAY,"None");      else PrintExpression(theEnv,WDISPLAY,patternPtr->networkTest);      EnvPrintRouter(theEnv,WDISPLAY," RightHash: ");      if (patternPtr->header.rightHash == NULL) EnvPrintRouter(theEnv,WDISPLAY,"None");      else PrintExpression(theEnv,WDISPLAY,patternPtr->header.rightHash);      EnvPrintRouter(theEnv,WDISPLAY,"\n");      if (patternPtr->nextLevel == NULL)        {         while (patternPtr->rightNode == NULL)           {            patternPtr = patternPtr->lastLevel;            depth--;            if (patternPtr == NULL) return;           }         patternPtr = patternPtr->rightNode;        }      else        {         patternPtr = patternPtr->nextLevel;         depth++;        }     }  }#endif#if DEFRULE_CONSTRUCT && OBJECT_SYSTEM/***************************************************  NAME         : PrintObjectPatternNetwork  DESCRIPTION  : Displays an indented printout of                 the object pattern network  INPUTS       : None  RETURNS      : Nothing useful  SIDE EFFECTS : Object pattern network displayed  NOTES        : None ***************************************************/globle void PrintObjectPatternNetwork(  void *theEnv)  {   char indentbuf[80];   indentbuf[0] = '\0';   PrintOPNLevel(theEnv,ObjectNetworkPointer(theEnv),indentbuf,0);  }/**********************************************************  NAME         : PrintOPNLevel  DESCRIPTION  : Recursivley prints object pattern network  INPUTS       : 1) The current object pattern network node                 2) A buffer holding preceding indentation                    text showing the level in the tree                 3) The length of the indentation text  RETURNS      : Nothing useful  SIDE EFFECTS : Pattern nodes recursively printed  NOTES        : None **********************************************************/static void PrintOPNLevel(  void *theEnv,  OBJECT_PATTERN_NODE *pptr,  char *indentbuf,  int ilen)  {   CLASS_BITMAP *cbmp;   SLOT_BITMAP *sbmp;   register unsigned i;   OBJECT_PATTERN_NODE *uptr;   OBJECT_ALPHA_NODE *alphaPtr;   while (pptr != NULL)     {      EnvPrintRouter(theEnv,WDISPLAY,indentbuf);      if (pptr->alphaNode != NULL)        EnvPrintRouter(theEnv,WDISPLAY,"+");      EnvPrintRouter(theEnv,WDISPLAY,ValueToString(FindIDSlotName(theEnv,pptr->slotNameID)));      EnvPrintRouter(theEnv,WDISPLAY," (");      PrintLongInteger(theEnv,WDISPLAY,(long long) pptr->slotNameID);      EnvPrintRouter(theEnv,WDISPLAY,") ");      EnvPrintRouter(theEnv,WDISPLAY,pptr->endSlot ? "EPF#" : "PF#");      PrintLongInteger(theEnv,WDISPLAY,(long long) pptr->whichField);      EnvPrintRouter(theEnv,WDISPLAY," ");      EnvPrintRouter(theEnv,WDISPLAY,pptr->multifieldNode ? "$? " : "? ");      if (pptr->networkTest != NULL)        PrintExpression(theEnv,WDISPLAY,pptr->networkTest);      EnvPrintRouter(theEnv,WDISPLAY,"\n");      alphaPtr = pptr->alphaNode;      while (alphaPtr != NULL)        {         EnvPrintRouter(theEnv,WDISPLAY,indentbuf);         EnvPrintRouter(theEnv,WDISPLAY,"     Classes:");         cbmp = (CLASS_BITMAP *) ValueToBitMap(alphaPtr->classbmp);         for (i = 0 ; i <= cbmp->maxid ; i++)           if (TestBitMap(cbmp->map,i))             {              EnvPrintRouter(theEnv,WDISPLAY," ");              EnvPrintRouter(theEnv,WDISPLAY,EnvGetDefclassName(theEnv,(void *) DefclassData(theEnv)->ClassIDMap[i]));             }         if (alphaPtr->slotbmp != NULL)           {            sbmp = (SLOT_BITMAP *) ValueToBitMap(pptr->alphaNode->slotbmp);            EnvPrintRouter(theEnv,WDISPLAY," *** Slots:");            for (i = NAME_ID ; i <= sbmp->maxid ; i++)              if (TestBitMap(sbmp->map,i))                {                 for (uptr = pptr ; uptr != NULL ; uptr  = uptr->lastLevel)                   if (uptr->slotNameID == i)                     break;                 if (uptr == NULL)                   {                    EnvPrintRouter(theEnv,WDISPLAY," ");                    EnvPrintRouter(theEnv,WDISPLAY,ValueToString(FindIDSlotName(theEnv,i)));                   }                }           }         if (alphaPtr->header.rightHash != NULL)           {            EnvPrintRouter(theEnv,WDISPLAY," RH: ");            PrintExpression(theEnv,WDISPLAY,alphaPtr->header.rightHash);           }         EnvPrintRouter(theEnv,WDISPLAY,"\n");         alphaPtr = alphaPtr->nxtInGroup;        }      indentbuf[ilen++] = (char) ((pptr->rightNode != NULL) ? '|' : ' ');      indentbuf[ilen++] = ' ';      indentbuf[ilen++] = ' ';      indentbuf[ilen] = '\0';      PrintOPNLevel(theEnv,pptr->nextLevel,indentbuf,ilen);      ilen -= 3;      indentbuf[ilen] = '\0';      pptr = pptr->rightNode;     }  }#endif#if OBJECT_SYSTEM/******************************************************//* InstanceTableUsage: Prints information about the  *//*   instances in the instance hash table.       *//******************************************************/globle void InstanceTableUsage(  void *theEnv)  {   unsigned long i;   int instanceCounts[COUNT_SIZE];   INSTANCE_TYPE *ins;   unsigned long int instanceCount, totalInstanceCount = 0;   EnvArgCountCheck(theEnv,"instance-table-usage",EXACTLY,0);   for (i = 0; i < COUNT_SIZE; i++)     { instanceCounts[i] = 0; }        /*======================================*/   /* Count entries in the instance table. */   /*======================================*/   for (i = 0; i < INSTANCE_TABLE_HASH_SIZE; i++)     {      instanceCount = 0;      for (ins = InstanceData(theEnv)->InstanceTable[i]; ins != NULL; ins = ins->nxtHash)        {          instanceCount++;         totalInstanceCount++;        }                 if (instanceCount < (COUNT_SIZE - 1))        { instanceCounts[instanceCount]++; }      else        { instanceCounts[COUNT_SIZE - 1]++; }     }   /*========================*/   /* Print the information. */   /*========================*/   EnvPrintRouter(theEnv,WDISPLAY,"Total Instances: ");   PrintLongInteger(theEnv,WDISPLAY,(long long) totalInstanceCount);   EnvPrintRouter(theEnv,WDISPLAY,"\n");   for (i = 0; i < COUNT_SIZE; i++)     {      PrintLongInteger(theEnv,WDISPLAY,(long long) i);      EnvPrintRouter(theEnv,WDISPLAY," ");      PrintLongInteger(theEnv,WDISPLAY,(long long) instanceCounts[i]);      EnvPrintRouter(theEnv,WDISPLAY,"\n");     }  }  #endif#endif

⌨️ 快捷键说明

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