gramods
Loading...
Searching...
No Matches
Object.hh
1
2#ifndef GRAMODS_CORE_OBJECT
3#define GRAMODS_CORE_OBJECT
4
5#include <gmCore/config.hh>
6
7#include <memory>
8#include <string>
9
10BEGIN_NAMESPACE_GMCORE;
11
41class Object
42 : public std::enable_shared_from_this<Object> {
43
44public:
45
49 Object() : is_initialized(false) {}
50
54 virtual ~Object() {}
55
63 virtual void initialize() { is_initialized = true; }
64
75 struct Visitor {
79 virtual void apply(Object *node) { node->traverse(this); }
80 };
81
85 virtual void accept(Visitor *visitor) { visitor->apply(this); }
86
90 virtual void traverse(Visitor *visitor) {}
91
111 virtual std::string getDefaultKey() { return "object"; }
112
117 bool isInitialized() { return is_initialized; }
118
119private:
120
121 bool is_initialized;
122};
123
124END_NAMESPACE_GMCORE;
125
126#endif
Base type for objects in the Gramods package for standardized handling of construction,...
Definition Object.hh:42
virtual std::string getDefaultKey()
Returns the default key for the Object when automatically instantiated in a Configuration,...
Definition Object.hh:111
Object()
Initializes internal data.
Definition Object.hh:49
virtual void traverse(Visitor *visitor)
Calls the child Object's accept method, if such exist.
Definition Object.hh:90
virtual ~Object()
Cleaning up internal data.
Definition Object.hh:54
bool isInitialized()
Returns true if the Object is initialized.
Definition Object.hh:117
virtual void initialize()
Called to initialize the Object.
Definition Object.hh:63
virtual void accept(Visitor *visitor)
Calls the visitors apply method with this as argument.
Definition Object.hh:85
The visitor of a design pattern for automatic traversal.
Definition Object.hh:75
virtual void apply(Object *node)
This method is called for each visited objects.
Definition Object.hh:79