Chrysalis - Pattern
Toggle main menu visibility
Loading...
Searching...
No Matches
ScopedNamedElementsContainer.h
Go to the documentation of this file.
1
#ifndef CHRYSALIS_SCOPED_H
2
#define CHRYSALIS_SCOPED_H
3
4
#include "
NamedElementsContainer.h
"
5
6
namespace
Chrysalis
{
7
template
<
typename
T>
8
class
ScopedNamedElementsContainer
:
public
NamedElementsContainer
<T> {
9
PROVIDE_SERIALIZATION_ACCESS_T
(
ScopedNamedElementsContainer
)
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
{
20
if
(
NamedElementsContainer<T>::has
(name))
return
NamedElementsContainer<T>::get
(name);
21
if
(parent_)
return
parent_->get(name);
22
return
nullptr
;
23
}
24
private
:
25
const
ScopedNamedElementsContainer
* parent_;
26
};
27
SERIALIZE_DERIVED_CONSTRUCTION_T
(
ScopedNamedElementsContainer
,
NamedElementsContainer
, parent_)
28
}
29
30
#endif
//CHRYSALIS_SCOPED_H
NamedElementsContainer.h
Chrysalis::NamedElementsContainer
Definition
NamedElementsContainer.h:12
Chrysalis::NamedElementsContainer::has
virtual bool has(const std::string &name) const
Definition
NamedElementsContainer.h:15
Chrysalis::NamedElementsContainer::get
virtual T * get(const std::string &name) const
Definition
NamedElementsContainer.h:23
Chrysalis::ScopedNamedElementsContainer
Definition
ScopedNamedElementsContainer.h:8
Chrysalis::ScopedNamedElementsContainer::has
bool has(const std::string &name) const override
Definition
ScopedNamedElementsContainer.h:14
Chrysalis::ScopedNamedElementsContainer::get
T * get(const std::string &name) const override
Definition
ScopedNamedElementsContainer.h:19
Chrysalis::ScopedNamedElementsContainer::ScopedNamedElementsContainer
ScopedNamedElementsContainer(const ScopedNamedElementsContainer *parent)
Definition
ScopedNamedElementsContainer.h:12
Chrysalis::ScopedNamedElementsContainer::ScopedNamedElementsContainer
ScopedNamedElementsContainer()
Definition
ScopedNamedElementsContainer.h:11
Chrysalis
Definition
Argument.h:9
SERIALIZE_DERIVED_CONSTRUCTION_T
#define SERIALIZE_DERIVED_CONSTRUCTION_T(Class, Base,...)
Definition
serialization.h:131
PROVIDE_SERIALIZATION_ACCESS_T
#define PROVIDE_SERIALIZATION_ACCESS_T(Class)
Definition
serialization.h:37
pattern
include
ScopedNamedElementsContainer.h
Generated by
1.17.0