8 #ifndef INCLUDED_ORCUS_JSON_DOCUMENT_TREE_HPP
9 #define INCLUDED_ORCUS_JSON_DOCUMENT_TREE_HPP
11 #include "orcus/env.hpp"
12 #include "orcus/exception.hpp"
27 struct json_value_store;
52 enum class node_t : uint8_t
83 namespace detail {
namespace init {
class node; }}
95 std::unique_ptr<impl> mp_impl;
118 size_t child_count()
const;
127 std::vector<pstring> keys()
const;
143 pstring key(
size_t index)
const;
200 double numeric_value()
const;
211 uintptr_t identity()
const;
249 node child(
size_t index);
292 std::initializer_list<detail::init::node> m_vs;
297 array(std::initializer_list<detail::init::node> vs);
309 object(
const object&) =
delete;
314 namespace detail {
namespace init {
323 friend class ::orcus::json::document_tree;
324 friend class ::orcus::json::node;
327 std::unique_ptr<impl> mp_impl;
333 node(std::nullptr_t);
335 node(std::initializer_list<detail::init::node> vs);
347 std::unique_ptr<json_value> to_json_value(
string_pool& pool)
const;
348 void store_to_node(
string_pool& pool, json_value* parent)
const;
362 std::unique_ptr<impl> mp_impl;
376 document_tree& operator= (std::initializer_list<detail::init::node> vs);
418 std::string dump()
const;
426 std::string dump_xml()
const;