28 #ifndef YSL_INC_Core_ValueNode_h_
29 #define YSL_INC_Core_ValueNode_h_ 1
60 template<typename _tString, typename... _tParams>
69 template<
typename _tIn>
78 template<
typename _tIn,
typename _tString>
80 ValueNode(
const pair<_tIn, _tIn>& pr, _tString&& str)
98 operator+=(ValueNode&&);
101 operator-=(const ValueNode&);
113 ImplRet(*this %= std::move(node), *this)
122 operator%=(const ValueNode& node)
const
124 const auto& n((*
this)[node.name]);
126 return n.Value = node.Value, n;
131 const auto& n((*
this)[node.
name]);
133 return n.Value = std::move(node.
Value), n;
145 operator[](const
string&) const;
149 DefCvt(const ynothrow, const
string&, name);
156 DefGetter(const ynothrow, Container*, ContainerPtr,
163 GetNode(const
string&) const;
165 GetSize() const ynothrow;
211 template<
typename _type>
222 template<
typename _type>
235 AccessNode(
const ValueNode::Container&,
const string&);
242 template<
typename _type>
246 return Access<_type>(node.
GetNode(name));
253 template<
typename _type>
257 return Access<_type>(node.
GetNode(name));
265 template<
typename _tString,
typename... _tParams>
277 template<
typename _tString,
typename... _tParams>
289 inline const ValueNode&
297 return std::move(arg);
305 template<
class _tPack>
317 template<
typename... _tParams>
318 inline unique_ptr<ValueNode::Container>
321 auto p(make_unique<ValueNode::Container>());
331 template<
typename _tString,
typename... _tParams>