Go to the documentation of this file.
15 template <
template <
class>
class t_Pointer,
class t_Base,
class t_Instantiator>
18 #define ARILES2_ENTRIES(v) \
19 ARILES2_TYPED_ENTRY_(v, id, std::string) \
20 ARILES2_TYPED_ENTRY_(v, value, t_Pointer<t_Base>)
21 #include ARILES2_INITIALIZE
26 if ((
"" != id_) && (NULL != value_.get()))
31 if ((
"" == id_) && (NULL == value_.get()))
43 ariles2::apply<ariles2::Defaults>(*
this);
47 explicit Any(
const std::string &
id)
53 void build(
const std::string &
id)
56 value_ = t_Instantiator::instantiate(id_);
57 ARILES2_ASSERT(NULL != value_.get(),
"Could not instantiate class.");
63 return (
"" != id_ && NULL != value_.get());
73 template <
class t_Derived>
76 return (
dynamic_cast<t_Derived *
>(value_.get()));
80 template <
class t_Derived>
81 const t_Derived *
cast()
const
83 return (
dynamic_cast<const t_Derived *
>(value_.get()));
93 template <
class t_Derived>
94 t_Derived *
cast(
const std::string &config_section_id)
96 if (
true == isInitialized())
98 if (config_section_id == value_->arilesDefaultID())
100 return (
dynamic_cast<t_Derived *
>(value_.get()));
107 template <
class t_Derived>
108 const t_Derived *
cast(
const std::string &config_section_id)
const
110 if (
true == isInitialized())
112 if (config_section_id == value_->arilesDefaultID())
114 return (
dynamic_cast<t_Derived *
>(value_.get()));
124 ARILES2_ASSERT(
true == isInitialized(),
"Not initialized");
125 return (value_.get());
131 ARILES2_ASSERT(
true == isInitialized(),
"Not initialized");
132 return (value_.get());
138 ARILES2_ASSERT(
true == isInitialized(),
"Not initialized");
145 ARILES2_ASSERT(
true == isInitialized(),
"Not initialized");
154 ARILES2_TRACE_FUNCTION;
156 true == isConsistent(),
157 "Could not write config: entry is in an inconsistent (partially initialized) state.");
160 if (
true == isInitialized())
169 ARILES2_TRACE_FUNCTION;
175 ARILES2_ASSERT(
true == parameters.allow_missing_entries_,
"Id is empty, value cannot be read.");
188 ARILES2_TRACE_FUNCTION;
189 if (
true == isInitialized())
191 value_->arilesVirtualVisit(visitor, param);
198 ARILES2_TRACE_FUNCTION;
199 if (
true == isInitialized())
201 value_->arilesVirtualVisit(visitor, param);
208 ARILES2_TRACE_FUNCTION;
209 if (
true == isInitialized())
211 value_->arilesVirtualVisit(visitor, param);
220 template <
class t_Po
inter>
223 #include ARILES2_INITIALIZE
237 ariles2::apply<ariles2::Defaults>(*
this);
247 Handler::allocate(value_);
276 ARILES2_ASSERT(
false == isNull(),
"Not initialized");
277 return (value_.get());
283 ARILES2_ASSERT(
false == isNull(),
"Not initialized");
288 const typename Handler::Value *
get()
const
290 return (value_.get());
293 typename Handler::Value *
get()
295 return (value_.get());
301 ARILES2_TRACE_FUNCTION;
302 ARILES2_ASSERT(
false == isNull(),
"Could not write config: entry is not initialized");
303 value_->arilesVirtualVisit(writer, parameters);
309 ARILES2_TRACE_FUNCTION;
310 ARILES2_ASSERT(
false == isNull(),
"Not initialized");
311 value_->arilesVirtualVisit(reader, parameters);
317 ARILES2_TRACE_FUNCTION;
318 ARILES2_ASSERT(
false == isNull(),
"Not initialized");
319 value_->arilesVirtualVisit(visitor, param);
324 ARILES2_TRACE_FUNCTION;
325 if (
false == isNull())
327 value_->arilesVirtualVisit(visitor, param);
333 ARILES2_TRACE_FUNCTION;
334 Handler::allocate(value_);
335 value_->arilesVirtualVisit(visitor, param);
341 ARILES2_TRACE_FUNCTION;
342 ARILES2_ASSERT(
false == isNull(),
"Not initialized");
343 return (value_->arilesVirtualVisit(visitor, param));
349 return (Handler::isNull(value_));
353 #ifdef ARILES2_METHODS_compare
354 template <
class t_Other>
358 ARILES2_TRACE_FUNCTION;
359 value_->arilesVisit(visitor, *other.value_, param);
363 #ifdef ARILES2_METHODS_copyto
364 template <
class t_Other>
367 ARILES2_TRACE_FUNCTION;
372 #ifdef ARILES2_METHODS_copyfrom
373 template <
class t_Other>
376 ARILES2_TRACE_FUNCTION;
381 #ifdef ARILES2_METHODS_graphviz
384 ARILES2_TRACE_FUNCTION;
385 ARILES2_ASSERT(
false == isNull(),
"Could not write config: entry is not initialized");
386 value_->arilesVirtualVisit(writer, parameters);
void ARILES2_VISIBILITY_ATTRIBUTE apply_copyfrom(t_Visitor &visitor, t_Left &left, const t_Right &right, const typename t_Visitor::Parameters ¶m, ARILES2_IS_BASE_ENABLER(ariles2::Ariles, t_Left))
Handler::Value & operator*() const
void arilesVisit(const ariles2::Finalize &visitor, const ariles2::Finalize::Parameters ¶m)
void arilesVisit(const ariles2::PreWrite &visitor, const ariles2::PreWrite::Parameters ¶m)
void arilesVisit(ariles2::Read &visitor, const ariles2::Read::Parameters ¶meters)
t_Derived * cast()
Cast methods are potentially dangerous, no id checks are performed. If value is not initialized the r...
void arilesVisit(ariles2::Write &writer, const ariles2::Write::Parameters ¶meters) const
bool isInitialized() const
const t_Base * operator->() const
std::size_t arilesVisit(const ariles2::Count &visitor, const ariles2::Count::Parameters ¶m) const
const t_Derived * cast() const
bool visitMapEntry(t_Entry &entry, const std::string &name, const Parameters ¶m, const bool override_missing_entries_locally=false)
const Handler::Value * get() const
const t_Derived * cast(const std::string &config_section_id) const
void build(const std::string &id)
#define ARILES2_VISIBILITY_ATTRIBUTE
Handler::Value * operator->() const
void arilesVisit(ariles2::Read &reader, const ariles2::Read::Parameters ¶meters)
void arilesVisit(const ariles2::PreWrite &visitor, const ariles2::PreWrite::Parameters ¶m)
void visitMapEntry(const t_Entry &entry, const std::string &entry_name, const t_Parameters ¶m)
NonNullPointer(const typename Handler::Value &value)
void arilesVisit(ariles2::Write &visitor, const ariles2::Write::Parameters ¶m) const
t_Derived * cast(const std::string &config_section_id)
These casts succeed if the Ariles config section id matches the given string.
bool isConsistent() const
NonNullPointer(const t_Pointer &value)
Any(const std::string &id)
void arilesVisit(const ariles2::Defaults &visitor, const ariles2::Defaults::Parameters ¶m)
NonNullPointer & operator=(const t_Pointer &value)
virtual ~NonNullPointer()
const t_Base & operator*() const
void arilesVisit(const ariles2::Finalize &visitor, const ariles2::Finalize::Parameters ¶m)
PointerHandler< t_Pointer > Handler
void ARILES2_VISIBILITY_ATTRIBUTE apply_copyto(t_Visitor &visitor, const t_Left &left, t_Right &right, const typename t_Visitor::Parameters ¶m, ARILES2_IS_BASE_ENABLER(ariles2::Ariles, t_Left))
void arilesVisit(const ariles2::Defaults &visitor, const ariles2::Defaults::Parameters ¶m)