rapidyaml  0.11.1
parse and emit YAML, and do it fast
c4::yml::NodeInit Struct Reference

convenience class to initialize nodes More...

#include <tree.hpp>

Public Member Functions

 NodeInit ()
 initialize as an empty node More...
 
 NodeInit (NodeType_e t)
 initialize as a typed node More...
 
 NodeInit (NodeScalar const &v)
 initialize as a sequence member More...
 
 NodeInit (NodeScalar const &v, NodeType_e t)
 initialize as a sequence member with explicit type More...
 
 NodeInit (NodeScalar const &k, NodeScalar const &v)
 initialize as a mapping member More...
 
 NodeInit (NodeType_e t, NodeScalar const &k, NodeScalar const &v)
 initialize as a mapping member with explicit type More...
 
 NodeInit (NodeType_e t, NodeScalar const &k)
 initialize as a mapping member with explicit type (eg for SEQ or MAP) More...
 
void clear ()
 
void _add_flags (type_bits more_flags=0)
 
bool _check () const
 

Public Attributes

NodeType type
 
NodeScalar key
 
NodeScalar val
 

Detailed Description

convenience class to initialize nodes

Definition at line 158 of file tree.hpp.

Constructor & Destructor Documentation

◆ NodeInit() [1/7]

c4::yml::NodeInit::NodeInit ( )
inline

initialize as an empty node

Definition at line 168 of file tree.hpp.

168 : type(NOTYPE), key(), val() {}
@ NOTYPE
no node type or style is set
Definition: node_type.hpp:35
NodeType type
Definition: tree.hpp:161
NodeScalar key
Definition: tree.hpp:162
NodeScalar val
Definition: tree.hpp:163

◆ NodeInit() [2/7]

c4::yml::NodeInit::NodeInit ( NodeType_e  t)
inline

initialize as a typed node

Definition at line 170 of file tree.hpp.

170 : type(t), key(), val() {}

◆ NodeInit() [3/7]

c4::yml::NodeInit::NodeInit ( NodeScalar const &  v)
inline

initialize as a sequence member

Definition at line 172 of file tree.hpp.

172 : type(VAL), key(), val(v) { _add_flags(); }
@ VAL
a scalar: has a scalar (ie string) value, possibly empty. must be a leaf node, and cannot be MAP or S...
Definition: node_type.hpp:37
void _add_flags(type_bits more_flags=0)
Definition: tree.hpp:191

◆ NodeInit() [4/7]

c4::yml::NodeInit::NodeInit ( NodeScalar const &  v,
NodeType_e  t 
)
inline

initialize as a sequence member with explicit type

Definition at line 174 of file tree.hpp.

174 : type(t|VAL), key(), val(v) { _add_flags(); }

◆ NodeInit() [5/7]

c4::yml::NodeInit::NodeInit ( NodeScalar const &  k,
NodeScalar const &  v 
)
inline

initialize as a mapping member

Definition at line 176 of file tree.hpp.

176 : type(KEYVAL), key(k), val(v) { _add_flags(); }

◆ NodeInit() [6/7]

c4::yml::NodeInit::NodeInit ( NodeType_e  t,
NodeScalar const &  k,
NodeScalar const &  v 
)
inline

initialize as a mapping member with explicit type

Definition at line 178 of file tree.hpp.

178 : type(t), key(k), val(v) { _add_flags(); }

◆ NodeInit() [7/7]

c4::yml::NodeInit::NodeInit ( NodeType_e  t,
NodeScalar const &  k 
)
inline

initialize as a mapping member with explicit type (eg for SEQ or MAP)

Definition at line 180 of file tree.hpp.

180 : type(t), key(k), val( ) { _add_flags(KEY); }
@ KEY
is member of a map
Definition: node_type.hpp:36

References c4::yml::KEY.

Member Function Documentation

◆ clear()

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

Definition at line 184 of file tree.hpp.

185  {
186  type.clear();
187  key.clear();
188  val.clear();
189  }
void clear() noexcept
Definition: tree.hpp:140
void clear() noexcept
Definition: node_type.hpp:140

References c4::yml::NodeType::clear(), c4::yml::NodeScalar::clear(), and c4::yml::key().

◆ _add_flags()

void c4::yml::NodeInit::_add_flags ( type_bits  more_flags = 0)
inline

Definition at line 191 of file tree.hpp.

192  {
193  type = (type|more_flags);
194  if( ! key.tag.empty())
195  type = (type|KEYTAG);
196  if( ! val.tag.empty())
197  type = (type|VALTAG);
198  if( ! key.anchor.empty())
199  type = (type|KEYANCH);
200  if( ! val.anchor.empty())
201  type = (type|VALANCH);
202  }
@ VALANCH
the val has an &anchor
Definition: node_type.hpp:45
@ KEYTAG
the key has a tag
Definition: node_type.hpp:46
@ VALTAG
the val has a tag
Definition: node_type.hpp:47
@ KEYANCH
the key has an &anchor
Definition: node_type.hpp:44
csubstr anchor
Definition: tree.hpp:111

References c4::yml::NodeScalar::anchor, c4::yml::key(), c4::yml::KEYANCH, c4::yml::KEYTAG, c4::yml::NodeScalar::tag, c4::yml::VALANCH, and c4::yml::VALTAG.

◆ _check()

bool c4::yml::NodeInit::_check ( ) const
inline

Definition at line 204 of file tree.hpp.

205  {
206  // key cannot be empty
207  _RYML_ASSERT_BASIC(key.scalar.empty() == ((type & KEY) == 0));
208  // key tag cannot be empty
209  _RYML_ASSERT_BASIC(key.tag.empty() == ((type & KEYTAG) == 0));
210  // val may be empty even though VAL is set. But when VAL is not set, val must be empty
211  _RYML_ASSERT_BASIC(((type & VAL) != 0) || val.scalar.empty());
212  // val tag cannot be empty
213  _RYML_ASSERT_BASIC(val.tag.empty() == ((type & VALTAG) == 0));
214  return true;
215  }
csubstr scalar
Definition: tree.hpp:110

References c4::yml::key(), c4::yml::KEY, c4::yml::KEYTAG, c4::yml::NodeScalar::scalar, c4::yml::NodeScalar::tag, c4::yml::VAL, and c4::yml::VALTAG.

Member Data Documentation

◆ type

NodeType c4::yml::NodeInit::type

Definition at line 161 of file tree.hpp.

◆ key

NodeScalar c4::yml::NodeInit::key

Definition at line 162 of file tree.hpp.

◆ val

NodeScalar c4::yml::NodeInit::val

Definition at line 163 of file tree.hpp.


The documentation for this struct was generated from the following file: