rapidyaml 0.15.0
parse and emit YAML, and do it fast
Loading...
Searching...
No Matches
c4::yml::NodeRef Class Reference

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...

#include <node.hpp>

Public Types

using tree_type = Tree
using base_type = detail::RoNodeMethods<NodeRef, ConstNodeRef>

Public Member Functions

construction
 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
assignment
 NodeRef (NodeRef const &) noexcept=default
 NodeRef (NodeRef &&) noexcept=default
NodeRefoperator= (NodeRef const &) noexcept=default
NodeRefoperator= (NodeRef &&) noexcept=default
state_queries
bool invalid () const noexcept
 true if the object is not referring to any existing or seed node.
bool is_seed () const noexcept
 true if the object is not invalid and in seed state.
bool readable () const noexcept
 true if the object is not invalid and not in seed state.
bool valid () const
comparisons
bool operator== (NodeRef const &that) const
bool operator!= (NodeRef const &that) const
bool operator== (ConstNodeRef const &that) const
bool operator!= (ConstNodeRef const &that) const
node_property_getters
Treetree () noexcept
Tree const * tree () const noexcept
id_type id () const noexcept
node_modifiers
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])
serialization
template<class T>
csubstr to_arena (T const &s)
 serialize a variable to the arena
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)
NodeRefoperator<< (csubstr s)
 serialize a variable, then assign the result to the node's val
template<class T>
NodeRefoperator<< (T const &v)
template<class T>
NodeRefoperator<< (Key< const T > const &v)
 serialize a variable, then assign the result to the node's key
template<class T>
NodeRefoperator<< (Key< T > const &v)
 serialize a variable, then assign the result to the node's key
modification of hierarchy
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
void remove_child (csubstr key)
 remove a child by name
void move (ConstNodeRef const &after)
 change the node's position within its parent, placing it after after.
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.
NodeRef duplicate (ConstNodeRef const &after) const
 duplicate the current node somewhere within its parent, and place it after the node after.
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.
void duplicate_children (NodeRef const &parent, ConstNodeRef const &after) const
node property getters
NodeData const * get () const RYML_NOEXCEPT
 returns the data or null when the id is NONE
auto get () RYML_NOEXCEPT -> NodeData *
 returns the data or null when the id is NONE
NodeType type () const RYML_NOEXCEPT
 Forward to Tree::type().
const char * type_str () const RYML_NOEXCEPT
 Forward to Tree::type_str().
csubstr key () const RYML_NOEXCEPT
 Forward to Tree::key().
csubstr key_tag () const RYML_NOEXCEPT
 Forward to Tree::key_tag().
csubstr key_ref () const RYML_NOEXCEPT
 Forward to Tree::key_ref().
csubstr key_anchor () const RYML_NOEXCEPT
 Forward to Tree::key_anchor().
csubstr val () const RYML_NOEXCEPT
 Forward to Tree::val().
csubstr val_tag () const RYML_NOEXCEPT
 Forward to Tree::val_tag().
csubstr val_ref () const RYML_NOEXCEPT
 Forward to Tree::val_ref().
csubstr val_anchor () const RYML_NOEXCEPT
 Forward to Tree::val_anchor().
NodeScalar const & keysc () const RYML_NOEXCEPT
 Forward to Tree::keysc().
NodeScalar const & valsc () const RYML_NOEXCEPT
 Forward to Tree::valsc().
bool key_is_null () const RYML_NOEXCEPT
 Forward to Tree::key_is_null().
bool val_is_null () const RYML_NOEXCEPT
 Forward to Tree::val_is_null().
bool is_key_unfiltered () const noexcept
 Forward to Tree::is_key_unfiltered().
bool is_val_unfiltered () const noexcept
 Forward to Tree::is_val_unfiltered().
node type predicates
bool empty () const RYML_NOEXCEPT
 Forward to Tree::empty().
bool is_stream () const RYML_NOEXCEPT
 Forward to Tree::is_stream().
bool is_doc () const RYML_NOEXCEPT
 Forward to Tree::is_doc().
bool is_container () const RYML_NOEXCEPT
 Forward to Tree::is_container().
bool is_map () const RYML_NOEXCEPT
 Forward to Tree::is_map().
bool is_seq () const RYML_NOEXCEPT
 Forward to Tree::is_seq().
bool has_val () const RYML_NOEXCEPT
 Forward to Tree::has_val().
bool has_key () const RYML_NOEXCEPT
 Forward to Tree::has_key().
bool is_val () const RYML_NOEXCEPT
 Forward to Tree::is_val().
bool is_keyval () const RYML_NOEXCEPT
 Forward to Tree::is_keyval().
bool has_key_tag () const RYML_NOEXCEPT
 Forward to Tree::has_key_tag().
bool has_val_tag () const RYML_NOEXCEPT
 Forward to Tree::has_val_tag().
bool has_key_anchor () const RYML_NOEXCEPT
 Forward to Tree::has_key_anchor().
bool has_val_anchor () const RYML_NOEXCEPT
 Forward to Tree::has_val_anchor().
bool has_anchor () const RYML_NOEXCEPT
 Forward to Tree::has_anchor().
bool is_key_ref () const RYML_NOEXCEPT
 Forward to Tree::is_key_ref().
bool is_val_ref () const RYML_NOEXCEPT
 Forward to Tree::is_val_ref().
bool is_ref () const RYML_NOEXCEPT
 Forward to Tree::is_ref().
bool parent_is_seq () const RYML_NOEXCEPT
 Forward to Tree::parent_is_seq().
bool parent_is_map () const RYML_NOEXCEPT
 Forward to Tree::parent_is_map().
bool is_key_anchor () const noexcept
bool is_val_hanchor () const noexcept
bool is_anchor () const noexcept
bool is_anchor_or_ref () const noexcept
style predicates
bool type_has_any (NodeType_e bits) const RYML_NOEXCEPT
 Forward to Tree::type_has_any().
bool type_has_all (NodeType_e bits) const RYML_NOEXCEPT
 Forward to Tree::type_has_all().
bool type_has_none (NodeType_e bits) const RYML_NOEXCEPT
 Forward to Tree::type_has_none().
NodeType key_style () const RYML_NOEXCEPT
 Forward to Tree::key_style().
NodeType val_style () const RYML_NOEXCEPT
 Forward to Tree::val_style().
bool is_container_styled () const RYML_NOEXCEPT
 Forward to Tree::is_container_styled().
bool is_block () const RYML_NOEXCEPT
 Forward to Tree::is_block().
bool is_flow () const RYML_NOEXCEPT
 Forward to Tree::is_flow().
bool is_flow_sl () const RYML_NOEXCEPT
 Forward to Tree::is_flow_sl().
bool is_flow_ml () const RYML_NOEXCEPT
 Forward to Tree::is_flow_ml1().
bool is_flow_ml1 () const RYML_NOEXCEPT
 Forward to Tree::is_flow_ml1().
bool is_flow_mln () const RYML_NOEXCEPT
 Forward to Tree::is_flow_mln().
bool is_flow_mlx () const RYML_NOEXCEPT
 Forward to Tree::is_flow_mlx().
bool has_flow_space () const RYML_NOEXCEPT
 Forward to Tree::has_flow_space().
bool is_key_styled () const RYML_NOEXCEPT
 Forward to Tree::is_key_styled().
bool is_val_styled () const RYML_NOEXCEPT
 Forward to Tree::is_val_styled().
bool is_key_literal () const RYML_NOEXCEPT
 Forward to Tree::is_key_literal().
bool is_val_literal () const RYML_NOEXCEPT
 Forward to Tree::is_val_literal().
bool is_key_folded () const RYML_NOEXCEPT
 Forward to Tree::is_key_folded().
bool is_val_folded () const RYML_NOEXCEPT
 Forward to Tree::is_val_folded().
bool is_key_squo () const RYML_NOEXCEPT
 Forward to Tree::is_key_squo().
bool is_val_squo () const RYML_NOEXCEPT
 Forward to Tree::is_val_squo().
bool is_key_dquo () const RYML_NOEXCEPT
 Forward to Tree::is_key_dquo().
bool is_val_dquo () const RYML_NOEXCEPT
 Forward to Tree::is_val_dquo().
bool is_key_plain () const RYML_NOEXCEPT
 Forward to Tree::is_key_plain().
bool is_val_plain () const RYML_NOEXCEPT
 Forward to Tree::is_val_plain().
bool is_key_quoted () const RYML_NOEXCEPT
 Forward to Tree::is_key_quoted().
bool is_val_quoted () const RYML_NOEXCEPT
 Forward to Tree::is_val_quoted().
bool is_quoted () const RYML_NOEXCEPT
 Forward to Tree::is_quoted().
hierarchy predicates
bool is_root () const RYML_NOEXCEPT
 Forward to Tree::is_root().
bool has_parent () const RYML_NOEXCEPT
 Forward to Tree::has_parent() Node must be readable.
bool is_ancestor (ConstNodeRef const &ancestor) const RYML_NOEXCEPT
 Forward to Tree::is_ancestor() Node must be readable.
bool has_child (ConstNodeRef const &n) const RYML_NOEXCEPT
 Forward to Tree::has_child().
bool has_child (id_type node) const RYML_NOEXCEPT
 Forward to Tree::has_child().
bool has_child (csubstr name) const RYML_NOEXCEPT
 Forward to Tree::has_child().
bool has_children () const RYML_NOEXCEPT
 Forward to Tree::has_children().
bool has_sibling (ConstNodeRef const &n) const RYML_NOEXCEPT
 Forward to Tree::has_sibling().
bool has_sibling (id_type node) const RYML_NOEXCEPT
 Forward to Tree::has_sibling().
bool has_sibling (csubstr name) const RYML_NOEXCEPT
 Forward to Tree::has_sibling().
bool has_other_siblings () const RYML_NOEXCEPT
 Forward to Tree::has_other_siblings().
bool has_siblings () const RYML_NOEXCEPT
hierarchy getters
auto doc (id_type i) RYML_NOEXCEPT -> NodeRef
 Forward to Tree::doc().
ConstNodeRef doc (id_type i) const RYML_NOEXCEPT
 Forward to Tree::doc().
auto parent () RYML_NOEXCEPT -> NodeRef
 Forward to Tree::parent().
ConstNodeRef parent () const RYML_NOEXCEPT
 Forward to Tree::parent().
auto first_child () RYML_NOEXCEPT -> NodeRef
 Forward to Tree::first_child().
ConstNodeRef first_child () const RYML_NOEXCEPT
 Forward to Tree::first_child().
auto last_child () RYML_NOEXCEPT -> NodeRef
 Forward to Tree::last_child().
ConstNodeRef last_child () const RYML_NOEXCEPT
 Forward to Tree::last_child().
auto child (id_type pos) RYML_NOEXCEPT -> NodeRef
 Forward to Tree::child().
ConstNodeRef child (id_type pos) const RYML_NOEXCEPT
 Forward to Tree::child().
auto find_child (csubstr name) RYML_NOEXCEPT -> NodeRef
 Forward to Tree::find_child().
ConstNodeRef find_child (csubstr name) const RYML_NOEXCEPT
 Forward to Tree::find_child().
auto prev_sibling () RYML_NOEXCEPT -> NodeRef
 Forward to Tree::prev_sibling().
ConstNodeRef prev_sibling () const RYML_NOEXCEPT
 Forward to Tree::prev_sibling().
auto next_sibling () RYML_NOEXCEPT -> NodeRef
 Forward to Tree::next_sibling().
ConstNodeRef next_sibling () const RYML_NOEXCEPT
 Forward to Tree::next_sibling().
auto first_sibling () RYML_NOEXCEPT -> NodeRef
 Forward to Tree::first_sibling().
ConstNodeRef first_sibling () const RYML_NOEXCEPT
 Forward to Tree::first_sibling().
auto last_sibling () RYML_NOEXCEPT -> NodeRef
 Forward to Tree::last_sibling().
ConstNodeRef last_sibling () const RYML_NOEXCEPT
 Forward to Tree::last_sibling().
auto sibling (id_type pos) RYML_NOEXCEPT -> NodeRef
 Forward to Tree::sibling().
ConstNodeRef sibling (id_type pos) const RYML_NOEXCEPT
 Forward to Tree::sibling().
auto find_sibling (csubstr name) RYML_NOEXCEPT -> NodeRef
 Forward to Tree::find_sibling().
ConstNodeRef find_sibling (csubstr name) const RYML_NOEXCEPT
 Forward to Tree::find_sibling().
auto ancestor_doc () RYML_NOEXCEPT -> NodeRef
 Forward to Tree::ancestor_doc().
ConstNodeRef ancestor_doc () const RYML_NOEXCEPT
 Forward to Tree::ancestor_doc().
id_type num_children () const RYML_NOEXCEPT
 O(num_children).
id_type num_siblings () const RYML_NOEXCEPT
 O(num_children).
id_type num_other_siblings () const RYML_NOEXCEPT
 O(num_siblings).
id_type child_pos (ConstNodeRef const &n) const RYML_NOEXCEPT
 O(num_children).
id_type sibling_pos (ConstNodeRef const &n) const RYML_NOEXCEPT
 O(num_siblings).
id_type depth_asc () const RYML_NOEXCEPT
id_type depth_desc () const RYML_NOEXCEPT
 O(log(num_nodes)).
square_brackets

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).
auto operator[] (id_type pos) RYML_NOEXCEPT -> NodeRef
 Find child by position; complexity is O(pos).
ConstNodeRef operator[] (csubstr key) const RYML_NOEXCEPT
 Find a child by key; complexity is O(num_children).
ConstNodeRef operator[] (id_type pos) const RYML_NOEXCEPT
 Find a child by position; complexity is O(pos).
at

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).
auto at (id_type pos) -> NodeRef
 Find child by position; complexity is O(pos).
ConstNodeRef at (csubstr key) const
 Get a child by name, with error checking; complexity is O(num_children).
ConstNodeRef at (id_type pos) const
 Get a child by position, with error checking; complexity is O(pos).
locations
Location location (Parser const &parser) const
deserialization
ConstNodeRef const & operator>> (T &v) const
 deserialize the node's val to the given variable, forwarding to the user-overrideable read() function.
ConstNodeRef const & operator>> (T const &wrapper) const
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)
bool get_if (csubstr name, T *var) const
 look for a child by name, if it exists assign to var.
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.

Friends

struct detail::RoNodeMethods< NodeRef, ConstNodeRef >

iteration

using iterator
using const_iterator
using children_view
using const_children_view
auto begin () RYML_NOEXCEPT -> iterator
 get a mutable iterator to the first child.
const_iterator begin () const RYML_NOEXCEPT
 get an iterator to the first child
const_iterator cbegin () const RYML_NOEXCEPT
 get an iterator to the first child
auto end () RYML_NOEXCEPT -> iterator
 get an iterator to after the last child.
const_iterator end () const RYML_NOEXCEPT
 get an iterator to after the last child
const_iterator cend () const RYML_NOEXCEPT
 get an iterator to after the last child
auto children () RYML_NOEXCEPT -> children_view
 get an iterable view over children.
const_children_view children () const RYML_NOEXCEPT
 get an iterable view over children
const_children_view cchildren () const RYML_NOEXCEPT
 get an iterable view over children
auto siblings () RYML_NOEXCEPT -> children_view
 get an iterable view over all siblings (including the calling node)
const_children_view siblings () const RYML_NOEXCEPT
 get an iterable view over all siblings (including the calling node)
const_children_view csiblings () const RYML_NOEXCEPT
 get an iterable view over all siblings (including the calling node)
bool visit (Visitor fn, id_type indentation_level=0, bool skip_root=true) const RYML_NOEXCEPT
 visit every child node calling fn(node)
auto visit (Visitor fn, id_type indentation_level=0, bool skip_root=true) RYML_NOEXCEPT -> bool
 visit every child node calling fn(node)
bool visit_stacked (Visitor fn, id_type indentation_level=0, bool skip_root=true) const RYML_NOEXCEPT
 visit every child node calling fn(node, level)
auto visit_stacked (Visitor fn, id_type indentation_level=0, bool skip_root=true) RYML_NOEXCEPT -> bool
 visit every child node calling fn(node, level)

Detailed Description

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.

Tree t = parse_in_arena("{a: b}");
NodeRef invalid; // not pointing at anything.
NodeRef readable = t["a"]; // also valid, because "a" exists
NodeRef seed = t["none"]; // also valid, but is seed because "none" is not in the map
NodeRef() noexcept
Definition node.hpp:1012
bool invalid() const noexcept
true if the object is not referring to any existing or seed node.
Definition node.hpp:1043
bool readable() const noexcept
true if the object is not invalid and not in seed state.
Definition node.hpp:1047
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...
Definition parse.cpp:92

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 971 of file node.hpp.

Member Typedef Documentation

◆ tree_type

Definition at line 975 of file node.hpp.

◆ base_type

Definition at line 976 of file node.hpp.

◆ iterator

using c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::iterator
inherited

Definition at line 725 of file node.hpp.

◆ const_iterator

using c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::const_iterator
inherited

Definition at line 726 of file node.hpp.

◆ children_view

using c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::children_view
inherited

Definition at line 727 of file node.hpp.

◆ const_children_view

using c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::const_children_view
inherited

Definition at line 728 of file node.hpp.

Constructor & Destructor Documentation

◆ NodeRef() [1/9]

c4::yml::NodeRef::NodeRef ( )
inlinenoexcept

Definition at line 1012 of file node.hpp.

1012: m_tree(nullptr), m_id(NONE), m_seed() { _clear_seed(); }
void _clear_seed() noexcept
Definition node.hpp:1020
@ NONE
an index to none
Definition common.hpp:263

◆ NodeRef() [2/9]

c4::yml::NodeRef::NodeRef ( Tree & t)
inlinenoexcept

Definition at line 1013 of file node.hpp.

1013: m_tree(&t), m_id(t .root_id()), m_seed() { _clear_seed(); }

◆ NodeRef() [3/9]

c4::yml::NodeRef::NodeRef ( Tree * t)
inlinenoexcept

Definition at line 1014 of file node.hpp.

1014: m_tree(t ), m_id(t->root_id()), m_seed() { _clear_seed(); }

◆ NodeRef() [4/9]

c4::yml::NodeRef::NodeRef ( Tree * t,
id_type id )
inlinenoexcept

Definition at line 1015 of file node.hpp.

1015: m_tree(t), m_id(id), m_seed() { _clear_seed(); }

◆ NodeRef() [5/9]

c4::yml::NodeRef::NodeRef ( Tree * t,
id_type id,
id_type seed_pos )
inlinenoexcept

Definition at line 1016 of file node.hpp.

1016: m_tree(t), m_id(id), m_seed() { m_seed.str = nullptr; m_seed.len = (size_t)seed_pos; }

◆ NodeRef() [6/9]

c4::yml::NodeRef::NodeRef ( Tree * t,
id_type id,
csubstr seed_key )
inlinenoexcept

Definition at line 1017 of file node.hpp.

1017: m_tree(t), m_id(id), m_seed(seed_key) {}

◆ NodeRef() [7/9]

c4::yml::NodeRef::NodeRef ( std::nullptr_t )
inlinenoexcept

Definition at line 1018 of file node.hpp.

1018: m_tree(nullptr), m_id(NONE), m_seed() {}

◆ NodeRef() [8/9]

c4::yml::NodeRef::NodeRef ( NodeRef const & )
defaultnoexcept

◆ NodeRef() [9/9]

c4::yml::NodeRef::NodeRef ( NodeRef && )
defaultnoexcept

Member Function Documentation

◆ _clear_seed()

void c4::yml::NodeRef::_clear_seed ( )
inlinenoexcept

Definition at line 1020 of file node.hpp.

1020{ /*do the following manually or an assert is triggered: */ m_seed.str = nullptr; m_seed.len = npos; }
@ npos
a null string position
Definition common.hpp:270

◆ operator=() [1/8]

NodeRef & c4::yml::NodeRef::operator= ( NodeRef const & )
defaultnoexcept

◆ operator=() [2/8]

NodeRef & c4::yml::NodeRef::operator= ( NodeRef && )
defaultnoexcept

◆ invalid()

bool c4::yml::NodeRef::invalid ( ) const
inlinenoexcept

true if the object is not referring to any existing or seed node.

See also
the doc for NodeRef

Definition at line 1043 of file node.hpp.

1043{ return m_tree == nullptr || m_id == NONE; }

◆ is_seed()

bool c4::yml::NodeRef::is_seed ( ) const
inlinenoexcept

true if the object is not invalid and in seed state.

See also
the doc for NodeRef

Definition at line 1045 of file node.hpp.

1045{ return (m_tree != nullptr && m_id != NONE) && (m_seed.str != nullptr || m_seed.len != (size_t)NONE); }

◆ readable()

bool c4::yml::NodeRef::readable ( ) const
inlinenoexcept

true if the object is not invalid and not in seed state.

See also
the doc for NodeRef

Definition at line 1047 of file node.hpp.

1047{ return (m_tree != nullptr && m_id != NONE) && (m_seed.str == nullptr && m_seed.len == (size_t)NONE); }

◆ valid()

bool c4::yml::NodeRef::valid ( ) const
inline

Definition at line 1049 of file node.hpp.

1049{ return m_tree != nullptr && m_id != NONE; }

◆ operator==() [1/2]

bool c4::yml::NodeRef::operator== ( NodeRef const & that) const
inline

Definition at line 1058 of file node.hpp.

1059 {
1060 if(m_tree == that.m_tree && m_id == that.m_id)
1061 {
1062 bool seed = is_seed();
1063 if(seed == that.is_seed())
1064 {
1065 if(seed)
1066 {
1067 return (m_seed.len == that.m_seed.len)
1068 && (m_seed.str == that.m_seed.str
1069 || m_seed == that.m_seed); // do strcmp only in the last resort
1070 }
1071 return true;
1072 }
1073 }
1074 return false;
1075 }
bool is_seed() const noexcept
true if the object is not invalid and in seed state.
Definition node.hpp:1045

◆ operator!=() [1/2]

bool c4::yml::NodeRef::operator!= ( NodeRef const & that) const
inline

Definition at line 1076 of file node.hpp.

1076{ return ! this->operator==(that); }
bool operator==(NodeRef const &that) const
Definition node.hpp:1058

◆ operator==() [2/2]

bool c4::yml::NodeRef::operator== ( ConstNodeRef const & that) const
inline

Definition at line 1078 of file node.hpp.

1078{ return m_tree == that.m_tree && m_id == that.m_id && !is_seed(); }

◆ operator!=() [2/2]

bool c4::yml::NodeRef::operator!= ( ConstNodeRef const & that) const
inline

Definition at line 1079 of file node.hpp.

1079{ return ! this->operator==(that); }

◆ tree() [1/2]

Tree * c4::yml::NodeRef::tree ( )
inlinenoexcept

Definition at line 1094 of file node.hpp.

1094{ return m_tree; }

◆ tree() [2/2]

Tree const * c4::yml::NodeRef::tree ( ) const
inlinenoexcept

Definition at line 1095 of file node.hpp.

1095{ return m_tree; }

◆ id()

id_type c4::yml::NodeRef::id ( ) const
inlinenoexcept

Definition at line 1097 of file node.hpp.

1097{ return m_id; }

◆ create()

void c4::yml::NodeRef::create ( )
inline

Definition at line 1106 of file node.hpp.

1106{ _apply_seed(); }

◆ change_type()

void c4::yml::NodeRef::change_type ( NodeType t)
inline

Definition at line 1108 of file node.hpp.

1108{ _C4RR(); m_tree->change_type(m_id, t); }
#define _C4RR()
Definition node.hpp:999

◆ set_type()

void c4::yml::NodeRef::set_type ( NodeType t)
inline

Definition at line 1110 of file node.hpp.

1110{ _apply_seed(); m_tree->_set_flags(m_id, t); }

◆ set_key()

void c4::yml::NodeRef::set_key ( csubstr key)
inline

Definition at line 1111 of file node.hpp.

1111{ _apply_seed(); m_tree->_set_key(m_id, key); }

◆ set_val()

void c4::yml::NodeRef::set_val ( csubstr val)
inline

Definition at line 1112 of file node.hpp.

1112{ _apply_seed(); m_tree->_set_val(m_id, val); }

◆ set_key_tag()

void c4::yml::NodeRef::set_key_tag ( csubstr key_tag)
inline

Definition at line 1113 of file node.hpp.

1113{ _apply_seed(); m_tree->set_key_tag(m_id, key_tag); }

◆ set_val_tag()

void c4::yml::NodeRef::set_val_tag ( csubstr val_tag)
inline

Definition at line 1114 of file node.hpp.

1114{ _apply_seed(); m_tree->set_val_tag(m_id, val_tag); }

◆ set_key_anchor()

void c4::yml::NodeRef::set_key_anchor ( csubstr key_anchor)
inline

Definition at line 1115 of file node.hpp.

1115{ _apply_seed(); m_tree->set_key_anchor(m_id, key_anchor); }

◆ set_val_anchor()

void c4::yml::NodeRef::set_val_anchor ( csubstr val_anchor)
inline

Definition at line 1116 of file node.hpp.

1116{ _apply_seed(); m_tree->set_val_anchor(m_id, val_anchor); }

◆ set_key_ref()

void c4::yml::NodeRef::set_key_ref ( csubstr key_ref)
inline

Definition at line 1117 of file node.hpp.

1117{ _apply_seed(); m_tree->set_key_ref(m_id, key_ref); }

◆ set_val_ref()

void c4::yml::NodeRef::set_val_ref ( csubstr val_ref)
inline

Definition at line 1118 of file node.hpp.

1118{ _apply_seed(); m_tree->set_val_ref(m_id, val_ref); }

◆ set_container_style()

void c4::yml::NodeRef::set_container_style ( NodeType_e style)
inline

Definition at line 1120 of file node.hpp.

1120{ _C4RR(); m_tree->set_container_style(m_id, style); }

◆ set_key_style()

void c4::yml::NodeRef::set_key_style ( NodeType_e style)
inline

Definition at line 1121 of file node.hpp.

1121{ _C4RR(); m_tree->set_key_style(m_id, style); }

◆ set_val_style()

void c4::yml::NodeRef::set_val_style ( NodeType_e style)
inline

Definition at line 1122 of file node.hpp.

1122{ _C4RR(); m_tree->set_val_style(m_id, style); }

◆ clear_style()

void c4::yml::NodeRef::clear_style ( bool recurse = false)
inline

Definition at line 1123 of file node.hpp.

1123{ _C4RR(); m_tree->clear_style(m_id, recurse); }

◆ set_style_conditionally()

void c4::yml::NodeRef::set_style_conditionally ( NodeType type_mask,
NodeType rem_style_flags,
NodeType add_style_flags,
bool recurse = false )
inline

Definition at line 1124 of file node.hpp.

1128 {
1129 _C4RR(); m_tree->set_style_conditionally(m_id, type_mask, rem_style_flags, add_style_flags, recurse);
1130 }

◆ clear()

void c4::yml::NodeRef::clear ( )
inline

Definition at line 1134 of file node.hpp.

1135 {
1136 if(is_seed())
1137 return;
1138 m_tree->remove_children(m_id);
1139 m_tree->_clear(m_id);
1140 }

◆ clear_key()

void c4::yml::NodeRef::clear_key ( )
inline

Definition at line 1142 of file node.hpp.

1143 {
1144 if(is_seed())
1145 return;
1146 m_tree->_clear_key(m_id);
1147 }

◆ clear_val()

void c4::yml::NodeRef::clear_val ( )
inline

Definition at line 1149 of file node.hpp.

1150 {
1151 if(is_seed())
1152 return;
1153 m_tree->_clear_val(m_id);
1154 }

◆ clear_children()

void c4::yml::NodeRef::clear_children ( )
inline

Definition at line 1156 of file node.hpp.

1157 {
1158 if(is_seed())
1159 return;
1160 m_tree->remove_children(m_id);
1161 }

◆ operator=() [3/8]

void c4::yml::NodeRef::operator= ( NodeType_e t)
inline

Definition at line 1163 of file node.hpp.

1164 {
1165 _apply_seed();
1166 m_tree->_add_flags(m_id, t);
1167 }

◆ operator|=()

void c4::yml::NodeRef::operator|= ( NodeType_e t)
inline

Definition at line 1169 of file node.hpp.

1170 {
1171 _apply_seed();
1172 m_tree->_add_flags(m_id, t);
1173 }

◆ operator=() [4/8]

void c4::yml::NodeRef::operator= ( NodeInit const & v)
inline

Definition at line 1175 of file node.hpp.

1176 {
1177 _apply_seed();
1178 _apply(v);
1179 }

◆ operator=() [5/8]

void c4::yml::NodeRef::operator= ( NodeScalar const & v)
inline

Definition at line 1181 of file node.hpp.

1182 {
1183 _apply_seed();
1184 _apply(v);
1185 }

◆ operator=() [6/8]

void c4::yml::NodeRef::operator= ( std::nullptr_t )
inline

Definition at line 1187 of file node.hpp.

1188 {
1189 _apply_seed();
1190 _apply(csubstr{});
1191 }
basic_substring< const char > csubstr
an immutable string view
Definition substr.hpp:2357

◆ operator=() [7/8]

void c4::yml::NodeRef::operator= ( csubstr v)
inline

Definition at line 1193 of file node.hpp.

1194 {
1195 _apply_seed();
1196 _apply(v);
1197 }

◆ operator=() [8/8]

template<size_t N>
void c4::yml::NodeRef::operator= ( const char(&) v[N])
inline

Definition at line 1200 of file node.hpp.

1201 {
1202 _apply_seed();
1203 csubstr sv;
1204 sv.assign<N>(v);
1205 _apply(sv);
1206 }
void assign(C(&s_)[N]) noexcept
Assign from an array.
Definition substr.hpp:300

◆ to_arena()

template<class T>
csubstr c4::yml::NodeRef::to_arena ( T const & s)
inline

serialize a variable to the arena

Definition at line 1217 of file node.hpp.

1218 {
1219 _RYML_ASSERT_BASIC(m_tree); // no need for valid or readable
1220 return m_tree->to_arena(s);
1221 }

◆ set_key_serialized() [1/2]

template<class T>
size_t c4::yml::NodeRef::set_key_serialized ( T const & k)
inline

Definition at line 1224 of file node.hpp.

1225 {
1226 _apply_seed();
1227 csubstr s = m_tree->to_arena(k);
1228 m_tree->_set_key(m_id, s);
1229 return s.len;
1230 }
size_t len
the length of the substring
Definition substr.hpp:218

◆ set_key_serialized() [2/2]

size_t c4::yml::NodeRef::set_key_serialized ( std::nullptr_t )
inline

Definition at line 1231 of file node.hpp.

1232 {
1233 _apply_seed();
1234 m_tree->_set_key(m_id, csubstr{});
1235 return 0;
1236 }

◆ set_val_serialized() [1/2]

template<class T>
size_t c4::yml::NodeRef::set_val_serialized ( T const & v)
inline

Definition at line 1239 of file node.hpp.

1240 {
1241 _apply_seed();
1242 csubstr s = m_tree->to_arena(v);
1243 m_tree->_set_val(m_id, s);
1244 return s.len;
1245 }

◆ set_val_serialized() [2/2]

size_t c4::yml::NodeRef::set_val_serialized ( std::nullptr_t )
inline

Definition at line 1246 of file node.hpp.

1247 {
1248 _apply_seed();
1249 m_tree->_set_val(m_id, csubstr{});
1250 return 0;
1251 }

◆ operator<<() [1/4]

NodeRef & c4::yml::NodeRef::operator<< ( csubstr s)
inline

serialize a variable, then assign the result to the node's val

Definition at line 1254 of file node.hpp.

1255 {
1256 // this overload is needed to prevent ambiguity (there's also
1257 // operator<< for writing a substr to a stream)
1258 _apply_seed();
1259 write(this, s);
1260 _RYML_ASSERT_VISIT_(m_tree->m_callbacks, val() == s, m_tree, m_id);
1261 return *this;
1262 }
void write(NodeRef *n, T const &v)
Definition node.hpp:1588

◆ operator<<() [2/4]

template<class T>
NodeRef & c4::yml::NodeRef::operator<< ( T const & v)
inline

Definition at line 1265 of file node.hpp.

1266 {
1267 _apply_seed();
1268 write(this, v);
1269 return *this;
1270 }

◆ operator<<() [3/4]

template<class T>
NodeRef & c4::yml::NodeRef::operator<< ( Key< const T > const & v)
inline

serialize a variable, then assign the result to the node's key

Definition at line 1274 of file node.hpp.

1275 {
1276 _apply_seed();
1277 set_key_serialized(v.k);
1278 return *this;
1279 }
size_t set_key_serialized(T const &k)
Definition node.hpp:1224

◆ operator<<() [4/4]

template<class T>
NodeRef & c4::yml::NodeRef::operator<< ( Key< T > const & v)
inline

serialize a variable, then assign the result to the node's key

Definition at line 1283 of file node.hpp.

1284 {
1285 _apply_seed();
1286 set_key_serialized(v.k);
1287 return *this;
1288 }

◆ insert_child() [1/2]

NodeRef c4::yml::NodeRef::insert_child ( NodeRef after)
inline

Definition at line 1337 of file node.hpp.

1338 {
1339 _C4RR();
1340 _RYML_ASSERT_VISIT_(m_tree->m_callbacks, after.m_tree == m_tree, m_tree, m_id);
1341 NodeRef r(m_tree, m_tree->insert_child(m_id, after.m_id));
1342 return r;
1343 }

◆ insert_child() [2/2]

NodeRef c4::yml::NodeRef::insert_child ( NodeInit const & i,
NodeRef after )
inline

Definition at line 1345 of file node.hpp.

1346 {
1347 _C4RR();
1348 _RYML_ASSERT_VISIT_(m_tree->m_callbacks, after.m_tree == m_tree, m_tree, m_id);
1349 NodeRef r(m_tree, m_tree->insert_child(m_id, after.m_id));
1350 r._apply(i);
1351 return r;
1352 }

◆ prepend_child() [1/2]

NodeRef c4::yml::NodeRef::prepend_child ( )
inline

Definition at line 1354 of file node.hpp.

1355 {
1356 _C4RR();
1357 NodeRef r(m_tree, m_tree->insert_child(m_id, NONE));
1358 return r;
1359 }

◆ prepend_child() [2/2]

NodeRef c4::yml::NodeRef::prepend_child ( NodeInit const & i)
inline

Definition at line 1361 of file node.hpp.

1362 {
1363 _C4RR();
1364 NodeRef r(m_tree, m_tree->insert_child(m_id, NONE));
1365 r._apply(i);
1366 return r;
1367 }

◆ append_child() [1/2]

NodeRef c4::yml::NodeRef::append_child ( )
inline

Definition at line 1369 of file node.hpp.

1370 {
1371 _C4RR();
1372 NodeRef r(m_tree, m_tree->append_child(m_id));
1373 return r;
1374 }

◆ append_child() [2/2]

NodeRef c4::yml::NodeRef::append_child ( NodeInit const & i)
inline

Definition at line 1376 of file node.hpp.

1377 {
1378 _C4RR();
1379 NodeRef r(m_tree, m_tree->append_child(m_id));
1380 r._apply(i);
1381 return r;
1382 }

◆ insert_sibling() [1/2]

NodeRef c4::yml::NodeRef::insert_sibling ( ConstNodeRef const & after)
inline

Definition at line 1384 of file node.hpp.

1385 {
1386 _C4RR();
1387 _RYML_ASSERT_VISIT_(m_tree->m_callbacks, after.m_tree == m_tree, m_tree, m_id);
1388 NodeRef r(m_tree, m_tree->insert_sibling(m_id, after.m_id));
1389 return r;
1390 }

◆ insert_sibling() [2/2]

NodeRef c4::yml::NodeRef::insert_sibling ( NodeInit const & i,
ConstNodeRef const & after )
inline

Definition at line 1392 of file node.hpp.

1393 {
1394 _C4RR();
1395 _RYML_ASSERT_VISIT_(m_tree->m_callbacks, after.m_tree == m_tree, m_tree, m_id);
1396 NodeRef r(m_tree, m_tree->insert_sibling(m_id, after.m_id));
1397 r._apply(i);
1398 return r;
1399 }

◆ prepend_sibling() [1/2]

NodeRef c4::yml::NodeRef::prepend_sibling ( )
inline

Definition at line 1401 of file node.hpp.

1402 {
1403 _C4RR();
1404 NodeRef r(m_tree, m_tree->prepend_sibling(m_id));
1405 return r;
1406 }

◆ prepend_sibling() [2/2]

NodeRef c4::yml::NodeRef::prepend_sibling ( NodeInit const & i)
inline

Definition at line 1408 of file node.hpp.

1409 {
1410 _C4RR();
1411 NodeRef r(m_tree, m_tree->prepend_sibling(m_id));
1412 r._apply(i);
1413 return r;
1414 }

◆ append_sibling() [1/2]

NodeRef c4::yml::NodeRef::append_sibling ( )
inline

Definition at line 1416 of file node.hpp.

1417 {
1418 _C4RR();
1419 NodeRef r(m_tree, m_tree->append_sibling(m_id));
1420 return r;
1421 }

◆ append_sibling() [2/2]

NodeRef c4::yml::NodeRef::append_sibling ( NodeInit const & i)
inline

Definition at line 1423 of file node.hpp.

1424 {
1425 _C4RR();
1426 NodeRef r(m_tree, m_tree->append_sibling(m_id));
1427 r._apply(i);
1428 return r;
1429 }

◆ remove_child() [1/3]

void c4::yml::NodeRef::remove_child ( NodeRef & child)
inline

Definition at line 1433 of file node.hpp.

1434 {
1435 _C4RR();
1436 _RYML_ASSERT_VISIT_(m_tree->m_callbacks, has_child(child), m_tree, m_id);
1437 _RYML_ASSERT_VISIT_(m_tree->m_callbacks, child.parent().id() == id(), m_tree, m_id);
1438 m_tree->remove(child.id());
1439 child.clear();
1440 }
bool has_child(ConstNodeRef const &n) const RYML_NOEXCEPT
Definition node.hpp:318
auto child(id_type pos) RYML_NOEXCEPT -> NodeRef
Definition node.hpp:356

◆ remove_child() [2/3]

void c4::yml::NodeRef::remove_child ( id_type pos)
inline

remove the nth child of this node

Definition at line 1443 of file node.hpp.

1444 {
1445 _C4RR();
1446 _RYML_ASSERT_VISIT_(m_tree->m_callbacks, pos >= 0 && pos < num_children(), m_tree, m_id);
1447 id_type child = m_tree->child(m_id, pos);
1448 _RYML_ASSERT_VISIT_(m_tree->m_callbacks, child != NONE, m_tree, m_id);
1449 m_tree->remove(child);
1450 }
RYML_ID_TYPE id_type
The type of a node id in the YAML tree; to override the default type, define the macro RYML_ID_TYPE t...
Definition common.hpp:256

◆ remove_child() [3/3]

void c4::yml::NodeRef::remove_child ( csubstr key)
inline

remove a child by name

Definition at line 1453 of file node.hpp.

1454 {
1455 _C4RR();
1456 id_type child = m_tree->find_child(m_id, key);
1457 _RYML_ASSERT_VISIT_(m_tree->m_callbacks, child != NONE, m_tree, m_id);
1458 m_tree->remove(child);
1459 }

◆ move() [1/2]

void c4::yml::NodeRef::move ( ConstNodeRef const & after)
inline

change the node's position within its parent, placing it after after.

To move to the first position in the parent, simply pass an empty or default-constructed reference like this: n.move({}).

Definition at line 1467 of file node.hpp.

1468 {
1469 _C4RR();
1470 m_tree->move(m_id, after.m_id);
1471 }

◆ move() [2/2]

void c4::yml::NodeRef::move ( NodeRef const & parent,
ConstNodeRef const & after )
inline

move the node to a different parent (which may belong to a different tree), placing it after after.

When the destination parent is in a new tree, then this node's tree pointer is reset to the tree of the parent node.

Definition at line 1477 of file node.hpp.

1478 {
1479 _C4RR();
1480 if(parent.m_tree == m_tree)
1481 {
1482 m_tree->move(m_id, parent.m_id, after.m_id);
1483 }
1484 else
1485 {
1486 parent.m_tree->move(m_tree, m_id, parent.m_id, after.m_id);
1487 m_tree = parent.m_tree;
1488 }
1489 }

◆ duplicate() [1/2]

NodeRef c4::yml::NodeRef::duplicate ( ConstNodeRef const & after) const
inline

duplicate the current node somewhere within its parent, and place it after the node after.

To place into the first position of the parent, simply pass an empty or default-constructed reference like this: n.move({}).

Definition at line 1495 of file node.hpp.

1496 {
1497 _C4RR();
1498 _RYML_ASSERT_VISIT_(m_tree->m_callbacks, m_tree == after.m_tree || after.m_id == NONE, m_tree, m_id);
1499 id_type dup = m_tree->duplicate(m_id, m_tree->parent(m_id), after.m_id);
1500 NodeRef r(m_tree, dup);
1501 return r;
1502 }

◆ duplicate() [2/2]

NodeRef c4::yml::NodeRef::duplicate ( NodeRef const & parent,
ConstNodeRef const & after ) const
inline

duplicate the current node somewhere into a different parent (possibly from a different tree), and place it after the node after.

To place into the first position of the parent, simply pass an empty or default-constructed reference like this: n.move({}).

Definition at line 1509 of file node.hpp.

1510 {
1511 _C4RR();
1512 _RYML_ASSERT_VISIT_(m_tree->m_callbacks, parent.m_tree == after.m_tree || after.m_id == NONE, m_tree, m_id);
1513 if(parent.m_tree == m_tree)
1514 {
1515 id_type dup = m_tree->duplicate(m_id, parent.m_id, after.m_id);
1516 NodeRef r(m_tree, dup);
1517 return r;
1518 }
1519 else
1520 {
1521 id_type dup = parent.m_tree->duplicate(m_tree, m_id, parent.m_id, after.m_id);
1522 NodeRef r(parent.m_tree, dup);
1523 return r;
1524 }
1525 }

◆ duplicate_children()

void c4::yml::NodeRef::duplicate_children ( NodeRef const & parent,
ConstNodeRef const & after ) const
inline

Definition at line 1527 of file node.hpp.

1528 {
1529 _C4RR();
1530 _RYML_ASSERT_VISIT_(m_tree->m_callbacks, parent.m_tree == after.m_tree, m_tree, m_id);
1531 if(parent.m_tree == m_tree)
1532 {
1533 m_tree->duplicate_children(m_id, parent.m_id, after.m_id);
1534 }
1535 else
1536 {
1537 parent.m_tree->duplicate_children(m_tree, m_id, parent.m_id, after.m_id);
1538 }
1539 }

◆ get() [1/2]

NodeData const * c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::get ( ) const
inlineinherited

returns the data or null when the id is NONE

Definition at line 201 of file node.hpp.

201{ return ((Impl const*)this)->readable() ? tree_->get(id_) : nullptr; }
NodeData const * get() const RYML_NOEXCEPT
returns the data or null when the id is NONE
Definition node.hpp:201

◆ get() [2/2]

auto c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::get ( ) ->NodeData *
inlineinherited

returns the data or null when the id is NONE

Definition at line 205 of file node.hpp.

205{ return ((Impl const*)this)->readable() ? tree__->get(id__) : nullptr; }

◆ type()

NodeType c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::type ( ) const
inlineinherited

Forward to Tree::type().

Node must be readable.

Definition at line 207 of file node.hpp.

◆ type_str()

const char * c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::type_str ( ) const
inlineinherited

Forward to Tree::type_str().

Node must be readable.

Definition at line 208 of file node.hpp.

◆ key()

csubstr c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::key ( ) const
inlineinherited

Forward to Tree::key().

Node must be readable.

Definition at line 210 of file node.hpp.

◆ key_tag()

csubstr c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::key_tag ( ) const
inlineinherited

Forward to Tree::key_tag().

Node must be readable.

Definition at line 211 of file node.hpp.

◆ key_ref()

csubstr c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::key_ref ( ) const
inlineinherited

Forward to Tree::key_ref().

Node must be readable.

Definition at line 212 of file node.hpp.

◆ key_anchor()

csubstr c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::key_anchor ( ) const
inlineinherited

Forward to Tree::key_anchor().

Node must be readable.

Definition at line 213 of file node.hpp.

◆ val()

csubstr c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::val ( ) const
inlineinherited

Forward to Tree::val().

Node must be readable.

Definition at line 215 of file node.hpp.

◆ val_tag()

csubstr c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::val_tag ( ) const
inlineinherited

Forward to Tree::val_tag().

Node must be readable.

Definition at line 216 of file node.hpp.

◆ val_ref()

csubstr c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::val_ref ( ) const
inlineinherited

Forward to Tree::val_ref().

Node must be readable.

Definition at line 217 of file node.hpp.

◆ val_anchor()

csubstr c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::val_anchor ( ) const
inlineinherited

Forward to Tree::val_anchor().

Node must be readable.

Definition at line 218 of file node.hpp.

◆ keysc()

NodeScalar const & c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::keysc ( ) const
inlineinherited

Forward to Tree::keysc().

Node must be readable.

Definition at line 220 of file node.hpp.

◆ valsc()

NodeScalar const & c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::valsc ( ) const
inlineinherited

Forward to Tree::valsc().

Node must be readable.

Definition at line 221 of file node.hpp.

◆ key_is_null()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::key_is_null ( ) const
inlineinherited

Forward to Tree::key_is_null().

Node must be readable.

Definition at line 223 of file node.hpp.

◆ val_is_null()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::val_is_null ( ) const
inlineinherited

Forward to Tree::val_is_null().

Node must be readable.

Definition at line 224 of file node.hpp.

◆ is_key_unfiltered()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::is_key_unfiltered ( ) const
inlinenoexceptinherited

Forward to Tree::is_key_unfiltered().

Node must be readable.

Definition at line 226 of file node.hpp.

◆ is_val_unfiltered()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::is_val_unfiltered ( ) const
inlinenoexceptinherited

Forward to Tree::is_val_unfiltered().

Node must be readable.

Definition at line 227 of file node.hpp.

◆ empty()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::empty ( ) const
inlineinherited

Forward to Tree::empty().

Node must be readable.

Definition at line 236 of file node.hpp.

◆ is_stream()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::is_stream ( ) const
inlineinherited

Forward to Tree::is_stream().

Node must be readable.

Definition at line 237 of file node.hpp.

◆ is_doc()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::is_doc ( ) const
inlineinherited

Forward to Tree::is_doc().

Node must be readable.

Definition at line 238 of file node.hpp.

◆ is_container()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::is_container ( ) const
inlineinherited

Forward to Tree::is_container().

Node must be readable.

Definition at line 239 of file node.hpp.

◆ is_map()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::is_map ( ) const
inlineinherited

Forward to Tree::is_map().

Node must be readable.

Definition at line 240 of file node.hpp.

◆ is_seq()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::is_seq ( ) const
inlineinherited

Forward to Tree::is_seq().

Node must be readable.

Definition at line 241 of file node.hpp.

◆ has_val()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::has_val ( ) const
inlineinherited

Forward to Tree::has_val().

Node must be readable.

Definition at line 242 of file node.hpp.

◆ has_key()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::has_key ( ) const
inlineinherited

Forward to Tree::has_key().

Node must be readable.

Definition at line 243 of file node.hpp.

◆ is_val()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::is_val ( ) const
inlineinherited

Forward to Tree::is_val().

Node must be readable.

Definition at line 244 of file node.hpp.

◆ is_keyval()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::is_keyval ( ) const
inlineinherited

Forward to Tree::is_keyval().

Node must be readable.

Definition at line 245 of file node.hpp.

◆ has_key_tag()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::has_key_tag ( ) const
inlineinherited

Forward to Tree::has_key_tag().

Node must be readable.

Definition at line 246 of file node.hpp.

◆ has_val_tag()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::has_val_tag ( ) const
inlineinherited

Forward to Tree::has_val_tag().

Node must be readable.

Definition at line 247 of file node.hpp.

◆ has_key_anchor()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::has_key_anchor ( ) const
inlineinherited

Forward to Tree::has_key_anchor().

Node must be readable.

Definition at line 248 of file node.hpp.

◆ has_val_anchor()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::has_val_anchor ( ) const
inlineinherited

Forward to Tree::has_val_anchor().

Node must be readable.

Definition at line 249 of file node.hpp.

◆ has_anchor()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::has_anchor ( ) const
inlineinherited

Forward to Tree::has_anchor().

Node must be readable.

Definition at line 250 of file node.hpp.

◆ is_key_ref()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::is_key_ref ( ) const
inlineinherited

Forward to Tree::is_key_ref().

Node must be readable.

Definition at line 251 of file node.hpp.

◆ is_val_ref()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::is_val_ref ( ) const
inlineinherited

Forward to Tree::is_val_ref().

Node must be readable.

Definition at line 252 of file node.hpp.

◆ is_ref()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::is_ref ( ) const
inlineinherited

Forward to Tree::is_ref().

Node must be readable.

Definition at line 253 of file node.hpp.

◆ parent_is_seq()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::parent_is_seq ( ) const
inlineinherited

Forward to Tree::parent_is_seq().

Node must be readable.

Definition at line 254 of file node.hpp.

◆ parent_is_map()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::parent_is_map ( ) const
inlineinherited

Forward to Tree::parent_is_map().

Node must be readable.

Definition at line 255 of file node.hpp.

◆ is_key_anchor()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::is_key_anchor ( ) const
inlinenoexceptinherited

Definition at line 257 of file node.hpp.

257{ _C4RR(); return tree_->has_key_anchor(id_); }
bool has_key_anchor() const RYML_NOEXCEPT
Forward to Tree::has_key_anchor().
Definition node.hpp:248

◆ is_val_hanchor()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::is_val_hanchor ( ) const
inlinenoexceptinherited

Definition at line 258 of file node.hpp.

258{ _C4RR(); return tree_->has_val_anchor(id_); }
bool has_val_anchor() const RYML_NOEXCEPT
Forward to Tree::has_val_anchor().
Definition node.hpp:249

◆ is_anchor()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::is_anchor ( ) const
inlinenoexceptinherited

Definition at line 259 of file node.hpp.

259{ _C4RR(); return tree_->has_anchor(id_); }
bool has_anchor() const RYML_NOEXCEPT
Forward to Tree::has_anchor().
Definition node.hpp:250

◆ is_anchor_or_ref()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::is_anchor_or_ref ( ) const
inlinenoexceptinherited

Definition at line 260 of file node.hpp.

260{ _C4RR(); return tree_->is_anchor_or_ref(id_); }
bool is_anchor_or_ref() const noexcept
Definition node.hpp:260

◆ type_has_any()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::type_has_any ( NodeType_e bits) const
inlineinherited

Forward to Tree::type_has_any().

Node must be readable.

Definition at line 271 of file node.hpp.

◆ type_has_all()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::type_has_all ( NodeType_e bits) const
inlineinherited

Forward to Tree::type_has_all().

Node must be readable.

Definition at line 272 of file node.hpp.

◆ type_has_none()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::type_has_none ( NodeType_e bits) const
inlineinherited

Forward to Tree::type_has_none().

Node must be readable.

Definition at line 273 of file node.hpp.

◆ key_style()

NodeType c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::key_style ( ) const
inlineinherited

Forward to Tree::key_style().

Node must be readable.

Definition at line 275 of file node.hpp.

◆ val_style()

NodeType c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::val_style ( ) const
inlineinherited

Forward to Tree::val_style().

Node must be readable.

Definition at line 276 of file node.hpp.

◆ is_container_styled()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::is_container_styled ( ) const
inlineinherited

Forward to Tree::is_container_styled().

Node must be readable.

Definition at line 278 of file node.hpp.

◆ is_block()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::is_block ( ) const
inlineinherited

Forward to Tree::is_block().

Node must be readable.

Definition at line 279 of file node.hpp.

◆ is_flow()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::is_flow ( ) const
inlineinherited

Forward to Tree::is_flow().

Node must be readable.

Definition at line 280 of file node.hpp.

◆ is_flow_sl()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::is_flow_sl ( ) const
inlineinherited

Forward to Tree::is_flow_sl().

Node must be readable.

Definition at line 281 of file node.hpp.

◆ is_flow_ml()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::is_flow_ml ( ) const
inlineinherited

Forward to Tree::is_flow_ml1().

Node must be readable.

Definition at line 283 of file node.hpp.

◆ is_flow_ml1()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::is_flow_ml1 ( ) const
inlineinherited

Forward to Tree::is_flow_ml1().

Node must be readable.

Definition at line 284 of file node.hpp.

◆ is_flow_mln()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::is_flow_mln ( ) const
inlineinherited

Forward to Tree::is_flow_mln().

Node must be readable.

Definition at line 285 of file node.hpp.

◆ is_flow_mlx()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::is_flow_mlx ( ) const
inlineinherited

Forward to Tree::is_flow_mlx().

Node must be readable.

Definition at line 286 of file node.hpp.

◆ has_flow_space()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::has_flow_space ( ) const
inlineinherited

Forward to Tree::has_flow_space().

Node must be readable.

Definition at line 287 of file node.hpp.

◆ is_key_styled()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::is_key_styled ( ) const
inlineinherited

Forward to Tree::is_key_styled().

Node must be readable.

Definition at line 289 of file node.hpp.

◆ is_val_styled()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::is_val_styled ( ) const
inlineinherited

Forward to Tree::is_val_styled().

Node must be readable.

Definition at line 290 of file node.hpp.

◆ is_key_literal()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::is_key_literal ( ) const
inlineinherited

Forward to Tree::is_key_literal().

Node must be readable.

Definition at line 291 of file node.hpp.

◆ is_val_literal()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::is_val_literal ( ) const
inlineinherited

Forward to Tree::is_val_literal().

Node must be readable.

Definition at line 292 of file node.hpp.

◆ is_key_folded()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::is_key_folded ( ) const
inlineinherited

Forward to Tree::is_key_folded().

Node must be readable.

Definition at line 293 of file node.hpp.

◆ is_val_folded()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::is_val_folded ( ) const
inlineinherited

Forward to Tree::is_val_folded().

Node must be readable.

Definition at line 294 of file node.hpp.

◆ is_key_squo()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::is_key_squo ( ) const
inlineinherited

Forward to Tree::is_key_squo().

Node must be readable.

Definition at line 295 of file node.hpp.

◆ is_val_squo()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::is_val_squo ( ) const
inlineinherited

Forward to Tree::is_val_squo().

Node must be readable.

Definition at line 296 of file node.hpp.

◆ is_key_dquo()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::is_key_dquo ( ) const
inlineinherited

Forward to Tree::is_key_dquo().

Node must be readable.

Definition at line 297 of file node.hpp.

◆ is_val_dquo()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::is_val_dquo ( ) const
inlineinherited

Forward to Tree::is_val_dquo().

Node must be readable.

Definition at line 298 of file node.hpp.

◆ is_key_plain()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::is_key_plain ( ) const
inlineinherited

Forward to Tree::is_key_plain().

Node must be readable.

Definition at line 299 of file node.hpp.

◆ is_val_plain()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::is_val_plain ( ) const
inlineinherited

Forward to Tree::is_val_plain().

Node must be readable.

Definition at line 300 of file node.hpp.

◆ is_key_quoted()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::is_key_quoted ( ) const
inlineinherited

Forward to Tree::is_key_quoted().

Node must be readable.

Definition at line 301 of file node.hpp.

◆ is_val_quoted()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::is_val_quoted ( ) const
inlineinherited

Forward to Tree::is_val_quoted().

Node must be readable.

Definition at line 302 of file node.hpp.

◆ is_quoted()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::is_quoted ( ) const
inlineinherited

Forward to Tree::is_quoted().

Node must be readable.

Definition at line 303 of file node.hpp.

◆ is_root()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::is_root ( ) const
inlineinherited

Forward to Tree::is_root().

Node must be readable.

Definition at line 314 of file node.hpp.

◆ has_parent()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::has_parent ( ) const
inlineinherited

Forward to Tree::has_parent() Node must be readable.

Definition at line 315 of file node.hpp.

◆ is_ancestor()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::is_ancestor ( ConstNodeRef const & ancestor) const
inlineinherited

Forward to Tree::is_ancestor() Node must be readable.

Definition at line 316 of file node.hpp.

◆ has_child() [1/3]

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::has_child ( ConstNodeRef const & n) const
inlineinherited

Forward to Tree::has_child().

Node must be readable.

Definition at line 318 of file node.hpp.

◆ has_child() [2/3]

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::has_child ( id_type node) const
inlineinherited

Forward to Tree::has_child().

Node must be readable.

Definition at line 319 of file node.hpp.

◆ has_child() [3/3]

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::has_child ( csubstr name) const
inlineinherited

Forward to Tree::has_child().

Node must be readable.

Definition at line 320 of file node.hpp.

◆ has_children()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::has_children ( ) const
inlineinherited

Forward to Tree::has_children().

Node must be readable.

Definition at line 321 of file node.hpp.

◆ has_sibling() [1/3]

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::has_sibling ( ConstNodeRef const & n) const
inlineinherited

Forward to Tree::has_sibling().

Node must be readable.

Definition at line 323 of file node.hpp.

◆ has_sibling() [2/3]

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::has_sibling ( id_type node) const
inlineinherited

Forward to Tree::has_sibling().

Node must be readable.

Definition at line 324 of file node.hpp.

◆ has_sibling() [3/3]

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::has_sibling ( csubstr name) const
inlineinherited

Forward to Tree::has_sibling().

Node must be readable.

Definition at line 325 of file node.hpp.

◆ has_other_siblings()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::has_other_siblings ( ) const
inlineinherited

Forward to Tree::has_other_siblings().

Node must be readable.

Definition at line 326 of file node.hpp.

◆ has_siblings()

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::has_siblings ( ) const
inlineinherited

Definition at line 328 of file node.hpp.

328{ _C4RR(); return tree_->has_siblings(id_); }
bool has_siblings() const RYML_NOEXCEPT
Definition node.hpp:328

◆ doc() [1/2]

auto c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::doc ( id_type i) ->NodeRef
inlineinherited

Forward to Tree::doc().

Node must be readable.

Definition at line 340 of file node.hpp.

◆ doc() [2/2]

ConstNodeRef c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::doc ( id_type i) const
inlineinherited

Forward to Tree::doc().

Node must be readable. succeeds even when the node may have invalid or seed id

Definition at line 341 of file node.hpp.

◆ parent() [1/2]

auto c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::parent ( ) ->Impl
inlineinherited

Forward to Tree::parent().

Node must be readable.

Definition at line 344 of file node.hpp.

◆ parent() [2/2]

ConstNodeRef c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::parent ( ) const
inlineinherited

Forward to Tree::parent().

Node must be readable.

Definition at line 345 of file node.hpp.

◆ first_child() [1/2]

auto c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::first_child ( ) ->Impl
inlineinherited

Forward to Tree::first_child().

Node must be readable.

Definition at line 348 of file node.hpp.

◆ first_child() [2/2]

ConstNodeRef c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::first_child ( ) const
inlineinherited

Forward to Tree::first_child().

Node must be readable.

Definition at line 349 of file node.hpp.

◆ last_child() [1/2]

auto c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::last_child ( ) ->Impl
inlineinherited

Forward to Tree::last_child().

Node must be readable.

Definition at line 352 of file node.hpp.

◆ last_child() [2/2]

ConstNodeRef c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::last_child ( ) const
inlineinherited

Forward to Tree::last_child().

Node must be readable.

Definition at line 353 of file node.hpp.

◆ child() [1/2]

auto c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::child ( id_type pos) ->NodeRef
inlineinherited

Forward to Tree::child().

Node must be readable.

Definition at line 356 of file node.hpp.

◆ child() [2/2]

ConstNodeRef c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::child ( id_type pos) const
inlineinherited

Forward to Tree::child().

Node must be readable.

Definition at line 357 of file node.hpp.

◆ find_child() [1/2]

auto c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::find_child ( csubstr name) ->NodeRef
inlineinherited

Forward to Tree::find_child().

Node must be readable.

Definition at line 360 of file node.hpp.

◆ find_child() [2/2]

ConstNodeRef c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::find_child ( csubstr name) const
inlineinherited

Forward to Tree::find_child().

Node must be readable.

Definition at line 361 of file node.hpp.

◆ prev_sibling() [1/2]

auto c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::prev_sibling ( ) ->Impl
inlineinherited

Forward to Tree::prev_sibling().

Node must be readable.

Definition at line 364 of file node.hpp.

◆ prev_sibling() [2/2]

ConstNodeRef c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::prev_sibling ( ) const
inlineinherited

Forward to Tree::prev_sibling().

Node must be readable.

Definition at line 365 of file node.hpp.

◆ next_sibling() [1/2]

auto c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::next_sibling ( ) ->Impl
inlineinherited

Forward to Tree::next_sibling().

Node must be readable.

Definition at line 368 of file node.hpp.

◆ next_sibling() [2/2]

ConstNodeRef c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::next_sibling ( ) const
inlineinherited

Forward to Tree::next_sibling().

Node must be readable.

Definition at line 369 of file node.hpp.

◆ first_sibling() [1/2]

auto c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::first_sibling ( ) ->Impl
inlineinherited

Forward to Tree::first_sibling().

Node must be readable.

Definition at line 372 of file node.hpp.

◆ first_sibling() [2/2]

ConstNodeRef c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::first_sibling ( ) const
inlineinherited

Forward to Tree::first_sibling().

Node must be readable.

Definition at line 373 of file node.hpp.

◆ last_sibling() [1/2]

auto c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::last_sibling ( ) ->Impl
inlineinherited

Forward to Tree::last_sibling().

Node must be readable.

Definition at line 376 of file node.hpp.

◆ last_sibling() [2/2]

ConstNodeRef c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::last_sibling ( ) const
inlineinherited

Forward to Tree::last_sibling().

Node must be readable.

Definition at line 377 of file node.hpp.

◆ sibling() [1/2]

auto c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::sibling ( id_type pos) ->NodeRef
inlineinherited

Forward to Tree::sibling().

Node must be readable.

Definition at line 380 of file node.hpp.

◆ sibling() [2/2]

ConstNodeRef c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::sibling ( id_type pos) const
inlineinherited

Forward to Tree::sibling().

Node must be readable.

Definition at line 381 of file node.hpp.

◆ find_sibling() [1/2]

auto c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::find_sibling ( csubstr name) ->NodeRef
inlineinherited

Forward to Tree::find_sibling().

Node must be readable.

Definition at line 384 of file node.hpp.

◆ find_sibling() [2/2]

ConstNodeRef c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::find_sibling ( csubstr name) const
inlineinherited

Forward to Tree::find_sibling().

Node must be readable.

Definition at line 385 of file node.hpp.

◆ ancestor_doc() [1/2]

auto c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::ancestor_doc ( ) ->Impl
inlineinherited

Forward to Tree::ancestor_doc().

Node must be readable.

Definition at line 388 of file node.hpp.

◆ ancestor_doc() [2/2]

ConstNodeRef c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::ancestor_doc ( ) const
inlineinherited

Forward to Tree::ancestor_doc().

Node must be readable.

Definition at line 389 of file node.hpp.

◆ num_children()

id_type c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::num_children ( ) const
inlineinherited

O(num_children).

Forward to Tree::num_children().

Definition at line 391 of file node.hpp.

◆ num_siblings()

id_type c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::num_siblings ( ) const
inlineinherited

O(num_children).

Forward to Tree::num_siblings().

Definition at line 392 of file node.hpp.

◆ num_other_siblings()

id_type c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::num_other_siblings ( ) const
inlineinherited

O(num_siblings).

Forward to Tree::num_other_siblings().

Definition at line 393 of file node.hpp.

◆ child_pos()

id_type c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::child_pos ( ConstNodeRef const & n) const
inlineinherited

O(num_children).

Forward to Tree::child_pos().

Definition at line 394 of file node.hpp.

◆ sibling_pos()

id_type c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::sibling_pos ( ConstNodeRef const & n) const
inlineinherited

O(num_siblings).

Forward to Tree::sibling_pos().

Definition at line 395 of file node.hpp.

◆ depth_asc()

id_type c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::depth_asc ( ) const
inlineinherited

Definition at line 397 of file node.hpp.

397{ _C4RR(); return tree_->depth_asc(id_); } /** O(log(num_nodes)). Forward to Tree::depth_asc(). Node must be readable. */
id_type depth_asc() const RYML_NOEXCEPT
Definition node.hpp:397

◆ depth_desc()

id_type c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::depth_desc ( ) const
inlineinherited

O(log(num_nodes)).

Forward to Tree::depth_asc(). Node must be readable.

Definition at line 398 of file node.hpp.

398{ _C4RR(); return tree_->depth_desc(id_); } /** O(num_nodes). Forward to Tree::depth_desc(). Node must be readable. */
id_type depth_desc() const RYML_NOEXCEPT
O(log(num_nodes)).
Definition node.hpp:398

◆ operator[]() [1/4]

auto c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::operator[] ( csubstr key) ->NodeRef
inlineinherited

Find child by key; complexity is O(num_children).

Returns the requested node, or an object in seed state if no such child is found (see NodeRef for an explanation of what is seed state). 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 caller's responsibility to verify that the returned node is readable before subsequently using it to read from the tree.

Warning
the calling object must be readable. This precondition is asserted. The assertion is performed only if RYML_USE_ASSERT is set to true. As with the non-const overload, it is UB to call this method if the node is not readable.
See also
https://github.com/biojppm/rapidyaml/issues/389

Definition at line 427 of file node.hpp.

428 {
429 _C4RR();
431 return ch != NONE ? Impl(tree__, ch) : Impl(tree__, id__, key);
432 }
auto find_child(csubstr name) RYML_NOEXCEPT -> Impl
Forward to Tree::find_child().
Definition node.hpp:360

◆ operator[]() [2/4]

auto c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::operator[] ( id_type pos) ->NodeRef
inlineinherited

Find child by position; complexity is O(pos).

Returns the requested node, or an object in seed state if no such child is found (see NodeRef for an explanation of what is seed state). 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 caller's responsibility to verify that the returned node is readable before subsequently using it to read from the tree.

Warning
the calling object must be readable. This precondition is asserted. The assertion is performed only if RYML_USE_ASSERT is set to true. As with the non-const overload, it is UB to call this method if the node is not readable.
See also
https://github.com/biojppm/rapidyaml/issues/389

Definition at line 453 of file node.hpp.

454 {
455 _C4RR();
457 return ch != NONE ? Impl(tree__, ch) : Impl(tree__, id__, pos);
458 }

◆ operator[]() [3/4]

ConstNodeRef c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::operator[] ( csubstr key) const
inlineinherited

Find a child by key; complexity is O(num_children).

Behaves similar to the non-const overload, but further asserts that the returned node is readable (because it can never be in a seed state). The assertion is performed only if RYML_USE_ASSERT is set to true. As with the non-const overload, it is UB to use the return value if it is not valid.

See also
https://github.com/biojppm/rapidyaml/issues/389

Definition at line 469 of file node.hpp.

470 {
471 _C4RR();
473 _RYML_ASSERT_VISIT_(tree_->m_callbacks, ch != NONE, tree_, id_);
474 return {tree_, ch};
475 }

◆ operator[]() [4/4]

ConstNodeRef c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::operator[] ( id_type pos) const
inlineinherited

Find a child by position; complexity is O(pos).

Behaves similar to the non-const overload, but further asserts that the returned node is readable (because it can never be in a seed state). This assertion is performed only if RYML_USE_ASSERT is set to true. As with the non-const overload, it is UB to use the return value if it is not valid.

See also
https://github.com/biojppm/rapidyaml/issues/389

Definition at line 486 of file node.hpp.

487 {
488 _C4RR();
490 _RYML_ASSERT_VISIT_(tree_->m_callbacks, ch != NONE, tree_, id_);
491 return {tree_, ch};
492 }

◆ at() [1/4]

auto c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::at ( csubstr key) ->NodeRef
inlineinherited

Find child by key; complexity is O(num_children).

Returns the requested node, or an object in seed state if no such child is found (see NodeRef for an explanation of what is seed state). When the object is in seed state, using it to read from the tree is UB. The seed node can be subsequently used to write to the tree provided that its create() method is called prior to writing, which happens inside most mutating methods in NodeRef. It is the caller's responsibility to verify that the returned node is readable before subsequently using it to read from the tree.

Warning
This method will call the error callback (regardless of build type or of the value of RYML_USE_ASSERT) whenever any of the following preconditions is violated: a) the object is valid (points at a tree and a node), b) the calling object must be readable (must not be in seed state), c) the calling object must be pointing at a MAP node. The preconditions are similar to the non-const operator[](csubstr), but instead of using assertions, this function directly checks those conditions and calls the error callback if any of the checks fail.
Note
since it is valid behavior for the returned node to be in seed state, the error callback is not invoked when this happens.

Definition at line 534 of file node.hpp.

535 {
536 _RYML_CHECK_BASIC(tree_ != nullptr);
537 _RYML_CHECK_VISIT_(tree_->m_callbacks, (id_ >= 0 && id_ < tree_->capacity()), tree_, id_);
538 _RYML_CHECK_VISIT_(tree_->m_callbacks, ((Impl const*)this)->readable(), tree_, id_);
539 _RYML_CHECK_VISIT_(tree_->m_callbacks, tree_->is_map(id_), tree_, id_);
541 return ch != NONE ? Impl(tree__, ch) : Impl(tree__, id__, key);
542 }
bool is_map() const RYML_NOEXCEPT
Forward to Tree::is_map().
Definition node.hpp:240

◆ at() [2/4]

auto c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::at ( id_type pos) ->NodeRef
inlineinherited

Find child by position; complexity is O(pos).

Returns the requested node, or an object in seed state if no such child is found (see NodeRef for an explanation of what is seed state). 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 caller's responsibility to verify that the returned node is readable before subsequently using it to read from the tree.

Warning
This method will call the error callback (regardless of build type or of the value of RYML_USE_ASSERT) whenever any of the following preconditions is violated: a) the object is valid (points at a tree and a node), b) the calling object must be readable (must not be in seed state), c) the calling object must be pointing at a MAP node. The preconditions are similar to the non-const operator[](id_type), but instead of using assertions, this function directly checks those conditions and calls the error callback if any of the checks fail.
Note
since it is valid behavior for the returned node to be in seed state, the error callback is not invoked when this happens.

Definition at line 570 of file node.hpp.

571 {
572 _RYML_CHECK_BASIC(tree_ != nullptr);
573 const id_type cap = tree_->capacity();
574 _RYML_CHECK_VISIT_(tree_->m_callbacks, (id_ >= 0 && id_ < cap), tree_, id_);
575 _RYML_CHECK_VISIT_(tree_->m_callbacks, (pos >= 0 && pos < cap), tree_, id_);
576 _RYML_CHECK_VISIT_(tree_->m_callbacks, ((Impl const*)this)->readable(), tree_, id_);
579 return ch != NONE ? Impl(tree__, ch) : Impl(tree__, id__, pos);
580 }
bool is_container() const RYML_NOEXCEPT
Forward to Tree::is_container().
Definition node.hpp:239

◆ at() [3/4]

ConstNodeRef c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::at ( csubstr key) const
inlineinherited

Get a child by name, with error checking; complexity is O(num_children).

Behaves as operator[](csubstr) const, but always raises an error (even when RYML_USE_ASSERT is set to false) when the returned node does not exist, or when this node is not readable, or when it is not a map. This behaviour is similar to std::vector::at(), but the error consists in calling the error callback instead of directly raising an exception.

Definition at line 591 of file node.hpp.

592 {
593 _RYML_CHECK_BASIC(tree_ != nullptr);
594 _RYML_CHECK_VISIT_(tree_->m_callbacks, (id_ >= 0 && id_ < tree_->capacity()), tree_, id_);
595 _RYML_CHECK_VISIT_(tree_->m_callbacks, ((Impl const*)this)->readable(), tree_, id_);
596 _RYML_CHECK_VISIT_(tree_->m_callbacks, tree_->is_map(id_), tree_, id_);
598 _RYML_CHECK_VISIT_(tree_->m_callbacks, ch != NONE, tree_, id_);
599 return {tree_, ch};
600 }

◆ at() [4/4]

ConstNodeRef c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::at ( id_type pos) const
inlineinherited

Get a child by position, with error checking; complexity is O(pos).

Behaves as operator[](id_type) const, but always raises an error (even when RYML_USE_ASSERT is set to false) when the returned node does not exist, or when this node is not readable, or when it is not a container. This behaviour is similar to std::vector::at(), but the error consists in calling the error callback instead of directly raising an exception.

Definition at line 611 of file node.hpp.

612 {
613 _RYML_CHECK_BASIC(tree_ != nullptr);
614 const id_type cap = tree_->capacity();
615 _RYML_CHECK_VISIT_(tree_->m_callbacks, (id_ >= 0 && id_ < cap), tree_, id_);
616 _RYML_CHECK_VISIT_(tree_->m_callbacks, (pos >= 0 && pos < cap), tree_, id_);
617 _RYML_CHECK_VISIT_(tree_->m_callbacks, ((Impl const*)this)->readable(), tree_, id_);
619 const id_type ch = tree_->child(id_, pos);
620 _RYML_CHECK_VISIT_(tree_->m_callbacks, ch != NONE, tree_, id_);
621 return {tree_, ch};
622 }

◆ location()

Location c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::location ( Parser const & parser) const
inlineinherited

Definition at line 631 of file node.hpp.

632 {
633 _C4RR();
634 return tree_->location(parser, id_);
635 }
Location location(Parser const &parser) const
Definition node.hpp:631

◆ operator>>() [1/3]

ConstNodeRef const & c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::operator>> ( T & v) const
inlineinherited

deserialize the node's val to the given variable, forwarding to the user-overrideable read() function.

Definition at line 647 of file node.hpp.

648 {
649 _C4RR();
650 if( ! read((ConstImpl const&)*this, &v))
651 _RYML_ERR_VISIT_(tree_->m_callbacks, tree_, id_, "could not deserialize value");
652 return *((ConstImpl const*)this);
653 }
bool read(ConstNodeRef const &n, T *v)
Definition node.hpp:1594

◆ operator>>() [2/3]

ConstNodeRef const & c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::operator>> ( T const & wrapper) const
inlineinherited

Definition at line 655 of file node.hpp.

656 {
657 _C4RR();
658 if( ! read((ConstImpl const&)*this, wrapper))
659 _RYML_ERR_VISIT_(tree_->m_callbacks, tree_, id_, "could not deserialize value");
660 return *((ConstImpl const*)this);
661 }

◆ operator>>() [3/3]

ConstNodeRef const & c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::operator>> ( Key< T > v) const
inlineinherited

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)

Definition at line 667 of file node.hpp.

668 {
669 _C4RR();
670 if( ! readkey((ConstImpl const&)*this, &v.k))
671 _RYML_ERR_VISIT_(tree_->m_callbacks, tree_, id_, "could not deserialize key");
672 return *((ConstImpl const*)this);
673 }
bool readkey(ConstNodeRef const &n, T *v)
Definition node.hpp:1616

◆ get_if() [1/2]

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::get_if ( csubstr name,
T * var ) const
inlineinherited

look for a child by name, if it exists assign to var.

return true if the child existed.

Definition at line 678 of file node.hpp.

679 {
680 _C4RR();
682 if(!ch.readable())
683 return false;
684 ch >> *var;
685 return true;
686 }

◆ get_if() [2/2]

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::get_if ( csubstr name,
T * var,
T const & fallback ) const
inlineinherited

look for a child by name, if it exists assign to var, otherwise default to fallback.

return true if the child existed.

Definition at line 692 of file node.hpp.

693 {
694 _C4RR();
696 if(ch.readable())
697 {
698 ch >> *var;
699 return true;
700 }
701 else
702 {
703 *var = fallback;
704 return false;
705 }
706 }

◆ begin() [1/2]

auto c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::begin ( ) ->iterator
inlineinherited

get a mutable iterator to the first child.

NOT AVAILABLE for ConstNodeRef.

Definition at line 731 of file node.hpp.

◆ begin() [2/2]

const_iterator c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::begin ( ) const
inlineinherited

get an iterator to the first child

Definition at line 732 of file node.hpp.

◆ cbegin()

const_iterator c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::cbegin ( ) const
inlineinherited

get an iterator to the first child

Definition at line 733 of file node.hpp.

◆ end() [1/2]

auto c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::end ( ) ->iterator
inlineinherited

get an iterator to after the last child.

NOT AVAILABLE for ConstNodeRef.

Definition at line 736 of file node.hpp.

◆ end() [2/2]

const_iterator c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::end ( ) const
inlineinherited

get an iterator to after the last child

get an iterator to after the last child

Definition at line 738 of file node.hpp.

◆ cend()

const_iterator c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::cend ( ) const
inlineinherited

get an iterator to after the last child

get an iterator to after the last child

Definition at line 740 of file node.hpp.

◆ children() [1/2]

auto c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::children ( ) ->children_view
inlineinherited

get an iterable view over children.

NOT AVAILABLE for ConstNodeRef.

Definition at line 743 of file node.hpp.

◆ children() [2/2]

const_children_view c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::children ( ) const
inlineinherited

get an iterable view over children

Definition at line 744 of file node.hpp.

◆ cchildren()

const_children_view c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::cchildren ( ) const
inlineinherited

get an iterable view over children

Definition at line 745 of file node.hpp.

◆ siblings() [1/2]

auto c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::siblings ( ) ->children_view
inlineinherited

get an iterable view over all siblings (including the calling node)

Definition at line 749 of file node.hpp.

750 {
751 _C4RR();
752 NodeData const *nd = tree__->get(id__);
753 return (nd->m_parent != NONE) ? // does it have a parent?
755 :
756 children_view(end(), end());
757 }
id_type m_first_child
Definition tree.hpp:237
detail::child_iterator< NodeRef > iterator
Definition node.hpp:725
detail::children_view_< NodeRef > children_view
Definition node.hpp:727

◆ siblings() [2/2]

const_children_view c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::siblings ( ) const
inlineinherited

get an iterable view over all siblings (including the calling node)

Definition at line 759 of file node.hpp.

760 {
761 _C4RR();
762 NodeData const *nd = tree_->get(id_);
763 return (nd->m_parent != NONE) ? // does it have a parent?
765 :
767 }
detail::children_view_< ConstNodeRef > const_children_view
Definition node.hpp:728
detail::child_iterator< ConstNodeRef > const_iterator
Definition node.hpp:726

◆ csiblings()

const_children_view c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::csiblings ( ) const
inlineinherited

get an iterable view over all siblings (including the calling node)

Definition at line 769 of file node.hpp.

769{ return siblings(); }
const_children_view siblings() const RYML_NOEXCEPT
Definition node.hpp:759

◆ visit() [1/2]

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::visit ( Visitor fn,
id_type indentation_level = 0,
bool skip_root = true ) const
inlineinherited

visit every child node calling fn(node)

Definition at line 773 of file node.hpp.

774 {
775 _C4RR();
776 return detail::_visit(*(ConstImpl const*)this, fn, indentation_level, skip_root);
777 }

◆ visit() [2/2]

auto c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::visit ( Visitor fn,
id_type indentation_level = 0,
bool skip_root = true )->bool
inlineinherited

visit every child node calling fn(node)

Definition at line 780 of file node.hpp.

782 {
783 _C4RR();
785 }

◆ visit_stacked() [1/2]

bool c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::visit_stacked ( Visitor fn,
id_type indentation_level = 0,
bool skip_root = true ) const
inlineinherited

visit every child node calling fn(node, level)

Definition at line 789 of file node.hpp.

790 {
791 _C4RR();
793 }

◆ visit_stacked() [2/2]

auto c4::yml::detail::RoNodeMethods< NodeRef, ConstNodeRef >::visit_stacked ( Visitor fn,
id_type indentation_level = 0,
bool skip_root = true )->bool
inlineinherited

visit every child node calling fn(node, level)

Definition at line 796 of file node.hpp.

798 {
799 _C4RR();
801 }

◆ detail::RoNodeMethods< NodeRef, ConstNodeRef >

friend struct detail::RoNodeMethods< NodeRef, ConstNodeRef >
friend

Definition at line 995 of file node.hpp.


The documentation for this class was generated from the following file:
  • /home/docs/checkouts/readthedocs.org/user_builds/rapidyaml/checkouts/v0.15.0/src/c4/yml/node.hpp