Helios++
Helios software for LiDAR simulations
BasicStaticGrove.h
1 #ifndef _BASIC_STATIC_GROVE_H_
2 #define _BASIC_STATIC_GROVE_H_
3 
4 #include <StaticGrove.h>
5 
6 #include <vector>
7 #include <memory>
8 
18 template <typename Tree>
19 class BasicStaticGrove : public StaticGrove<Tree> {
20 protected:
21  // *** ATTRIBUTES *** //
22  // ******************** //
26  std::vector<std::shared_ptr<Tree>> trees;
30  size_t whileIter;
31 
32 public:
33  // *** CONSTRUCTION / DESTRUCTION *** //
34  // ************************************ //
38  BasicStaticGrove() = default;
39  virtual ~BasicStaticGrove() = default;
40 
41  // *** QUERY METHODS *** //
42  // *********************** //
46  bool hasTrees() const override;
50  size_t getNumTrees() const override;
51 
52  // *** MANIPULATION METHODS *** //
53  // ****************************** //
57  void addTree(std::shared_ptr<Tree> tree) override;
61  void removeTree(size_t const index) override;
65  void removeTrees(size_t const startIndex, size_t const endIndex) override;
69  void removeAll() override;
70  void replaceTree(size_t const index, std::shared_ptr<Tree> tree) override;
71 
72  // *** FOR LOOP METHODS *** //
73  // ************************** //
77  Tree & getTreeReference(size_t const index) const override;
81  std::shared_ptr<Tree> getTreeShared(size_t const index) const override;
85  Tree * getTreePointer(size_t const index) const override;
86 
87  // *** WHILE LOOP METHODS *** //
88  // **************************** //
92  void toZeroTree() override;
96  bool hasNextTree() const override;
100  Tree & nextTreeReference() override;
104  std::shared_ptr<Tree> nextTreeShared() override;
108  Tree * nextTreePointer() override;
109 
110 };
111 
112 #include <BasicStaticGrove.tpp>
113 #endif
Basic implementation of a StaticGrove.
Definition: BasicStaticGrove.h:19
Tree * nextTreePointer() override
Tree & getTreeReference(size_t const index) const override
bool hasTrees() const override
void addTree(std::shared_ptr< Tree > tree) override
std::shared_ptr< Tree > nextTreeShared() override
BasicStaticGrove()=default
Default constructor for BasicStaticGrove.
void removeTrees(size_t const startIndex, size_t const endIndex) override
size_t whileIter
Current iteration for while loop friendly methods.
Definition: BasicStaticGrove.h:30
void removeAll() override
size_t getNumTrees() const override
void removeTree(size_t const index) override
std::shared_ptr< Tree > getTreeShared(size_t const index) const override
void replaceTree(size_t const index, std::shared_ptr< Tree > tree) override
Replace tree at given index by given tree.
std::vector< std::shared_ptr< Tree > > trees
The trees contained in the grove.
Definition: BasicStaticGrove.h:26
void toZeroTree() override
Tree & nextTreeReference() override
bool hasNextTree() const override
Tree * getTreePointer(size_t const index) const override
A StaticGrove is an abstract class which declares methods to handle a set of trees.
Definition: StaticGrove.h:68