globle void ValueDeinstall( void *theEnv, DATA_OBJECT *vPtr) { if (vPtr->type == MULTIFIELD) MultifieldDeinstall(theEnv,(struct multifield *) vPtr->value); else AtomDeinstall(theEnv,vPtr->type,vPtr->value); }
globle void ExpressionDeinstall( struct expr *expression) { if (expression == NULL) return; while (expression != NULL) { AtomDeinstall(expression->type,expression->value); ExpressionDeinstall(expression->argList); expression = expression->nextArg; } }
globle void MultifieldDeinstall( struct multifield *theSegment) { long length, i; /* 6.04 Bug Fix */ struct field *theFields; if (theSegment == NULL) return; length = theSegment->multifieldLength; theSegment->busyCount--; theFields = theSegment->theFields; for (i = 0 ; i < length ; i++) { AtomDeinstall(theFields[i].type,theFields[i].value); } }
globle void DecrementFactBasisCount( void *vFactPtr) { struct fact *factPtr = (struct fact *) vFactPtr; struct multifield *theSegment; int i; DecrementFactCount(factPtr); theSegment = &factPtr->theProposition; for (i = 0 ; i < (int) theSegment->multifieldLength ; i++) { AtomDeinstall(theSegment->theFields[i].type,theSegment->theFields[i].value); } }
globle void MultifieldDeinstall( void *theEnv, struct multifield *theSegment) { unsigned long length, i; struct field *theFields; if (theSegment == NULL) return; length = theSegment->multifieldLength; theSegment->busyCount--; theFields = theSegment->theFields; for (i = 0 ; i < length ; i++) { AtomDeinstall(theEnv,theFields[i].type,theFields[i].value); } }
globle void FactDeinstall( struct fact *newFact) { struct multifield *theSegment; int i; NumberOfFacts--; theSegment = &newFact->theProposition; newFact->whichDeftemplate->busyCount--; for (i = 0 ; i < (int) theSegment->multifieldLength ; i++) { AtomDeinstall(theSegment->theFields[i].type,theSegment->theFields[i].value); } newFact->factHeader.busyCount--; }