summaryrefslogtreecommitdiff
path: root/src/tmpltbin.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/tmpltbin.c')
-rw-r--r--src/tmpltbin.c83
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. */
/*======================================*/