void MetaDboBase::checkNotOrphaned() { if(isOrphaned()) { throw Exception("using orphaned wtdbo ptr"); } }
void PropertyStorage::markNotOrphaned(LocationProperty inNode) { if (isOrphaned(inNode)) { mAllOrphanedProperties.erase(inNode); mNonrootOrphanedProperties.erase(inNode); mNonrootNonmutableOrphanedProperties.erase(inNode); } }
void PropertyStorage::markOrphaned(LocationProperty inNode) { if (!isOrphaned(inNode)) { mAllOrphanedProperties.insert(inNode); if (mNodeRoots.find(inNode) == mNodeRoots.end()) { mNonrootOrphanedProperties.insert(inNode); if (inNode.attributeType() != attrMutable) mNonrootNonmutableOrphanedProperties.insert(inNode); } } }
void PropertyStorage::deleteOrphan(LocationProperty inNode) { lassert(isOrphaned(inNode)); markNotOrphaned(inNode); setDependencies(inNode, std::set<LocationProperty>()); mValues.erase(inNode); mNode_LazyCleanAndLevel.drop(inNode); mLocationProperties.drop(inNode.getLocation(), inNode.getPropertyID()); mClassPropertyLocations.drop(inNode.getLocation().getType()->getClassID(), inNode); }
void PropertyStorage::dropRootNode(LocationProperty inNode, WeakRootPtr inRootPtr) { mNodeRoots[inNode].erase(inRootPtr); if (mNodeRoots[inNode].size() == 0) { mNodeRoots.erase(inNode); if (isOrphaned(inNode)) { mNonrootOrphanedProperties.insert(inNode); if (inNode.attributeType() != attrMutable) mNonrootNonmutableOrphanedProperties.insert(inNode); } } }