FSM Library - C++ version
TreeNode.h
1 /*
2  * Copyright. GaĆ«l Dottel, Christoph Hilken, and Jan Peleska 2016 - 2021
3  *
4  * Licensed under the EUPL V.1.1
5  */
6 #ifndef FSM_TREES_TREENODE_H_
7 #define FSM_TREES_TREENODE_H_
8 
9 #include <algorithm>
10 #include <memory>
11 #include <vector>
12 
13 #include "trees/IOListContainer.h"
14 #include "trees/TreeEdge.h"
15 
16 class TreeNode : public std::enable_shared_from_this<TreeNode>
17 {
18 protected:
22  std::weak_ptr<TreeNode> parent;
23 
27  std::shared_ptr<std::vector<std::shared_ptr<TreeEdge>>> children;
28 
32  bool deleted;
33 
34  //TODO
35  void add(std::vector<int>::const_iterator lstIte, const std::vector<int>::const_iterator end);
36 public:
40  TreeNode();
41 
46  void setParent(const std::weak_ptr<TreeNode> parent);
47 
52  std::weak_ptr<TreeNode> getParent() const;
53 
61  void deleteNode();
62 
67  bool isDeleted() const;
68 
73  std::shared_ptr<std::vector<std::shared_ptr<TreeEdge>>> getChildren() const;
74 
79  void remove(const std::shared_ptr<TreeNode> node);
80 
85  void calcLeaves(std::vector<std::shared_ptr<TreeNode>>& leaves);
86 
91  void add(const std::shared_ptr<TreeEdge> edge);
92 
97  bool isLeaf() const;
98 
105  int getIO(const std::shared_ptr<TreeNode> node) const;
106 
112  std::shared_ptr<TreeEdge> hasEdge(const std::shared_ptr<TreeEdge> edge) const;
113 
118  std::vector<int> getPath();
119 
125  bool superTreeOf(const std::shared_ptr<TreeNode> otherNode) const;
126 
133  friend bool operator==(TreeNode const & treeNode1, TreeNode const & treeNode2);
134 
145  std::shared_ptr<TreeNode> add(const int x);
146 
153  void add(const IOListContainer & tcl);
154 
160  void addToThisNode(const IOListContainer & tcl);
161 
172  std::shared_ptr<TreeNode> after(std::vector<int>::const_iterator lstIte, const std::vector<int>::const_iterator end);
173 };
174 #endif //FSM_TREES_TREENODE_H_
bool isLeaf() const
Definition: TreeNode.cpp:95
std::shared_ptr< std::vector< std::shared_ptr< TreeEdge > > > getChildren() const
Definition: TreeNode.cpp:57
void calcLeaves(std::vector< std::shared_ptr< TreeNode >> &leaves)
Definition: TreeNode.cpp:74
Definition: TreeNode.h:16
bool isDeleted() const
Definition: TreeNode.cpp:52
std::shared_ptr< TreeEdge > hasEdge(const std::shared_ptr< TreeEdge > edge) const
Definition: TreeNode.cpp:112
Definition: IOListContainer.h:15
friend bool operator==(TreeNode const &treeNode1, TreeNode const &treeNode2)
Definition: TreeNode.cpp:175
std::weak_ptr< TreeNode > getParent() const
Definition: TreeNode.cpp:19
void addToThisNode(const IOListContainer &tcl)
Definition: TreeNode.cpp:282
void setParent(const std::weak_ptr< TreeNode > parent)
Definition: TreeNode.cpp:14
std::shared_ptr< std::vector< std::shared_ptr< TreeEdge > > > children
Definition: TreeNode.h:27
std::vector< int > getPath()
Definition: TreeNode.cpp:124
std::weak_ptr< TreeNode > parent
Definition: TreeNode.h:22
bool deleted
Definition: TreeNode.h:32
std::shared_ptr< TreeNode > after(std::vector< int >::const_iterator lstIte, const std::vector< int >::const_iterator end)
Definition: TreeNode.cpp:292
void deleteNode()
Definition: TreeNode.cpp:24
TreeNode()
Definition: TreeNode.cpp:8
bool superTreeOf(const std::shared_ptr< TreeNode > otherNode) const
Definition: TreeNode.cpp:141
int getIO(const std::shared_ptr< TreeNode > node) const
Definition: TreeNode.cpp:100