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_) && (
nullptr != value_.get()))
 
   31            if ((
"" == id_) && (
nullptr == 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            CPPUT_ASSERT(
nullptr != value_.get(), 
"Could not instantiate class.");
 
 
   63            return (
"" != id_ && 
nullptr != 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)
 
   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 
  112                if (config_section_id == value_->arilesDefaultID())
 
  114                    return (
dynamic_cast<t_Derived *
>(value_.get()));
 
 
  125            return (value_.get());
 
 
  132            return (value_.get());
 
 
  157                    "Could not write config: entry is in an inconsistent (partially initialized) state.");
 
 
  175                    CPPUT_ASSERT(parameters.allow_missing_entries_, 
"Id is empty, value cannot be read.");
 
 
  191                value_->arilesVirtualVisit(visitor, param);
 
 
  201                value_->arilesVirtualVisit(visitor, param);
 
 
  211                value_->arilesVirtualVisit(visitor, param);
 
 
 
  220    template <
template <
class> 
class t_Pointer, 
class t_Base, 
class t_Instantiator>
 
  223#define ARILES2_ENTRIES(v)                                                                                             \ 
  224    ARILES2_TYPED_ENTRY_(v, id, std::string)                                                                           \ 
  225    ARILES2_TYPED_ENTRY_(v, value, t_Pointer<t_Base>) 
  226#include ARILES2_INITIALIZE 
  231            if ((
"" != id_) && (
nullptr != value_.get()))
 
  236            if ((
"" == id_) && (
nullptr == value_.get()))
 
 
  248            ariles2::apply<ariles2::Defaults>(*
this);
 
 
  252        explicit Any2(
const std::string &
id)
 
 
  261            value_ = t_Instantiator::instantiate(id_);
 
  262            CPPUT_ASSERT(
nullptr != value_.get(), 
"Could not instantiate class.");
 
 
  268            return (
"" != id_ && 
nullptr != value_.get());
 
 
  278        template <
class t_Derived>
 
  281            return (
dynamic_cast<t_Derived *
>(value_.get()));
 
 
  285        template <
class t_Derived>
 
  288            return (
dynamic_cast<const t_Derived *
>(value_.get()));
 
 
  298        template <
class t_Derived>
 
  299        t_Derived *
cast(
const std::string &config_section_id)
 
  303                if (config_section_id == value_->arilesDefaultID())
 
  305                    return (
dynamic_cast<t_Derived *
>(value_.get()));
 
 
  312        template <
class t_Derived>
 
  313        const t_Derived *
cast(
const std::string &config_section_id)
 const 
  317                if (config_section_id == value_->arilesDefaultID())
 
  319                    return (
dynamic_cast<t_Derived *
>(value_.get()));
 
 
  330            return (value_.get());
 
 
  337            return (value_.get());
 
 
  362                    "Could not write config: entry is in an inconsistent (partially initialized) state.");
 
  367                value_->arilesVirtualVisit(visitor, param);
 
 
  380                    CPPUT_ASSERT(param.allow_missing_entries_, 
"Id is empty, value cannot be read.");
 
  388                        value_->arilesVirtualVisit(visitor, param);
 
  390                    catch (
const std::exception &e)
 
  392                        CPPUT_THROW(
"Failed to parse entry <", id_, 
"> ||  ", e.what());
 
 
  404                value_->arilesVirtualVisit(visitor, param);
 
 
  414                value_->arilesVirtualVisit(visitor, param);
 
 
  424                value_->arilesVirtualVisit(visitor, param);
 
 
  433                return (this->value_->arilesVirtualVisit(visitor, param) + 1);
 
 
  444            return (this->value_->arilesVirtualVisit(visitor, param));
 
 
 
  452    template <
class t_Po
inter>
 
  476            Handler::allocate(
value_);
 
 
  517        const typename Handler::Value *
get()
 const 
 
  522        typename Handler::Value *
get()
 
 
  533                value_->arilesVirtualVisit(visitor, param);
 
 
  540            return (Handler::isNull(
value_));
 
 
  544#ifdef ARILES2_METHODS_compare 
  545        template <
class t_Other>
 
  550            if (
value_.get() != other.value_.get())
 
  552                if (
nullptr != 
value_ and 
nullptr != other.value_)
 
  554                    value_->arilesVisit(visitor, *other.value_, param);
 
  564#ifdef ARILES2_METHODS_copyto 
  565        template <
class t_Other>
 
  573#ifdef ARILES2_METHODS_copyfrom 
  574        template <
class t_Other>
 
 
  585    template <
class t_Po
inter>
 
  588#include ARILES2_INITIALIZE 
  594            ariles2::apply<ariles2::Defaults>(*
this);
 
 
  606            this->value_->arilesVirtualVisit(writer, parameters);
 
 
  614            this->value_->arilesVirtualVisit(reader, parameters);
 
 
  622            this->value_->arilesVirtualVisit(visitor, param);
 
 
  630            return (this->value_->arilesVirtualVisit(visitor, param));
 
 
  639            return (this->value_->arilesVirtualVisit(visitor, param));
 
 
  647            this->value_->arilesVirtualVisit(visitor, param);
 
 
  652#ifdef ARILES2_METHODS_graphviz 
  657            this->value_->arilesVirtualVisit(writer, parameters);
 
 
  664    template <
class t_Po
inter>
 
  667#include ARILES2_INITIALIZE 
  673            ariles2::apply<ariles2::Defaults>(*
this);
 
 
  685                    parameters.allow_missing_entries_, 
"Missing entries must be allowed when using OptionalPointer");
 
  688            this->value_->arilesVirtualVisit(writer, parameters);
 
 
  698                ariles2::apply<ariles2::Defaults>(*this->value_);
 
  700            this->value_->arilesVirtualVisit(reader, parameters);
 
 
  709                this->value_->arilesVirtualVisit(visitor, param);
 
 
  719                return (this->value_->arilesVirtualVisit(visitor, param));
 
 
  731                return (this->value_->arilesVirtualVisit(visitor, param));
 
 
  742                this->value_->arilesVirtualVisit(visitor, param);
 
 
  748#ifdef ARILES2_METHODS_graphviz 
  754                this->value_->arilesVirtualVisit(writer, parameters);
 
 
  761    template <
class t_Entry>
 
const t_Base & operator*() const
 
std::size_t arilesVisit(const ariles2::Count &visitor, const ariles2::Count::Parameters ¶m) const
 
void arilesVisit(const ariles2::PreWrite &visitor, const ariles2::PreWrite::Parameters ¶m)
 
std::size_t arilesVisit(const ariles2::CountMissing &visitor, const ariles2::CountMissing::Parameters ¶m) const
 
void arilesVisit(const ariles2::Finalize &visitor, const ariles2::Finalize::Parameters ¶m)
 
void arilesVisit(ariles2::Read &visitor, const ariles2::Read::Parameters ¶m)
 
void arilesVisit(ariles2::Write &visitor, const ariles2::Write::Parameters ¶m) const
 
void build(const std::string &id)
 
t_Derived * cast(const std::string &config_section_id)
These casts succeed if the Ariles config section id matches the given string.
 
Any2(const std::string &id)
 
const t_Derived * cast(const std::string &config_section_id) const
 
const t_Derived * cast() const
 
void arilesVisit(const ariles2::Defaults &visitor, const ariles2::Defaults::Parameters ¶m)
 
t_Derived * cast()
Cast methods are potentially dangerous, no id checks are performed. If value is not initialized the r...
 
bool isConsistent() const
 
const t_Base * operator->() const
 
bool isInitialized() const
 
const t_Derived * cast(const std::string &config_section_id) const
 
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.
 
const t_Derived * cast() const
 
const t_Base & operator*() const
 
void arilesVisit(const ariles2::Defaults &visitor, const ariles2::Defaults::Parameters ¶m)
 
bool isConsistent() const
 
t_Derived * cast()
Cast methods are potentially dangerous, no id checks are performed. If value is not initialized the r...
 
void arilesVisit(const ariles2::PreWrite &visitor, const ariles2::PreWrite::Parameters ¶m)
 
bool isInitialized() const
 
const t_Base * operator->() const
 
void arilesVisit(const ariles2::Finalize &visitor, const ariles2::Finalize::Parameters ¶m)
 
void arilesVisit(ariles2::Read &visitor, const ariles2::Read::Parameters ¶meters)
 
Any(const std::string &id)
 
void build(const std::string &id)
 
Handler::Value * operator->() const
 
Handler::Value & operator*() const
 
CustomPointerBase(const t_Pointer &value)
 
CustomPointerBase & operator=(const t_Pointer &value)
 
CustomPointerBase(const typename Handler::Value &value)
 
const Handler::Value * get() const
 
void arilesVisit(const ariles2::PreWrite &visitor, const ariles2::PreWrite::Parameters ¶m)
 
virtual ~CustomPointerBase()
 
void arilesVisit(ariles2::Read &reader, const ariles2::Read::Parameters ¶meters)
 
std::size_t arilesVisit(const ariles2::Count &visitor, const ariles2::Count::Parameters ¶m) const
 
void arilesVisit(const ariles2::Finalize &visitor, const ariles2::Finalize::Parameters ¶m)
 
std::size_t arilesVisit(const ariles2::CountMissing &visitor, const ariles2::CountMissing::Parameters ¶m) const
 
void arilesVisit(ariles2::Write &writer, const ariles2::Write::Parameters ¶meters) const
 
void arilesVisit(const ariles2::Defaults &visitor, const ariles2::Defaults::Parameters ¶m)
 
std::size_t arilesVisit(const ariles2::Count &visitor, const ariles2::Count::Parameters ¶m) const
 
void arilesVisit(ariles2::Read &reader, const ariles2::Read::Parameters ¶meters)
 
void arilesVisit(const ariles2::Finalize &visitor, const ariles2::Finalize::Parameters ¶m)
 
void arilesVisit(ariles2::Write &writer, const ariles2::Write::Parameters ¶meters) const
 
std::size_t arilesVisit(const ariles2::CountMissing &visitor, const ariles2::CountMissing::Parameters ¶m) const
 
void arilesVisit(const ariles2::Defaults &visitor, const ariles2::Defaults::Parameters ¶m)
 
bool visitMapEntry(t_Entry &entry, const std::string &name, const Parameters ¶m, const bool override_missing_entries_locally=false)
 
void visitMapEntry(const t_Entry &entry, const std::string &entry_name, const t_Parameters ¶m)
 
#define CPPUT_ASSERT(condition,...)
 
void apply_copyfrom(t_Visitor &visitor, t_Left &left, const t_Right &right, const typename t_Visitor::Parameters ¶m)
 
void apply_copyto(t_Visitor &visitor, const t_Left &left, t_Right &right, const typename t_Visitor::Parameters ¶m)
 
bool isMissing(const ARILES2_POINTER_TYPE< t_Entry > &entry)
 
#define CPPUT_TRACE_FUNCTION