CPointer CObjects::TestGetFromMemory(OIndex oi) { CPointer pObject; pObject.AssignObject(GetFromMemory(oi)); return pObject; }
CPointer CObjects::TestGetFromMemory(char* szName) { CPointer pObject; pObject.AssignObject(GetFromMemory(szName)); return pObject; }
CPointer CObjects::Get(char* szObjectName) { CBaseObject* pvObject; CPointer pObject; pvObject = GetFromMemory(szObjectName); if (pvObject) { pObject.AssignObject(pvObject); return pObject; } pvObject = GetFromDatabase(szObjectName); if (pvObject) { pObject.AssignObject(pvObject); return pObject; } pvObject = GetFromSources(szObjectName); if (pvObject) { pObject.AssignObject(pvObject); return pObject; } return Null(); }
BOOL CObjects::Flush(BOOL bClearMemory, BOOL bClearCache) { SIndexesIterator sIter; OIndex oi; BOOL bResult; CBaseObject* pcBaseObject; if (mbDatabase) { bResult = TRUE; oi = StartMemoryIteration(&sIter); while (oi != INVALID_O_INDEX) { pcBaseObject = GetFromMemory(oi); bResult &= Save(pcBaseObject); oi = IterateMemory(&sIter); } if (bClearMemory) { bResult &= ClearMemory(); } bResult &= mcDatabase.Flush(bClearCache); return bResult; } else { bResult = ClearMemory(); return bResult; } }
void CObjects::ValidateSceneGraph(void) { CRoot* pcRoot; pcRoot = (CRoot*)GetFromMemory(ROOT_NAME); if (pcRoot != NULL) { RecurseValidateSceneGraph(pcRoot); } }
void Operation(string inst , Databus & DB , MemoryAR & MR ) { if (inst[ERD]=='1') { GetFromMemory(DB,MR); } if (inst[LWR]=='1') { PutIntoMemory(DB,MR); } return ; }
BOOL CObjects::ClearMemory(void) { SIndexesIterator sIter; OIndex oi; CBaseObject* pcBaseObject; CArrayBlockObjectPtr apcBaseObjects; int iCount; apcBaseObjects.Init(CLEAR_MEMORY_CHUNK_SIZE); oi = StartMemoryIteration(&sIter); iCount = 0; while (oi != INVALID_O_INDEX) { pcBaseObject = GetFromMemory(oi); apcBaseObjects.Add(&pcBaseObject); iCount++; if (iCount == CLEAR_MEMORY_CHUNK_SIZE) { KillDontFreeObjects(&apcBaseObjects); FreeObjects(&apcBaseObjects); iCount = 0; apcBaseObjects.ReInit(); } oi = IterateMemory(&sIter); } KillDontFreeObjects(&apcBaseObjects); FreeObjects(&apcBaseObjects); apcBaseObjects.Kill(); mcMemory.ReInit(); return TRUE; }
/// Free a block of memory returned by b2TrackedBlock::Allocate() void b2TrackedBlock::Free(void *memory) { Free(GetFromMemory(memory)); }