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

📄 dfinsbin.c

📁 clips源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
  NAME         : BsaveStorageDefinstances  DESCRIPTION  : Writes out number of each type of structure                   required for definstances                 Space required for counts (unsigned long)  INPUTS       : File pointer of binary file  RETURNS      : Nothing useful  SIDE EFFECTS : Binary file adjusted  NOTES        : None ***********************************************************/static void BsaveStorageDefinstances(  void *theEnv,  FILE *fp)  {   size_t space;   space = sizeof(unsigned long) * 2;   GenWrite((void *) &space,sizeof(size_t),fp);   GenWrite((void *) &DefinstancesBinaryData(theEnv)->ModuleCount,sizeof(unsigned long),fp);   GenWrite((void *) &DefinstancesBinaryData(theEnv)->DefinstancesCount,sizeof(unsigned long),fp);  }/*************************************************************************************  NAME         : BsaveDefinstancesDriver  DESCRIPTION  : Writes out definstances in binary format                 Space required (unsigned long)                 All definstances (sizeof(DEFINSTANCES) * Number of definstances)  INPUTS       : File pointer of binary file  RETURNS      : Nothing useful  SIDE EFFECTS : Binary file adjusted  NOTES        : None *************************************************************************************/static void BsaveDefinstancesDriver(  void *theEnv,  FILE *fp)  {   size_t space;   struct defmodule *theModule;   DEFINSTANCES_MODULE *theModuleItem;   BSAVE_DEFINSTANCES_MODULE dummy_mitem;   space = ((sizeof(BSAVE_DEFINSTANCES_MODULE) * DefinstancesBinaryData(theEnv)->ModuleCount) +            (sizeof(BSAVE_DEFINSTANCES) * DefinstancesBinaryData(theEnv)->DefinstancesCount));   GenWrite((void *) &space,sizeof(size_t),fp);   /* =================================      Write out each definstances module      ================================= */   DefinstancesBinaryData(theEnv)->DefinstancesCount = 0L;   theModule = (struct defmodule *) EnvGetNextDefmodule(theEnv,NULL);   while (theModule != NULL)     {      theModuleItem = (DEFINSTANCES_MODULE *)                      GetModuleItem(theEnv,theModule,FindModuleItem(theEnv,"definstances")->moduleIndex);      AssignBsaveDefmdlItemHdrVals(&dummy_mitem.header,&theModuleItem->header);      GenWrite((void *) &dummy_mitem,sizeof(BSAVE_DEFINSTANCES_MODULE),fp);      theModule = (struct defmodule *) EnvGetNextDefmodule(theEnv,(void *) theModule);     }   /* ==========================      Write out each definstances      ========================== */   DoForAllConstructs(theEnv,BsaveDefinstances,DefinstancesData(theEnv)->DefinstancesModuleIndex,                      FALSE,(void *) fp);   RestoreBloadCount(theEnv,&DefinstancesBinaryData(theEnv)->ModuleCount);   RestoreBloadCount(theEnv,&DefinstancesBinaryData(theEnv)->DefinstancesCount);  }/***************************************************  NAME         : BsaveDefinstances  DESCRIPTION  : Bsaves a definstances  INPUTS       : 1) The definstances                 2) Output data file pointer  RETURNS      : Nothing useful  SIDE EFFECTS : Definstances saved  NOTES        : None ***************************************************/static void BsaveDefinstances(  void *theEnv,  struct constructHeader *theDefinstances,  void *userBuffer)  {   DEFINSTANCES *dptr = (DEFINSTANCES *) theDefinstances;   BSAVE_DEFINSTANCES dummy_df;   AssignBsaveConstructHeaderVals(&dummy_df.header,&dptr->header);  if (dptr->mkinstance != NULL)     {      dummy_df.mkinstance = ExpressionData(theEnv)->ExpressionCount;      ExpressionData(theEnv)->ExpressionCount += ExpressionSize(dptr->mkinstance);     }   else    dummy_df.mkinstance = -1L;   GenWrite((void *) &dummy_df,(unsigned long) sizeof(BSAVE_DEFINSTANCES),(FILE *) userBuffer);  }#endif/***********************************************************************  NAME         : BloadStorageDefinstances  DESCRIPTION  : This routine space required for definstances                   structures and allocates space for them  INPUTS       : Nothing  RETURNS      : Nothing useful  SIDE EFFECTS : Arrays allocated and set  NOTES        : This routine makes no attempt to reset any pointers                   within the structures ***********************************************************************/static void BloadStorageDefinstances(  void *theEnv)  {   size_t space;   GenReadBinary(theEnv,(void *) &space,sizeof(size_t));   if (space == 0L)     return;   GenReadBinary(theEnv,(void *) &DefinstancesBinaryData(theEnv)->ModuleCount,sizeof(unsigned long));   GenReadBinary(theEnv,(void *) &DefinstancesBinaryData(theEnv)->DefinstancesCount,sizeof(unsigned long));   if (DefinstancesBinaryData(theEnv)->ModuleCount == 0L)     {      DefinstancesBinaryData(theEnv)->ModuleArray = NULL;      DefinstancesBinaryData(theEnv)->DefinstancesArray = NULL;      return;     }   space = (DefinstancesBinaryData(theEnv)->ModuleCount * sizeof(DEFINSTANCES_MODULE));   DefinstancesBinaryData(theEnv)->ModuleArray = (DEFINSTANCES_MODULE *) genalloc(theEnv,space);   if (DefinstancesBinaryData(theEnv)->DefinstancesCount == 0L)     {      DefinstancesBinaryData(theEnv)->DefinstancesArray = NULL;      return;     }   space = (DefinstancesBinaryData(theEnv)->DefinstancesCount * sizeof(DEFINSTANCES));   DefinstancesBinaryData(theEnv)->DefinstancesArray = (DEFINSTANCES *) genalloc(theEnv,space);  }/*********************************************************************  NAME         : BloadDefinstances  DESCRIPTION  : This routine reads definstances information from                   a binary file                 This routine moves through the definstances                   binary array updating pointers  INPUTS       : None  RETURNS      : Nothing useful  SIDE EFFECTS : Pointers reset from array indices  NOTES        : Assumes all loading is finished ********************************************************************/static void BloadDefinstances(  void *theEnv)  {   size_t space;   GenReadBinary(theEnv,(void *) &space,sizeof(size_t));   BloadandRefresh(theEnv,DefinstancesBinaryData(theEnv)->ModuleCount,sizeof(BSAVE_DEFINSTANCES_MODULE),UpdateDefinstancesModule);   BloadandRefresh(theEnv,DefinstancesBinaryData(theEnv)->DefinstancesCount,sizeof(BSAVE_DEFINSTANCES),UpdateDefinstances);  }/*******************************************************  NAME         : UpdateDefinstancesModule  DESCRIPTION  : Updates definstances module with binary                 load data - sets pointers from                 offset information  INPUTS       : 1) A pointer to the bloaded data                 2) The index of the binary array                    element to update  RETURNS      : Nothing useful  SIDE EFFECTS : Definstances moudle pointers updated  NOTES        : None *******************************************************/static void UpdateDefinstancesModule(  void *theEnv,  void *buf,  long obji)  {   BSAVE_DEFINSTANCES_MODULE *bdptr;   bdptr = (BSAVE_DEFINSTANCES_MODULE *) buf;   UpdateDefmoduleItemHeader(theEnv,&bdptr->header,&DefinstancesBinaryData(theEnv)->ModuleArray[obji].header,                             (int) sizeof(DEFINSTANCES),(void *) DefinstancesBinaryData(theEnv)->DefinstancesArray);  }/***************************************************  NAME         : UpdateDefinstances  DESCRIPTION  : Updates definstances with binary                 load data - sets pointers from                 offset information  INPUTS       : 1) A pointer to the bloaded data                 2) The index of the binary array                    element to update  RETURNS      : Nothing useful  SIDE EFFECTS : Definstances pointers upadted  NOTES        : None ***************************************************/static void UpdateDefinstances(  void *theEnv,  void *buf,  long obji)  {   BSAVE_DEFINSTANCES *bdptr;   DEFINSTANCES *dfiptr;   bdptr = (BSAVE_DEFINSTANCES *) buf;   dfiptr = (DEFINSTANCES *) &DefinstancesBinaryData(theEnv)->DefinstancesArray[obji];   UpdateConstructHeader(theEnv,&bdptr->header,&dfiptr->header,                         (int) sizeof(DEFINSTANCES_MODULE),(void *) DefinstancesBinaryData(theEnv)->ModuleArray,                         (int) sizeof(DEFINSTANCES),(void *) DefinstancesBinaryData(theEnv)->DefinstancesArray);   dfiptr->mkinstance = ExpressionPointer(bdptr->mkinstance);   dfiptr->busy = 0;  }/***************************************************************  NAME         : ClearDefinstancesBload  DESCRIPTION  : Release all binary-loaded definstances                   structure arrays                 Resets definstances list to NULL  INPUTS       : None  RETURNS      : Nothing useful  SIDE EFFECTS : Memory cleared  NOTES        : Definstances name symbol counts decremented ***************************************************************/static void ClearDefinstancesBload(  void *theEnv)  {   register long i;   size_t space;   space = (sizeof(DEFINSTANCES_MODULE) * DefinstancesBinaryData(theEnv)->ModuleCount);   if (space == 0L)     return;   genfree(theEnv,(void *) DefinstancesBinaryData(theEnv)->ModuleArray,space);   DefinstancesBinaryData(theEnv)->ModuleArray = NULL;   DefinstancesBinaryData(theEnv)->ModuleCount = 0L;   for (i = 0L ; i < DefinstancesBinaryData(theEnv)->DefinstancesCount ; i++)     UnmarkConstructHeader(theEnv,&DefinstancesBinaryData(theEnv)->DefinstancesArray[i].header);   space = (sizeof(DEFINSTANCES) * DefinstancesBinaryData(theEnv)->DefinstancesCount);   if (space == 0L)     return;   genfree(theEnv,(void *) DefinstancesBinaryData(theEnv)->DefinstancesArray,space);   DefinstancesBinaryData(theEnv)->DefinstancesArray = NULL;   DefinstancesBinaryData(theEnv)->DefinstancesCount = 0L;  }#endif

⌨️ 快捷键说明

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