Helios++
Helios software for LiDAR simulations
BasicDynGrove.h
1 #ifndef _BASIC_DYN_GROVE_H_
2 #define _BASIC_DYN_GROVE_H_
3 
4 #include <BasicStaticGrove.h>
5 #include <DynGrove.h>
6 
7 #include <memory>
8 #include <vector>
9 
10 template <typename Tree, typename Subject>
12 
25 template <typename Tree, typename Subject>
26 class BasicDynGrove : public BasicStaticGrove<Tree>, public DynGrove<Subject> {
28 protected:
29  // *** ATTRIBUTES *** //
30  // ******************** //
44  std::vector<BasicDynGroveSubject<Tree, Subject> *> subjects;
45 
46 public:
47  // *** CONSTRUCTION / DESTRUCTION *** //
48  // ************************************ //
53  virtual ~BasicDynGrove() = default;
54 
55  // *** OBSERVER METHODS *** //
56  // ************************** //
60  void update(Subject &s) override;
71  virtual void addSubject(
73  std::shared_ptr<Tree> tree
74  );
85 
86  // *** GETTERs and SETTERs *** //
87  // ***************************** //
92  virtual std::vector<BasicDynGroveSubject<Tree, Subject> *> const&
93  getSubjects() const {return subjects;}
94 };
95 
96 #include <BasicDynGrove.tpp>
97 #endif
Interface defining the behaviors that must be supported by any object that can notify to a basic dyna...
Definition: BasicDynGroveSubject.h:17
Basic implementation of a DynGrove which extends BasicStaticGrove to provided dynamic funcionalities.
Definition: BasicDynGrove.h:26
std::vector< BasicDynGroveSubject< Tree, Subject > * > subjects
Vector with pointers to subjects.
Definition: BasicDynGrove.h:44
BasicDynGrove()
Default constructor for BasicDynGrove.
Definition: BasicDynGrove.h:52
virtual void addSubject(BasicDynGroveSubject< Tree, Subject > *subject, std::shared_ptr< Tree > tree)
Add a new subject which identifier is automatically and internally computed.
void update(Subject &s) override
virtual std::vector< BasicDynGroveSubject< Tree, Subject > * > const & getSubjects() const
Obtain a read-only reference to vector of subjects.
Definition: BasicDynGrove.h:93
virtual void removeSubject(BasicDynGroveSubject< Tree, Subject > *subject)
Remove subject with given identifier from the grove.
Basic implementation of a StaticGrove.
Definition: BasicStaticGrove.h:19
A DynGrove is an interface which declares observer-like functionality so dynamic subjects can notify ...
Definition: DynGrove.h:15