8#ifndef INCLUDED_ORCUS_PARSER_BASE_HPP
9#define INCLUDED_ORCUS_PARSER_BASE_HPP
12#include "exception.hpp"
25 using numeric_parser_type = std::function<
const char*(
const char*,
const char*,
double&)>;
27 const char*
const mp_begin;
32 numeric_parser_type m_func_parse_numeric;
37 void set_numeric_parser(
const numeric_parser_type& func)
39 m_func_parse_numeric = func;
44 assert(mp_char <= mp_end);
45 return mp_char != mp_end;
50 assert((mp_char+1) <= mp_end);
51 return (mp_char+1) != mp_end;
54 void next(
size_t inc=1) { mp_char += inc; }
56 void prev(
size_t dec=1);
58 char cur_char()
const {
return *mp_char; }
96 void skip(std::string_view chars_to_skip);
140 return std::distance(mp_char, mp_end);
Definition parser_base.hpp:23
size_t available_size() const
Definition parser_base.hpp:138
void skip_space_and_control()
size_t remaining_size() const
std::ptrdiff_t offset() const
char peek_char(std::size_t offset=1) const
bool parse_expected(std::string_view expected)
std::string_view peek_chars(std::size_t length) const