/**************************************************** NAME : BloadObjectPatterns DESCRIPTION : Reads in all object pattern data structures from binary image and updates pointers INPUTS : None RETURNS : Nothing useful SIDE EFFECTS : Binary data structures updated NOTES : Assumes storage allocated previously ****************************************************/ static void BloadObjectPatterns( void *theEnv, EXEC_STATUS) { size_t space; long i; GenReadBinary(theEnv,execStatus,(void *) &space,sizeof(size_t)); if (space == 0L) return; /* ================================================ Read in the alpha and intermediate pattern nodes ================================================ */ BloadandRefresh(theEnv,execStatus,ObjectReteBinaryData(theEnv,execStatus)->AlphaNodeCount,sizeof(BSAVE_OBJECT_ALPHA_NODE),UpdateAlpha); BloadandRefresh(theEnv,execStatus,ObjectReteBinaryData(theEnv,execStatus)->PatternNodeCount,sizeof(BSAVE_OBJECT_PATTERN_NODE),UpdatePattern); for (i = 0; i < ObjectReteBinaryData(theEnv,execStatus)->PatternNodeCount; i++) { if ((ObjectReteBinaryData(theEnv,execStatus)->PatternArray[i].lastLevel != NULL) && (ObjectReteBinaryData(theEnv,execStatus)->PatternArray[i].lastLevel->selector)) { AddHashedPatternNode(theEnv,execStatus,ObjectReteBinaryData(theEnv,execStatus)->PatternArray[i].lastLevel, &ObjectReteBinaryData(theEnv,execStatus)->PatternArray[i], ObjectReteBinaryData(theEnv,execStatus)->PatternArray[i].networkTest->type, ObjectReteBinaryData(theEnv,execStatus)->PatternArray[i].networkTest->value); } } /* ======================= Set the global pointers ======================= */ SetObjectNetworkTerminalPointer(theEnv,execStatus,(OBJECT_ALPHA_NODE *) &ObjectReteBinaryData(theEnv,execStatus)->AlphaArray[0]); SetObjectNetworkPointer(theEnv,execStatus,(OBJECT_PATTERN_NODE *) &ObjectReteBinaryData(theEnv,execStatus)->PatternArray[0]); }
static void BloadBinaryItem( void *theEnv, EXEC_STATUS) { size_t space; long i; /*======================================================*/ /* Read in the amount of space used by the binary image */ /* (this is used to skip the construct in the event it */ /* is not available in the version being run). */ /*======================================================*/ GenReadBinary(theEnv,execStatus,&space,sizeof(size_t)); /*=============================================*/ /* Read in the factPatternNode data structures */ /* and refresh the pointers. */ /*=============================================*/ BloadandRefresh(theEnv,execStatus,FactBinaryData(theEnv,execStatus)->NumberOfPatterns,(unsigned) sizeof(struct bsaveFactPatternNode), UpdateFactPatterns); for (i = 0; i < FactBinaryData(theEnv,execStatus)->NumberOfPatterns; i++) { if ((FactBinaryData(theEnv,execStatus)->FactPatternArray[i].lastLevel != NULL) && (FactBinaryData(theEnv,execStatus)->FactPatternArray[i].lastLevel->header.selector)) { AddHashedPatternNode(theEnv,execStatus,FactBinaryData(theEnv,execStatus)->FactPatternArray[i].lastLevel, &FactBinaryData(theEnv,execStatus)->FactPatternArray[i], FactBinaryData(theEnv,execStatus)->FactPatternArray[i].networkTest->type, FactBinaryData(theEnv,execStatus)->FactPatternArray[i].networkTest->value); } } }
static void SearchForHashedPatternNodes( void *theEnv, struct factPatternNode *theNode) { while (theNode != NULL) { if ((theNode->lastLevel != NULL) && (theNode->lastLevel->header.selector)) { AddHashedPatternNode(theEnv,theNode->lastLevel,theNode,theNode->networkTest->type,theNode->networkTest->value); } SearchForHashedPatternNodes(theEnv,theNode->nextLevel); theNode = theNode->rightNode; } }
static void SearchForHashedPatternNodes( void *theEnv, OBJECT_PATTERN_NODE *theNode) { while (theNode != NULL) { if ((theNode->lastLevel != NULL) && (theNode->lastLevel->selector)) { AddHashedPatternNode(theEnv,theNode->lastLevel,theNode,theNode->networkTest->type,theNode->networkTest->value); } SearchForHashedPatternNodes(theEnv,theNode->nextLevel); theNode = theNode->rightNode; } }