12 #include <yaml-cpp/yaml.h>
66 impl_->emplace(YAML::LoadFile(file_name));
73 impl_->emplace(YAML::Load(input_stream));
87 const YAML::Node child =
impl_->getRawNode()[child_name];
89 if (not child.IsDefined() or child.IsNull())
93 impl_->emplace(child);
107 const std::size_t min,
108 const std::size_t max)
113 YAML::Node selected_node =
impl_->getRawNode();
115 if (selected_node.IsMap())
117 impl_->iterator_stack_.emplace_back(selected_node.begin());
126 if (
impl_->iterator_stack_.back() !=
impl_->getRawNode().end())
128 impl_->emplace(
impl_->iterator_stack_.back()->second);
129 entry_name =
impl_->iterator_stack_.back()->first.as<std::string>();
138 ++
impl_->iterator_stack_.back();
146 impl_->iterator_stack_.back() ==
impl_->getRawNode().end(),
147 "End of iterated map has not been reached.");
148 impl_->iterator_stack_.pop_back();
157 const std::size_t size =
impl_->getRawNode().size();
158 impl_->emplace(0, size);
169 "Internal error: array has more elements than expected.");
186 #define ARILES2_BASIC_TYPE(type) \
187 void Reader::readElement(type &element) \
189 CPPUT_TRACE_FUNCTION; \
190 element = impl_->getRawNode().as<type>(); \
195 #undef ARILES2_BASIC_TYPE
void endIteratedMapElement()
Reader(const std::string &file_name)
Constructor.
bool startIteratedMapElement(std::string &entry_name)
bool startIteratedMap(const SizeLimitEnforcementType=SIZE_LIMIT_NONE, const std::size_t=0, const std::size_t=0)
void startMap(const SizeLimitEnforcementType limit_type=SIZE_LIMIT_NONE, const std::size_t min=0, const std::size_t max=0)
void endMapEntry()
endMapEntry from the current entry to its parent.
bool startMapEntry(const std::string &child_name)
startMapEntry to the entry with the given name
std::vector< YAML::const_iterator > iterator_stack_
const YAML::Node getRawNode()
const YAML::Node getRawNode(const std::size_t depth)
void checkSize(const SizeLimitEnforcementType limit_type, const std::size_t size=0, const std::size_t min=0, const std::size_t max=0) const
std::vector< NodeWrapper > node_stack_
void makeImplPtr(t_Args &&...args)
#define CPPUT_ASSERT(condition,...)
#define ARILES2_BASIC_TYPES_LIST
CPPUT_MACRO_SUBSTITUTE(ARILES2_BASIC_INTEGER_TYPES_LIST) CPPUT_MACRO_SUBSTITUTE(ARILES2_BASIC_REAL_TYPES_LIST) void Writer
#define CPPUT_TRACE_FUNCTION