8#ifndef INCLUDED_ORCUS_PARSER_BASE_HPP
9#define INCLUDED_ORCUS_PARSER_BASE_HPP
11#include "orcus/env.hpp"
12#include "orcus/exception.hpp"
27 std::ptrdiff_t m_offset;
30 parse_error(
const std::string& cls,
const std::string& msg, std::ptrdiff_t offset);
32 static std::string build_message(
const char* msg_before,
char c,
const char* msg_after);
33 static std::string build_message(
const char* msg_before,
const char* p,
size_t n,
const char* msg_after);
36 std::ptrdiff_t offset()
const;
42 const char*
const mp_begin;
45 const bool m_transient_stream;
48 parser_base(
const char* p,
size_t n,
bool transient_stream);
50 bool transient_stream()
const {
return m_transient_stream; }
54 assert(mp_char <= mp_end);
55 return mp_char != mp_end;
60 assert((mp_char+1) <= mp_end);
61 return (mp_char+1) != mp_end;
64 void next(
size_t inc=1) { mp_char += inc; }
66 void prev(
size_t dec=1);
68 char cur_char()
const {
return *mp_char; }
70 char next_char()
const;
72 void skip(
const char* chars_to_skip,
size_t n_chars_to_skip);
117 return std::distance(mp_char, mp_end);
Definition: exception.hpp:19
Definition: parser_base.hpp:26
parse_error(const std::string &msg, std::ptrdiff_t offset)
offset in the stream where the error occurred.
Definition: parser_base.hpp:40
size_t available_size() const
Definition: parser_base.hpp:115
void skip_space_and_control()
size_t remaining_size() const
std::ptrdiff_t offset() const
bool parse_expected(const char *expected, size_t n_expected)