rapidyaml  0.7.2
parse and emit YAML, and do it fast
node_type.hpp
Go to the documentation of this file.
1 #ifndef C4_YML_NODE_TYPE_HPP_
2 #define C4_YML_NODE_TYPE_HPP_
3 
4 #ifndef _C4_YML_COMMON_HPP_
5 #include "c4/yml/common.hpp"
6 #endif
7 
8 C4_SUPPRESS_WARNING_MSVC_PUSH
9 C4_SUPPRESS_WARNING_GCC_CLANG_PUSH
10 C4_SUPPRESS_WARNING_GCC_CLANG("-Wold-style-cast")
11 
12 namespace c4 {
13 namespace yml {
14 
15 /** @addtogroup doc_node_type
16  *
17  * @{
18  */
19 
20 //-----------------------------------------------------------------------------
21 //-----------------------------------------------------------------------------
22 //-----------------------------------------------------------------------------
23 
24 
25 /** the integral type necessary to cover all the bits for NodeType_e */
26 using type_bits = uint32_t;
27 
28 
29 /** a bit mask for marking node types and styles */
30 typedef enum : type_bits {
31  #define __(v) (type_bits(1) << v) // a convenience define, undefined below
32  NOTYPE = 0, ///< no node type or style is set
33  KEY = __(0), ///< is member of a map, must have non-empty key
34  VAL = __(1), ///< a scalar: has a scalar (ie string) value, possibly empty. must be a leaf node, and cannot be MAP or SEQ
35  MAP = __(2), ///< a map: a parent of KEYVAL/KEYSEQ/KEYMAP nodes
36  SEQ = __(3), ///< a seq: a parent of VAL/SEQ/MAP nodes
37  DOC = __(4), ///< a document
38  STREAM = __(5)|SEQ, ///< a stream: a seq of docs
39  KEYREF = __(6), ///< a *reference: the key references an &anchor
40  VALREF = __(7), ///< a *reference: the val references an &anchor
41  KEYANCH = __(8), ///< the key has an &anchor
42  VALANCH = __(9), ///< the val has an &anchor
43  KEYTAG = __(10), ///< the key has a tag
44  VALTAG = __(11), ///< the val has a tag
45  _TYMASK = __(12)-1, ///< all the bits up to here
46  //
47  // unfiltered flags:
48  //
49  KEY_UNFILT = __(12), ///< the key scalar was left unfiltered; the parser was set not to filter. @see ParserOptions
50  VAL_UNFILT = __(13), ///< the val scalar was left unfiltered; the parser was set not to filter. @see ParserOptions
51  //
52  // style flags:
53  //
54  FLOW_SL = __(14), ///< mark container with single-line flow style (seqs as '[val1,val2], maps as '{key: val,key2: val2}')
55  FLOW_ML = __(15), ///< (NOT IMPLEMENTED, work in progress) mark container with multi-line flow style (seqs as '[\n val1,\n val2\n], maps as '{\n key: val,\n key2: val2\n}')
56  BLOCK = __(16), ///< mark container with block style (seqs as '- val\n', maps as 'key: val')
57  KEY_LITERAL = __(17), ///< mark key scalar as multiline, block literal |
58  VAL_LITERAL = __(18), ///< mark val scalar as multiline, block literal |
59  KEY_FOLDED = __(19), ///< mark key scalar as multiline, block folded >
60  VAL_FOLDED = __(20), ///< mark val scalar as multiline, block folded >
61  KEY_SQUO = __(21), ///< mark key scalar as single quoted '
62  VAL_SQUO = __(22), ///< mark val scalar as single quoted '
63  KEY_DQUO = __(23), ///< mark key scalar as double quoted "
64  VAL_DQUO = __(24), ///< mark val scalar as double quoted "
65  KEY_PLAIN = __(25), ///< mark key scalar as plain scalar (unquoted, even when multiline)
66  VAL_PLAIN = __(26), ///< mark val scalar as plain scalar (unquoted, even when multiline)
67  //
68  // type combination masks:
69  //
76  //
77  // style combination masks:
78  //
84  KEYQUO = KEY_SQUO|KEY_DQUO|KEY_FOLDED|KEY_LITERAL, ///< key style is one of ', ", > or |
85  VALQUO = VAL_SQUO|VAL_DQUO|VAL_FOLDED|VAL_LITERAL, ///< val style is one of ', ", > or |
86  KEY_STYLE = KEY_LITERAL|KEY_FOLDED|KEY_SQUO|KEY_DQUO|KEY_PLAIN, ///< mask of all the scalar styles for key (not container styles!)
87  VAL_STYLE = VAL_LITERAL|VAL_FOLDED|VAL_SQUO|VAL_DQUO|VAL_PLAIN, ///< mask of all the scalar styles for val (not container styles!)
93  //
94  // mixed masks
97  #undef __
98 } NodeType_e;
99 
100 constexpr C4_ALWAYS_INLINE C4_CONST NodeType_e operator| (NodeType_e lhs, NodeType_e rhs) noexcept { return (NodeType_e)(((type_bits)lhs) | ((type_bits)rhs)); }
101 constexpr C4_ALWAYS_INLINE C4_CONST NodeType_e operator& (NodeType_e lhs, NodeType_e rhs) noexcept { return (NodeType_e)(((type_bits)lhs) & ((type_bits)rhs)); }
102 constexpr C4_ALWAYS_INLINE C4_CONST NodeType_e operator>> (NodeType_e bits, uint32_t n) noexcept { return (NodeType_e)(((type_bits)bits) >> n); }
103 constexpr C4_ALWAYS_INLINE C4_CONST NodeType_e operator<< (NodeType_e bits, uint32_t n) noexcept { return (NodeType_e)(((type_bits)bits) << n); }
104 constexpr C4_ALWAYS_INLINE C4_CONST NodeType_e operator~ (NodeType_e bits) noexcept { return (NodeType_e)(~(type_bits)bits); }
105 C4_ALWAYS_INLINE NodeType_e& operator&= (NodeType_e &subject, NodeType_e bits) noexcept { subject = (NodeType_e)((type_bits)subject & (type_bits)bits); return subject; }
106 C4_ALWAYS_INLINE NodeType_e& operator|= (NodeType_e &subject, NodeType_e bits) noexcept { subject = (NodeType_e)((type_bits)subject | (type_bits)bits); return subject; }
107 
108 
109 //-----------------------------------------------------------------------------
110 //-----------------------------------------------------------------------------
111 //-----------------------------------------------------------------------------
112 
113 /** wraps a NodeType_e element with some syntactic sugar and predicates */
115 {
116 public:
117 
119 
120 public:
121 
122  C4_ALWAYS_INLINE NodeType() noexcept : type(NOTYPE) {}
123  C4_ALWAYS_INLINE NodeType(NodeType_e t) noexcept : type(t) {}
124  C4_ALWAYS_INLINE NodeType(type_bits t) noexcept : type((NodeType_e)t) {}
125 
126  C4_ALWAYS_INLINE bool has_any(NodeType_e t) const noexcept { return (type & t) != 0u; }
127  C4_ALWAYS_INLINE bool has_all(NodeType_e t) const noexcept { return (type & t) == t; }
128  C4_ALWAYS_INLINE bool has_none(NodeType_e t) const noexcept { return (type & t) == 0; }
129 
130  C4_ALWAYS_INLINE void set(NodeType_e t) noexcept { type = t; }
131  C4_ALWAYS_INLINE void add(NodeType_e t) noexcept { type = (type|t); }
132  C4_ALWAYS_INLINE void rem(NodeType_e t) noexcept { type = (type & ~t); }
133  C4_ALWAYS_INLINE void addrem(NodeType_e bits_to_add, NodeType_e bits_to_remove) noexcept { type |= bits_to_add; type &= ~bits_to_remove; }
134 
135  C4_ALWAYS_INLINE void clear() noexcept { type = NOTYPE; }
136 
137 public:
138 
139  C4_ALWAYS_INLINE operator NodeType_e & C4_RESTRICT () noexcept { return type; }
140  C4_ALWAYS_INLINE operator NodeType_e const& C4_RESTRICT () const noexcept { return type; }
141 
142 public:
143 
144  /** @name node type queries
145  * @{ */
146 
147  /** return a preset string based on the node type */
148  C4_ALWAYS_INLINE const char *type_str() const noexcept { return type_str(type); }
149  /** return a preset string based on the node type */
150  static const char* type_str(NodeType_e t) noexcept;
151 
152  /** fill a string with the node type flags. If the string is small, returns {null, len} */
153  C4_ALWAYS_INLINE csubstr type_str(substr buf) const noexcept { return type_str(buf, type); }
154  /** fill a string with the node type flags. If the string is small, returns {null, len} */
155  static csubstr type_str(substr buf, NodeType_e t) noexcept;
156 
157 public:
158 
159  /** @name node type queries
160  * @{ */
161 
162  C4_ALWAYS_INLINE bool is_notype() const noexcept { return type == NOTYPE; }
163  C4_ALWAYS_INLINE bool is_stream() const noexcept { return ((type & STREAM) == STREAM) != 0; }
164  C4_ALWAYS_INLINE bool is_doc() const noexcept { return (type & DOC) != 0; }
165  C4_ALWAYS_INLINE bool is_container() const noexcept { return (type & (MAP|SEQ|STREAM)) != 0; }
166  C4_ALWAYS_INLINE bool is_map() const noexcept { return (type & MAP) != 0; }
167  C4_ALWAYS_INLINE bool is_seq() const noexcept { return (type & SEQ) != 0; }
168  C4_ALWAYS_INLINE bool has_key() const noexcept { return (type & KEY) != 0; }
169  C4_ALWAYS_INLINE bool has_val() const noexcept { return (type & VAL) != 0; }
170  C4_ALWAYS_INLINE bool is_val() const noexcept { return (type & KEYVAL) == VAL; }
171  C4_ALWAYS_INLINE bool is_keyval() const noexcept { return (type & KEYVAL) == KEYVAL; }
172  C4_ALWAYS_INLINE bool has_key_tag() const noexcept { return (type & KEYTAG) != 0; }
173  C4_ALWAYS_INLINE bool has_val_tag() const noexcept { return (type & VALTAG) != 0; }
174  C4_ALWAYS_INLINE bool has_key_anchor() const noexcept { return (type & KEYANCH) != 0; }
175  C4_ALWAYS_INLINE bool has_val_anchor() const noexcept { return (type & VALANCH) != 0; }
176  C4_ALWAYS_INLINE bool has_anchor() const noexcept { return (type & (KEYANCH|VALANCH)) != 0; }
177  C4_ALWAYS_INLINE bool is_key_ref() const noexcept { return (type & KEYREF) != 0; }
178  C4_ALWAYS_INLINE bool is_val_ref() const noexcept { return (type & VALREF) != 0; }
179  C4_ALWAYS_INLINE bool is_ref() const noexcept { return (type & (KEYREF|VALREF)) != 0; }
180 
181  C4_ALWAYS_INLINE bool is_key_unfiltered() const noexcept { return (type & (KEY_UNFILT)) != 0; }
182  C4_ALWAYS_INLINE bool is_val_unfiltered() const noexcept { return (type & (VAL_UNFILT)) != 0; }
183 
184  RYML_DEPRECATED("use has_key_anchor()") bool is_key_anchor() const noexcept { return has_key_anchor(); }
185  RYML_DEPRECATED("use has_val_anchor()") bool is_val_anchor() const noexcept { return has_val_anchor(); }
186  RYML_DEPRECATED("use has_anchor()") bool is_anchor() const noexcept { return has_anchor(); }
187  RYML_DEPRECATED("use has_anchor() || is_ref()") bool is_anchor_or_ref() const noexcept { return has_anchor() || is_ref(); }
188  /** @} */
189 
190 public:
191 
192  /** @name container+scalar style queries
193  * @{ */
194 
195  C4_ALWAYS_INLINE bool is_container_styled() const noexcept { return (type & (CONTAINER_STYLE)) != 0; }
196  C4_ALWAYS_INLINE bool is_block() const noexcept { return (type & (BLOCK)) != 0; }
197  C4_ALWAYS_INLINE bool is_flow_sl() const noexcept { return (type & (FLOW_SL)) != 0; }
198  C4_ALWAYS_INLINE bool is_flow_ml() const noexcept { return (type & (FLOW_ML)) != 0; }
199  C4_ALWAYS_INLINE bool is_flow() const noexcept { return (type & (FLOW_ML|FLOW_SL)) != 0; }
200 
201  C4_ALWAYS_INLINE bool is_key_styled() const noexcept { return (type & (KEY_STYLE)) != 0; }
202  C4_ALWAYS_INLINE bool is_val_styled() const noexcept { return (type & (VAL_STYLE)) != 0; }
203  C4_ALWAYS_INLINE bool is_key_literal() const noexcept { return (type & (KEY_LITERAL)) != 0; }
204  C4_ALWAYS_INLINE bool is_val_literal() const noexcept { return (type & (VAL_LITERAL)) != 0; }
205  C4_ALWAYS_INLINE bool is_key_folded() const noexcept { return (type & (KEY_FOLDED)) != 0; }
206  C4_ALWAYS_INLINE bool is_val_folded() const noexcept { return (type & (VAL_FOLDED)) != 0; }
207  C4_ALWAYS_INLINE bool is_key_squo() const noexcept { return (type & (KEY_SQUO)) != 0; }
208  C4_ALWAYS_INLINE bool is_val_squo() const noexcept { return (type & (VAL_SQUO)) != 0; }
209  C4_ALWAYS_INLINE bool is_key_dquo() const noexcept { return (type & (KEY_DQUO)) != 0; }
210  C4_ALWAYS_INLINE bool is_val_dquo() const noexcept { return (type & (VAL_DQUO)) != 0; }
211  C4_ALWAYS_INLINE bool is_key_plain() const noexcept { return (type & (KEY_PLAIN)) != 0; }
212  C4_ALWAYS_INLINE bool is_val_plain() const noexcept { return (type & (VAL_PLAIN)) != 0; }
213  C4_ALWAYS_INLINE bool is_key_quoted() const noexcept { return (type & KEYQUO) != 0; }
214  C4_ALWAYS_INLINE bool is_val_quoted() const noexcept { return (type & VALQUO) != 0; }
215  C4_ALWAYS_INLINE bool is_quoted() const noexcept { return (type & (KEYQUO|VALQUO)) != 0; }
216 
217  C4_ALWAYS_INLINE void set_container_style(NodeType_e style) noexcept { type = ((style & CONTAINER_STYLE) | (type & ~CONTAINER_STYLE)); }
218  C4_ALWAYS_INLINE void set_key_style(NodeType_e style) noexcept { type = ((style & KEY_STYLE) | (type & ~KEY_STYLE)); }
219  C4_ALWAYS_INLINE void set_val_style(NodeType_e style) noexcept { type = ((style & VAL_STYLE) | (type & ~VAL_STYLE)); }
220 
221  /** @} */
222 
223 };
224 
225 
226 //-----------------------------------------------------------------------------
227 //-----------------------------------------------------------------------------
228 //-----------------------------------------------------------------------------
229 
230 /** @name scalar style helpers
231  * @{ */
232 
233 /** choose a YAML emitting style based on the scalar's contents */
234 RYML_EXPORT NodeType_e scalar_style_choose(csubstr scalar) noexcept;
235 
236 /** choose a json style based on the scalar's contents */
237 RYML_EXPORT NodeType_e scalar_style_json_choose(csubstr scalar) noexcept;
238 
239 /** query whether a scalar can be encoded using single quotes.
240  * It may not be possible, notably when there is leading
241  * whitespace after a newline. */
242 RYML_EXPORT bool scalar_style_query_squo(csubstr s) noexcept;
243 
244 /** query whether a scalar can be encoded using plain style (no
245  * quotes, not a literal/folded block scalar). */
246 RYML_EXPORT bool scalar_style_query_plain(csubstr s) noexcept;
247 
248 /** YAML-sense query of nullity. returns true if the scalar points
249  * to `nullptr` or is otherwise equal to one of the strings
250  * `"~"`,`"null"`,`"Null"`,`"NULL"` */
251 RYML_EXPORT inline C4_NO_INLINE bool scalar_is_null(csubstr s) noexcept
252 {
253  return s.str == nullptr ||
254  s == "~" ||
255  s == "null" ||
256  s == "Null" ||
257  s == "NULL";
258 }
259 
260 /** @} */
261 
262 
263 /** @} */
264 
265 } // namespace yml
266 } // namespace c4
267 
268 C4_SUPPRESS_WARNING_MSVC_POP
269 C4_SUPPRESS_WARNING_GCC_CLANG_POP
270 
271 #endif /* C4_YML_NODE_TYPE_HPP_ */
Common utilities and infrastructure used by ryml.
#define RYML_EXPORT
Definition: export.hpp:15
constexpr C4_CONST NodeType_e operator&(NodeType_e lhs, NodeType_e rhs) noexcept
Definition: node_type.hpp:101
constexpr C4_CONST NodeType_e operator|(NodeType_e lhs, NodeType_e rhs) noexcept
Definition: node_type.hpp:100
bool scalar_is_null(csubstr s) noexcept
YAML-sense query of nullity.
Definition: node_type.hpp:251
NodeType_e & operator|=(NodeType_e &subject, NodeType_e bits) noexcept
Definition: node_type.hpp:106
constexpr C4_CONST NodeType_e operator>>(NodeType_e bits, uint32_t n) noexcept
Definition: node_type.hpp:102
NodeType_e scalar_style_json_choose(csubstr s) noexcept
choose a json style based on the scalar's contents
Definition: node_type.cpp:189
bool scalar_style_query_squo(csubstr s) noexcept
query whether a scalar can be encoded using single quotes.
Definition: node_type.cpp:141
bool scalar_style_query_plain(csubstr s) noexcept
query whether a scalar can be encoded using plain style (no quotes, not a literal/folded block scalar...
Definition: node_type.cpp:147
NodeType_e scalar_style_choose(csubstr s) noexcept
choose a YAML emitting style based on the scalar's contents
Definition: node_type.cpp:169
constexpr C4_CONST NodeType_e operator<<(NodeType_e bits, uint32_t n) noexcept
Definition: node_type.hpp:103
uint32_t type_bits
the integral type necessary to cover all the bits for NodeType_e
Definition: node_type.hpp:26
NodeType_e & operator&=(NodeType_e &subject, NodeType_e bits) noexcept
Definition: node_type.hpp:105
constexpr C4_CONST NodeType_e operator~(NodeType_e bits) noexcept
Definition: node_type.hpp:104
NodeType_e
a bit mask for marking node types and styles
Definition: node_type.hpp:30
@ VALANCH
the val has an &anchor
Definition: node_type.hpp:42
@ NOTYPE
no node type or style is set
Definition: node_type.hpp:32
@ SCALAR_FOLDED
Definition: node_type.hpp:80
@ KEY_DQUO
mark key scalar as double quoted "
Definition: node_type.hpp:63
@ VALREF
a *reference: the val references an &anchor
Definition: node_type.hpp:40
@ MAP
a map: a parent of KEYVAL/KEYSEQ/KEYMAP nodes
Definition: node_type.hpp:35
@ STREAM
a stream: a seq of docs
Definition: node_type.hpp:38
@ KEY
is member of a map, must have non-empty key
Definition: node_type.hpp:33
@ KEYQUO
key style is one of ', ", > or |
Definition: node_type.hpp:84
@ VAL_FOLDED
mark val scalar as multiline, block folded >
Definition: node_type.hpp:60
@ CONTAINER_STYLE_BLOCK
Definition: node_type.hpp:90
@ _KEYMASK
Definition: node_type.hpp:95
@ VAL_STYLE
mask of all the scalar styles for val (not container styles!)
Definition: node_type.hpp:87
@ KEYTAG
the key has a tag
Definition: node_type.hpp:43
@ CONTAINER_STYLE_FLOW
Definition: node_type.hpp:89
@ SCALAR_SQUO
Definition: node_type.hpp:81
@ FLOW_SL
mark container with single-line flow style (seqs as '[val1,val2], maps as '{key: val,...
Definition: node_type.hpp:54
@ FLOW_ML
(NOT IMPLEMENTED, work in progress) mark container with multi-line flow style (seqs as '[ val1,...
Definition: node_type.hpp:55
@ VAL_UNFILT
the val scalar was left unfiltered; the parser was set not to filter.
Definition: node_type.hpp:50
@ 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:34
@ VALTAG
the val has a tag
Definition: node_type.hpp:44
@ SCALAR_STYLE
Definition: node_type.hpp:88
@ _TYMASK
all the bits up to here
Definition: node_type.hpp:45
@ SCALAR_LITERAL
Definition: node_type.hpp:79
@ SEQ
a seq: a parent of VAL/SEQ/MAP nodes
Definition: node_type.hpp:36
@ SCALAR_DQUO
Definition: node_type.hpp:82
@ VAL_SQUO
mark val scalar as single quoted '
Definition: node_type.hpp:62
@ KEY_STYLE
mask of all the scalar styles for key (not container styles!)
Definition: node_type.hpp:86
@ VAL_PLAIN
mark val scalar as plain scalar (unquoted, even when multiline)
Definition: node_type.hpp:66
@ KEYREF
a *reference: the key references an &anchor
Definition: node_type.hpp:39
@ BLOCK
mark container with block style (seqs as '- val ', maps as 'key: val')
Definition: node_type.hpp:56
@ KEYANCH
the key has an &anchor
Definition: node_type.hpp:41
@ VALQUO
val style is one of ', ", > or |
Definition: node_type.hpp:85
@ VAL_DQUO
mark val scalar as double quoted "
Definition: node_type.hpp:64
@ CONTAINER_STYLE
Definition: node_type.hpp:91
@ KEY_UNFILT
the key scalar was left unfiltered; the parser was set not to filter.
Definition: node_type.hpp:49
@ KEY_SQUO
mark key scalar as single quoted '
Definition: node_type.hpp:61
@ VAL_LITERAL
mark val scalar as multiline, block literal |
Definition: node_type.hpp:58
@ KEY_LITERAL
mark key scalar as multiline, block literal |
Definition: node_type.hpp:57
@ KEY_PLAIN
mark key scalar as plain scalar (unquoted, even when multiline)
Definition: node_type.hpp:65
@ SCALAR_PLAIN
Definition: node_type.hpp:83
@ _VALMASK
Definition: node_type.hpp:96
@ KEY_FOLDED
mark key scalar as multiline, block folded >
Definition: node_type.hpp:59
@ DOC
a document
Definition: node_type.hpp:37
Definition: common.cpp:12
#define __(v)
Definition: node_type.hpp:31
wraps a NodeType_e element with some syntactic sugar and predicates
Definition: node_type.hpp:115
bool has_all(NodeType_e t) const noexcept
Definition: node_type.hpp:127
bool is_val_squo() const noexcept
Definition: node_type.hpp:208
bool is_key_plain() const noexcept
Definition: node_type.hpp:211
bool has_key() const noexcept
Definition: node_type.hpp:168
bool is_quoted() const noexcept
Definition: node_type.hpp:215
bool is_val_folded() const noexcept
Definition: node_type.hpp:206
bool has_none(NodeType_e t) const noexcept
Definition: node_type.hpp:128
bool has_key_tag() const noexcept
Definition: node_type.hpp:172
bool is_ref() const noexcept
Definition: node_type.hpp:179
NodeType(NodeType_e t) noexcept
Definition: node_type.hpp:123
void set_container_style(NodeType_e style) noexcept
Definition: node_type.hpp:217
bool is_key_ref() const noexcept
Definition: node_type.hpp:177
void set_key_style(NodeType_e style) noexcept
Definition: node_type.hpp:218
bool has_any(NodeType_e t) const noexcept
Definition: node_type.hpp:126
bool is_key_dquo() const noexcept
Definition: node_type.hpp:209
bool is_doc() const noexcept
Definition: node_type.hpp:164
bool is_seq() const noexcept
Definition: node_type.hpp:167
bool is_val_plain() const noexcept
Definition: node_type.hpp:212
bool is_notype() const noexcept
Definition: node_type.hpp:162
bool is_key_quoted() const noexcept
Definition: node_type.hpp:213
bool is_flow_ml() const noexcept
Definition: node_type.hpp:198
void rem(NodeType_e t) noexcept
Definition: node_type.hpp:132
const char * type_str() const noexcept
return a preset string based on the node type
Definition: node_type.hpp:148
bool has_val_anchor() const noexcept
Definition: node_type.hpp:175
bool is_key_unfiltered() const noexcept
Definition: node_type.hpp:181
bool has_val_tag() const noexcept
Definition: node_type.hpp:173
bool is_key_literal() const noexcept
Definition: node_type.hpp:203
bool is_key_squo() const noexcept
Definition: node_type.hpp:207
bool has_anchor() const noexcept
Definition: node_type.hpp:176
NodeType(type_bits t) noexcept
Definition: node_type.hpp:124
bool has_key_anchor() const noexcept
Definition: node_type.hpp:174
bool has_val() const noexcept
Definition: node_type.hpp:169
void clear() noexcept
Definition: node_type.hpp:135
bool is_val_unfiltered() const noexcept
Definition: node_type.hpp:182
bool is_flow_sl() const noexcept
Definition: node_type.hpp:197
bool is_map() const noexcept
Definition: node_type.hpp:166
bool is_val_styled() const noexcept
Definition: node_type.hpp:202
bool is_key_folded() const noexcept
Definition: node_type.hpp:205
bool is_container() const noexcept
Definition: node_type.hpp:165
bool is_container_styled() const noexcept
Definition: node_type.hpp:195
bool is_val_literal() const noexcept
Definition: node_type.hpp:204
bool is_key_styled() const noexcept
Definition: node_type.hpp:201
NodeType_e type
Definition: node_type.hpp:118
bool is_block() const noexcept
Definition: node_type.hpp:196
void set_val_style(NodeType_e style) noexcept
Definition: node_type.hpp:219
void addrem(NodeType_e bits_to_add, NodeType_e bits_to_remove) noexcept
Definition: node_type.hpp:133
void add(NodeType_e t) noexcept
Definition: node_type.hpp:131
csubstr type_str(substr buf) const noexcept
fill a string with the node type flags.
Definition: node_type.hpp:153
void set(NodeType_e t) noexcept
Definition: node_type.hpp:130
bool is_keyval() const noexcept
Definition: node_type.hpp:171
bool is_val() const noexcept
Definition: node_type.hpp:170
bool is_val_ref() const noexcept
Definition: node_type.hpp:178
bool is_val_quoted() const noexcept
Definition: node_type.hpp:214
bool is_val_dquo() const noexcept
Definition: node_type.hpp:210
bool is_stream() const noexcept
Definition: node_type.hpp:163
NodeType() noexcept
Definition: node_type.hpp:122
bool is_flow() const noexcept
Definition: node_type.hpp:199