12 #include <yaml-cpp/yaml.h>
41 ARILES2_TRACE_FUNCTION;
42 if (node_stack_[depth].isArray())
44 return (getRawNode(depth - 1)[node_stack_[depth].index_]);
46 return (node_stack_[depth].node_);
52 ARILES2_TRACE_FUNCTION;
53 return (getRawNode(node_stack_.size() - 1));
82 ARILES2_TRACE_FUNCTION;
88 ARILES2_TRACE_FUNCTION;
89 YAML::Node child =
impl_->getRawNode()[child_name];
91 if (
false == child.IsDefined() or
true == child.IsNull())
101 ARILES2_TRACE_FUNCTION;
102 impl_->node_stack_.pop_back();
109 const std::size_t min,
110 const std::size_t max)
112 ARILES2_TRACE_FUNCTION;
115 YAML::Node selected_node =
impl_->getRawNode();
117 if (
true == selected_node.IsMap())
119 impl_->iterator_stack_.push_back(selected_node.begin());
127 ARILES2_TRACE_FUNCTION;
128 if (
impl_->iterator_stack_.back() !=
impl_->getRawNode().end())
130 impl_->node_stack_.push_back(
impl_->iterator_stack_.back()->second);
131 entry_name =
impl_->iterator_stack_.back()->first.as<std::string>();
139 ARILES2_TRACE_FUNCTION;
140 ++
impl_->iterator_stack_.back();
141 impl_->node_stack_.pop_back();
146 ARILES2_TRACE_FUNCTION;
148 impl_->iterator_stack_.back() ==
impl_->getRawNode().end(),
149 "End of iterated map has not been reached.");
150 impl_->iterator_stack_.pop_back();
156 ARILES2_TRACE_FUNCTION;
157 ARILES2_ASSERT(
true ==
impl_->getRawNode().IsSequence(),
"Entry is not an array.");
159 std::size_t size =
impl_->getRawNode().size();
168 ARILES2_TRACE_FUNCTION;
170 impl_->node_stack_.back().index_ <
impl_->node_stack_.back().size_,
171 "Internal error: namevalue.has more elements than expected.");
177 ARILES2_TRACE_FUNCTION;
178 ARILES2_ASSERT(
true ==
impl_->node_stack_.back().isArray(),
"Internal error: expected array.");
179 ++
impl_->node_stack_.back().index_;
185 ARILES2_TRACE_FUNCTION;
186 impl_->node_stack_.pop_back();
190 #define ARILES2_BASIC_TYPE(type) \
191 void Reader::readElement(type &element) \
193 ARILES2_TRACE_FUNCTION; \
194 element = impl_->getRawNode().as<type>(); \
199 #undef ARILES2_BASIC_TYPE