]> ruin.nu Git - germs.git/blobdiff - src/componenttree.h
Added more doxygen documentation
[germs.git] / src / componenttree.h
index 212b4d8edc0a03fee77b4c9143adced17cbb8cec..84d6270218101fbde5c71c01468837d577dae18d 100644 (file)
 #define __COMPONENTTREE_H__
 
 #include <vector>
+#include <map>
 #include "misc.h"
 
+/**
+ * Creates and holds a component tree.
+ */
 class ComponentTree {
        public:
+               /**
+                * A node in the component tree.
+                */
                struct Node {
                        Node(Node* parent, Component comp);
                        ~Node();
@@ -48,14 +55,29 @@ class ComponentTree {
                 */
                void makeUnoriented();
 
+               /**
+                * Count the number of leaves in the component tree.
+                * This is the number of hurdles, if makeUnoriented has been called.
+                */
+               size_t countLeaves();
+
+               /**
+                * Number of short branches.
+                * If makeUnoriented has been called and countLeaves is >= 3
+                * then we have a super hurdle if short branches = 0.
+                */
+               size_t shortBranches();
+
        private:
                //Disable these, at least for now.
                void operator=(const ComponentTree&){};
-               ComponentTree(const ComponentTree&): _root(0,Component()){};
+               ComponentTree(const ComponentTree&): _root(0){};
 
                void removeOriented(Node* n);
+               size_t countLeaves(Node* n);
+               void branches (Node* n, std::map<Node*,size_t> & b);
 
-               Node _root;
+               Node* _root;
 
        friend class ComponentTreeTest;
 };