#ifndef ARABICA_XML_FILTER_H #define ARABICA_XML_FILTER_H // XMLFilter.h #include #include #include namespace Arabica { namespace SAX { /** * Interface for an XML filter. * *

An XML filter is like an XML reader, except that it obtains its * events from another XML reader rather than a primary source like * an XML document or database. Filters can modify a stream of * events as they pass on to the final application.

* *

The XMLFilterImpl helper class provides a convenient base * for creating SAX2 filters, by passing on all {@link EntityResolver * EntityResolver}, {@link DTDHandler DTDHandler}, * {@link ContentHandler ContentHandler} and {@link ErrorHandler * ErrorHandler} events automatically.

* * @since SAX 2.0 * @author Jez Higgins, * jez@jezuk.co.uk * @version 2.0 * @see XMLFilterImpl */ template class XMLFilter : public XMLReaderInterface { public: typedef XMLReaderInterface XMLReaderT; typedef typename XMLReaderT::string_adaptor string_adaptor; virtual ~XMLFilter() { } /** * Set the parent reader. * *

This method allows the application to link the filter to * a parent reader (which may be another filter).

* * @param parent The parent reader. */ virtual void setParent(XMLReaderT& parent) = 0; /** * Get the parent reader. * *

This method allows the application to query the parent * reader (which may be another filter). It is generally a * bad idea to perform any operations on the parent reader * directly: they should all pass through this filter.

* * @return The parent filter, or 0 if none has been set. */ virtual XMLReaderT* getParent() const = 0; }; // class XMLFilter } // namespace SAX } // namespace Arabica #endif // end of file