diff options
Diffstat (limited to 'src/tmpltbin.c')
-rw-r--r-- | src/tmpltbin.c | 83 |
1 files changed, 45 insertions, 38 deletions
diff --git a/src/tmpltbin.c b/src/tmpltbin.c index 8656c92..41cc875 100644 --- a/src/tmpltbin.c +++ b/src/tmpltbin.c @@ -1,7 +1,7 @@ /*******************************************************/ /* "C" Language Integrated Production System */ /* */ - /* CLIPS Version 6.21 06/15/03 */ + /* CLIPS Version 6.30 08/16/14 */ /* */ /* DEFTEMPLATE BSAVE/BLOAD MODULE */ /*******************************************************/ @@ -14,12 +14,17 @@ /* Gary D. Riley */ /* */ /* Contributing Programmer(s): */ -/* Brian L. Donnell */ +/* Brian L. Dantes */ /* */ /* Revision History: */ +/* */ /* 6.23: Added support for templates maintaining their */ /* own list of facts. */ /* */ +/* 6.30: Changed integer type/precision. */ +/* */ +/* Support for deftemplate slot facets. */ +/* */ /*************************************************************/ #define _TMPLTBIN_SOURCE_ @@ -81,7 +86,7 @@ globle void DeftemplateBinarySetup( ClearBload); #endif } - + /***********************************************************/ /* DeallocateDeftemplateBloadData: Deallocates environment */ /* data for the deftemplate bsave functionality. */ @@ -89,16 +94,16 @@ globle void DeftemplateBinarySetup( static void DeallocateDeftemplateBloadData( void *theEnv) { - unsigned long space; + size_t space; space = DeftemplateBinaryData(theEnv)->NumberOfTemplateModules * sizeof(struct deftemplateModule); - if (space != 0) genlongfree(theEnv,(void *) DeftemplateBinaryData(theEnv)->ModuleArray,space); - + if (space != 0) genfree(theEnv,(void *) DeftemplateBinaryData(theEnv)->ModuleArray,space); + space = DeftemplateBinaryData(theEnv)->NumberOfDeftemplates * sizeof(struct deftemplate); - if (space != 0) genlongfree(theEnv,(void *) DeftemplateBinaryData(theEnv)->DeftemplateArray,space); + if (space != 0) genfree(theEnv,(void *) DeftemplateBinaryData(theEnv)->DeftemplateArray,space); space = DeftemplateBinaryData(theEnv)->NumberOfTemplateSlots * sizeof(struct templateSlot); - if (space != 0) genlongfree(theEnv,(void *) DeftemplateBinaryData(theEnv)->SlotArray,space); + if (space != 0) genfree(theEnv,(void *) DeftemplateBinaryData(theEnv)->SlotArray,space); } #if BLOAD_AND_BSAVE @@ -191,7 +196,7 @@ static void BsaveStorage( void *theEnv, FILE *fp) { - unsigned long space; + size_t space; /*========================================================================*/ /* Three data structures are saved as part of a deftemplate binary image: */ @@ -202,10 +207,10 @@ static void BsaveStorage( /*========================================================================*/ space = sizeof(long) * 3; - GenWrite(&space,(unsigned long) sizeof(long int),fp); - GenWrite(&DeftemplateBinaryData(theEnv)->NumberOfDeftemplates,(unsigned long) sizeof(long int),fp); - GenWrite(&DeftemplateBinaryData(theEnv)->NumberOfTemplateSlots,(unsigned long) sizeof(long int),fp); - GenWrite(&DeftemplateBinaryData(theEnv)->NumberOfTemplateModules,(unsigned long) sizeof(long int),fp); + GenWrite(&space,sizeof(size_t),fp); + GenWrite(&DeftemplateBinaryData(theEnv)->NumberOfDeftemplates,sizeof(long int),fp); + GenWrite(&DeftemplateBinaryData(theEnv)->NumberOfTemplateSlots,sizeof(long int),fp); + GenWrite(&DeftemplateBinaryData(theEnv)->NumberOfTemplateModules,sizeof(long int),fp); } /***********************************************/ @@ -216,7 +221,7 @@ static void BsaveBinaryItem( void *theEnv, FILE *fp) { - unsigned long space; + size_t space; struct deftemplate *theDeftemplate; struct bsaveDeftemplate tempDeftemplate; struct templateSlot *theSlot; @@ -234,7 +239,7 @@ static void BsaveBinaryItem( space = (DeftemplateBinaryData(theEnv)->NumberOfDeftemplates * sizeof(struct bsaveDeftemplate)) + (DeftemplateBinaryData(theEnv)->NumberOfTemplateSlots * sizeof(struct bsaveTemplateSlot)) + (DeftemplateBinaryData(theEnv)->NumberOfTemplateModules * sizeof(struct bsaveDeftemplateModule)); - GenWrite(&space,(unsigned long) sizeof(unsigned long int),fp); + GenWrite(&space,sizeof(size_t),fp); /*===================================================*/ /* Write out each deftemplate module data structure. */ @@ -251,7 +256,7 @@ static void BsaveBinaryItem( GetModuleItem(theEnv,NULL,FindModuleItem(theEnv,"deftemplate")->moduleIndex); AssignBsaveDefmdlItemHdrVals(&tempTemplateModule.header, &theModuleItem->header); - GenWrite(&tempTemplateModule,(unsigned long) sizeof(struct bsaveDeftemplateModule),fp); + GenWrite(&tempTemplateModule,sizeof(struct bsaveDeftemplateModule),fp); } /*============================================*/ @@ -279,7 +284,7 @@ static void BsaveBinaryItem( { tempDeftemplate.slotList = DeftemplateBinaryData(theEnv)->NumberOfTemplateSlots; } else tempDeftemplate.slotList = -1L; - GenWrite(&tempDeftemplate,(unsigned long) sizeof(struct bsaveDeftemplate),fp); + GenWrite(&tempDeftemplate,sizeof(struct bsaveDeftemplate),fp); DeftemplateBinaryData(theEnv)->NumberOfTemplateSlots += theDeftemplate->numberOfSlots; } @@ -310,11 +315,12 @@ static void BsaveBinaryItem( tempTemplateSlot.defaultPresent = theSlot->defaultPresent; tempTemplateSlot.defaultDynamic = theSlot->defaultDynamic; tempTemplateSlot.defaultList = HashedExpressionIndex(theEnv,theSlot->defaultList); + tempTemplateSlot.facetList = HashedExpressionIndex(theEnv,theSlot->facetList); if (theSlot->next != NULL) tempTemplateSlot.next = 0L; else tempTemplateSlot.next = -1L; - GenWrite(&tempTemplateSlot,(unsigned long) sizeof(struct bsaveTemplateSlot),fp); + GenWrite(&tempTemplateSlot,sizeof(struct bsaveTemplateSlot),fp); } } } @@ -341,17 +347,17 @@ static void BsaveBinaryItem( static void BloadStorage( void *theEnv) { - unsigned long int space; + size_t space; /*=========================================================*/ /* Determine the number of deftemplate, deftemplateModule, */ /* and templateSlot data structures to be read. */ /*=========================================================*/ - GenReadBinary(theEnv,&space,(unsigned long) sizeof(unsigned long int)); - GenReadBinary(theEnv,&DeftemplateBinaryData(theEnv)->NumberOfDeftemplates,(unsigned long) sizeof(long int)); - GenReadBinary(theEnv,&DeftemplateBinaryData(theEnv)->NumberOfTemplateSlots,(unsigned long) sizeof(long int)); - GenReadBinary(theEnv,&DeftemplateBinaryData(theEnv)->NumberOfTemplateModules,(unsigned long) sizeof(long int)); + GenReadBinary(theEnv,&space,sizeof(size_t)); + GenReadBinary(theEnv,&DeftemplateBinaryData(theEnv)->NumberOfDeftemplates,sizeof(long int)); + GenReadBinary(theEnv,&DeftemplateBinaryData(theEnv)->NumberOfTemplateSlots,sizeof(long int)); + GenReadBinary(theEnv,&DeftemplateBinaryData(theEnv)->NumberOfTemplateModules,sizeof(long int)); /*====================================*/ /* Allocate the space needed for the */ @@ -367,7 +373,7 @@ static void BloadStorage( } space = DeftemplateBinaryData(theEnv)->NumberOfTemplateModules * sizeof(struct deftemplateModule); - DeftemplateBinaryData(theEnv)->ModuleArray = (struct deftemplateModule *) genlongalloc(theEnv,space); + DeftemplateBinaryData(theEnv)->ModuleArray = (struct deftemplateModule *) genalloc(theEnv,space); /*===================================*/ /* Allocate the space needed for the */ @@ -382,7 +388,7 @@ static void BloadStorage( } space = DeftemplateBinaryData(theEnv)->NumberOfDeftemplates * sizeof(struct deftemplate); - DeftemplateBinaryData(theEnv)->DeftemplateArray = (struct deftemplate *) genlongalloc(theEnv,space); + DeftemplateBinaryData(theEnv)->DeftemplateArray = (struct deftemplate *) genalloc(theEnv,space); /*===================================*/ /* Allocate the space needed for the */ @@ -396,7 +402,7 @@ static void BloadStorage( } space = DeftemplateBinaryData(theEnv)->NumberOfTemplateSlots * sizeof(struct templateSlot); - DeftemplateBinaryData(theEnv)->SlotArray = (struct templateSlot *) genlongalloc(theEnv,space); + DeftemplateBinaryData(theEnv)->SlotArray = (struct templateSlot *) genalloc(theEnv,space); } /********************************************************/ @@ -406,7 +412,7 @@ static void BloadStorage( static void BloadBinaryItem( void *theEnv) { - unsigned long int space; + size_t space; /*======================================================*/ /* Read in the amount of space used by the binary image */ @@ -414,14 +420,14 @@ static void BloadBinaryItem( /* is not available in the version being run). */ /*======================================================*/ - GenReadBinary(theEnv,&space,(unsigned long) sizeof(unsigned long int)); + GenReadBinary(theEnv,&space,sizeof(size_t)); /*===============================================*/ /* Read in the deftemplateModule data structures */ /* and refresh the pointers. */ /*===============================================*/ - BloadandRefresh(theEnv,DeftemplateBinaryData(theEnv)->NumberOfTemplateModules,(unsigned) sizeof(struct bsaveDeftemplateModule), + BloadandRefresh(theEnv,DeftemplateBinaryData(theEnv)->NumberOfTemplateModules,sizeof(struct bsaveDeftemplateModule), UpdateDeftemplateModule); /*===============================================*/ @@ -429,7 +435,7 @@ static void BloadBinaryItem( /* and refresh the pointers. */ /*===============================================*/ - BloadandRefresh(theEnv,DeftemplateBinaryData(theEnv)->NumberOfDeftemplates,(unsigned) sizeof(struct bsaveDeftemplate), + BloadandRefresh(theEnv,DeftemplateBinaryData(theEnv)->NumberOfDeftemplates,sizeof(struct bsaveDeftemplate), UpdateDeftemplate); /*==========================================*/ @@ -437,7 +443,7 @@ static void BloadBinaryItem( /* and refresh the pointers. */ /*==========================================*/ - BloadandRefresh(theEnv,DeftemplateBinaryData(theEnv)->NumberOfTemplateSlots,(unsigned) sizeof(struct bsaveTemplateSlot), + BloadandRefresh(theEnv,DeftemplateBinaryData(theEnv)->NumberOfTemplateSlots,sizeof(struct bsaveTemplateSlot), UpdateDeftemplateSlot); } @@ -515,6 +521,7 @@ static void UpdateDeftemplateSlot( theSlot->slotName = SymbolPointer(btsPtr->slotName); IncrementSymbolCount(theSlot->slotName); theSlot->defaultList = HashedExpressionPointer(btsPtr->defaultList); + theSlot->facetList = HashedExpressionPointer(btsPtr->facetList); theSlot->constraints = ConstraintPointer(btsPtr->constraints); theSlot->multislot = btsPtr->multislot; @@ -535,7 +542,7 @@ static void UpdateDeftemplateSlot( static void ClearBload( void *theEnv) { - unsigned long int space; + size_t space; int i; /*=============================================*/ @@ -559,25 +566,25 @@ static void ClearBload( /*======================================================================*/ space = DeftemplateBinaryData(theEnv)->NumberOfTemplateModules * sizeof(struct deftemplateModule); - if (space != 0) genlongfree(theEnv,(void *) DeftemplateBinaryData(theEnv)->ModuleArray,space); + if (space != 0) genfree(theEnv,(void *) DeftemplateBinaryData(theEnv)->ModuleArray,space); DeftemplateBinaryData(theEnv)->NumberOfTemplateModules = 0; - + /*================================================================*/ /* Deallocate the space used for the deftemplate data structures. */ /*================================================================*/ space = DeftemplateBinaryData(theEnv)->NumberOfDeftemplates * sizeof(struct deftemplate); - if (space != 0) genlongfree(theEnv,(void *) DeftemplateBinaryData(theEnv)->DeftemplateArray,space); + if (space != 0) genfree(theEnv,(void *) DeftemplateBinaryData(theEnv)->DeftemplateArray,space); DeftemplateBinaryData(theEnv)->NumberOfDeftemplates = 0; - + /*=================================================================*/ /* Deallocate the space used for the templateSlot data structures. */ /*=================================================================*/ space = DeftemplateBinaryData(theEnv)->NumberOfTemplateSlots * sizeof(struct templateSlot); - if (space != 0) genlongfree(theEnv,(void *) DeftemplateBinaryData(theEnv)->SlotArray,space); + if (space != 0) genfree(theEnv,(void *) DeftemplateBinaryData(theEnv)->SlotArray,space); DeftemplateBinaryData(theEnv)->NumberOfTemplateSlots = 0; - + /*======================================*/ /* Create the initial-fact deftemplate. */ /*======================================*/ |