X-Git-Url: https://ruin.nu/git/?p=germs.git;a=blobdiff_plain;f=src%2Fcomponenttree.cpp;h=9059b473b5464e0263963d85f844275155f2df29;hp=8390ed2557b35a41e63112c365b8999c73e9264d;hb=b0334271ff31ca880f1d481665284a6d3b057162;hpb=6ba92ada02bfbb04abb8a0c7a039ec63c7c9921e diff --git a/src/componenttree.cpp b/src/componenttree.cpp index 8390ed2..9059b47 100644 --- a/src/componenttree.cpp +++ b/src/componenttree.cpp @@ -67,3 +67,20 @@ ComponentTree::ComponentTree(const std::vector& components) : _root(0 ComponentTree::~ComponentTree(){ } + +void ComponentTree::makeUnoriented(){ + removeOriented(&_root); +} + +void ComponentTree::removeOriented(Node* n){ + for (vector::iterator c = n->_children.begin(); + c != n->_children.end(); /*empty*/){ + removeOriented(*c); + if ((*c)->_children.size() == 0 && ((*c)->_comp.i2 == 0 || (*c)->_comp.sign == 0)){ + delete *c; + n->_children.erase(c); + }else{ + ++c; + } + } +}