8#ifndef INCLUDED_ORCUS_SAX_TOKEN_PARSER_HPP
9#define INCLUDED_ORCUS_SAX_TOKEN_PARSER_HPP
11#include "sax_ns_parser.hpp"
24#if ORCUS_DEBUG_SAX_PARSER
25template<
typename _Attr,
typename _Tokens>
29 attr_printer(
const _Tokens& tokens, const ::std::string& indent) :
30 m_tokens(tokens), m_indent(indent) {}
32 void operator() (
const _Attr& attr)
const
35 cout << m_indent <<
" attribute: "
37 << m_tokens.get_token_name(attr.name) <<
"=\""
38 << attr.value.str() <<
"\"" << endl;
41 const _Tokens& m_tokens;
42 ::std::string m_indent;
55 xml_token_t tokenize(std::string_view name)
const;
61 void attribute(std::string_view name, std::string_view val);
117 (void)val; (void)transient;
124template<
typename _Handler>
128 typedef _Handler handler_type;
131 const char* content,
const size_t size,
const tokens& _tokens,
135 const char* content,
const size_t size,
bool transient_stream,
150 handler_type& m_handler;
153 handler_wrapper(
const tokens& _tokens, handler_type& handler) :
158 void start_declaration(std::string_view) {}
160 void end_declaration(std::string_view)
162 m_handler.declaration(m_declaration);
163 m_elem.attrs.clear();
169 m_handler.start_element(m_elem);
170 m_elem.attrs.clear();
176 m_handler.end_element(m_elem);
179 void characters(std::string_view val,
bool transient)
181 m_handler.characters(val, transient);
186 handler_wrapper m_wrapper;
190template<
typename _Handler>
192 const char* content,
const size_t size,
const tokens& _tokens,
xmlns_context& ns_cxt, handler_type& handler) :
193 m_wrapper(_tokens, handler),
194 m_parser(content, size, ns_cxt, m_wrapper)
198template<
typename _Handler>
199sax_token_parser<_Handler>::sax_token_parser(
200 const char* content,
const size_t size,
bool transient_stream,
201 const tokens& _tokens, xmlns_context& ns_cxt, handler_type& handler) :
202 m_wrapper(_tokens, handler),
203 m_parser(content, size, transient_stream, ns_cxt, m_wrapper)
207template<
typename _Handler>
208sax_token_parser<_Handler>::~sax_token_parser()
212template<
typename _Handler>
213void sax_token_parser<_Handler>::parse()
Definition: sax_ns_parser.hpp:115
Definition: sax_token_parser.hpp:49
Definition: sax_token_parser.hpp:66
void declaration(const orcus::xml_declaration_t &decl)
Definition: sax_token_parser.hpp:74
void start_element(const orcus::xml_token_element_t &elem)
Definition: sax_token_parser.hpp:85
void end_element(const orcus::xml_token_element_t &elem)
Definition: sax_token_parser.hpp:96
void characters(std::string_view val, bool transient)
Definition: sax_token_parser.hpp:115
Definition: sax_token_parser.hpp:126
Definition: tokens.hpp:19
Definition: xml_namespace.hpp:82
Definition: sax_parser_base.hpp:45
Definition: sax_ns_parser.hpp:32
Definition: sax_ns_parser.hpp:23
Definition: types.hpp:390
Definition: types.hpp:108