A reference to a node in an existing yaml tree, offering a more convenient API than the index-based API used in the tree.
More...
|
|
| | NodeRef () noexcept |
| |
| | NodeRef (Tree &t) noexcept |
| |
| | NodeRef (Tree *t) noexcept |
| |
| | NodeRef (Tree *t, id_type id) noexcept |
| |
| | NodeRef (Tree *t, id_type id, id_type seed_pos) noexcept |
| |
| | NodeRef (Tree *t, id_type id, csubstr seed_key) noexcept |
| |
| | NodeRef (std::nullptr_t) noexcept |
| |
| void | _clear_seed () noexcept |
| |
|
| | NodeRef (NodeRef const &) noexcept=default |
| |
| | NodeRef (NodeRef &&) noexcept=default |
| |
| NodeRef & | operator= (NodeRef const &) noexcept=default |
| |
| NodeRef & | operator= (NodeRef &&) noexcept=default |
| |
|
| bool | invalid () const noexcept |
| | true if the object is not referring to any existing or seed node. More...
|
| |
| bool | is_seed () const noexcept |
| | true if the object is not invalid and in seed state. More...
|
| |
| bool | readable () const noexcept |
| | true if the object is not invalid and not in seed state. More...
|
| |
| bool | valid () const |
| |
|
| bool | operator== (NodeRef const &that) const |
| |
| bool | operator!= (NodeRef const &that) const |
| |
| bool | operator== (ConstNodeRef const &that) const |
| |
| bool | operator!= (ConstNodeRef const &that) const |
| |
|
| Tree * | tree () noexcept |
| |
| Tree const * | tree () const noexcept |
| |
| id_type | id () const noexcept |
| |
|
| void | create () |
| |
| void | change_type (NodeType t) |
| |
| void | set_type (NodeType t) |
| |
| void | set_key (csubstr key) |
| |
| void | set_val (csubstr val) |
| |
| void | set_key_tag (csubstr key_tag) |
| |
| void | set_val_tag (csubstr val_tag) |
| |
| void | set_key_anchor (csubstr key_anchor) |
| |
| void | set_val_anchor (csubstr val_anchor) |
| |
| void | set_key_ref (csubstr key_ref) |
| |
| void | set_val_ref (csubstr val_ref) |
| |
| void | set_container_style (NodeType_e style) |
| |
| void | set_key_style (NodeType_e style) |
| |
| void | set_val_style (NodeType_e style) |
| |
| void | clear_style (bool recurse=false) |
| |
| void | set_style_conditionally (NodeType type_mask, NodeType rem_style_flags, NodeType add_style_flags, bool recurse=false) |
| |
| void | clear () |
| |
| void | clear_key () |
| |
| void | clear_val () |
| |
| void | clear_children () |
| |
| void | operator= (NodeType_e t) |
| |
| void | operator|= (NodeType_e t) |
| |
| void | operator= (NodeInit const &v) |
| |
| void | operator= (NodeScalar const &v) |
| |
| void | operator= (std::nullptr_t) |
| |
| void | operator= (csubstr v) |
| |
| template<size_t N> |
| void | operator= (const char(&v)[N]) |
| |
|
| template<class T > |
| csubstr | to_arena (T const &s) |
| | serialize a variable to the arena More...
|
| |
| template<class T > |
| size_t | set_key_serialized (T const &k) |
| |
| size_t | set_key_serialized (std::nullptr_t) |
| |
| template<class T > |
| size_t | set_val_serialized (T const &v) |
| |
| size_t | set_val_serialized (std::nullptr_t) |
| |
| size_t | set_key_serialized (fmt::const_base64_wrapper w) |
| | encode a blob as base64 into the tree's arena, then assign the result to the node's key More...
|
| |
| size_t | set_val_serialized (fmt::const_base64_wrapper w) |
| | encode a blob as base64 into the tree's arena, then assign the result to the node's val More...
|
| |
| NodeRef & | operator<< (csubstr s) |
| | serialize a variable, then assign the result to the node's val More...
|
| |
| template<class T > |
| NodeRef & | operator<< (T const &v) |
| |
| template<class T > |
| NodeRef & | operator<< (Key< const T > const &v) |
| | serialize a variable, then assign the result to the node's key More...
|
| |
| template<class T > |
| NodeRef & | operator<< (Key< T > const &v) |
| | serialize a variable, then assign the result to the node's key More...
|
| |
| NodeRef & | operator<< (Key< fmt::const_base64_wrapper > w) |
| |
| NodeRef & | operator<< (fmt::const_base64_wrapper w) |
| |
|
| NodeRef | insert_child (NodeRef after) |
| |
| NodeRef | insert_child (NodeInit const &i, NodeRef after) |
| |
| NodeRef | prepend_child () |
| |
| NodeRef | prepend_child (NodeInit const &i) |
| |
| NodeRef | append_child () |
| |
| NodeRef | append_child (NodeInit const &i) |
| |
| NodeRef | insert_sibling (ConstNodeRef const &after) |
| |
| NodeRef | insert_sibling (NodeInit const &i, ConstNodeRef const &after) |
| |
| NodeRef | prepend_sibling () |
| |
| NodeRef | prepend_sibling (NodeInit const &i) |
| |
| NodeRef | append_sibling () |
| |
| NodeRef | append_sibling (NodeInit const &i) |
| |
| void | remove_child (NodeRef &child) |
| |
| void | remove_child (id_type pos) |
| | remove the nth child of this node More...
|
| |
| void | remove_child (csubstr key) |
| | remove a child by name More...
|
| |
| void | move (ConstNodeRef const &after) |
| | change the node's position within its parent, placing it after after. More...
|
| |
| void | move (NodeRef const &parent, ConstNodeRef const &after) |
| | move the node to a different parent (which may belong to a different tree), placing it after after. More...
|
| |
| NodeRef | duplicate (ConstNodeRef const &after) const |
| | duplicate the current node somewhere within its parent, and place it after the node after. More...
|
| |
| NodeRef | duplicate (NodeRef const &parent, ConstNodeRef const &after) const |
| | duplicate the current node somewhere into a different parent (possibly from a different tree), and place it after the node after. More...
|
| |
| void | duplicate_children (NodeRef const &parent, ConstNodeRef const &after) const |
| |
|
| NodeData const * | get () const RYML_NOEXCEPT |
| | returns the data or null when the id is NONE More...
|
| |
| auto | get () RYML_NOEXCEPT -> NodeData * |
| | returns the data or null when the id is NONE More...
|
| |
| NodeType | type () const RYML_NOEXCEPT |
| | Forward to Tree::type(). More...
|
| |
| const char * | type_str () const RYML_NOEXCEPT |
| | Forward to Tree::type_str(). More...
|
| |
| csubstr | key () const RYML_NOEXCEPT |
| | Forward to Tree::key(). More...
|
| |
| csubstr | key_tag () const RYML_NOEXCEPT |
| | Forward to Tree::key_tag(). More...
|
| |
| csubstr | key_ref () const RYML_NOEXCEPT |
| | Forward to Tree::key_ref(). More...
|
| |
| csubstr | key_anchor () const RYML_NOEXCEPT |
| | Forward to Tree::key_anchor(). More...
|
| |
| csubstr | val () const RYML_NOEXCEPT |
| | Forward to Tree::val(). More...
|
| |
| csubstr | val_tag () const RYML_NOEXCEPT |
| | Forward to Tree::val_tag(). More...
|
| |
| csubstr | val_ref () const RYML_NOEXCEPT |
| | Forward to Tree::val_ref(). More...
|
| |
| csubstr | val_anchor () const RYML_NOEXCEPT |
| | Forward to Tree::val_anchor(). More...
|
| |
| NodeScalar const & | keysc () const RYML_NOEXCEPT |
| | Forward to Tree::keysc(). More...
|
| |
| NodeScalar const & | valsc () const RYML_NOEXCEPT |
| | Forward to Tree::valsc(). More...
|
| |
| bool | key_is_null () const RYML_NOEXCEPT |
| | Forward to Tree::key_is_null(). More...
|
| |
| bool | val_is_null () const RYML_NOEXCEPT |
| | Forward to Tree::val_is_null(). More...
|
| |
| bool | is_key_unfiltered () const noexcept |
| | Forward to Tree::is_key_unfiltered(). More...
|
| |
| bool | is_val_unfiltered () const noexcept |
| | Forward to Tree::is_val_unfiltered(). More...
|
| |
|
| bool | empty () const RYML_NOEXCEPT |
| | Forward to Tree::empty(). More...
|
| |
| bool | is_stream () const RYML_NOEXCEPT |
| | Forward to Tree::is_stream(). More...
|
| |
| bool | is_doc () const RYML_NOEXCEPT |
| | Forward to Tree::is_doc(). More...
|
| |
| bool | is_container () const RYML_NOEXCEPT |
| | Forward to Tree::is_container(). More...
|
| |
| bool | is_map () const RYML_NOEXCEPT |
| | Forward to Tree::is_map(). More...
|
| |
| bool | is_seq () const RYML_NOEXCEPT |
| | Forward to Tree::is_seq(). More...
|
| |
| bool | has_val () const RYML_NOEXCEPT |
| | Forward to Tree::has_val(). More...
|
| |
| bool | has_key () const RYML_NOEXCEPT |
| | Forward to Tree::has_key(). More...
|
| |
| bool | is_val () const RYML_NOEXCEPT |
| | Forward to Tree::is_val(). More...
|
| |
| bool | is_keyval () const RYML_NOEXCEPT |
| | Forward to Tree::is_keyval(). More...
|
| |
| bool | has_key_tag () const RYML_NOEXCEPT |
| | Forward to Tree::has_key_tag(). More...
|
| |
| bool | has_val_tag () const RYML_NOEXCEPT |
| | Forward to Tree::has_val_tag(). More...
|
| |
| bool | has_key_anchor () const RYML_NOEXCEPT |
| | Forward to Tree::has_key_anchor(). More...
|
| |
| bool | has_val_anchor () const RYML_NOEXCEPT |
| | Forward to Tree::has_val_anchor(). More...
|
| |
| bool | has_anchor () const RYML_NOEXCEPT |
| | Forward to Tree::has_anchor(). More...
|
| |
| bool | is_key_ref () const RYML_NOEXCEPT |
| | Forward to Tree::is_key_ref(). More...
|
| |
| bool | is_val_ref () const RYML_NOEXCEPT |
| | Forward to Tree::is_val_ref(). More...
|
| |
| bool | is_ref () const RYML_NOEXCEPT |
| | Forward to Tree::is_ref(). More...
|
| |
| bool | parent_is_seq () const RYML_NOEXCEPT |
| | Forward to Tree::parent_is_seq(). More...
|
| |
| bool | parent_is_map () const RYML_NOEXCEPT |
| | Forward to Tree::parent_is_map(). More...
|
| |
| bool | is_key_anchor () const noexcept |
| |
| bool | is_val_hanchor () const noexcept |
| |
| bool | is_anchor () const noexcept |
| |
| bool | is_anchor_or_ref () const noexcept |
| |
|
| bool | type_has_any (NodeType_e bits) const RYML_NOEXCEPT |
| | Forward to Tree::type_has_any(). More...
|
| |
| bool | type_has_all (NodeType_e bits) const RYML_NOEXCEPT |
| | Forward to Tree::type_has_all(). More...
|
| |
| bool | type_has_none (NodeType_e bits) const RYML_NOEXCEPT |
| | Forward to Tree::type_has_none(). More...
|
| |
| NodeType | key_style () const RYML_NOEXCEPT |
| | Forward to Tree::key_style(). More...
|
| |
| NodeType | val_style () const RYML_NOEXCEPT |
| | Forward to Tree::val_style(). More...
|
| |
| bool | is_container_styled () const RYML_NOEXCEPT |
| | Forward to Tree::is_container_styled(). More...
|
| |
| bool | is_block () const RYML_NOEXCEPT |
| | Forward to Tree::is_block(). More...
|
| |
| bool | is_flow_sl () const RYML_NOEXCEPT |
| | Forward to Tree::is_flow_sl(). More...
|
| |
| bool | is_flow_ml () const RYML_NOEXCEPT |
| | Forward to Tree::is_flow_ml(). More...
|
| |
| bool | is_flow () const RYML_NOEXCEPT |
| | Forward to Tree::is_flow(). More...
|
| |
| bool | is_key_styled () const RYML_NOEXCEPT |
| | Forward to Tree::is_key_styled(). More...
|
| |
| bool | is_val_styled () const RYML_NOEXCEPT |
| | Forward to Tree::is_val_styled(). More...
|
| |
| bool | is_key_literal () const RYML_NOEXCEPT |
| | Forward to Tree::is_key_literal(). More...
|
| |
| bool | is_val_literal () const RYML_NOEXCEPT |
| | Forward to Tree::is_val_literal(). More...
|
| |
| bool | is_key_folded () const RYML_NOEXCEPT |
| | Forward to Tree::is_key_folded(). More...
|
| |
| bool | is_val_folded () const RYML_NOEXCEPT |
| | Forward to Tree::is_val_folded(). More...
|
| |
| bool | is_key_squo () const RYML_NOEXCEPT |
| | Forward to Tree::is_key_squo(). More...
|
| |
| bool | is_val_squo () const RYML_NOEXCEPT |
| | Forward to Tree::is_val_squo(). More...
|
| |
| bool | is_key_dquo () const RYML_NOEXCEPT |
| | Forward to Tree::is_key_dquo(). More...
|
| |
| bool | is_val_dquo () const RYML_NOEXCEPT |
| | Forward to Tree::is_val_dquo(). More...
|
| |
| bool | is_key_plain () const RYML_NOEXCEPT |
| | Forward to Tree::is_key_plain(). More...
|
| |
| bool | is_val_plain () const RYML_NOEXCEPT |
| | Forward to Tree::is_val_plain(). More...
|
| |
| bool | is_key_quoted () const RYML_NOEXCEPT |
| | Forward to Tree::is_key_quoted(). More...
|
| |
| bool | is_val_quoted () const RYML_NOEXCEPT |
| | Forward to Tree::is_val_quoted(). More...
|
| |
| bool | is_quoted () const RYML_NOEXCEPT |
| | Forward to Tree::is_quoted(). More...
|
| |
|
| bool | is_root () const RYML_NOEXCEPT |
| | Forward to Tree::is_root(). More...
|
| |
| bool | has_parent () const RYML_NOEXCEPT |
| | Forward to Tree::has_parent() Node must be readable. More...
|
| |
| bool | is_ancestor (ConstNodeRef const &ancestor) const RYML_NOEXCEPT |
| | Forward to Tree::is_ancestor() Node must be readable. More...
|
| |
| bool | has_child (ConstNodeRef const &n) const RYML_NOEXCEPT |
| | Forward to Tree::has_child(). More...
|
| |
| bool | has_child (id_type node) const RYML_NOEXCEPT |
| | Forward to Tree::has_child(). More...
|
| |
| bool | has_child (csubstr name) const RYML_NOEXCEPT |
| | Forward to Tree::has_child(). More...
|
| |
| bool | has_children () const RYML_NOEXCEPT |
| | Forward to Tree::has_children(). More...
|
| |
| bool | has_sibling (ConstNodeRef const &n) const RYML_NOEXCEPT |
| | Forward to Tree::has_sibling(). More...
|
| |
| bool | has_sibling (id_type node) const RYML_NOEXCEPT |
| | Forward to Tree::has_sibling(). More...
|
| |
| bool | has_sibling (csubstr name) const RYML_NOEXCEPT |
| | Forward to Tree::has_sibling(). More...
|
| |
| bool | has_other_siblings () const RYML_NOEXCEPT |
| | Forward to Tree::has_other_siblings(). More...
|
| |
| bool | has_siblings () const RYML_NOEXCEPT |
| |
|
| auto | doc (id_type i) RYML_NOEXCEPT -> NodeRef |
| | Forward to Tree::doc(). More...
|
| |
| ConstNodeRef | doc (id_type i) const RYML_NOEXCEPT |
| | Forward to Tree::doc(). More...
|
| |
| auto | parent () RYML_NOEXCEPT -> NodeRef |
| | Forward to Tree::parent(). More...
|
| |
| ConstNodeRef | parent () const RYML_NOEXCEPT |
| | Forward to Tree::parent(). More...
|
| |
| auto | first_child () RYML_NOEXCEPT -> NodeRef |
| | Forward to Tree::first_child(). More...
|
| |
| ConstNodeRef | first_child () const RYML_NOEXCEPT |
| | Forward to Tree::first_child(). More...
|
| |
| auto | last_child () RYML_NOEXCEPT -> NodeRef |
| | Forward to Tree::last_child(). More...
|
| |
| ConstNodeRef | last_child () const RYML_NOEXCEPT |
| | Forward to Tree::last_child(). More...
|
| |
| auto | child (id_type pos) RYML_NOEXCEPT -> NodeRef |
| | Forward to Tree::child(). More...
|
| |
| ConstNodeRef | child (id_type pos) const RYML_NOEXCEPT |
| | Forward to Tree::child(). More...
|
| |
| auto | find_child (csubstr name) RYML_NOEXCEPT -> NodeRef |
| | Forward to Tree::find_child(). More...
|
| |
| ConstNodeRef | find_child (csubstr name) const RYML_NOEXCEPT |
| | Forward to Tree::find_child(). More...
|
| |
| auto | prev_sibling () RYML_NOEXCEPT -> NodeRef |
| | Forward to Tree::prev_sibling(). More...
|
| |
| ConstNodeRef | prev_sibling () const RYML_NOEXCEPT |
| | Forward to Tree::prev_sibling(). More...
|
| |
| auto | next_sibling () RYML_NOEXCEPT -> NodeRef |
| | Forward to Tree::next_sibling(). More...
|
| |
| ConstNodeRef | next_sibling () const RYML_NOEXCEPT |
| | Forward to Tree::next_sibling(). More...
|
| |
| auto | first_sibling () RYML_NOEXCEPT -> NodeRef |
| | Forward to Tree::first_sibling(). More...
|
| |
| ConstNodeRef | first_sibling () const RYML_NOEXCEPT |
| | Forward to Tree::first_sibling(). More...
|
| |
| auto | last_sibling () RYML_NOEXCEPT -> NodeRef |
| | Forward to Tree::last_sibling(). More...
|
| |
| ConstNodeRef | last_sibling () const RYML_NOEXCEPT |
| | Forward to Tree::last_sibling(). More...
|
| |
| auto | sibling (id_type pos) RYML_NOEXCEPT -> NodeRef |
| | Forward to Tree::sibling(). More...
|
| |
| ConstNodeRef | sibling (id_type pos) const RYML_NOEXCEPT |
| | Forward to Tree::sibling(). More...
|
| |
| auto | find_sibling (csubstr name) RYML_NOEXCEPT -> NodeRef |
| | Forward to Tree::find_sibling(). More...
|
| |
| ConstNodeRef | find_sibling (csubstr name) const RYML_NOEXCEPT |
| | Forward to Tree::find_sibling(). More...
|
| |
| auto | ancestor_doc () RYML_NOEXCEPT -> NodeRef |
| | Forward to Tree::ancestor_doc(). More...
|
| |
| ConstNodeRef | ancestor_doc () const RYML_NOEXCEPT |
| | Forward to Tree::ancestor_doc(). More...
|
| |
| id_type | num_children () const RYML_NOEXCEPT |
| | O(num_children). More...
|
| |
| id_type | num_siblings () const RYML_NOEXCEPT |
| | O(num_children). More...
|
| |
| id_type | num_other_siblings () const RYML_NOEXCEPT |
| | O(num_siblings). More...
|
| |
| id_type | child_pos (ConstNodeRef const &n) const RYML_NOEXCEPT |
| | O(num_children). More...
|
| |
| id_type | sibling_pos (ConstNodeRef const &n) const RYML_NOEXCEPT |
| | O(num_siblings). More...
|
| |
| id_type | depth_asc () const RYML_NOEXCEPT |
| |
| id_type | depth_desc () const RYML_NOEXCEPT |
| | O(log(num_nodes)). More...
|
| |
|
O(num_nodes).
Forward to Tree::depth_desc(). Node must be readable.
operator[]
|
| auto | operator[] (csubstr key) RYML_NOEXCEPT -> NodeRef |
| | Find child by key; complexity is O(num_children). More...
|
| |
| auto | operator[] (id_type pos) RYML_NOEXCEPT -> NodeRef |
| | Find child by position; complexity is O(pos). More...
|
| |
| ConstNodeRef | operator[] (csubstr key) const RYML_NOEXCEPT |
| | Find a child by key; complexity is O(num_children). More...
|
| |
| ConstNodeRef | operator[] (id_type pos) const RYML_NOEXCEPT |
| | Find a child by position; complexity is O(pos). More...
|
| |
|
These functions are the analogue to operator[], with the difference that they emit an error instead of an assertion.
That is, if any of the pre or post conditions is violated, an error is always emitted (resulting in a call to the error callback).
|
| auto | at (csubstr key) -> NodeRef |
| | Find child by key; complexity is O(num_children). More...
|
| |
| auto | at (id_type pos) -> NodeRef |
| | Find child by position; complexity is O(pos). More...
|
| |
| ConstNodeRef | at (csubstr key) const |
| | Get a child by name, with error checking; complexity is O(num_children). More...
|
| |
| ConstNodeRef | at (id_type pos) const |
| | Get a child by position, with error checking; complexity is O(pos). More...
|
| |
|
| Location | location (Parser const &parser) const |
| |
|
| ConstNodeRef const & | operator>> (T &v) const |
| | deserialize the node's val to the given variable, forwarding to the user-overrideable read() function. More...
|
| |
| ConstNodeRef const & | operator>> (Key< T > v) const |
| | deserialize the node's key to the given variable, forwarding to the user-overrideable read() function; use key() to disambiguate; for example: node >> ryml::key(var) More...
|
| |
| bool | get_if (csubstr name, T *var) const |
| | look for a child by name, if it exists assign to var. More...
|
| |
| bool | get_if (csubstr name, T *var, T const &fallback) const |
| | look for a child by name, if it exists assign to var, otherwise default to fallback. More...
|
| |
|
| ConstNodeRef const & | operator>> (Key< fmt::base64_wrapper > w) const |
| | deserialize the node's key as base64. More...
|
| |
| ConstNodeRef const & | operator>> (fmt::base64_wrapper w) const |
| | deserialize the node's val as base64. More...
|
| |
| size_t | deserialize_key (fmt::base64_wrapper v) const |
| | decode the base64-encoded key and assign the decoded blob to the given buffer/ More...
|
| |
| size_t | deserialize_val (fmt::base64_wrapper v) const |
| | decode the base64-encoded key and assign the decoded blob to the given buffer/ More...
|
| |
A reference to a node in an existing yaml tree, offering a more convenient API than the index-based API used in the tree.
Unlike its imutable ConstNodeRef peer, a NodeRef can be used to mutate the tree, both by writing to existing nodes and by creating new nodes to subsequently write to. Semantically, a NodeRef object can be in one of three states:
invalid := not pointing at anything
readable := points at an existing tree/node
seed := points at an existing tree, and the node
may come to exist, if we write to it.
So both readable and seed are states where the node is also valid.
bool invalid() const noexcept
true if the object is not referring to any existing or seed node.
bool readable() const noexcept
true if the object is not invalid and not in seed state.
void parse_in_arena(Parser *parser, csubstr filename, csubstr yaml, Tree *t, id_type node_id)
(1) parse YAML into an existing tree node. The filename will be used in any error messages arising du...
When the object is in seed state, using it to read from the tree is UB. The seed node can be used to write to the tree, provided that its create() method is called prior to writing, which happens in most modifying methods in NodeRef.
It is the owners's responsibility to verify that an existing node is readable before subsequently using it to read from the tree.
- Warning
- The lifetime of the tree must be larger than that of this object. It is up to the user to ensure that this happens.
Definition at line 995 of file node.hpp.