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

📄 objcmp.c

📁 clips源代码
💻 C
📖 第 1 页 / 共 4 页
字号:
                                "SLOT_DESC",SlotPrefix(),                                *reopenSlotFile,slotCodeFile);   if (*slotFile == NULL)     return(FALSE);   for (i = 0 ; i < theDefclass->slotCount ; i++)     {      sd = &theDefclass->slots[i];      if (i > 0)        fprintf(*slotFile,",\n");      fprintf(*slotFile,"{ %u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,",                        sd->shared,sd->multiple,                        sd->composite,sd->noInherit,                        sd->noWrite,sd->initializeOnly,                        sd->dynamicDefault,sd->defaultSpecified,                        sd->noDefault,sd->reactive,                        sd->publicVisibility,sd->createReadAccessor,                        sd->createWriteAccessor,sd->overrideMessageSpecified);      PrintClassReference(theEnv,*slotFile,sd->cls,imageID,maxIndices);      fprintf(*slotFile,",");      PrintSlotNameReference(theEnv,*slotFile,sd->slotName,imageID,maxIndices);      fprintf(*slotFile,",\n   ");      PrintSymbolReference(theEnv,*slotFile,sd->overrideMessage);      if (sd->defaultValue != NULL)        {         fprintf(*slotFile,",(void *) ");         if (sd->dynamicDefault)           ExpressionToCode(theEnv,*slotFile,(EXPRESSION *) sd->defaultValue);         else           {            tmpexp = ConvertValueToExpression(theEnv,(DATA_OBJECT *) sd->defaultValue);            ExpressionToCode(theEnv,*slotFile,tmpexp);            ReturnExpression(theEnv,tmpexp);           }        }      else        fprintf(*slotFile,",NULL");      fprintf(*slotFile,",");      PrintConstraintReference(theEnv,*slotFile,sd->constraint,imageID,maxIndices);      fprintf(*slotFile,",0,0L,");      if (sd->shared)        {         theLocationInfo.theLong = sd->sharedValue.desc->bsaveIndex;         fprintf(*slotFile,"{ &%s%d_%u[%u],0,0,0,NULL } }",                           SlotPrefix(),imageID,                           theLocationInfo.theLocation.thePartition,                           theLocationInfo.theLocation.theOffset);        }      else        fprintf(*slotFile,"{ NULL,0,0,0,NULL } }");     }   *slotArrayCount += (int) theDefclass->slotCount;   *slotFile = CloseFileIfNeeded(theEnv,*slotFile,slotArrayCount,                                 slotArrayVersion,maxIndices,                                 reopenSlotFile,slotCodeFile);   return(TRUE);  }/*************************************************************  NAME         : TemplateSlotsToCode  DESCRIPTION  : Prints out instance template -                 the entire instance slot template                 for a particular class is                 guaranteed to be in the same                 array partition  INPUTS       : 1)  A buffer for the template file                 2)  The base image name                 3)  The id for this type of data                 4)  The base image id                 5)  The general header file                 6)  A buffer for the version number of                     the file for this type of data                 7)  The maximum # of elements in any array                 8)  A pointer to the class                 9)  A buffer holding the template partition #                 10) A buffer holding the template relative                     index in the partition                 11) A buffer for a flag indicating if the                     buffer file can be reopened later                 12) A pointer to the file info for                     this data if the last file needs                     to be reopened for termination  RETURNS      : TRUE if all OK, FALSE                 otherwise  SIDE EFFECTS : Templates written  NOTES        : None *************************************************************/static intBool TemplateSlotsToCode(  void *theEnv,  FILE **templateSlotFile,  char *fileName,  int fileID,  int imageID,  FILE *headerFP,  int *fileCount,  int maxIndices,  DEFCLASS *theDefclass,  int *templateSlotArrayVersion,  int *templateSlotArrayCount,  int *reopenTemplateSlotFile,  struct CodeGeneratorFile *templateSlotCodeFile)  {   long i;   SLOT_DESC *sd;   PACKED_LOCATION_INFO theLocationInfo;   if (theDefclass->instanceSlotCount == 0)     return(TRUE);   *templateSlotFile = OpenFileIfNeeded(theEnv,*templateSlotFile,fileName,fileID,                                        imageID,fileCount,                                        *templateSlotArrayVersion,headerFP,                                        "SLOT_DESC *",TemplateSlotPrefix(),                                        *reopenTemplateSlotFile,templateSlotCodeFile);   if (*templateSlotFile == NULL)     return(FALSE);   for (i = 0 ; i < theDefclass->instanceSlotCount ; i++)     {      sd = theDefclass->instanceTemplate[i];      if (i > 0)        fprintf(*templateSlotFile,",");      theLocationInfo.theLong = sd->bsaveIndex;      fprintf(*templateSlotFile,"&%s%d_%u[%u]",                                SlotPrefix(),imageID,                                theLocationInfo.theLocation.thePartition,                                theLocationInfo.theLocation.theOffset);     }   *templateSlotArrayCount += (int) theDefclass->instanceSlotCount;   *templateSlotFile = CloseFileIfNeeded(theEnv,*templateSlotFile,templateSlotArrayCount,                                         templateSlotArrayVersion,maxIndices,                                         reopenTemplateSlotFile,templateSlotCodeFile);   return(TRUE);  }/*************************************************************  NAME         : OrderedSlotsToCode  DESCRIPTION  : Prints out slot name map -                 the entire slot name map                 for a particular class is                 guaranteed to be in the same                 array partition  INPUTS       : 1)  A buffer for the slot map file                 2)  The base image name                 3)  The id for this type of data                 4)  The base image id                 5)  The general header file                 6)  A buffer for the version number of                     the file for this type of data                 7)  The maximum # of elements in any array                 8)  A pointer to the class                 9)  A buffer holding the slot map partition #                 10) A buffer holding the slot map relative                     index in the partition                 11) A buffer for a flag indicating if the                     buffer file can be reopened later                 12) A pointer to the file info for                     this data if the last file needs                     to be reopened for termination  RETURNS      : TRUE if all OK, FALSE                 otherwise  SIDE EFFECTS : Slot maps written  NOTES        : None *************************************************************/static intBool OrderedSlotsToCode(  void *theEnv,  FILE **orderedSlotFile,  char *fileName,  int fileID,  int imageID,  FILE *headerFP,  int *fileCount,  int maxIndices,  DEFCLASS *theDefclass,  int *orderedSlotArrayVersion,  int *orderedSlotArrayCount,  int *reopenOrderedSlotFile,  struct CodeGeneratorFile *orderedSlotCodeFile)  {   long i;   if (theDefclass->instanceSlotCount == 0)     return(TRUE);   *orderedSlotFile = OpenFileIfNeeded(theEnv,*orderedSlotFile,fileName,fileID,                                        imageID,fileCount,                                        *orderedSlotArrayVersion,headerFP,                                        "unsigned",OrderedSlotPrefix(),                                        *reopenOrderedSlotFile,orderedSlotCodeFile);   if (*orderedSlotFile == NULL)     return(FALSE);   for (i = 0 ; i <= theDefclass->maxSlotNameID ; i++)     {      if (i > 0)        fprintf(*orderedSlotFile,",");      fprintf(*orderedSlotFile,"%u",theDefclass->slotNameMap[i]);     }   *orderedSlotArrayCount += (int) theDefclass->maxSlotNameID + 1;   *orderedSlotFile = CloseFileIfNeeded(theEnv,*orderedSlotFile,orderedSlotArrayCount,                                        orderedSlotArrayVersion,maxIndices,                                        reopenOrderedSlotFile,orderedSlotCodeFile);   return(TRUE);  }/*************************************************************  NAME         : HandlersToCode  DESCRIPTION  : Prints out message-handlers -                 all message-handlers for a particular class                 are guaranteed to be in the same array                 partition  INPUTS       : 1)  A buffer for the handler file                 2)  The base image name                 3)  The id for this type of data                 4)  The base image id                 5)  The general header file                 6)  A buffer for the version number of                     the file for this type of data                 7)  The maximum # of elements in any array                 8)  A pointer to the class                 9)  A buffer holding the handler partition #                 10) A buffer holding the handler relative                     index in the partition                 11) A buffer for a flag indicating if the                     buffer file can be reopened later                 12) A pointer to the file info for                     this data if the last file needs                     to be reopened for termination  RETURNS      : TRUE if all OK, FALSE                 otherwise  SIDE EFFECTS : Handlers written  NOTES        : None *************************************************************/static intBool HandlersToCode(  void *theEnv,  FILE **handlerFile,  char *fileName,  int fileID,  int imageID,  FILE *headerFP,  int *fileCount,  int maxIndices,  DEFCLASS *theDefclass,  int *handlerArrayVersion,  int *handlerArrayCount,  int *reopenHandlerFile,  struct CodeGeneratorFile *handlerCodeFile)  {   long i;   HANDLER *hnd;   if (theDefclass->handlerCount == 0)     return(TRUE);   *handlerFile = OpenFileIfNeeded(theEnv,*handlerFile,fileName,fileID,                                        imageID,fileCount,                                        *handlerArrayVersion,headerFP,                                        "HANDLER",HandlerPrefix(),*reopenHandlerFile,                                        handlerCodeFile);   if (*handlerFile == NULL)     return(FALSE);   for (i = 0 ; i < theDefclass->handlerCount ; i++)     {      if (i > 0)        fprintf(*handlerFile,",\n");      hnd = &theDefclass->handlers[i];      fprintf(*handlerFile,"{ %u,%u,0,0,0,",hnd->system,hnd->type);      PrintSymbolReference(theEnv,*handlerFile,hnd->name);      fprintf(*handlerFile,",");      PrintClassReference(theEnv,*handlerFile,hnd->cls,imageID,maxIndices);      fprintf(*handlerFile,",%hd,%hd,%hd,",hnd->minParams,hnd->maxParams,                                        hnd->localVarCount);      ExpressionToCode(theEnv,*handlerFile,hnd->actions);      fprintf(*handlerFile,",NULL }");     }   *handlerArrayCount += (int) theDefclass->handlerCount;   *handlerFile = CloseFileIfNeeded(theEnv,*handlerFile,handlerArrayCount,                                    handlerArrayVersion,maxIndices,                                    reopenHandlerFile,handlerCodeFile);   return(TRUE);  }/****************************************************************  NAME         : OrderedHandlersToCode  DESCRIPTION  : Prints out handler map -                 the entire handler map                 for a particular class is                 guaranteed to be in the same                 array partition  INPUTS       : 1)  A buffer for the handler map file                 2)  The base image name                 3)  The id for this type of data                 4)  The base image id                 5)  The general header file                 6)  A buffer for the version number of                     the file for this type of data                 7)  The maximum # of elements in any array                 8)  A pointer to the class                 9)  A buffer holding the handler map partition #                 10) A buffer holding the handler map relative                     index in the partition                 11) A buffer for a flag indicating if the                     buffer file can be reopened later                 12) A pointer to the file info for                     this data if the last file needs                     to be reopened for termination  RETURNS      : TRUE if all OK, FALSE                 otherwise  SIDE EFFECTS : Handler maps written  NOTES        : None ****************************************************************/static intBool OrderedHandlersToCode(  void *theEnv,  FILE **orderedHandlerFile,  char *fileName,  int fileID,  int imageID,  FILE *headerFP,  int *fileCount,  int maxIndices,  DEFCLASS *theDefclass,  int *orderedHandlerArrayVersion,  int *orderedHandlerArrayCount,  int *reopenOrderedHandlerFile,  struct CodeGeneratorFile *orderedHandlerCodeFile)  {   long i;   if (theDefclass->handlerCount == 0)     return(TRUE);   *orderedHandlerFile = OpenFileIfNeeded(theEnv,*orderedHandlerFile,fileName,fileID,                                          imageID,fileCount,                                          *orderedHandlerArrayVersion,headerFP,                                          "unsigned",OrderedHandlerPrefix(),                                          *reopenOrderedHandlerFile,                                          orderedHandlerCodeFile);   if (*orderedHandlerFile == NULL)     return(FALSE);   for (i = 0 ; i < theDefclass->handlerCount ; i++)     {      if (i > 0)        fprintf(*orderedHandlerFile,",");      fprintf(*orderedHandlerFile,"%u",theDefclass->handlerOrderMap[i]);     }   *orderedHandlerArrayCount += (int) theDefclass->handlerCount;   *orderedHandlerFile = CloseFileIfNeeded(theEnv,*orderedHandlerFile,orderedHandlerArrayCount,                                           orderedHandlerArrayVersion,maxIndices,                                           reopenOrderedHandlerFile,                                           orderedHandlerCodeFile);   return(TRUE);  }#endif

⌨️ 快捷键说明

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