23   : mObjectSet(pObjectSet)
    45     std::queue<boost::shared_ptr<TreeNode> > nodesToVisit;
    46     nodesToVisit.push(
f());
    48     while(nodesToVisit.size() > 0)
    53         if (!(node->mIsReference))  
    57             if(node->mObjectSet->objects[0]->type.compare(pType) == 0)
    65                     nodesToVisit.push(child);
    69                 nodesToVisit.push(node->mParent);
    76       newRoot->mParent->reassignNewParentNode(newRoot);
    80     std::vector<boost::shared_ptr<TreeNode>> reversedReferences = newRoot->updateReferences(newRoot);
   102     pChild->mParent = 
f();
   108     unsigned int result = 1;
   111       result += child->getNumberOfNodes();
   118     return shared_from_this();
   124     for(
unsigned int i = 0; i < pSpace; i++)
   129     unsigned int referencing = 
mID;
   131     std::cout << 
mObjectSet->objects[0]->type << 
"(" << 
mChildren.size() << 
"/" << 
mObjectSet->objects.size() << 
")" << 
" ID " << 
mID << 
" -> " << referencing << std::endl;
   136             node->printTreeToConsole(pSpace + 1);
   142       mParent->reassignNewParentNode(
f());
   146     pParent->mChildren.push_back(
f());
   149     for(
unsigned int i = 0; i < 
mChildren.size(); i++)
   159     std::vector<boost::shared_ptr<TreeNode>> reversedReferences = 
updateReferences(
f());
   184     std::vector<boost::shared_ptr<TreeNode>> reversedReferences;
   185     std::vector<boost::shared_ptr<TreeNode>> toDelete;
   186     if (
mIsReference) 
return std::vector<boost::shared_ptr<TreeNode>>();    
   189         if (child->mIsReference)
   191             if (child->mReferenceTo == pRoot)
   195                 reversedReference->mIsReference = 
true;
   197                 reversedReference->mChildren = std::vector<boost::shared_ptr<TreeNode>>();
   198                 reversedReferences.push_back(reversedReference);
   199                 toDelete.push_back(child);
   204             std::vector<boost::shared_ptr<TreeNode>> childReversedReferences = child->updateReferences(pRoot);
   205             for (
boost::shared_ptr<TreeNode> childReversedReference: childReversedReferences) reversedReferences.push_back(childReversedReference);
   210         for(
unsigned int i = 0; i < mChildren.size(); i++)
   212             if(mChildren[i] == childToDelete)
   214                 mChildren.erase(mChildren.begin() + i);
   219     return reversedReferences;
 boost::shared_ptr< TreeNode > setNewRootNodeByType(std::string pType)
boost::shared_ptr< ISM::ObjectSet > getObjectSet()
std::vector< boost::shared_ptr< TreeNode > > getChildren()
boost::shared_ptr< TreeNode > f()
TreeNode(boost::shared_ptr< ISM::ObjectSet > pObjectSet)
boost::shared_ptr< ISM::ObjectSet > mObjectSet
void printTreeToConsole(unsigned int space)
unsigned int getNumberOfNodes()
std::vector< boost::shared_ptr< TreeNode > > updateReferences(boost::shared_ptr< TreeNode > pRoot)
void updateIDs(unsigned int &pID, bool pUpdateReferencIDs)
boost::shared_ptr< TreeNode > mReferenceTo
void addChild(boost::shared_ptr< TreeNode > pChild)
std::vector< boost::shared_ptr< TreeNode > > mChildren
void reassignNewParentNode(boost::shared_ptr< TreeNode > pParent)
boost::shared_ptr< TreeNode > mParent