8#ifndef INCLUDED_ORCUS_SAX_PARSER_BASE_HPP
9#define INCLUDED_ORCUS_SAX_PARSER_BASE_HPP
12#include "cell_buffer.hpp"
13#include "parser_global.hpp"
14#include "parser_base.hpp"
22#define ORCUS_DEBUG_SAX_PARSER 0
24#if ORCUS_DEBUG_SAX_PARSER
30namespace orcus {
namespace sax {
46 enum class keyword_type { dtd_public, dtd_private };
49 std::string_view root_element;
65ORCUS_PSR_DLLPUBLIC
char decode_xml_encoded_char(
const char* p,
size_t n);
78ORCUS_PSR_DLLPUBLIC std::string decode_xml_unicode_char(
const char* p,
size_t n);
87 std::string_view name;
88 std::ptrdiff_t begin_pos;
89 std::ptrdiff_t end_pos;
102 std::string_view name;
103 std::string_view value;
110 std::unique_ptr<impl> mp_impl;
118 bool m_root_elem_open:1;
121 parser_base(
const char* content,
size_t size,
bool transient_stream);
131 void nest_up() { ++m_nest_level; }
134 if (m_nest_level == 0)
140 void inc_buffer_pos();
141 void reset_buffer_pos() { m_buffer_pos = 0; }
143 void has_char_throw(
const char* msg)
const
158#if ORCUS_DEBUG_SAX_PARSER
159 if (mp_char >= mp_end)
162 return mp_end - mp_char;
165 char cur_char_checked()
const
176#if ORCUS_DEBUG_SAX_PARSER
177 if (mp_char >= mp_end)
178 throw malformed_xml_error(
"xml stream ended prematurely.", offset());
183 char next_char_checked()
187 throw malformed_xml_error(
"xml stream ended prematurely.", offset());
192 cell_buffer& get_cell_buffer();
201 void expects_next(
const char* p,
size_t n);
204 void value_with_encoded_char(
cell_buffer& buf, std::string_view& str,
char quote_char);
214 bool value(std::string_view& str,
bool decode);
216 void name(std::string_view& str);
217 void element_name(
parser_element& elem, std::ptrdiff_t begin_pos);
218 void attribute_name(std::string_view& attr_ns, std::string_view& attr_name);
219 void characters_with_encoded_char(
cell_buffer& buf);
Definition cell_buffer.hpp:22
Definition parser_base.hpp:27
Definition parser_base.hpp:41
Definition sax_parser_base.hpp:108
size_t remains() const
Definition sax_parser_base.hpp:156
bool value(std::string_view &str, bool decode)
Definition sax_parser_base.hpp:45
Definition sax_parser_base.hpp:100
Definition sax_parser_base.hpp:85