glibmm 2.80.0
Public Types | Public Member Functions | Protected Member Functions | List of all members
Glib::Markup::Parser Class Referenceabstract

The abstract markup parser base class. More...

#include <glibmm/markup.h>

Inheritance diagram for Glib::Markup::Parser:
Inheritance graph
[legend]

Public Types

typedef std::map< Glib::ustring, Glib::ustring, Glib::Markup::AttributeKeyLessAttributeMap
 

Public Member Functions

virtual ~Parser ()=0
 

Protected Member Functions

 Parser ()
 Constructs a Parser object. More...
 
 Parser (const Parser &)=delete
 
Parseroperator= (const Parser &)=delete
 
 Parser (Parser && other) noexcept
 
Parseroperator= (Parser && other) noexcept
 
virtual void on_start_element (ParseContext & context, const Glib::ustring & element_name, const AttributeMap & attributes)
 Called for open tags <foo bar="baz">. More...
 
virtual void on_end_element (ParseContext & context, const Glib::ustring & element_name)
 Called for close tags </foo>. More...
 
virtual void on_text (ParseContext & context, const Glib::ustring & text)
 Called for character data. More...
 
virtual void on_passthrough (ParseContext & context, const Glib::ustring & passthrough_text)
 Called for strings that should be re-saved verbatim in this same position, but are not otherwise interpretable. More...
 
virtual void on_error (ParseContext & context, const MarkupError & error)
 Called on error, including one thrown by an overridden virtual method. More...
 

Detailed Description

The abstract markup parser base class.

To implement a parser for your markup format, derive from Glib::Markup::Parser and implement the virtual methods.

You don't have to override all of the virtual methods. If a particular method is not implement the data passed to it will be ignored. Except for the error method, any of these callbacks can throw an error exception; in particular the MarkupError::UNKNOWN_ELEMENT, MarkupError::UNKNOWN_ATTRIBUTE, and MarkupError::INVALID_CONTENT errors are intended to be thrown from these overridden methods. If you throw an error from a method, Glib::Markup::ParseContext::parse() will report that error back to its caller.

Member Typedef Documentation

◆ AttributeMap

Constructor & Destructor Documentation

◆ ~Parser()

virtual Glib::Markup::Parser::~Parser ( )
pure virtual

◆ Parser() [1/3]

Glib::Markup::Parser::Parser ( )
protected

Constructs a Parser object.

Note that Markup::Parser is an abstract class which can't be instantiated directly. To implement the parser for your markup format, derive from Markup::Parser and implement the virtual methods.

◆ Parser() [2/3]

Glib::Markup::Parser::Parser ( const Parser )
protecteddelete

◆ Parser() [3/3]

Glib::Markup::Parser::Parser ( Parser &&  other)
protectednoexcept

Member Function Documentation

◆ on_end_element()

virtual void Glib::Markup::Parser::on_end_element ( ParseContext context,
const Glib::ustring element_name 
)
protectedvirtual

Called for close tags </foo>.

This virtual method is invoked when the closing tag of an element is seen.

Parameters
contextThe Markup::ParseContext object the parsed data belongs to.
element_nameThe name of the element.
Exceptions
Glib::MarkupErrorAn exception you should throw if something went wrong, for instance if an unknown attribute name was encountered. In particular the MarkupError::UNKNOWN_ELEMENT, MarkupError::UNKNOWN_ATTRIBUTE, and MarkupError::INVALID_CONTENT errors are intended to be thrown from user-implemented methods.

◆ on_error()

virtual void Glib::Markup::Parser::on_error ( ParseContext context,
const MarkupError error 
)
protectedvirtual

Called on error, including one thrown by an overridden virtual method.

Parameters
contextThe Markup::ParseContext object the parsed data belongs to.
errorA MarkupError object with detailed information about the error.

◆ on_passthrough()

virtual void Glib::Markup::Parser::on_passthrough ( ParseContext context,
const Glib::ustring passthrough_text 
)
protectedvirtual

Called for strings that should be re-saved verbatim in this same position, but are not otherwise interpretable.

This virtual method is invoked for comments, processing instructions and doctype declarations; if you're re-writing the parsed document, write the passthrough text back out in the same position.

Parameters
contextThe Markup::ParseContext object the parsed data belongs to.
passthrough_textThe text that should be passed through.
Exceptions
Glib::MarkupErrorAn exception you should throw if something went wrong, for instance if an unknown attribute name was encountered. In particular the MarkupError::UNKNOWN_ELEMENT, MarkupError::UNKNOWN_ATTRIBUTE, and MarkupError::INVALID_CONTENT errors are intended to be thrown from user-implemented methods.

◆ on_start_element()

virtual void Glib::Markup::Parser::on_start_element ( ParseContext context,
const Glib::ustring element_name,
const AttributeMap attributes 
)
protectedvirtual

Called for open tags <foo bar="baz">.

This virtual method is invoked when the opening tag of an element is seen.

Parameters
contextThe Markup::ParseContext object the parsed data belongs to.
element_nameThe name of the element.
attributesA map of attribute name/value pairs.
Exceptions
Glib::MarkupErrorAn exception you should throw if something went wrong, for instance if an unknown attribute name was encountered. In particular the MarkupError::UNKNOWN_ELEMENT, MarkupError::UNKNOWN_ATTRIBUTE, and MarkupError::INVALID_CONTENT errors are intended to be thrown from user-implemented methods.

◆ on_text()

virtual void Glib::Markup::Parser::on_text ( ParseContext context,
const Glib::ustring text 
)
protectedvirtual

Called for character data.

This virtual method is invoked when some text is seen (text is always inside an element).

Parameters
contextThe Markup::ParseContext object the parsed data belongs to.
textThe parsed text in UTF-8 encoding.
Exceptions
Glib::MarkupErrorAn exception you should throw if something went wrong, for instance if an unknown attribute name was encountered. In particular the MarkupError::UNKNOWN_ELEMENT, MarkupError::UNKNOWN_ATTRIBUTE, and MarkupError::INVALID_CONTENT errors are intended to be thrown from user-implemented methods.

◆ operator=() [1/2]

Parser & Glib::Markup::Parser::operator= ( const Parser )
protecteddelete

◆ operator=() [2/2]

Parser & Glib::Markup::Parser::operator= ( Parser &&  other)
protectednoexcept