rapidyaml  0.11.1
parse and emit YAML, and do it fast
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 indentation_eq () const noexcept
 
bool indentation_ge () const noexcept
 
bool indentation_gt () const noexcept
 
bool indentation_lt () const noexcept
 

Public Attributes

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

Detailed Description

Definition at line 115 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 129 of file parser_state.hpp.

130  {
131  level = 0;
132  pos.name = to_csubstr(file);
133  pos.offset = 0;
134  pos.line = 1;
135  pos.col = 1;
136  node_id = node_id_;
137  more_indented = false;
138  scalar_col = 0;
139  indref = 0;
140  has_children = false;
141  }
csubstr to_csubstr(substr s) noexcept
neutral version for use in generic code
Definition: substr.hpp:2210
size_t col
column
Definition: common.hpp:286
size_t line
line
Definition: common.hpp:285
size_t offset
number of bytes from the beginning of the source buffer
Definition: common.hpp:284
csubstr name
name of the file
Definition: common.hpp:287
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

References c4::yml::Location::col, has_children, indref, level, c4::yml::Location::line, more_indented, c4::yml::Location::name, node_id, c4::yml::Location::offset, pos, scalar_col, and c4::to_csubstr().

◆ reset_after_push()

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

Definition at line 143 of file parser_state.hpp.

144  {
145  node_id = NONE;
146  indref = npos;
147  more_indented = false;
148  ++level;
149  has_children = false;
150  }
@ npos
a null string position
Definition: common.hpp:258
@ NONE
an index to none
Definition: common.hpp:251

References has_children, indref, level, more_indented, node_id, c4::yml::NONE, and c4::yml::npos.

◆ reset_before_pop()

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

Definition at line 152 of file parser_state.hpp.

153  {
154  pos = to_pop.pos;
155  line_contents = to_pop.line_contents;
156  }
LineContents line_contents

References line_contents, and pos.

◆ at_line_beginning()

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

Definition at line 160 of file parser_state.hpp.

161  {
162  return line_contents.rem.str == line_contents.full.str;
163  }
substr rem
current line remainder, without newline characters
substr full
full line, including newline characters \n and \r

References c4::yml::LineContents::full, line_contents, and c4::yml::LineContents::rem.

◆ indentation_eq()

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

Definition at line 164 of file parser_state.hpp.

165  {
166  _RYML_ASSERT_BASIC(indref != npos);
168  }
size_t indentation
number of spaces on the beginning of the line. TODO this should not be a member of this object....

References c4::yml::LineContents::indentation, indref, line_contents, and c4::yml::npos.

◆ indentation_ge()

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

Definition at line 169 of file parser_state.hpp.

170  {
171  _RYML_ASSERT_BASIC(indref != npos);
173  }

References c4::yml::LineContents::indentation, indref, line_contents, and c4::yml::npos.

◆ indentation_gt()

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

Definition at line 174 of file parser_state.hpp.

175  {
176  _RYML_ASSERT_BASIC(indref != npos);
178  }

References c4::yml::LineContents::indentation, indref, line_contents, and c4::yml::npos.

◆ indentation_lt()

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

Definition at line 179 of file parser_state.hpp.

180  {
181  _RYML_ASSERT_BASIC(indref != npos);
183  }

References c4::yml::LineContents::indentation, indref, line_contents, and c4::yml::npos.

Member Data Documentation

◆ line_contents

LineContents c4::yml::ParserState::line_contents

Definition at line 117 of file parser_state.hpp.

◆ pos

Location c4::yml::ParserState::pos

Definition at line 118 of file parser_state.hpp.

◆ flags

ParserFlag_t c4::yml::ParserState::flags

Definition at line 119 of file parser_state.hpp.

◆ indref

size_t c4::yml::ParserState::indref

the reference indentation in the current block scope

Definition at line 120 of file parser_state.hpp.

◆ level

id_type c4::yml::ParserState::level

Definition at line 121 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 122 of file parser_state.hpp.

◆ scalar_col

size_t c4::yml::ParserState::scalar_col

Definition at line 123 of file parser_state.hpp.

◆ more_indented

bool c4::yml::ParserState::more_indented

Definition at line 124 of file parser_state.hpp.

◆ has_children

bool c4::yml::ParserState::has_children

Definition at line 125 of file parser_state.hpp.


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