rapidyaml 0.14.0
parse and emit YAML, and do it fast
Loading...
Searching...
No Matches
c4::yml::ParserState Struct Reference

#include <parser_state.hpp>

Public Member Functions

 ParserState ()=default
void start_parse (const char *file, id_type node_id_)
void reset_after_push ()
void reset_before_pop (ParserState const &to_pop)
bool at_line_beginning () const noexcept
bool at_first_token () const noexcept
bool indentation_eq () const noexcept
bool indentation_eq_extra () const noexcept
bool indentation_ge () const noexcept
bool indentation_ge_extra () const noexcept
bool indentation_gt () const noexcept
bool indentation_gt_extra () const noexcept
bool indentation_lt () const noexcept
bool indentation_lt_extra () const noexcept

Public Attributes

LineContents line_contents
Location pos
ParserFlag_t flags
size_t indref
 the reference indentation in the current block scope
id_type level
id_type node_id
 don't hold a pointer to the node as it will be relocated during tree resizes
size_t scalar_col
bool more_indented
bool has_children

Detailed Description

Definition at line 112 of file parser_state.hpp.

Constructor & Destructor Documentation

◆ ParserState()

c4::yml::ParserState::ParserState ( )
default

Member Function Documentation

◆ start_parse()

void c4::yml::ParserState::start_parse ( const char * file,
id_type node_id_ )
inline

Definition at line 126 of file parser_state.hpp.

127 {
128 level = 0;
129 pos.name = to_csubstr(file);
130 pos.offset = 0;
131 pos.line = 1;
132 pos.col = 1;
133 node_id = node_id_;
134 more_indented = false;
135 scalar_col = 0;
136 indref = 0;
137 has_children = false;
138 }
csubstr to_csubstr(const char(&s)[N]) noexcept
Definition substr.hpp:2381
size_t indref
the reference indentation in the current block scope
id_type node_id
don't hold a pointer to the node as it will be relocated during tree resizes

◆ reset_after_push()

void c4::yml::ParserState::reset_after_push ( )
inline

Definition at line 140 of file parser_state.hpp.

141 {
142 node_id = NONE;
143 indref = npos;
144 more_indented = false;
145 ++level;
146 has_children = false;
147 }
@ npos
a null string position
Definition common.hpp:263
@ NONE
an index to none
Definition common.hpp:256

◆ reset_before_pop()

void c4::yml::ParserState::reset_before_pop ( ParserState const & to_pop)
inline

Definition at line 149 of file parser_state.hpp.

150 {
151 pos = to_pop.pos;
152 line_contents = to_pop.line_contents;
153 }
LineContents line_contents

◆ at_line_beginning()

bool c4::yml::ParserState::at_line_beginning ( ) const
inlinenoexcept

Definition at line 157 of file parser_state.hpp.

158 {
159 return line_contents.rem.str == line_contents.full.str;
160 }

◆ at_first_token()

bool c4::yml::ParserState::at_first_token ( ) const
inlinenoexcept

Definition at line 161 of file parser_state.hpp.

162 {
163 _RYML_ASSERT_BASIC(line_contents.indentation != npos);
164 return pos.col == line_contents.indentation + 1;
165 }

◆ indentation_eq()

bool c4::yml::ParserState::indentation_eq ( ) const
inlinenoexcept

Definition at line 166 of file parser_state.hpp.

167 {
168 _RYML_ASSERT_BASIC(indref != npos);
169 return line_contents.indentation != npos
170 && line_contents.indentation == indref;
171 }

◆ indentation_eq_extra()

bool c4::yml::ParserState::indentation_eq_extra ( ) const
inlinenoexcept

Definition at line 172 of file parser_state.hpp.

173 {
174 _RYML_ASSERT_BASIC(indref != npos);
175 return line_contents.indentation != npos
176 && line_contents.indentation == indref + 1u;
177 }

◆ indentation_ge()

bool c4::yml::ParserState::indentation_ge ( ) const
inlinenoexcept

Definition at line 178 of file parser_state.hpp.

179 {
180 _RYML_ASSERT_BASIC(indref != npos);
181 return line_contents.indentation != npos
182 && line_contents.indentation >= indref;
183 }

◆ indentation_ge_extra()

bool c4::yml::ParserState::indentation_ge_extra ( ) const
inlinenoexcept

Definition at line 184 of file parser_state.hpp.

185 {
186 _RYML_ASSERT_BASIC(indref != npos);
187 return line_contents.indentation != npos
188 && line_contents.indentation >= indref + 1u;
189 }

◆ indentation_gt()

bool c4::yml::ParserState::indentation_gt ( ) const
inlinenoexcept

Definition at line 190 of file parser_state.hpp.

191 {
192 _RYML_ASSERT_BASIC(indref != npos);
193 return line_contents.indentation != npos
194 && line_contents.indentation > indref;
195 }

◆ indentation_gt_extra()

bool c4::yml::ParserState::indentation_gt_extra ( ) const
inlinenoexcept

Definition at line 196 of file parser_state.hpp.

197 {
198 _RYML_ASSERT_BASIC(indref != npos);
199 return line_contents.indentation != npos
200 && line_contents.indentation > indref + 1u;
201 }

◆ indentation_lt()

bool c4::yml::ParserState::indentation_lt ( ) const
inlinenoexcept

Definition at line 202 of file parser_state.hpp.

203 {
204 _RYML_ASSERT_BASIC(indref != npos);
205 return line_contents.indentation != npos && line_contents.indentation < indref;
206 }

◆ indentation_lt_extra()

bool c4::yml::ParserState::indentation_lt_extra ( ) const
inlinenoexcept

Definition at line 207 of file parser_state.hpp.

208 {
209 _RYML_ASSERT_BASIC(indref != npos);
210 return line_contents.indentation != npos
211 && line_contents.indentation < indref + 1u;
212 }

Member Data Documentation

◆ line_contents

LineContents c4::yml::ParserState::line_contents

Definition at line 114 of file parser_state.hpp.

◆ pos

Location c4::yml::ParserState::pos

Definition at line 115 of file parser_state.hpp.

◆ flags

ParserFlag_t c4::yml::ParserState::flags

Definition at line 116 of file parser_state.hpp.

◆ indref

size_t c4::yml::ParserState::indref

the reference indentation in the current block scope

Definition at line 117 of file parser_state.hpp.

◆ level

id_type c4::yml::ParserState::level

Definition at line 118 of file parser_state.hpp.

◆ node_id

id_type c4::yml::ParserState::node_id

don't hold a pointer to the node as it will be relocated during tree resizes

Definition at line 119 of file parser_state.hpp.

◆ scalar_col

size_t c4::yml::ParserState::scalar_col

Definition at line 120 of file parser_state.hpp.

◆ more_indented

bool c4::yml::ParserState::more_indented

Definition at line 121 of file parser_state.hpp.

◆ has_children

bool c4::yml::ParserState::has_children

Definition at line 122 of file parser_state.hpp.


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