Chrysalis - Pattern
Loading...
Searching...
No Matches
ScopedNamedElementsContainer.h
Go to the documentation of this file.
1#ifndef CHRYSALIS_SCOPED_H
2#define CHRYSALIS_SCOPED_H
3
5
6namespace Chrysalis {
7 template<typename T>
10 public:
11 explicit ScopedNamedElementsContainer(): parent_(nullptr) {}
12 explicit ScopedNamedElementsContainer(const ScopedNamedElementsContainer* parent): parent_(parent) {}
13
14 [[nodiscard]] bool has(const std::string& name) const override {
15 if (NamedElementsContainer<T>::has(name)) return true;
16 if (parent_) return parent_->has(name);
17 return false;
18 }
19 T* get(const std::string& name) const override {
21 if (parent_) return parent_->get(name);
22 return nullptr;
23 }
24 private:
25 const ScopedNamedElementsContainer* parent_;
26 };
28}
29
30#endif //CHRYSALIS_SCOPED_H
Definition NamedElementsContainer.h:12
virtual bool has(const std::string &name) const
Definition NamedElementsContainer.h:15
virtual T * get(const std::string &name) const
Definition NamedElementsContainer.h:23
Definition ScopedNamedElementsContainer.h:8
bool has(const std::string &name) const override
Definition ScopedNamedElementsContainer.h:14
T * get(const std::string &name) const override
Definition ScopedNamedElementsContainer.h:19
ScopedNamedElementsContainer(const ScopedNamedElementsContainer *parent)
Definition ScopedNamedElementsContainer.h:12
ScopedNamedElementsContainer()
Definition ScopedNamedElementsContainer.h:11
Definition Argument.h:9
#define SERIALIZE_DERIVED_CONSTRUCTION_T(Class, Base,...)
Definition serialization.h:131
#define PROVIDE_SERIALIZATION_ACCESS_T(Class)
Definition serialization.h:37