removed basic_ prefixes from SAX classes, removed typedefs

This commit is contained in:
jez 2007-09-05 12:57:07 +00:00
parent 7d46f6f4e2
commit a76b137b60
89 changed files with 819 additions and 975 deletions

View file

@ -27,7 +27,7 @@ int main(int argc, char* argv[])
for(int i = 1; i < argc; ++i) for(int i = 1; i < argc; ++i)
{ {
std::string file(argv[i]); std::string file(argv[i]);
Arabica::SAX::InputSource is; Arabica::SAX::InputSource<std::string> is;
is.setSystemId(file); is.setSystemId(file);
if(file != "-") if(file != "-")

View file

@ -7,9 +7,9 @@
////////////////////////////////////////////// //////////////////////////////////////////////
// EntityResolver // EntityResolver
Arabica::SAX::InputSource SimpleHandler::resolveEntity(const std::string& publicId, const std::string& systemId) Arabica::SAX::InputSource<std::string> SimpleHandler::resolveEntity(const std::string& publicId, const std::string& systemId)
{ {
return Arabica::SAX::InputSource(); return Arabica::SAX::InputSource<std::string>();
} // resolveEntity } // resolveEntity
////////////////////////////////////////////// //////////////////////////////////////////////
@ -57,7 +57,7 @@ void SimpleHandler::endPrefixMapping(const std::string& prefix)
} // startPrefixMapping } // startPrefixMapping
void SimpleHandler::startElement(const std::string& namespaceURI, const std::string& localName, void SimpleHandler::startElement(const std::string& namespaceURI, const std::string& localName,
const std::string& qName, const Arabica::SAX::Attributes& atts) const std::string& qName, const Arabica::SAX::Attributes<std::string>& atts)
{ {
if(localName.length()) if(localName.length())
std::cout << "Start Element: " << namespaceURI << ":" << localName << std::endl; std::cout << "Start Element: " << namespaceURI << ":" << localName << std::endl;
@ -93,17 +93,17 @@ void SimpleHandler::skippedEntity(const std::string& name)
///////////////////////////////////////////////////// /////////////////////////////////////////////////////
// ErrorHandler // ErrorHandler
void SimpleHandler::warning(const Arabica::SAX::SAXParseException& exception) void SimpleHandler::warning(const Arabica::SAX::SAXParseException<std::string>& exception)
{ {
std::cerr << "WARNING: " << exception.what() << std::endl; std::cerr << "WARNING: " << exception.what() << std::endl;
} // warning } // warning
void SimpleHandler::error(const Arabica::SAX::SAXParseException& exception) void SimpleHandler::error(const Arabica::SAX::SAXParseException<std::string>& exception)
{ {
std::cerr << "ERROR : " << exception.what() << std::endl; std::cerr << "ERROR : " << exception.what() << std::endl;
} // error } // error
void SimpleHandler::fatalError(const Arabica::SAX::SAXParseException& exception) void SimpleHandler::fatalError(const Arabica::SAX::SAXParseException<std::string>& exception)
{ {
std::cerr << "FATAL : " << exception.what() << std::endl; std::cerr << "FATAL : " << exception.what() << std::endl;
} // fatalError } // fatalError

View file

@ -13,12 +13,12 @@
#include <SAX/ext/DeclHandler.hpp> #include <SAX/ext/DeclHandler.hpp>
#include <SAX/SAXException.hpp> #include <SAX/SAXException.hpp>
class SimpleHandler : public Arabica::SAX::EntityResolver, class SimpleHandler : public Arabica::SAX::EntityResolver<std::string>,
public Arabica::SAX::DTDHandler, public Arabica::SAX::DTDHandler<std::string>,
public Arabica::SAX::ContentHandler, public Arabica::SAX::ContentHandler<std::string>,
public Arabica::SAX::ErrorHandler, public Arabica::SAX::ErrorHandler<std::string>,
public Arabica::SAX::LexicalHandler, public Arabica::SAX::LexicalHandler<std::string>,
public Arabica::SAX::DeclHandler public Arabica::SAX::DeclHandler<std::string>
{ {
public: public:
SimpleHandler() { } SimpleHandler() { }
@ -26,7 +26,7 @@ public:
////////////////////////////////////////////// //////////////////////////////////////////////
// EntityResolver // EntityResolver
virtual Arabica::SAX::InputSource resolveEntity(const std::string& publicId, const std::string& systemId); virtual Arabica::SAX::InputSource<std::string> resolveEntity(const std::string& publicId, const std::string& systemId);
////////////////////////////////////////////// //////////////////////////////////////////////
// DTDHandler // DTDHandler
@ -56,9 +56,9 @@ public:
///////////////////////////////////////////////////// /////////////////////////////////////////////////////
// ErrorHandler // ErrorHandler
virtual void warning(const Arabica::SAX::SAXParseException&); virtual void warning(const Arabica::SAX::SAXParseException<std::string>&);
virtual void error(const Arabica::SAX::SAXParseException&); virtual void error(const Arabica::SAX::SAXParseException<std::string>&);
virtual void fatalError(const Arabica::SAX::SAXParseException& exception); virtual void fatalError(const Arabica::SAX::SAXParseException<std::string>& exception);
/////////////////////////////////////////////////////// ///////////////////////////////////////////////////////
// LexicalHandler // LexicalHandler

View file

@ -19,18 +19,18 @@
#include <SAX/XMLReader.hpp> #include <SAX/XMLReader.hpp>
#include <iostream> #include <iostream>
class SAX2PYX : public Arabica::SAX::DefaultHandler class SAX2PYX : public Arabica::SAX::DefaultHandler<std::string>
{ {
public: public:
virtual void startElement(const std::string& namespaceURI, const std::string& localName, virtual void startElement(const std::string& namespaceURI, const std::string& localName,
const std::string& qName, const Arabica::SAX::Attributes& atts); const std::string& qName, const Arabica::SAX::Attributes<std::string>& atts);
virtual void endElement(const std::string& namespaceURI, const std::string& localName, virtual void endElement(const std::string& namespaceURI, const std::string& localName,
const std::string& qName); const std::string& qName);
virtual void characters(const std::string& ch); virtual void characters(const std::string& ch);
virtual void processingInstruction(const std::string& target, const std::string& data); virtual void processingInstruction(const std::string& target, const std::string& data);
virtual void warning(const Arabica::SAX::SAXParseException& e) { fatalError(e); } virtual void warning(const Arabica::SAX::SAXParseException<std::string>& e) { fatalError(e); }
virtual void error(const Arabica::SAX::SAXParseException& e) { fatalError(e); } virtual void error(const Arabica::SAX::SAXParseException<std::string>& e) { fatalError(e); }
private: private:
std::string escape(const std::string& str) const; std::string escape(const std::string& str) const;
@ -55,7 +55,7 @@ int main(int argc, char* argv[])
myParser.setErrorHandler(handler); myParser.setErrorHandler(handler);
myParser.setFeature("prohibit-dtd", false); myParser.setFeature("prohibit-dtd", false);
Arabica::SAX::InputSource is(argv[i]); Arabica::SAX::InputSource<std::string> is(argv[i]);
myParser.parse(is); myParser.parse(is);
} // try } // try
catch(std::runtime_error& e) catch(std::runtime_error& e)
@ -69,7 +69,7 @@ int main(int argc, char* argv[])
void SAX2PYX::startElement(const std::string&, const std::string& localName, void SAX2PYX::startElement(const std::string&, const std::string& localName,
const std::string&, const Arabica::SAX::Attributes& atts) const std::string&, const Arabica::SAX::Attributes<std::string>& atts)
{ {
std::cout << '(' << localName << std::endl; std::cout << '(' << localName << std::endl;

View file

@ -49,12 +49,12 @@ int main(int argc, char* argv[])
if(file != "-") if(file != "-")
{ {
Arabica::SAX::InputSource is(file); Arabica::SAX::InputSource<std::string> is(file);
parser.parse(is); parser.parse(is);
} }
else else
{ {
Arabica::SAX::InputSource is; Arabica::SAX::InputSource<std::string> is;
is.setSystemId("stdin"); is.setSystemId("stdin");
is.setByteStream(std::cin); is.setByteStream(std::cin);

View file

@ -21,7 +21,7 @@ int main(int argc, char* argv[])
{ // narrow { // narrow
Arabica::SAX::FeatureNames<std::string> fNames; Arabica::SAX::FeatureNames<std::string> fNames;
Arabica::SAX::XMLReader<std::string> parser; Arabica::SAX::XMLReader<std::string> parser;
Arabica::SAX::Writer writer(std::cout, 4); Arabica::SAX::Writer<std::string> writer(std::cout, 4);
Arabica::SAX::CatchErrorHandler<std::string> eh; Arabica::SAX::CatchErrorHandler<std::string> eh;
writer.setParent(parser); writer.setParent(parser);
@ -30,7 +30,7 @@ int main(int argc, char* argv[])
for(int i = 1; i < argc; ++i) for(int i = 1; i < argc; ++i)
{ {
std::string file(argv[i]); std::string file(argv[i]);
Arabica::SAX::InputSource is; Arabica::SAX::InputSource<std::string> is;
is.setSystemId(file); is.setSystemId(file);
if(file != "-") if(file != "-")

View file

@ -18,19 +18,19 @@
#include <SAX/helpers/XMLBaseSupport.hpp> #include <SAX/helpers/XMLBaseSupport.hpp>
#include <iostream> #include <iostream>
class hrefPrinter : public Arabica::SAX::DefaultHandler class hrefPrinter : public Arabica::SAX::DefaultHandler<std::string>
{ {
public: public:
virtual void startElement(const std::string& namespaceURI, const std::string& localName, virtual void startElement(const std::string& namespaceURI, const std::string& localName,
const std::string& qName, const Arabica::SAX::Attributes& atts); const std::string& qName, const Arabica::SAX::Attributes<std::string>& atts);
virtual void endElement(const std::string& namespaceURI, const std::string& localName, virtual void endElement(const std::string& namespaceURI, const std::string& localName,
const std::string& qName); const std::string& qName);
virtual void warning(const Arabica::SAX::SAXParseException& e) { fatalError(e); } virtual void warning(const Arabica::SAX::SAXParseException<std::string>& e) { fatalError(e); }
virtual void error(const Arabica::SAX::SAXParseException& e) { fatalError(e); } virtual void error(const Arabica::SAX::SAXParseException<std::string>& e) { fatalError(e); }
private: private:
Arabica::SAX::XMLBaseSupport xmlbaseTracker_; Arabica::SAX::XMLBaseSupport<std::string> xmlbaseTracker_;
}; // class SimpleHandler }; // class SimpleHandler
int main(int argc, char* argv[]) int main(int argc, char* argv[])
@ -51,7 +51,7 @@ int main(int argc, char* argv[])
myParser.setContentHandler(handler); myParser.setContentHandler(handler);
myParser.setErrorHandler(handler); myParser.setErrorHandler(handler);
Arabica::SAX::InputSource is(argv[i]); Arabica::SAX::InputSource<std::string> is(argv[i]);
myParser.parse(is); myParser.parse(is);
} // try } // try
catch(std::runtime_error& e) catch(std::runtime_error& e)
@ -65,7 +65,7 @@ int main(int argc, char* argv[])
void hrefPrinter::startElement(const std::string&, const std::string& localName, void hrefPrinter::startElement(const std::string&, const std::string& localName,
const std::string&, const Arabica::SAX::Attributes& atts) const std::string&, const Arabica::SAX::Attributes<std::string>& atts)
{ {
xmlbaseTracker_.startElement(atts); xmlbaseTracker_.startElement(atts);

View file

@ -39,7 +39,7 @@ int main(int argc, char* argv[])
for(int i = 2; i < argc; ++i) for(int i = 2; i < argc; ++i)
{ {
std::string file(argv[i]); std::string file(argv[i]);
Arabica::SAX::InputSource is; Arabica::SAX::InputSource<std::string> is;
is.setSystemId(file); is.setSystemId(file);
if(file != "-") if(file != "-")

View file

@ -33,7 +33,7 @@ int main(int argc, const char* argv[])
std::ostringstream errors; std::ostringstream errors;
try try
{ {
Arabica::SAX::InputSource source(argv[2]); Arabica::SAX::InputSource<std::string> source(argv[2]);
std::auto_ptr<Arabica::XSLT::Stylesheet> stylesheet = compiler.compile(source); std::auto_ptr<Arabica::XSLT::Stylesheet> stylesheet = compiler.compile(source);
if(stylesheet.get() == 0) if(stylesheet.get() == 0)
{ {
@ -64,7 +64,7 @@ int main(int argc, const char* argv[])
Arabica::DOM::Document<std::string> buildDOM(const std::string& filename) Arabica::DOM::Document<std::string> buildDOM(const std::string& filename)
{ {
Arabica::SAX::InputSource is(filename); Arabica::SAX::InputSource<std::string> is(filename);
Arabica::SAX2DOM::Parser<std::string> parser; Arabica::SAX2DOM::Parser<std::string> parser;
parser.parse(is); parser.parse(is);

View file

@ -23,17 +23,17 @@ namespace SAX2DOM
template<class stringT, template<class stringT,
class string_adaptorT = Arabica::default_string_adaptor<stringT>, class string_adaptorT = Arabica::default_string_adaptor<stringT>,
class SAX_parser = Arabica::SAX::XMLReader<stringT, string_adaptorT> > class SAX_parser = Arabica::SAX::XMLReader<stringT, string_adaptorT> >
class Parser : protected Arabica::SAX::basic_DefaultHandler<stringT> class Parser : protected Arabica::SAX::DefaultHandler<stringT>
{ {
typedef Arabica::SAX::basic_EntityResolver<stringT> EntityResolverT; typedef Arabica::SAX::EntityResolver<stringT> EntityResolverT;
typedef Arabica::SAX::basic_ErrorHandler<stringT> ErrorHandlerT; typedef Arabica::SAX::ErrorHandler<stringT> ErrorHandlerT;
typedef Arabica::SAX::basic_LexicalHandler<stringT> LexicalHandlerT; typedef Arabica::SAX::LexicalHandler<stringT> LexicalHandlerT;
typedef Arabica::SAX::basic_DeclHandler<stringT> DeclHandlerT; typedef Arabica::SAX::DeclHandler<stringT> DeclHandlerT;
typedef Arabica::SAX::basic_InputSource<stringT> InputSourceT; typedef Arabica::SAX::InputSource<stringT> InputSourceT;
typedef Arabica::SimpleDOM::EntityImpl<stringT, string_adaptorT> EntityT; typedef Arabica::SimpleDOM::EntityImpl<stringT, string_adaptorT> EntityT;
typedef Arabica::SimpleDOM::NotationImpl<stringT, string_adaptorT> NotationT; typedef Arabica::SimpleDOM::NotationImpl<stringT, string_adaptorT> NotationT;
typedef Arabica::SimpleDOM::ElementImpl<stringT, string_adaptorT> ElementT; typedef Arabica::SimpleDOM::ElementImpl<stringT, string_adaptorT> ElementT;
typedef typename Arabica::SAX::basic_ErrorHandler<stringT>::SAXParseExceptionT SAXParseExceptionT; typedef typename Arabica::SAX::ErrorHandler<stringT>::SAXParseExceptionT SAXParseExceptionT;
public: public:
Parser() : Parser() :
@ -187,7 +187,7 @@ class Parser : protected Arabica::SAX::basic_DefaultHandler<stringT>
} // endDocument } // endDocument
virtual void startElement(const stringT& namespaceURI, const stringT& localName, virtual void startElement(const stringT& namespaceURI, const stringT& localName,
const stringT& qName, const Arabica::SAX::basic_Attributes<stringT>& atts) const stringT& qName, const Arabica::SAX::Attributes<stringT>& atts)
{ {
if(currentNode_ == 0) if(currentNode_ == 0)
return; return;

View file

@ -17,16 +17,16 @@ namespace SAX
* Interface for an element's attribute specifications. * Interface for an element's attribute specifications.
* *
* <p>This is the original SAX1 interface for reporting an element's * <p>This is the original SAX1 interface for reporting an element's
* attributes. Unlike the new {@link basic_Attributes Attributes} * attributes. Unlike the new {@link Attributes Attributes}
* interface, it does not support Namespace-related information.</p> * interface, it does not support Namespace-related information.</p>
* *
* <p>When an attribute list is supplied as part of a * <p>When an attribute list is supplied as part of a
* {@link basic_DocumentHandler#startElement startElement} * {@link DocumentHandler#startElement startElement}
* event, the list will return valid results only during the * event, the list will return valid results only during the
* scope of the event; once the event handler returns control * scope of the event; once the event handler returns control
* to the parser, the attribute list is invalid. To save a * to the parser, the attribute list is invalid. To save a
* persistent copy of the attribute list, use the SAX1 * persistent copy of the attribute list, use the SAX1
* {@link basic_AttributeListImpl AttributeListImpl} * {@link AttributeListImpl AttributeListImpl}
* helper class.</p> * helper class.</p>
* *
* <p>An attribute list includes only attributes that have been * <p>An attribute list includes only attributes that have been
@ -65,22 +65,22 @@ namespace SAX
* </pre> * </pre>
* *
* @deprecated This interface has been replaced by the SAX2 * @deprecated This interface has been replaced by the SAX2
* {@link basic_Attributes Attributes} * {@link Attributes Attributes}
* interface, which includes Namespace support. * interface, which includes Namespace support.
* @since SAX 1.0 * @since SAX 1.0
* @author Jez Higgins, * @author Jez Higgins,
* <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a> * <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a>
* @version 2.0 * @version 2.0
* @see basic_DocumentHandler#startElement startElement * @see DocumentHandler#startElement startElement
* @see basic_AttributeListImpl * @see AttributeListImpl
*/ */
template<class string_type> template<class string_type>
class basic_AttributeList class AttributeList
{ {
public: public:
typedef string_type stringT; typedef string_type stringT;
virtual ~basic_AttributeList() { } virtual ~AttributeList() { }
// //
// Iteration methods. // Iteration methods.
@ -186,11 +186,6 @@ public:
}; // class AttributeList }; // class AttributeList
typedef basic_AttributeList<std::string> AttributeList;
#ifndef ARABICA_NO_WCHAR_T
typedef basic_AttributeList<std::wstring> wAttributeList;
#endif
} // namespace SAX } // namespace SAX
} // namespace Arabica } // namespace Arabica

View file

@ -39,7 +39,7 @@ namespace SAX
* may not be available.</p> * may not be available.</p>
* *
* <p>This interface replaces the now-deprecated SAX1 {@link * <p>This interface replaces the now-deprecated SAX1 {@link
* basic_AttributeList AttributeList} interface, which does not * AttributeList AttributeList} interface, which does not
* contain Namespace support. In addition to Namespace support, it * contain Namespace support. In addition to Namespace support, it
* adds the <var>getIndex</var> methods (below).</p> * adds the <var>getIndex</var> methods (below).</p>
* *
@ -50,15 +50,15 @@ namespace SAX
* @author Jez Higgins, * @author Jez Higgins,
* <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a> * <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a>
* @version 2.0 * @version 2.0
* @see basic_AttributesImpl * @see AttributesImpl
*/ */
template<class string_type> template<class string_type>
class basic_Attributes class Attributes
{ {
public: public:
typedef string_type stringT; typedef string_type stringT;
virtual ~basic_Attributes() { } virtual ~Attributes() { }
// //
// indexed access // indexed access
@ -227,11 +227,6 @@ public:
}; // class Attributes }; // class Attributes
typedef basic_Attributes<std::string> Attributes;
#ifndef ARABICA_NO_WCHAR_T
typedef basic_Attributes<std::wstring> wAttributes;
#endif
} // namespace SAX } // namespace SAX
} // namespace Arabica } // namespace Arabica

View file

@ -13,8 +13,8 @@ namespace Arabica
namespace SAX namespace SAX
{ {
template<class string_type> class basic_Locator; template<class string_type> class Locator;
template<class string_type> class basic_Attributes; template<class string_type> class Attributes;
/** /**
* Receive notification of the logical content of a document. * Receive notification of the logical content of a document.
@ -22,7 +22,7 @@ template<class string_type> class basic_Attributes;
* <p>This is the main interface that most SAX applications * <p>This is the main interface that most SAX applications
* implement: if the application needs to be informed of basic parsing * implement: if the application needs to be informed of basic parsing
* events, it implements this interface and registers an instance with * events, it implements this interface and registers an instance with
* the SAX parser using the {@link basic_XMLReader#setContentHandler * the SAX parser using the {@link XMLReader#setContentHandler
* setContentHandler} method. The parser uses the instance to report * setContentHandler} method. The parser uses the instance to report
* basic document-related events like the start and end of elements * basic document-related events like the start and end of elements
* and character data.</p> * and character data.</p>
@ -42,19 +42,19 @@ template<class string_type> class basic_Attributes;
* @author Jez Higgins, * @author Jez Higgins,
* <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a> * <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a>
* @version 2.0 * @version 2.0
* @see basic_XMLReader * @see XMLReader
* @see basic_DTDHandler * @see DTDHandler
* @see basic_ErrorHandler * @see ErrorHandler
*/ */
template<class string_type> template<class string_type>
class basic_ContentHandler class ContentHandler
{ {
public: public:
typedef string_type stringT; typedef string_type stringT;
typedef basic_Locator<stringT> LocatorT; typedef Locator<stringT> LocatorT;
typedef basic_Attributes<stringT> AttributesT; typedef Attributes<stringT> AttributesT;
virtual ~basic_ContentHandler() { } virtual ~ContentHandler() { }
/** /**
* Receive an object for locating the origin of SAX document events. * Receive an object for locating the origin of SAX document events.
@ -79,7 +79,7 @@ public:
* *
* @param locator An object that can return the location of * @param locator An object that can return the location of
* any SAX document event. * any SAX document event.
* @see basic_Locator * @see Locator
*/ */
virtual void setDocumentLocator(const LocatorT& locator) = 0; virtual void setDocumentLocator(const LocatorT& locator) = 0;
@ -87,7 +87,7 @@ public:
* Receive notification of the beginning of a document. * Receive notification of the beginning of a document.
* *
* <p>The SAX parser will invoke this method only once, before any * <p>The SAX parser will invoke this method only once, before any
* other methods in this interface or in {@link basic_DTDHandler * other methods in this interface or in {@link DTDHandler
* DTDHandler} (except for {@link #setDocumentLocator * DTDHandler} (except for {@link #setDocumentLocator
* setDocumentLocator}).</p> * setDocumentLocator}).</p>
* *
@ -219,7 +219,7 @@ public:
* @exception SAXException Any SAX exception, possibly * @exception SAXException Any SAX exception, possibly
* wrapping another exception. * wrapping another exception.
* @see #endElement * @see #endElement
* @see basic_Attributes * @see Attributes
*/ */
virtual void startElement(const stringT& namespaceURI, const stringT& localName, virtual void startElement(const stringT& namespaceURI, const stringT& localName,
const stringT& qName, const AttributesT& atts) = 0; const stringT& qName, const AttributesT& atts) = 0;
@ -267,7 +267,7 @@ public:
* @param ch The characters from the XML document. * @param ch The characters from the XML document.
* @exception SAXException Any SAX exception. * @exception SAXException Any SAX exception.
* @see #ignorableWhitespace * @see #ignorableWhitespace
* @see basic_Locator * @see Locator
*/ */
virtual void characters(const stringT& ch) = 0; virtual void characters(const stringT& ch) = 0;
/** /**
@ -332,12 +332,7 @@ public:
* @exception SAXException Any SAX exception. * @exception SAXException Any SAX exception.
*/ */
virtual void skippedEntity(const stringT& name) = 0; virtual void skippedEntity(const stringT& name) = 0;
}; // class basic_ContentHandler }; // class ContentHandler
typedef basic_ContentHandler<std::string> ContentHandler;
#ifndef ARABICA_NO_WCHAR_T
typedef basic_ContentHandler<std::wstring> wContentHandler;
#endif
} // namespace SAX } // namespace SAX
} // namespace Arabica } // namespace Arabica

View file

@ -32,7 +32,7 @@ namespace SAX
* declared; however, all DTD events must be reported after the * declared; however, all DTD events must be reported after the
* document handler's startDocument event, and before the first * document handler's startDocument event, and before the first
* startElement event. * startElement event.
* (If the {@link basic_LexicalHandler LexicalHandler} is * (If the {@link LexicalHandler LexicalHandler} is
* used, these events must also be reported before the endDTD event.) * used, these events must also be reported before the endDTD event.)
* </p> * </p>
* *
@ -47,16 +47,16 @@ namespace SAX
* @author Jez Higgins, * @author Jez Higgins,
* <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a> * <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a>
* @version $Id$ * @version $Id$
* @see basic_XMLReader#setDTDHandler * @see XMLReader#setDTDHandler
*/ */
template<class string_type> template<class string_type>
class basic_DTDHandler class DTDHandler
{ {
public: public:
typedef string_type stringT; typedef string_type stringT;
virtual ~basic_DTDHandler() { } virtual ~DTDHandler() { }
/** /**
@ -70,7 +70,7 @@ public:
* When a system identifier is present, applications are responsible * When a system identifier is present, applications are responsible
* for knowing if it is used as a URL, and absolutizing it against * for knowing if it is used as a URL, and absolutizing it against
* the appropriate URI when appropriate. * the appropriate URI when appropriate.
* That base URI is available from {@link basic_Locator#getSystemId} during * That base URI is available from {@link Locator#getSystemId} during
* this callback, assuming the parser provides a Locator.</p> * this callback, assuming the parser provides a Locator.</p>
* *
* <p>At least one of publicId and systemId must be non-empty. </p> * <p>At least one of publicId and systemId must be non-empty. </p>
@ -85,7 +85,7 @@ public:
* none was given. * none was given.
* @exception SAXException Any SAX exception. * @exception SAXException Any SAX exception.
* @see #unparsedEntityDecl * @see #unparsedEntityDecl
* @see basic_Attributes * @see Attributes
*/ */
virtual void notationDecl(const stringT& name, virtual void notationDecl(const stringT& name,
const stringT& publicId, const stringT& publicId,
@ -112,19 +112,14 @@ public:
* @param systemId The entity's system identifier. * @param systemId The entity's system identifier.
* @param notationName The name of the associated notation. * @param notationName The name of the associated notation.
* @see #notationDecl * @see #notationDecl
* @see basic_Attributes * @see Attributes
*/ */
virtual void unparsedEntityDecl(const stringT& name, virtual void unparsedEntityDecl(const stringT& name,
const stringT& publicId, const stringT& publicId,
const stringT& systemId, const stringT& systemId,
const stringT& notationName) = 0; const stringT& notationName) = 0;
}; // class basic_DTDHandler }; // class DTDHandler
typedef basic_DTDHandler<std::string> DTDHandler;
#ifndef ARABICA_NO_WCHAR_T
typedef basic_DTDHandler<std::wstring> wDTDHandler;
#endif
} // namespace SAX } // namespace SAX
} // namespace Arabica } // namespace Arabica

View file

@ -10,8 +10,8 @@ namespace Arabica
namespace SAX namespace SAX
{ {
template<class string_type> class basic_Locator; template<class string_type> class Locator;
template<class string_type> class basic_AttributeList; template<class string_type> class AttributeList;
/** /**
* Receive notification of general document events. * Receive notification of general document events.
@ -38,19 +38,19 @@ template<class string_type> class basic_AttributeList;
* *
* @author Jez Higgins, jez@jezuk.co.uk * @author Jez Higgins, jez@jezuk.co.uk
* @version 0.1 * @version 0.1
* @see basic_Parser#setDocumentHandler * @see Parser#setDocumentHandler
* @see basic_Locator * @see Locator
* @see basic_HandlerBase * @see HandlerBase
*/ */
template<class string_type> template<class string_type>
class basic_DocumentHandler class DocumentHandler
{ {
public: public:
typedef string_type stringT; typedef string_type stringT;
typedef basic_Locator<stringT> LocatorT; typedef Locator<stringT> LocatorT;
typedef basic_AttributeList<stringT> AttributeListT; typedef AttributeList<stringT> AttributeListT;
virtual ~basic_DocumentHandler() { } virtual ~DocumentHandler() { }
virtual void setDocumentLocator(const LocatorT& locator) = 0; virtual void setDocumentLocator(const LocatorT& locator) = 0;
@ -67,12 +67,7 @@ public:
virtual void processingInstruction(const stringT& target, virtual void processingInstruction(const stringT& target,
const stringT& data) = 0; const stringT& data) = 0;
}; // class basic_DocumentHandler }; // class DocumentHandler
typedef basic_DocumentHandler<std::string> DocumentHandler;
#ifndef ARABICA_NO_WCHAR_T
typedef basic_DocumentHandler<std::wstring> wDocumentHandler;
#endif
} // namespace SAX } // namespace SAX
} // namespace Arabica } // namespace Arabica

View file

@ -21,7 +21,7 @@ namespace SAX
* <p>If a SAX application needs to implement customized handling * <p>If a SAX application needs to implement customized handling
* for external entities, it must implement this interface and * for external entities, it must implement this interface and
* register an instance with the SAX driver using the * register an instance with the SAX driver using the
* {@link basic_XMLReader#setEntityResolver setEntityResolver} * {@link XMLReader#setEntityResolver setEntityResolver}
* method.</p> * method.</p>
* *
* <p>The XML reader will then allow the application to intercept any * <p>The XML reader will then allow the application to intercept any
@ -66,17 +66,17 @@ namespace SAX
* @author Jez Higgins, * @author Jez Higgins,
* <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a> * <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a>
* @version 2.0 * @version 2.0
* @see basic_Parser#setEntityResolver * @see Parser#setEntityResolver
* @see basic_InputSource * @see InputSource
*/ */
template<class string_type> template<class string_type>
class basic_EntityResolver class EntityResolver
{ {
public: public:
typedef string_type stringT; typedef string_type stringT;
typedef basic_InputSource<stringT> InputSourceT; typedef InputSource<stringT> InputSourceT;
virtual ~basic_EntityResolver() { }; virtual ~EntityResolver() { };
/** /**
* Allow the application to resolve external entities. * Allow the application to resolve external entities.
@ -106,16 +106,11 @@ public:
* or a default-constructed <code>InputSource</code> to request that * or a default-constructed <code>InputSource</code> to request that
* the parser open a regular URI connection to the system identifier. * the parser open a regular URI connection to the system identifier.
* @exception SAXException Any SAX exception. * @exception SAXException Any SAX exception.
* @see basic_InputSource * @see InputSource
*/ */
virtual InputSourceT resolveEntity(const stringT& publicId, const stringT& systemId) = 0; virtual InputSourceT resolveEntity(const stringT& publicId, const stringT& systemId) = 0;
}; // class EntityResolver }; // class EntityResolver
typedef basic_EntityResolver<std::string> EntityResolver;
#ifndef ARABICA_NO_WCHAR_T
typedef basic_EntityResolver<std::wstring> wEntityResolver;
#endif
} // namespace SAX } // namespace SAX
} // namespace Arabica } // namespace Arabica

View file

@ -21,7 +21,7 @@ namespace SAX
* <p>If a SAX application needs to implement customized error * <p>If a SAX application needs to implement customized error
* handling, it must implement this interface and then register an * handling, it must implement this interface and then register an
* instance with the XML reader using the * instance with the XML reader using the
* {@link basic_XMLReader#setErrorHandler setErrorHandler} * {@link XMLReader#setErrorHandler setErrorHandler}
* method. The parser will then report all errors and warnings * method. The parser will then report all errors and warnings
* through this interface.</p> * through this interface.</p>
* *
@ -41,17 +41,17 @@ namespace SAX
* @author Jez Higgins, * @author Jez Higgins,
* <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a> * <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a>
* @version 2.0 * @version 2.0
* @see basic_Parser#setErrorHandler * @see Parser#setErrorHandler
* @see basic_SAXParseException * @see SAXParseException
*/ */
template<class string_type> template<class string_type>
class basic_ErrorHandler class ErrorHandler
{ {
public: public:
typedef string_type stringT; typedef string_type stringT;
typedef basic_SAXParseException<stringT> SAXParseExceptionT; typedef SAXParseException<stringT> SAXParseExceptionT;
virtual ~basic_ErrorHandler() { }; virtual ~ErrorHandler() { };
/** /**
* Receive notification of a warning. * Receive notification of a warning.
@ -69,7 +69,7 @@ public:
* *
* @param exception The warning information encapsulated in a * @param exception The warning information encapsulated in a
* SAX parse exception. * SAX parse exception.
* @see basic_SAXParseException * @see SAXParseException
*/ */
virtual void warning(const SAXParseExceptionT& exception) = 0; virtual void warning(const SAXParseExceptionT& exception) = 0;
/** /**
@ -93,7 +93,7 @@ public:
* *
* @param exception The error information encapsulated in a * @param exception The error information encapsulated in a
* SAX parse exception. * SAX parse exception.
* @see basic_SAXParseException * @see SAXParseException
*/ */
virtual void error(const SAXParseExceptionT& exception) = 0; virtual void error(const SAXParseExceptionT& exception) = 0;
/** /**
@ -112,16 +112,11 @@ public:
* *
* @param exception The error information encapsulated in a * @param exception The error information encapsulated in a
* SAX parse exception. * SAX parse exception.
* @see basic_SAXParseException * @see SAXParseException
*/ */
virtual void fatalError(const SAXParseExceptionT& exception) = 0; virtual void fatalError(const SAXParseExceptionT& exception) = 0;
}; // class ErrorHandler }; // class ErrorHandler
typedef basic_ErrorHandler<std::string> ErrorHandler;
#ifndef ARABICA_NO_WCHAR_T
typedef basic_ErrorHandler<std::wstring> wErrorHandler;
#endif
} // namespace SAX } // namespace SAX
} // namespace Arabica } // namespace Arabica

View file

@ -27,7 +27,7 @@ namespace SAX
* interfaces: EntityResolver, DTDHandler, DocumentHandler, * interfaces: EntityResolver, DTDHandler, DocumentHandler,
* and ErrorHandler. It is now obsolete, but is included in SAX2 to * and ErrorHandler. It is now obsolete, but is included in SAX2 to
* support legacy SAX1 applications. SAX2 applications should use * support legacy SAX1 applications. SAX2 applications should use
* the {@link basic_DefaultHandler DefaultHandler} * the {@link DefaultHandler DefaultHandler}
* class instead.</p> * class instead.</p>
* *
* <p>Application writers can extend this class when they need to * <p>Application writers can extend this class when they need to
@ -38,32 +38,32 @@ namespace SAX
* <p>Note that the use of this class is optional.</p> * <p>Note that the use of this class is optional.</p>
* *
* @deprecated This class works with the deprecated * @deprecated This class works with the deprecated
* {@link basic_DocumentHandler DocumentHandler} * {@link DocumentHandler DocumentHandler}
* interface. It has been replaced by the SAX2 * interface. It has been replaced by the SAX2
* {@link basic_DefaultHandler DefaultHandler} * {@link DefaultHandler DefaultHandler}
* class. * class.
* @since SAX 1.0 * @since SAX 1.0
* @author Jez Higgins, <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a> * @author Jez Higgins, <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a>
* @version 1.0 * @version 1.0
* @see basic_EntityResolver * @see EntityResolver
* @see basic_DTDHandler * @see DTDHandler
* @see basic_DocumentHandler * @see DocumentHandler
* @see basic_ErrorHandler * @see ErrorHandler
*/ */
template<class string_type> template<class string_type>
class basic_HandlerBase : public basic_EntityResolver<string_type>, class HandlerBase : public EntityResolver<string_type>,
public basic_DTDHandler<string_type>, public DTDHandler<string_type>,
public basic_DocumentHandler<string_type>, public DocumentHandler<string_type>,
public basic_ErrorHandler<string_type> public ErrorHandler<string_type>
{ {
public: public:
typedef string_name stringT; typedef string_name stringT;
typedef basic_Locator<stringT> LocatorT; typedef Locator<stringT> LocatorT;
typedef basic_AttributeList<stringT> AttributeListT; typedef AttributeList<stringT> AttributeListT;
typedef basic_InputSource<stringT> InputSourceT; typedef InputSource<stringT> InputSourceT;
typedef basic_ErrorHandler<stringT>::SAXParseExceptionT SAXParseExceptionT; typedef ErrorHandler<stringT>::SAXParseExceptionT SAXParseExceptionT;
virtual ~basic_HandlerBase() { } virtual ~HandlerBase() { }
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
// Default implementation of the EntityResolver interface. // Default implementation of the EntityResolver interface.
@ -83,7 +83,7 @@ public:
* document. * document.
* @return The new input source, or an empty string to require the * @return The new input source, or an empty string to require the
* default behaviour. * default behaviour.
* @see basic_EntityResolver#resolveEntity * @see EntityResolver#resolveEntity
*/ */
virtual InputSourceT resolveEntity(const stringT& publicId, virtual InputSourceT resolveEntity(const stringT& publicId,
const stringT& systemId) const stringT& systemId)
@ -105,7 +105,7 @@ public:
* @param publicId The notation public identifier, or an empty string if not * @param publicId The notation public identifier, or an empty string if not
* available. * available.
* @param systemId The notation system identifier. * @param systemId The notation system identifier.
* @see basic_DTDHandler#notationDecl * @see DTDHandler#notationDecl
*/ */
virtual void notationDecl(const stringT& name, virtual void notationDecl(const stringT& name,
const stringT& publicId, const stringT& publicId,
@ -123,7 +123,7 @@ public:
* available. * available.
* @param systemId The entity system identifier. * @param systemId The entity system identifier.
* @param notationName The name of the associated notation. * @param notationName The name of the associated notation.
* @see basic_DTDHandler#unparsedEntityDecl * @see DTDHandler#unparsedEntityDecl
*/ */
virtual void unparsedEntityDecl(const stringT& name, virtual void unparsedEntityDecl(const stringT& name,
const stringT& publicId, const stringT& publicId,
@ -141,8 +141,8 @@ public:
* with other document events.</p> * with other document events.</p>
* *
* @param locator A locator for all SAX document events. * @param locator A locator for all SAX document events.
* @see basic_DocumentHandler#setDocumentLocator * @see DocumentHandler#setDocumentLocator
* @see basic_Locator * @see Locator
*/ */
virtual void setDocumentLocator(const LocatorT& locator) { } virtual void setDocumentLocator(const LocatorT& locator) { }
@ -154,7 +154,7 @@ public:
* of a document (such as allocating the root node of a tree or * of a document (such as allocating the root node of a tree or
* creating an output file).</p> * creating an output file).</p>
* *
* @see basic_DocumentHandler#startDocument * @see DocumentHandler#startDocument
*/ */
virtual void startDocument() { } virtual void startDocument() { }
/** /**
@ -165,7 +165,7 @@ public:
* of a document (such as finalising a tree or closing an output * of a document (such as finalising a tree or closing an output
* file).</p> * file).</p>
* *
* @see basic_DocumentHandler#endDocument * @see DocumentHandler#endDocument
*/ */
virtual void endDocument() { } virtual void endDocument() { }
@ -179,7 +179,7 @@ public:
* *
* @param name The element type name. * @param name The element type name.
* @param attributes The specified or defaulted attributes. * @param attributes The specified or defaulted attributes.
* @see basic_DocumentHandler#startElement * @see DocumentHandler#startElement
*/ */
virtual void startElement(const stringT& name, virtual void startElement(const stringT& name,
const AttributeListT& attributes) { } const AttributeListT& attributes) { }
@ -192,7 +192,7 @@ public:
* output to a file).</p> * output to a file).</p>
* *
* @param name The element type name. * @param name The element type name.
* @see basic_DocumentHandler#endElement * @see DocumentHandler#endElement
*/ */
virtual void endElement(const stringT& name) { } virtual void endElement(const stringT& name) { }
@ -205,7 +205,7 @@ public:
* a file).</p> * a file).</p>
* *
* @param ch The characters. * @param ch The characters.
* @see basic_DocumentHandler#characters * @see DocumentHandler#characters
*/ */
virtual void characters(const stringT& ch) { } virtual void characters(const stringT& ch) { }
/** /**
@ -217,7 +217,7 @@ public:
* it to a file).</p> * it to a file).</p>
* *
* @param ch The whitespace characters. * @param ch The whitespace characters.
* @see basic_DocumentHandler#ignorableWhitespace * @see DocumentHandler#ignorableWhitespace
*/ */
virtual void ignorableWhitespace(const stringT& ch) { } virtual void ignorableWhitespace(const stringT& ch) { }
@ -232,7 +232,7 @@ public:
* @param target The processing instruction target. * @param target The processing instruction target.
* @param data The processing instruction data, or an empty string if * @param data The processing instruction data, or an empty string if
* none is supplied. * none is supplied.
* @see basic_DocumentHandler#processingInstruction * @see DocumentHandler#processingInstruction
*/ */
virtual void processingInstruction(const stringT& target, virtual void processingInstruction(const stringT& target,
const stringT& data) { } const stringT& data) { }
@ -249,8 +249,8 @@ public:
* printing it to the console.</p> * printing it to the console.</p>
* *
* @param e The warning information encoded as an exception. * @param e The warning information encoded as an exception.
* @see basic_ErrorHandler#warning * @see ErrorHandler#warning
* @see basic_SAXParseException * @see SAXParseException
*/ */
virtual void warning(const SAXParseExceptionT& e) { } virtual void warning(const SAXParseExceptionT& e) { }
/** /**
@ -262,8 +262,8 @@ public:
* printing it to the console.</p> * printing it to the console.</p>
* *
* @param e The warning information encoded as an exception. * @param e The warning information encoded as an exception.
* @see basic_ErrorHandler#warning * @see ErrorHandler#warning
* @see basic_SAXParseException * @see SAXParseException
*/ */
virtual void error(const SAXParseExceptionT& e) { } virtual void error(const SAXParseExceptionT& e) { }
/** /**
@ -278,17 +278,12 @@ public:
* the parser may no longer report parsing events.</p> * the parser may no longer report parsing events.</p>
* *
* @param e The error information encoded as an exception. * @param e The error information encoded as an exception.
* @see basic_ErrorHandler#fatalError * @see ErrorHandler#fatalError
* @see basic_SAXParseException * @see SAXParseException
*/ */
virtual void fatalError(const SAXParseExceptionT& e) { throw e; } virtual void fatalError(const SAXParseExceptionT& e) { throw e; }
}; // class HandlerBase }; // class HandlerBase
typedef basic_HandlerBase<std::string> HandlerBase;
#ifndef ARABICA_NO_WCHAR_T
typedef basic_HandlerBase<std::wstring> wHandlerBase;
#endif
} // namespace SAX } // namespace SAX
} // namespace Arabica } // namespace Arabica

View file

@ -45,11 +45,11 @@ namespace SAX
* @author Jez Higgins, * @author Jez Higgins,
* <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a> * <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a>
* @version 2.0 * @version 2.0
* @see basic_Parser#parse * @see Parser#parse
* @see basic_EntityResolver#resolveEntity * @see EntityResolver#resolveEntity
*/ */
template<class string_type> template<class string_type>
class basic_InputSource class InputSource
{ {
public: public:
typedef string_type stringT; typedef string_type stringT;
@ -62,7 +62,7 @@ public:
* @see #setByteStream * @see #setByteStream
* @see #setEncoding * @see #setEncoding
*/ */
basic_InputSource() : InputSource() :
byteStream_(), byteStream_(),
publicId_(), publicId_(),
systemId_(), systemId_(),
@ -83,13 +83,13 @@ public:
* @see #setByteStream * @see #setByteStream
* @see #setEncoding * @see #setEncoding
*/ */
basic_InputSource(const stringT& systemId) : InputSource(const stringT& systemId) :
byteStream_(), byteStream_(),
publicId_(), publicId_(),
systemId_(systemId), systemId_(systemId),
encoding_() encoding_()
{ } { }
basic_InputSource(const basic_InputSource& rhs) : InputSource(const InputSource& rhs) :
byteStream_(rhs.byteStream_), byteStream_(rhs.byteStream_),
publicId_(rhs.publicId_), publicId_(rhs.publicId_),
systemId_(rhs.systemId_), systemId_(rhs.systemId_),
@ -104,15 +104,15 @@ public:
* character encoding.</p> * character encoding.</p>
* *
* @param byteStream The raw byte stream containing the document. The * @param byteStream The raw byte stream containing the document. The
* basic_InputSource does not assume ownership of * InputSource does not assume ownership of
* this byteStream. * this byteStream.
* @see #basic_InputSource(std::auto_ptr<std::istream>) * @see #InputSource(std::auto_ptr<std::istream>)
* @see #setPublicId * @see #setPublicId
* @see #setSystemId * @see #setSystemId
* @see #setEncoding * @see #setEncoding
* @see #setByteStream * @see #setByteStream
*/ */
basic_InputSource(std::istream& byteStream) : InputSource(std::istream& byteStream) :
byteStream_(byteStream), byteStream_(byteStream),
publicId_(), publicId_(),
systemId_(), systemId_(),
@ -129,22 +129,22 @@ public:
* character encoding.</p> * character encoding.</p>
* *
* @param byteStream The raw byte stream containing the document. The * @param byteStream The raw byte stream containing the document. The
* basic_InputSource assumes ownership of the byteStream * InputSource assumes ownership of the byteStream
* and will delete it when no-longer required. * and will delete it when no-longer required.
* @see basic_InputSource(std::istream&) * @see InputSource(std::istream&)
* @see #setPublicId * @see #setPublicId
* @see #setSystemId * @see #setSystemId
* @see #setEncoding * @see #setEncoding
* @see #setByteStream * @see #setByteStream
*/ */
basic_InputSource(std::auto_ptr<std::istream> byteStream) : InputSource(std::auto_ptr<std::istream> byteStream) :
byteStream_(byteStream), byteStream_(byteStream),
publicId_(), publicId_(),
systemId_(), systemId_(),
encoding_() encoding_()
{ } { }
basic_InputSource(std::auto_ptr<std::iostream> byteStream) : InputSource(std::auto_ptr<std::iostream> byteStream) :
byteStream_(byteStream), byteStream_(byteStream),
publicId_(), publicId_(),
systemId_(), systemId_(),
@ -152,9 +152,9 @@ public:
{ } { }
virtual ~basic_InputSource() { } virtual ~InputSource() { }
basic_InputSource& operator=(const basic_InputSource& rhs) InputSource& operator=(const InputSource& rhs)
{ {
byteStream_ = rhs.byteStream_; byteStream_ = rhs.byteStream_;
publicId_ = rhs.publicId_; publicId_ = rhs.publicId_;
@ -173,8 +173,8 @@ public:
* *
* @param publicId The public identifier as a string. * @param publicId The public identifier as a string.
* @see #getPublicId * @see #getPublicId
* @see basic_Locator#getPublicId * @see Locator#getPublicId
* @see basic_SAXParseException#getPublicId * @see SAXParseException#getPublicId
*/ */
void setPublicId(const stringT& publicId) { publicId_ = publicId; } void setPublicId(const stringT& publicId) { publicId_ = publicId; }
/** /**
@ -204,8 +204,8 @@ public:
* @param systemId The system identifier as a string. * @param systemId The system identifier as a string.
* @see #setEncoding * @see #setEncoding
* @see #getSystemId * @see #getSystemId
* @see basic_Locator#getSystemId * @see Locator#getSystemId
* @see basic_SAXParseException#getSystemId * @see SAXParseException#getSystemId
*/ */
void setSystemId(const stringT& systemId) { systemId_ = systemId; } void setSystemId(const stringT& systemId) { systemId_ = systemId; }
/** /**
@ -232,7 +232,7 @@ public:
* byte stream, it should set it with the setEncoding method.</p> * byte stream, it should set it with the setEncoding method.</p>
* *
* @param byteStream A byte stream containing an XML document or * @param byteStream A byte stream containing an XML document or
* other entity. The basic_InputSource does not assume * other entity. The InputSource does not assume
* ownership of byteStream. * ownership of byteStream.
* @see #setByteStream(std::auto_ptr<std::istream>) To transfer ownership of * @see #setByteStream(std::auto_ptr<std::istream>) To transfer ownership of
* an std::istream to an InputSource * an std::istream to an InputSource
@ -255,7 +255,7 @@ public:
* byte stream, it should set it with the setEncoding method.</p> * byte stream, it should set it with the setEncoding method.</p>
* *
* @param byteStream A byte stream containing an XML document or * @param byteStream A byte stream containing an XML document or
* other entity. The basic_InputSource assumes * other entity. The InputSource assumes
* ownership of byteStream. * ownership of byteStream.
* @see #setByteStream(std::istream&) * @see #setByteStream(std::istream&)
* @see #setEncoding * @see #setEncoding
@ -328,13 +328,8 @@ private:
stringT systemId_; stringT systemId_;
stringT encoding_; stringT encoding_;
bool operator==(const basic_InputSource&); // no implementation bool operator==(const InputSource&); // no implementation
}; // class basic_InputSource }; // class InputSource
typedef basic_InputSource<std::string> InputSource;
#ifndef ARABICA_NO_WCHAR_T
typedef basic_InputSource<std::wstring> wInputSource;
#endif
} // namespace SAX } // namespace SAX
} // namespace Arabica } // namespace Arabica

View file

@ -19,7 +19,7 @@ namespace SAX
* <p>If a SAX parser provides location information to the SAX * <p>If a SAX parser provides location information to the SAX
* application, it does so by implementing this interface and then * application, it does so by implementing this interface and then
* passing an instance to the application using the content * passing an instance to the application using the content
* handler's {@link basic_ContentHandler#setDocumentLocator * handler's {@link ContentHandler#setDocumentLocator
* setDocumentLocator} method. The application can use the * setDocumentLocator} method. The application can use the
* object to obtain the location of any other content handler event * object to obtain the location of any other content handler event
* in the XML source document.</p> * in the XML source document.</p>
@ -33,7 +33,7 @@ namespace SAX
* very strongly encouraged to do so. If the parser supplies a * very strongly encouraged to do so. If the parser supplies a
* locator, it must do so before reporting any other document events. * locator, it must do so before reporting any other document events.
* If no locator has been set by the time the application receives * If no locator has been set by the time the application receives
* the {@link basic_ContentHandler#startDocument startDocument} * the {@link ContentHandler#startDocument startDocument}
* event, the application should assume that a locator is not * event, the application should assume that a locator is not
* available.</p> * available.</p>
* *
@ -41,15 +41,15 @@ namespace SAX
* @author Jez Higgins, * @author Jez Higgins,
* <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a> * <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a>
* @version 2.0 * @version 2.0
* @see basic_ContentHandler#setDocumentLocator * @see ContentHandler#setDocumentLocator
*/ */
template<class string_type> template<class string_type>
class basic_Locator class Locator
{ {
public: public:
typedef string_type stringT; typedef string_type stringT;
virtual ~basic_Locator() { } virtual ~Locator() { }
/** /**
* Return the public identifier for the current document event. * Return the public identifier for the current document event.
@ -124,11 +124,6 @@ public:
virtual int getColumnNumber() const = 0; virtual int getColumnNumber() const = 0;
}; // class Locator }; // class Locator
typedef basic_Locator<std::string> Locator;
#ifndef ARABICA_NO_WCHAR_T
typedef basic_Locator<std::wstring> wLocator;
#endif
} // namespace SAX } // namespace SAX
} // namespace Arabica } // namespace Arabica

View file

@ -21,7 +21,7 @@ namespace SAX
* Basic interface for SAX (Simple API for XML) parsers. * Basic interface for SAX (Simple API for XML) parsers.
* *
* <p>This was the main event supplier interface for SAX1; it has * <p>This was the main event supplier interface for SAX1; it has
* been replaced in SAX2 by {@link basic_XMLReader XMLReader}, * been replaced in SAX2 by {@link XMLReader XMLReader},
* which includes Namespace support and sophisticated configurability * which includes Namespace support and sophisticated configurability
* and extensibility.</p> * and extensibility.</p>
* *
@ -38,30 +38,30 @@ namespace SAX
* invoke the parse() methods recursively within a parse.</p> * invoke the parse() methods recursively within a parse.</p>
* *
* @deprecated This interface has been replaced by the SAX2 * @deprecated This interface has been replaced by the SAX2
* {@link basic_XMLReader XMLReader} * {@link XMLReader XMLReader}
* interface, which includes Namespace support. * interface, which includes Namespace support.
* @since SAX 1.0 * @since SAX 1.0
* @author Jez Higgins, * @author Jez Higgins,
* <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a> * <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a>
* @version 2.0 * @version 2.0
* @see basic_EntityResolver * @see EntityResolver
* @see basic_DTDHandler * @see DTDHandler
* @see basic_DocumentHandler * @see DocumentHandler
* @see basic_ErrorHandler * @see ErrorHandler
* @see basic_HandlerBase * @see HandlerBase
* @see basic_InputSource * @see InputSource
*/ */
template<class string_type> template<class string_type>
class basic_Parser class Parser
{ {
public: public:
typedef string_name stringT; typedef string_name stringT;
typedef basic_EntityResolver<stringT> EntityResolverT; typedef EntityResolver<stringT> EntityResolverT;
typedef basic_DTDHandler<stringT> DTDHandlerT; typedef DTDHandler<stringT> DTDHandlerT;
typedef basic_DocumentHandler<stringT> DocumentHandlerT; typedef DocumentHandler<stringT> DocumentHandlerT;
typedef basic_InputSource<stringT> InputSourceT; typedef InputSource<stringT> InputSourceT;
virtual ~basic_Parser() { } virtual ~Parser() { }
// virtual void setLocale(Locale locale) throws SAXException = 0; // virtual void setLocale(Locale locale) throws SAXException = 0;
/** /**
@ -77,8 +77,8 @@ public:
* the new resolver immediately.</p> * the new resolver immediately.</p>
* *
* @param resolver The object for resolving entities. * @param resolver The object for resolving entities.
* @see basic_EntityResolver * @see EntityResolver
* @see basic_HandlerBase * @see HandlerBase
*/ */
virtual void setEntityResolver(EntityResolverT& resolver) = 0; virtual void setEntityResolver(EntityResolverT& resolver) = 0;
/** /**
@ -94,8 +94,8 @@ public:
* begin using the new handler immediately.</p> * begin using the new handler immediately.</p>
* *
* @param handler The DTD handler. * @param handler The DTD handler.
* @see basic_DTDHandler * @see DTDHandler
* @see basic_HandlerBase * @see HandlerBase
*/ */
virtual void setDTDHandler(DTDHandlerT& handler) = 0; virtual void setDTDHandler(DTDHandlerT& handler) = 0;
/** /**
@ -111,8 +111,8 @@ public:
* handler immediately.</p> * handler immediately.</p>
* *
* @param handler The document handler. * @param handler The document handler.
* @see basic_DocumentHandler * @see DocumentHandler
* @see basic_HandlerBase * @see HandlerBase
*/ */
virtual void setDocumentHandler(DocumentHandlerT& handler) = 0; virtual void setDocumentHandler(DocumentHandlerT& handler) = 0;
/** /**
@ -128,9 +128,9 @@ public:
* handler immediately.</p> * handler immediately.</p>
* *
* @param handler The error handler. * @param handler The error handler.
* @see basic_ErrorHandler * @see ErrorHandler
* @see basic_SAXException * @see SAXException
* @see basic_HandlerBase * @see HandlerBase
*/ */
virtual void setErrorHandler(ErrorHandler& handler) = 0; virtual void setErrorHandler(ErrorHandler& handler) = 0;
@ -149,19 +149,14 @@ public:
* *
* @param source The input source for the top-level of the * @param source The input source for the top-level of the
* XML document. * XML document.
* @see basic_InputSource * @see InputSource
* @see #setEntityResolver * @see #setEntityResolver
* @see #setDTDHandler * @see #setDTDHandler
* @see #setDocumentHandler * @see #setDocumentHandler
* @see #setErrorHandler * @see #setErrorHandler
*/ */
virtual void parse(InputSourceT& source) = 0; virtual void parse(InputSourceT& source) = 0;
}; // class basic_Parser }; // class Parser
typedef basic_Parser<std::string> Parser;
#ifndef ARABICA_NO_WCHAR_T
typedef basic_Parser<std::wstring> wParser;
#endif
} // namespace SAX } // namespace SAX
} // namespace Arabica } // namespace Arabica

View file

@ -24,13 +24,13 @@ namespace SAX
* *
* <p>If the parser or application needs to include information about a * <p>If the parser or application needs to include information about a
* specific location in an XML document, it should use the * specific location in an XML document, it should use the
* {@link basic_SAXParseException SAXParseException} subclass.</p> * {@link SAXParseException SAXParseException} subclass.</p>
* *
* @since SAX 1.0 * @since SAX 1.0
* @author Jez Higgins, * @author Jez Higgins,
* <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a> * <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a>
* @version 2.0 * @version 2.0
* @see basic_SAXParseException * @see SAXParseException
*/ */
class SAXException : public std::runtime_error class SAXException : public std::runtime_error
{ {

View file

@ -34,16 +34,16 @@ namespace SAX
* @version 2.0 * @version 2.0
* @see SAXException * @see SAXException
* @see Locator * @see Locator
* @see basic_ErrorHandler * @see ErrorHandler
*/ */
template<class string_type> template<class string_type>
class basic_SAXParseException : public SAXException class SAXParseException : public SAXException
{ {
public: public:
typedef string_type stringT; typedef string_type stringT;
typedef basic_Locator<stringT> LocatorT; typedef Locator<stringT> LocatorT;
basic_SAXParseException(const std::string& message) : SAXParseException(const std::string& message) :
SAXException(message), SAXException(message),
publicId_(), publicId_(),
systemId_(), systemId_(),
@ -51,9 +51,9 @@ public:
columnNumber_(-1) columnNumber_(-1)
{ {
setMsg(); setMsg();
} // basic_SAXParseException } // SAXParseException
basic_SAXParseException(const std::string& message, SAXParseException(const std::string& message,
const LocatorT& locator) : const LocatorT& locator) :
SAXException(message), SAXException(message),
publicId_(locator.getPublicId()), publicId_(locator.getPublicId()),
@ -62,9 +62,9 @@ public:
columnNumber_(locator.getColumnNumber()) columnNumber_(locator.getColumnNumber())
{ {
setMsg(); setMsg();
} // basic_SAXParseException } // SAXParseException
basic_SAXParseException(const std::string& message, SAXParseException(const std::string& message,
const stringT& publicId, const stringT& publicId,
const stringT& systemId, const stringT& systemId,
int lineNumber, int lineNumber,
@ -76,9 +76,9 @@ public:
columnNumber_(columnNumber) columnNumber_(columnNumber)
{ {
setMsg(); setMsg();
} // basic_SAXParseException } // SAXParseException
basic_SAXParseException(const basic_SAXParseException& rhs) : SAXParseException(const SAXParseException& rhs) :
SAXException(rhs), SAXException(rhs),
msg_(rhs.msg_), msg_(rhs.msg_),
publicId_(rhs.publicId_), publicId_(rhs.publicId_),
@ -86,9 +86,9 @@ public:
lineNumber_(rhs.lineNumber_), lineNumber_(rhs.lineNumber_),
columnNumber_(rhs.columnNumber_) columnNumber_(rhs.columnNumber_)
{ {
} // basic_SAXParseException } // SAXParseException
basic_SAXParseException& operator=(const basic_SAXParseException& rhs) SAXParseException& operator=(const SAXParseException& rhs)
{ {
SAXException::operator=(rhs); SAXException::operator=(rhs);
@ -101,14 +101,14 @@ public:
return *this; return *this;
} // operator= } // operator=
virtual ~basic_SAXParseException() throw() { } virtual ~SAXParseException() throw() { }
/** /**
* Get the public identifier of the entity where the exception occurred. * Get the public identifier of the entity where the exception occurred.
* *
* @return A string containing the public identifier, or an empty string * @return A string containing the public identifier, or an empty string
* if none is available. * if none is available.
* @see basic_Locator#getPublicId * @see Locator#getPublicId
*/ */
const stringT& getPublicId() const { return publicId_; } const stringT& getPublicId() const { return publicId_; }
/** /**
@ -119,7 +119,7 @@ public:
* *
* @return A string containing the system identifier, or an empty string * @return A string containing the system identifier, or an empty string
* if none is available. * if none is available.
* @see basic_Locator#getSystemId * @see Locator#getSystemId
*/ */
const stringT& getSystemId() const { return systemId_; } const stringT& getSystemId() const { return systemId_; }
/** /**
@ -127,7 +127,7 @@ public:
* *
* @return An integer representing the line number, or -1 * @return An integer representing the line number, or -1
* if none is available. * if none is available.
* @see basic_Locator#getLineNumber * @see Locator#getLineNumber
*/ */
int getLineNumber() const { return lineNumber_; } int getLineNumber() const { return lineNumber_; }
/** /**
@ -137,7 +137,7 @@ public:
* *
* @return An integer representing the column number, or -1 * @return An integer representing the column number, or -1
* if none is available. * if none is available.
* @see basic_Locator#getColumnNumber * @see Locator#getColumnNumber
*/ */
int getColumnNumber() const { return columnNumber_; } int getColumnNumber() const { return columnNumber_; }
@ -162,13 +162,8 @@ private:
int lineNumber_; int lineNumber_;
int columnNumber_; int columnNumber_;
basic_SAXParseException(); SAXParseException();
}; // class basic_SAXParseException }; // class SAXParseException
typedef basic_SAXParseException<std::string> SAXParseException;
#ifndef ARABICA_NO_WCHAR_T
typedef basic_SAXParseException<std::wstring> wSAXParseException;
#endif
} // namespace SAX } // namespace SAX
} // namespace Arabica } // namespace Arabica

View file

@ -23,25 +23,25 @@ namespace SAX
* events as they pass on to the final application.</p> * events as they pass on to the final application.</p>
* *
* <p>The XMLFilterImpl helper class provides a convenient base * <p>The XMLFilterImpl helper class provides a convenient base
* for creating SAX2 filters, by passing on all {@link basic_EntityResolver * for creating SAX2 filters, by passing on all {@link EntityResolver
* EntityResolver}, {@link basic_DTDHandler DTDHandler}, * EntityResolver}, {@link DTDHandler DTDHandler},
* {@link basic_ContentHandler ContentHandler} and {@link ErrorHandler * {@link ContentHandler ContentHandler} and {@link ErrorHandler
* ErrorHandler} events automatically.</p> * ErrorHandler} events automatically.</p>
* *
* @since SAX 2.0 * @since SAX 2.0
* @author Jez Higgins, * @author Jez Higgins,
* <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a> * <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a>
* @version 2.0 * @version 2.0
* @see basic_XMLFilterImpl * @see XMLFilterImpl
*/ */
template<class string_type> template<class string_type>
class basic_XMLFilter : public basic_XMLReader<string_type> class XMLFilter : public XMLReaderInterface<string_type>
{ {
public: public:
typedef string_type stringT; typedef string_type stringT;
typedef basic_XMLReader<stringT> XMLReaderT; typedef XMLReaderInterface<stringT> XMLReaderT;
virtual ~basic_XMLFilter() { } virtual ~XMLFilter() { }
/** /**
* Set the parent reader. * Set the parent reader.
@ -63,12 +63,7 @@ public:
* @return The parent filter, or 0 if none has been set. * @return The parent filter, or 0 if none has been set.
*/ */
virtual XMLReaderT* getParent() const = 0; virtual XMLReaderT* getParent() const = 0;
}; // class basic_XMLFilter }; // class XMLFilter
typedef basic_XMLFilter<std::string> XMLFilter;
#ifndef ARABICA_NO_WCHAR_T
typedef basic_XMLFilter<std::wstring> wXMLFilter;
#endif
} // namespace SAX } // namespace SAX
} // namespace Arabica } // namespace Arabica

View file

@ -38,7 +38,7 @@ namespace SAX
* to return before reporting the next event.</p> * to return before reporting the next event.</p>
* *
* <p>This interface replaces the (now deprecated) SAX 1.0 {@link * <p>This interface replaces the (now deprecated) SAX 1.0 {@link
* basic_Parser Parser} interface. The XMLReader interface * Parser Parser} interface. The XMLReader interface
* contains two important enhancements over the old Parser * contains two important enhancements over the old Parser
* interface:</p> * interface:</p>
* *
@ -56,24 +56,24 @@ namespace SAX
* @author Jez Higgins, * @author Jez Higgins,
* <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a> * <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a>
* @version 2.0 * @version 2.0
* @see basic_XMLFilter * @see XMLFilter
* @see basic_helpers.ParserAdapter * @see helpers.ParserAdapter
* @see basic_helpers.XMLReaderAdapter * @see helpers.XMLReaderAdapter
*/ */
template<class string_type> template<class string_type>
class basic_XMLReader class XMLReaderInterface
{ {
public: public:
typedef string_type stringT; typedef string_type stringT;
typedef basic_EntityResolver<stringT> EntityResolverT; typedef EntityResolver<stringT> EntityResolverT;
typedef basic_DTDHandler<stringT> DTDHandlerT; typedef DTDHandler<stringT> DTDHandlerT;
typedef basic_ContentHandler<stringT> ContentHandlerT; typedef ContentHandler<stringT> ContentHandlerT;
typedef basic_InputSource<stringT> InputSourceT; typedef InputSource<stringT> InputSourceT;
typedef basic_ErrorHandler<stringT> ErrorHandlerT; typedef ErrorHandler<stringT> ErrorHandlerT;
typedef basic_DeclHandler<stringT> DeclHandlerT; typedef DeclHandler<stringT> DeclHandlerT;
typedef basic_LexicalHandler<stringT> LexicalHandlerT; typedef LexicalHandler<stringT> LexicalHandlerT;
virtual ~basic_XMLReader() { } virtual ~XMLReaderInterface() { }
///////////////////////////////////////////////// /////////////////////////////////////////////////
// Configuration // Configuration
@ -134,7 +134,7 @@ public:
* <p>The feature name is any fully-qualified URI. It is * <p>The feature name is any fully-qualified URI. It is
* possible for an XMLReader to recognize a feature name but * possible for an XMLReader to recognize a feature name but
* to be unable to set its value; this is especially true * to be unable to set its value; this is especially true
* in the case of an adapter for a SAX1 {@link basic_Parser Parser}, * in the case of an adapter for a SAX1 {@link Parser Parser},
* which has no way of affecting whether the underlying parser is * which has no way of affecting whether the underlying parser is
* validating, for example.</p> * validating, for example.</p>
* *
@ -293,7 +293,7 @@ public:
* by the application before it is passed to the parser.</p> * by the application before it is passed to the parser.</p>
* *
* @param systemId The system identifier (URI). * @param systemId The system identifier (URI).
* @see #parse(basic_InputSource&) * @see #parse(InputSource&)
*/ */
void parse(const stringT& systemId) void parse(const stringT& systemId)
{ {
@ -323,7 +323,7 @@ public:
* *
* @param input The input source for the top-level of the * @param input The input source for the top-level of the
* XML document. * XML document.
* @see basic_InputSource * @see InputSource
* @see #parse(const stringT&) * @see #parse(const stringT&)
* @see #setEntityResolver * @see #setEntityResolver
* @see #setDTDHandler * @see #setDTDHandler
@ -363,7 +363,7 @@ public:
* <p>The property name is any fully-qualified URI. It is * <p>The property name is any fully-qualified URI. It is
* possible for an XMLReader to recognize a property name but * possible for an XMLReader to recognize a property name but
* to be unable to return its state; this is especially true * to be unable to return its state; this is especially true
* in the case of an adapter for a SAX1 {@link basic_Parser * in the case of an adapter for a SAX1 {@link Parser
* Parser}.</p> * Parser}.</p>
* *
* <p>XMLReaders are not required to recognize any specific * <p>XMLReaders are not required to recognize any specific
@ -403,7 +403,7 @@ public:
* <p>The property name is any fully-qualified URI. It is * <p>The property name is any fully-qualified URI. It is
* possible for an XMLReader to recognize a property name but * possible for an XMLReader to recognize a property name but
* to be unable to set its value; this is especially true * to be unable to set its value; this is especially true
* in the case of an adapter for a SAX1 {@link basic_Parser * in the case of an adapter for a SAX1 {@link Parser
* Parser}.</p> * Parser}.</p>
* *
* <p>XMLReaders are not required to recognize setting * <p>XMLReaders are not required to recognize setting
@ -431,7 +431,7 @@ public:
Property<propertyTypeT&>* prop = new Property<propertyTypeT&>(value); Property<propertyTypeT&>* prop = new Property<propertyTypeT&>(value);
doSetProperty(name, std::auto_ptr<PropertyBase>(prop)); doSetProperty(name, std::auto_ptr<PropertyBase>(prop));
} // setProperty } // setProperty
}; // class basic_XMLReader }; // class XMLReaderInterface
} // namespace SAX } // namespace SAX
} // namespace Arabica } // namespace Arabica

View file

@ -25,16 +25,16 @@ namespace SAX
* @author Jez Higgins, * @author Jez Higgins,
* <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a> * <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a>
* @version 2.0 * @version 2.0
* @see basic_Attributes * @see Attributes
* @see basic_Attributes2Impl * @see Attributes2Impl
*/ */
template<class string_type> template<class string_type>
class basic_Attributes2 : public basic_Attributes<string_type> class Attributes2 : public Attributes<string_type>
{ {
public: public:
typedef string_type stringT; typedef string_type stringT;
virtual ~basic_Attributes2() { } virtual ~Attributes2() { }
/** /**
* Returns true unless the attribute value was provided by DTD defaulting. * Returns true unless the attribute value was provided by DTD defaulting.
@ -70,12 +70,7 @@ public:
* does not identify an attribute * does not identify an attribute
*/ */
virtual bool isSpecified(const stringT& uri, const stringT& localName) const = 0; virtual bool isSpecified(const stringT& uri, const stringT& localName) const = 0;
}; // class basic_Attributes2 }; // class Attributes2
typedef basic_Attributes2<std::string> Attributes2;
#ifndef ARABICA_NO_WCHAR_T
typedef basic_Attributes2<std::wstring> wAttributes2;
#endif
} // namespace SAX } // namespace SAX
} // namespace Arabica } // namespace Arabica

View file

@ -22,15 +22,15 @@ namespace SAX
* *
* <p>Note that data-related DTD declarations (unparsed entities and * <p>Note that data-related DTD declarations (unparsed entities and
* notations) are already reported through the {@link * notations) are already reported through the {@link
* basic_DTDHandler DTDHandler} interface.</p> * DTDHandler DTDHandler} interface.</p>
* *
* <p>If you are using the declaration handler together with a lexical * <p>If you are using the declaration handler together with a lexical
* handler, all of the events will occur between the * handler, all of the events will occur between the
* {@link basic_LexicalHandler#startDTD startDTD} and the * {@link LexicalHandler#startDTD startDTD} and the
* {@link basic_LexicalHandler#endDTD endDTD} events.</p> * {@link LexicalHandler#endDTD endDTD} events.</p>
* *
* <p>To set the DeclHandler for an XML reader, use the * <p>To set the DeclHandler for an XML reader, use the
* {@link basic_XMLReader#setProperty setProperty} method * {@link XMLReader#setProperty setProperty} method
* with the propertyId "http://xml.org/sax/properties/declaration-handler". * with the propertyId "http://xml.org/sax/properties/declaration-handler".
* If the reader does not support declaration events, it will throw a * If the reader does not support declaration events, it will throw a
* {@link SAXNotRecognizedException SAXNotRecognizedException} * {@link SAXNotRecognizedException SAXNotRecognizedException}
@ -42,14 +42,14 @@ namespace SAX
* @author Jez Higgins, * @author Jez Higgins,
* <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a> * <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a>
* @version 1.0 * @version 1.0
* @see basic_XMLReader * @see XMLReader
*/ */
template<class string_type> template<class string_type>
class basic_DeclHandler class DeclHandler
{ {
public: public:
typedef string_type stringT; typedef string_type stringT;
virtual ~basic_DeclHandler() { } virtual ~DeclHandler() { }
/** /**
* Report an element type declaration. * Report an element type declaration.
@ -106,7 +106,7 @@ public:
* entity, the name will begin with '%'. * entity, the name will begin with '%'.
* @param value The replacement text of the entity. * @param value The replacement text of the entity.
* @see #externalEntityDecl * @see #externalEntityDecl
* @see basic_DTDHandler#unparsedEntityDecl * @see DTDHandler#unparsedEntityDecl
*/ */
virtual void internalEntityDecl(const stringT& name, const stringT& value) = 0; virtual void internalEntityDecl(const stringT& name, const stringT& value) = 0;
/** /**
@ -121,17 +121,12 @@ public:
* an empty string if none was declared. * an empty string if none was declared.
* @param systemId The declared system identifier of the entity. * @param systemId The declared system identifier of the entity.
* @see #internalEntityDecl * @see #internalEntityDecl
* @see basic_DTDHandler#unparsedEntityDecl * @see DTDHandler#unparsedEntityDecl
*/ */
virtual void externalEntityDecl(const stringT& name, virtual void externalEntityDecl(const stringT& name,
const stringT& publicId, const stringT& publicId,
const stringT& systemId) = 0; const stringT& systemId) = 0;
}; // class basic_DeclHandler }; // class DeclHandler
typedef basic_DeclHandler<std::string> DeclHandler;
#ifndef ARABICA_NO_WCHAR_T
typedef basic_DeclHandler<std::wstring> wDeclHandler;
#endif
} // namespace SAX } // namespace SAX
} // namespace Arabica } // namespace Arabica

View file

@ -20,45 +20,40 @@ namespace SAX
* Default base class for SAX2 event handlers. * Default base class for SAX2 event handlers.
* *
* <p>This class extends the SAX2 base * <p>This class extends the SAX2 base
* {@link basic_DefaultHandler} handler class to * {@link DefaultHandler} handler class to
* support the SAX2 {@link basic_LexicalHandler LexicalHandler} * support the SAX2 {@link LexicalHandler LexicalHandler}
* and {@link basic_DeclHandler DeclHandler} extensions. * and {@link DeclHandler DeclHandler} extensions.
* The added handler methods just return; subclassers may * The added handler methods just return; subclassers may
* override on a method-by-method basis. * override on a method-by-method basis.
* *
* Note: this class might yet learn that the * Note: this class might yet learn that the
* ContentHandler.setDocumentLocator() call might be * ContentHandler.setDocumentLocator() call might be
* passed a {@link basic_Locator2 Locator2} object, and * passed a {@link Locator2 Locator2} object, and
* that the ContentHandler.startElement() call might be * that the ContentHandler.startElement() call might be
* passed a {@link basic_Attributes2 Attributes2} object. * passed a {@link Attributes2 Attributes2} object.
* *
* @since SAX 2.0 * @since SAX 2.0
* @author Jez Higgins, * @author Jez Higgins,
* <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a> * <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a>
* @version 2.0 * @version 2.0
* @see basic_DefaultHandler * @see DefaultHandler
* @see basic_LexicalHandler * @see LexicalHandler
* @see basic_DeclHandler * @see DeclHandler
*/ */
template<class string_type> template<class string_type>
class basic_DefaultHandler2 : public basic_DefaultHandler<string_type> class DefaultHandler2 : public DefaultHandler<string_type>
{ {
public: public:
typedef string_type stringT; typedef string_type stringT;
basic_DefaultHandler2() { } DefaultHandler2() { }
virtual ~basic_DefaultHandler2() { } virtual ~DefaultHandler2() { }
private: private:
basic_DefaultHandler2(const basic_DefaultHandler2&); DefaultHandler2(const DefaultHandler2&);
basic_DefaultHandler2& operator=(const basic_DefaultHandler2&); DefaultHandler2& operator=(const DefaultHandler2&);
bool operator==(const basic_DefaultHandler2&); bool operator==(const DefaultHandler2&);
}; // class basic_DefaultHandler }; // class DefaultHandler
typedef basic_DefaultHandler2<std::string> DefaultHandler2;
#ifndef ARABICA_NO_WCHAR_T
typedef basic_DefaultHandler2<std::wstring> wDefaultHandler2;
#endif
} // namespace SAX } // namespace SAX
} // namespace Arabica } // namespace Arabica

View file

@ -27,7 +27,7 @@ namespace SAX
* endDocument events.</p> * endDocument events.</p>
* *
* <p>To set the LexicalHandler for an XML reader, use the * <p>To set the LexicalHandler for an XML reader, use the
* {@link basic_XMLReader#setProperty setProperty} method * {@link XMLReader#setProperty setProperty} method
* with the propertyId "http://xml.org/sax/properties/lexical-handler". * with the propertyId "http://xml.org/sax/properties/lexical-handler".
* If the reader does not support lexical events, it will throw a * If the reader does not support lexical events, it will throw a
* {@link SAXNotRecognizedException SAXNotRecognizedException} * {@link SAXNotRecognizedException SAXNotRecognizedException}
@ -39,17 +39,17 @@ namespace SAX
* @author Jez Higgins, * @author Jez Higgins,
* <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a> * <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a>
* @version 1.0 * @version 1.0
* @see basic_XMLReader#setProperty * @see XMLReader#setProperty
* @see SAXNotRecognizedException * @see SAXNotRecognizedException
* @see SAXNotSupportedException * @see SAXNotSupportedException
*/ */
template<class string_type> template<class string_type>
class basic_LexicalHandler class LexicalHandler
{ {
public: public:
typedef string_type stringT; typedef string_type stringT;
virtual ~basic_LexicalHandler() { } virtual ~LexicalHandler() { }
/** /**
* Report the start of DTD declarations, if any. * Report the start of DTD declarations, if any.
@ -59,8 +59,8 @@ public:
* this method will not be invoked.</p> * this method will not be invoked.</p>
* *
* <p>All declarations reported through * <p>All declarations reported through
* {@link basic_DTDHandler DTDHandler} or * {@link DTDHandler DTDHandler} or
* {@link basic_DeclHandler DeclHandler} events must appear * {@link DeclHandler DeclHandler} events must appear
* between the startDTD and {@link #endDTD endDTD} events. * between the startDTD and {@link #endDTD endDTD} events.
* Declarations are assumed to belong to the internal DTD subset * Declarations are assumed to belong to the internal DTD subset
* unless they appear between {@link #startEntity startEntity} * unless they appear between {@link #startEntity startEntity}
@ -74,7 +74,7 @@ public:
* <p>Note that the start/endDTD events will appear within * <p>Note that the start/endDTD events will appear within
* the start/endDocument events from ContentHandler and * the start/endDocument events from ContentHandler and
* before the first * before the first
* {@link basic_ContentHandler#startElement startElement} * {@link ContentHandler#startElement startElement}
* event.</p> * event.</p>
* *
* @param name The document type name. * @param name The document type name.
@ -116,11 +116,11 @@ public:
* <p>When a SAX2 driver is providing these events, all other * <p>When a SAX2 driver is providing these events, all other
* events must be properly nested within start/end entity * events must be properly nested within start/end entity
* events. There is no additional requirement that events from * events. There is no additional requirement that events from
* {@link basic_DeclHandler DeclHandler} or * {@link DeclHandler DeclHandler} or
* {@link basic_DTDHandler DTDHandler} be properly ordered.</p> * {@link DTDHandler DTDHandler} be properly ordered.</p>
* *
* <p>Note that skipped entities will be reported through the * <p>Note that skipped entities will be reported through the
* {@link basic_ContentHandler#skippedEntity skippedEntity} * {@link ContentHandler#skippedEntity skippedEntity}
* event, which is part of the ContentHandler interface.</p> * event, which is part of the ContentHandler interface.</p>
* *
* <p>Because of the streaming event model that SAX uses, some * <p>Because of the streaming event model that SAX uses, some
@ -144,8 +144,8 @@ public:
* entity, the name will begin with '%', and if it is the * entity, the name will begin with '%', and if it is the
* external DTD subset, it will be "[dtd]". * external DTD subset, it will be "[dtd]".
* @see #endEntity * @see #endEntity
* @see basic_DeclHandler#internalEntityDecl * @see DeclHandler#internalEntityDecl
* @see basic_DeclHandler#externalEntityDecl * @see DeclHandler#externalEntityDecl
*/ */
virtual void startEntity(const stringT& name) = 0; virtual void startEntity(const stringT& name) = 0;
/** /**
@ -160,7 +160,7 @@ public:
* Report the start of a CDATA section. * Report the start of a CDATA section.
* *
* <p>The contents of the CDATA section will be reported through * <p>The contents of the CDATA section will be reported through
* the regular {@link basic_ContentHandler#characters * the regular {@link ContentHandler#characters
* characters} event; this event is intended only to report * characters} event; this event is intended only to report
* the boundary.</p> * the boundary.</p>
* *
@ -186,12 +186,7 @@ public:
* @param text A string holding the comment. * @param text A string holding the comment.
*/ */
virtual void comment(const stringT& text) = 0; virtual void comment(const stringT& text) = 0;
}; // class basic_LexicalHandler }; // class LexicalHandler
typedef basic_LexicalHandler<std::string> LexicalHandler;
#ifndef ARABICA_NO_WCHAR_T
typedef basic_LexicalHandler<std::wstring> wLexicalHandler;
#endif
} // namespace SAX } // namespace SAX
} // namespace Arabica } // namespace Arabica

View file

@ -26,12 +26,12 @@ namespace SAX
* @version 2.0 * @version 2.0
*/ */
template<class string_type> template<class string_type>
class basic_Locator2 : public basic_Locator<string_type> class Locator2 : public Locator<string_type>
{ {
public: public:
typedef string_type stringT; typedef string_type stringT;
virtual ~basic_Locator2() { } virtual ~Locator2() { }
/** /**
* Returns the version of XML used for the entity. This will normally * Returns the version of XML used for the entity. This will normally
@ -65,12 +65,7 @@ public:
* @return Name of the character encoding being used to interpret the entity's text. * @return Name of the character encoding being used to interpret the entity's text.
*/ */
virtual stringT getEncoding() const = 0; virtual stringT getEncoding() const = 0;
}; // class basic_Locator2 }; // class Locator2
typedef basic_Locator2<std::string> Locator2;
#ifndef ARABICA_NO_WCHAR_T
typedef basic_Locator2<std::wstring> wLocator2;
#endif
} // namespace SAX } // namespace SAX
} // namespace Arabica } // namespace Arabica

View file

@ -40,10 +40,10 @@ namespace SAX
}; // XMLPScanToken }; // XMLPScanToken
template<class string_type> template<class string_type>
class basic_ProgressiveParser : public basic_XMLReader<string_type> class ProgressiveParser : public XMLReaderInterface<string_type>
{ {
public: public:
typedef typename basic_XMLReader<string_type>::InputSourceT InputSourceT; typedef typename XMLReaderInterface<string_type>::InputSourceT InputSourceT;
/** @name Progressive Parsing Methods */ /** @name Progressive Parsing Methods */
//@{ //@{
@ -153,12 +153,8 @@ namespace SAX
*/ */
virtual void parseReset(XMLPScanToken& token) = 0; virtual void parseReset(XMLPScanToken& token) = 0;
//@} //@}
}; // basic_ProgressiveParser }; // ProgressiveParser
typedef basic_ProgressiveParser<std::string> ProgressiveParser;
#ifndef ARABICA_NO_WCHAR_T
typedef basic_ProgressiveParser<std::wstring> wProgressiveParser;
#endif
} // namespace SAX } // namespace SAX
} // namespace Arabica } // namespace Arabica

View file

@ -13,23 +13,23 @@ namespace SAX
{ {
template<class string_type, class string_adaptor = Arabica::default_string_adaptor<string_type> > template<class string_type, class string_adaptor = Arabica::default_string_adaptor<string_type> >
class NamespaceTracker : public basic_XMLFilterImpl<string_type> class NamespaceTracker : public XMLFilterImpl<string_type>
{ {
typedef basic_NamespaceSupport<string_type, string_adaptor> NamespaceSupportT; typedef NamespaceSupport<string_type, string_adaptor> NamespaceSupportT;
typedef typename NamespaceSupportT::stringListT stringListT; typedef typename NamespaceSupportT::stringListT stringListT;
typedef basic_XMLFilterImpl<string_type> XMLFilterT; typedef XMLFilterImpl<string_type> XMLFilterT;
public: public:
typedef basic_XMLReader<string_type> XMLReaderT; typedef XMLReaderInterface<string_type> XMLReaderT;
typedef basic_Attributes<string_type> AttributesT; typedef Attributes<string_type> AttributesT;
NamespaceTracker() : NamespaceTracker() :
basic_XMLFilterImpl<string_type>() XMLFilterImpl<string_type>()
{ {
} // NamespaceTracker } // NamespaceTracker
NamespaceTracker(XMLReaderT& parent) : NamespaceTracker(XMLReaderT& parent) :
basic_XMLFilterImpl<string_type>(parent) XMLFilterImpl<string_type>(parent)
{ {
} // NamespaceTracker } // NamespaceTracker

View file

@ -12,7 +12,7 @@ namespace SAX
{ {
template<class string_type> template<class string_type>
class PYXWriter : public basic_XMLFilterImpl<string_type> class PYXWriter : public XMLFilterImpl<string_type>
{ {
public: public:
typedef string_type stringT; typedef string_type stringT;
@ -20,9 +20,9 @@ class PYXWriter : public basic_XMLFilterImpl<string_type>
typedef typename string_type::value_type charT; typedef typename string_type::value_type charT;
typedef typename string_type::traits_type traitsT; typedef typename string_type::traits_type traitsT;
typedef std::basic_ostream<charT, traitsT> ostreamT; typedef std::basic_ostream<charT, traitsT> ostreamT;
typedef basic_XMLReader<stringT> XMLReaderT; typedef XMLReaderInterface<stringT> XMLReaderT;
typedef basic_XMLFilterImpl<stringT> XMLFilterT; typedef XMLFilterImpl<stringT> XMLFilterT;
typedef typename basic_XMLFilterImpl<stringT>::AttributesT AttributesT; typedef typename XMLFilterImpl<stringT>::AttributesT AttributesT;
typedef Arabica::Unicode<charT> UnicodeT; typedef Arabica::Unicode<charT> UnicodeT;
private: private:
using XMLFilterT::getParent; using XMLFilterT::getParent;

View file

@ -17,23 +17,23 @@ namespace SAX
This filter buffers up multiple calls to characters(...) and reports text in a single lump. This filter buffers up multiple calls to characters(...) and reports text in a single lump.
*/ */
template<class string_type, class string_adaptor = Arabica::default_string_adaptor<string_type> > template<class string_type, class string_adaptor = Arabica::default_string_adaptor<string_type> >
class TextCoalescer : public basic_XMLFilterImpl<string_type> class TextCoalescer : public XMLFilterImpl<string_type>
{ {
typedef basic_XMLFilterImpl<string_type> XMLFilterT; typedef XMLFilterImpl<string_type> XMLFilterT;
public: public:
typedef basic_XMLReader<string_type> XMLReaderT; typedef XMLReaderInterface<string_type> XMLReaderT;
typedef basic_Attributes<string_type> AttributesT; typedef Attributes<string_type> AttributesT;
TextCoalescer() : TextCoalescer() :
XMLFilterT() XMLFilterT()
{ {
} // basic_TextCoalescer } // TextCoalescer
TextCoalescer(XMLReaderT& parent) : TextCoalescer(XMLReaderT& parent) :
XMLFilterT(parent) XMLFilterT(parent)
{ {
} // basic_TextCoalescer } // TextCoalescer
virtual void startElement(const string_type& namespaceURI, const string_type& localName, virtual void startElement(const string_type& namespaceURI, const string_type& localName,
const string_type& qName, const AttributesT& atts) const string_type& qName, const AttributesT& atts)
@ -93,7 +93,7 @@ private:
buffer_ = string_adaptor::empty_string(); buffer_ = string_adaptor::empty_string();
} // flush } // flush
string_type buffer_; string_type buffer_;
}; // class basic_TextCoalescer }; // class TextCoalescer
} // namespace SAX } // namespace SAX
} // namespace Arabica } // namespace Arabica

View file

@ -14,12 +14,12 @@ namespace SAX
Strips out everything except startDocument, endDocument and text Strips out everything except startDocument, endDocument and text
*/ */
template<class string_type, class string_adaptor = Arabica::default_string_adaptor<string_type> > template<class string_type, class string_adaptor = Arabica::default_string_adaptor<string_type> >
class TextOnly : public basic_XMLFilterImpl<string_type> class TextOnly : public XMLFilterImpl<string_type>
{ {
typedef basic_XMLFilterImpl<string_type> XMLFilterT; typedef XMLFilterImpl<string_type> XMLFilterT;
public: public:
typedef basic_XMLReader<string_type> XMLReaderT; typedef XMLReaderInterface<string_type> XMLReaderT;
TextOnly() : TextOnly() :
XMLFilterT(0) XMLFilterT(0)

View file

@ -11,12 +11,12 @@ namespace SAX
{ {
template<class string_type, class string_adaptor = Arabica::default_string_adaptor<string_type> > template<class string_type, class string_adaptor = Arabica::default_string_adaptor<string_type> >
class WhitespaceStripper : public SAX::basic_XMLFilterImpl<string_type> class WhitespaceStripper : public SAX::XMLFilterImpl<string_type>
{ {
public: public:
typedef string_type stringT; typedef string_type stringT;
typedef SAX::basic_XMLFilterImpl<stringT> baseT; typedef SAX::XMLFilterImpl<stringT> baseT;
typedef SAX::basic_XMLReader<stringT> XMLReaderT; typedef SAX::XMLReader<stringT> XMLReaderT;
WhitespaceStripper() : WhitespaceStripper() :
baseT() baseT()

View file

@ -18,29 +18,29 @@ namespace SAX
{ {
template<class string_type> template<class string_type>
class basic_Writer : public basic_XMLFilterImpl<string_type> class Writer : public XMLFilterImpl<string_type>
{ {
public: public:
typedef string_type stringT; typedef string_type stringT;
typedef basic_Writer<stringT> WriterT; typedef Writer<stringT> WriterT;
typedef typename string_type::value_type charT; typedef typename string_type::value_type charT;
typedef typename string_type::traits_type traitsT; typedef typename string_type::traits_type traitsT;
typedef std::basic_ostream<charT, traitsT> ostreamT; typedef std::basic_ostream<charT, traitsT> ostreamT;
typedef basic_XMLReader<stringT> XMLReaderT; typedef XMLReaderInterface<stringT> XMLReaderT;
typedef basic_XMLFilterImpl<stringT> XMLFilterT; typedef XMLFilterImpl<stringT> XMLFilterT;
typedef typename basic_XMLFilterImpl<stringT>::AttributesT AttributesT; typedef typename XMLFilterImpl<stringT>::AttributesT AttributesT;
typedef Arabica::Unicode<charT> UnicodeT; typedef Arabica::Unicode<charT> UnicodeT;
typedef Arabica::XML::text_escaper<charT, traitsT> text_escaperT; typedef Arabica::XML::text_escaper<charT, traitsT> text_escaperT;
typedef Arabica::XML::attribute_escaper<charT, traitsT> attribute_escaperT; typedef Arabica::XML::attribute_escaper<charT, traitsT> attribute_escaperT;
private: private:
typedef basic_LexicalHandler<stringT> LexicalHandlerT; typedef LexicalHandler<stringT> LexicalHandlerT;
typedef basic_DeclHandler<stringT> DeclHandlerT; typedef DeclHandler<stringT> DeclHandlerT;
typedef typename XMLReaderT::InputSourceT InputSourceT; typedef typename XMLReaderT::InputSourceT InputSourceT;
typedef typename XMLReaderT::PropertyBase PropertyBaseT; typedef typename XMLReaderT::PropertyBase PropertyBaseT;
using XMLFilterT::getParent; using XMLFilterT::getParent;
public: public:
basic_Writer(ostreamT& stream, unsigned int indent = 2) : Writer(ostreamT& stream, unsigned int indent = 2) :
inCDATA_(false), inCDATA_(false),
inDTD_(false), inDTD_(false),
internalSubset_(true), internalSubset_(true),
@ -50,9 +50,9 @@ class basic_Writer : public basic_XMLFilterImpl<string_type>
encoding_(), encoding_(),
lastTag_(startTag) lastTag_(startTag)
{ {
} // basic_Writer } // Writer
basic_Writer(ostreamT& stream, XMLReaderT& parent, unsigned int indent = 2) : Writer(ostreamT& stream, XMLReaderT& parent, unsigned int indent = 2) :
XMLFilterT(parent), XMLFilterT(parent),
inCDATA_(false), inCDATA_(false),
inDTD_(false), inDTD_(false),
@ -63,9 +63,9 @@ class basic_Writer : public basic_XMLFilterImpl<string_type>
encoding_(), encoding_(),
lastTag_(startTag) lastTag_(startTag)
{ {
} // basic_Writer } // Writer
basic_Writer(ostreamT& stream, const stringT& encoding, unsigned int indent = 2) : Writer(ostreamT& stream, const stringT& encoding, unsigned int indent = 2) :
inCDATA_(false), inCDATA_(false),
inDTD_(false), inDTD_(false),
internalSubset_(true), internalSubset_(true),
@ -75,9 +75,9 @@ class basic_Writer : public basic_XMLFilterImpl<string_type>
encoding_(encoding), encoding_(encoding),
lastTag_(startTag) lastTag_(startTag)
{ {
} // basic_Writer } // Writer
basic_Writer(ostreamT& stream, XMLReaderT& parent, const stringT& encoding, unsigned int indent = 2) : Writer(ostreamT& stream, XMLReaderT& parent, const stringT& encoding, unsigned int indent = 2) :
XMLFilterT(parent), XMLFilterT(parent),
inCDATA_(false), inCDATA_(false),
inDTD_(false), inDTD_(false),
@ -88,7 +88,7 @@ class basic_Writer : public basic_XMLFilterImpl<string_type>
encoding_(encoding), encoding_(encoding),
lastTag_(startTag) lastTag_(startTag)
{ {
} // basic_Writer } // Writer
// setEncoding // setEncoding
// Sets the encoding included in the XML declaration. If not set, then the encoding // Sets the encoding included in the XML declaration. If not set, then the encoding
@ -149,10 +149,10 @@ class basic_Writer : public basic_XMLFilterImpl<string_type>
enum { startTag, endTag, docTag } lastTag_; enum { startTag, endTag, docTag } lastTag_;
const SAX::PropertyNames<stringT> properties_; const SAX::PropertyNames<stringT> properties_;
}; // class basic_Writer }; // class Writer
template<class string_type> template<class string_type>
void basic_Writer<string_type>::startDocument() void Writer<string_type>::startDocument()
{ {
*stream_ << UnicodeT::LESS_THAN_SIGN *stream_ << UnicodeT::LESS_THAN_SIGN
<< UnicodeT::QUESTION_MARK << UnicodeT::QUESTION_MARK
@ -202,14 +202,14 @@ void basic_Writer<string_type>::startDocument()
} // startDocument } // startDocument
template<class string_type> template<class string_type>
void basic_Writer<string_type>::endDocument() void Writer<string_type>::endDocument()
{ {
XMLFilterT::endDocument(); XMLFilterT::endDocument();
lastTag_ = endTag; lastTag_ = endTag;
} // endDocument } // endDocument
template<class string_type> template<class string_type>
void basic_Writer<string_type>::startElement( void Writer<string_type>::startElement(
const stringT& namespaceURI, const stringT& localName, const stringT& namespaceURI, const stringT& localName,
const stringT& qName, const AttributesT& atts) const stringT& qName, const AttributesT& atts)
{ {
@ -237,7 +237,7 @@ void basic_Writer<string_type>::startElement(
} // startElement } // startElement
template<class string_type> template<class string_type>
void basic_Writer<string_type>::endElement( void Writer<string_type>::endElement(
const stringT& namespaceURI, const stringT& localName, const stringT& namespaceURI, const stringT& localName,
const stringT& qName) const stringT& qName)
{ {
@ -256,7 +256,7 @@ void basic_Writer<string_type>::endElement(
} // endElement } // endElement
template<class string_type> template<class string_type>
void basic_Writer<string_type>::characters(const stringT& ch) void Writer<string_type>::characters(const stringT& ch)
{ {
if(!inCDATA_) if(!inCDATA_)
std::for_each(ch.begin(), ch.end(), text_escaperT(*stream_)); std::for_each(ch.begin(), ch.end(), text_escaperT(*stream_));
@ -267,7 +267,7 @@ void basic_Writer<string_type>::characters(const stringT& ch)
} // characters } // characters
template<class string_type> template<class string_type>
void basic_Writer<string_type>::ignorableWhitespace(const stringT& ch) void Writer<string_type>::ignorableWhitespace(const stringT& ch)
{ {
*stream_ << ch; *stream_ << ch;
@ -275,7 +275,7 @@ void basic_Writer<string_type>::ignorableWhitespace(const stringT& ch)
} // ignorableWhitespace } // ignorableWhitespace
template<class string_type> template<class string_type>
void basic_Writer<string_type>::processingInstruction(const stringT& target, const stringT& data) void Writer<string_type>::processingInstruction(const stringT& target, const stringT& data)
{ {
if((!inDTD_) || (inDTD_ && internalSubset_)) if((!inDTD_) || (inDTD_ && internalSubset_))
{ {
@ -294,7 +294,7 @@ void basic_Writer<string_type>::processingInstruction(const stringT& target, con
} // processingInstruction } // processingInstruction
template<class string_type> template<class string_type>
void basic_Writer<string_type>::skippedEntity(const stringT& name) void Writer<string_type>::skippedEntity(const stringT& name)
{ {
if(!isDtd(name)) if(!isDtd(name))
*stream_ << UnicodeT::AMPERSAND << name << UnicodeT::SEMI_COLON; *stream_ << UnicodeT::AMPERSAND << name << UnicodeT::SEMI_COLON;
@ -303,14 +303,14 @@ void basic_Writer<string_type>::skippedEntity(const stringT& name)
} // skippedEntity } // skippedEntity
template<class string_type> template<class string_type>
void basic_Writer<string_type>::doIndent() void Writer<string_type>::doIndent()
{ {
for(int i = 0; i < depth_; ++i) for(int i = 0; i < depth_; ++i)
*stream_ << UnicodeT::SPACE; *stream_ << UnicodeT::SPACE;
} // doIndent } // doIndent
template<class string_type> template<class string_type>
bool basic_Writer<string_type>::isDtd(const string_type& name) bool Writer<string_type>::isDtd(const string_type& name)
{ {
return (name.length() == 5 && return (name.length() == 5 &&
name[0] == UnicodeT::LEFT_SQUARE_BRACKET && name[0] == UnicodeT::LEFT_SQUARE_BRACKET &&
@ -321,7 +321,7 @@ bool basic_Writer<string_type>::isDtd(const string_type& name)
} // isDtd } // isDtd
template<class string_type> template<class string_type>
void basic_Writer<string_type>::startDTD(const stringT& name, const stringT& publicId, const stringT& systemId) void Writer<string_type>::startDTD(const stringT& name, const stringT& publicId, const stringT& systemId)
{ {
inDTD_ = true; inDTD_ = true;
depth_ += indent_; depth_ += indent_;
@ -348,7 +348,7 @@ void basic_Writer<string_type>::startDTD(const stringT& name, const stringT& pub
} // startDTD } // startDTD
template<class string_type> template<class string_type>
void basic_Writer<string_type>::endDTD() void Writer<string_type>::endDTD()
{ {
*stream_ << UnicodeT::RIGHT_SQUARE_BRACKET *stream_ << UnicodeT::RIGHT_SQUARE_BRACKET
<< UnicodeT::GREATER_THAN_SIGN << UnicodeT::GREATER_THAN_SIGN
@ -361,7 +361,7 @@ void basic_Writer<string_type>::endDTD()
} // endDTD } // endDTD
template<class string_type> template<class string_type>
void basic_Writer<string_type>::startEntity(const stringT& name) void Writer<string_type>::startEntity(const stringT& name)
{ {
if(isDtd(name)) if(isDtd(name))
internalSubset_ = false; internalSubset_ = false;
@ -370,7 +370,7 @@ void basic_Writer<string_type>::startEntity(const stringT& name)
} // startEntity } // startEntity
template<class string_type> template<class string_type>
void basic_Writer<string_type>::endEntity(const stringT& name) void Writer<string_type>::endEntity(const stringT& name)
{ {
if(isDtd(name)) if(isDtd(name))
internalSubset_ = true; internalSubset_ = true;
@ -379,7 +379,7 @@ void basic_Writer<string_type>::endEntity(const stringT& name)
} // endEntity } // endEntity
template<class string_type> template<class string_type>
void basic_Writer<string_type>::startCDATA() void Writer<string_type>::startCDATA()
{ {
inCDATA_ = true; inCDATA_ = true;
@ -397,7 +397,7 @@ void basic_Writer<string_type>::startCDATA()
} // startCDATA } // startCDATA
template<class string_type> template<class string_type>
void basic_Writer<string_type>::endCDATA() void Writer<string_type>::endCDATA()
{ {
*stream_ << UnicodeT::RIGHT_SQUARE_BRACKET *stream_ << UnicodeT::RIGHT_SQUARE_BRACKET
<< UnicodeT::RIGHT_SQUARE_BRACKET << UnicodeT::RIGHT_SQUARE_BRACKET
@ -409,7 +409,7 @@ void basic_Writer<string_type>::endCDATA()
} // endCDATA } // endCDATA
template<class string_type> template<class string_type>
void basic_Writer<string_type>::comment(const stringT& text) void Writer<string_type>::comment(const stringT& text)
{ {
if((!inDTD_) || (inDTD_ && internalSubset_)) if((!inDTD_) || (inDTD_ && internalSubset_))
*stream_ << UnicodeT::LESS_THAN_SIGN *stream_ << UnicodeT::LESS_THAN_SIGN
@ -425,7 +425,7 @@ void basic_Writer<string_type>::comment(const stringT& text)
} // comment } // comment
template<class string_type> template<class string_type>
void basic_Writer<string_type>::notationDecl(const stringT& name, const stringT& publicId, const stringT& systemId) void Writer<string_type>::notationDecl(const stringT& name, const stringT& publicId, const stringT& systemId)
{ {
if(inDTD_ && internalSubset_) if(inDTD_ && internalSubset_)
{ {
@ -454,7 +454,7 @@ void basic_Writer<string_type>::notationDecl(const stringT& name, const stringT&
} // notationDecl } // notationDecl
template<class string_type> template<class string_type>
void basic_Writer<string_type>::unparsedEntityDecl(const stringT& name, const stringT& publicId, const stringT& systemId, const stringT& notationName) void Writer<string_type>::unparsedEntityDecl(const stringT& name, const stringT& publicId, const stringT& systemId, const stringT& notationName)
{ {
if(inDTD_ && internalSubset_) if(inDTD_ && internalSubset_)
{ {
@ -479,7 +479,7 @@ void basic_Writer<string_type>::unparsedEntityDecl(const stringT& name, const st
} // unparsedEntityDecl } // unparsedEntityDecl
template<class string_type> template<class string_type>
void basic_Writer<string_type>::elementDecl(const stringT& name, const stringT& model) void Writer<string_type>::elementDecl(const stringT& name, const stringT& model)
{ {
if(inDTD_ && internalSubset_) if(inDTD_ && internalSubset_)
{ {
@ -507,7 +507,7 @@ void basic_Writer<string_type>::elementDecl(const stringT& name, const stringT&
} // elementDecl } // elementDecl
template<class string_type> template<class string_type>
void basic_Writer<string_type>::attributeDecl(const stringT& elementName, const stringT& attributeName, void Writer<string_type>::attributeDecl(const stringT& elementName, const stringT& attributeName,
const stringT& type, const stringT& valueDefault, const stringT& value) const stringT& type, const stringT& valueDefault, const stringT& value)
{ {
if(inDTD_ && internalSubset_) if(inDTD_ && internalSubset_)
@ -548,7 +548,7 @@ void basic_Writer<string_type>::attributeDecl(const stringT& elementName, const
} // attributeDecl } // attributeDecl
template<class string_type> template<class string_type>
void basic_Writer<string_type>::internalEntityDecl(const stringT& name, const stringT& value) void Writer<string_type>::internalEntityDecl(const stringT& name, const stringT& value)
{ {
if(inDTD_ && internalSubset_) if(inDTD_ && internalSubset_)
{ {
@ -566,7 +566,7 @@ void basic_Writer<string_type>::internalEntityDecl(const stringT& name, const st
} // internalEntityDecl } // internalEntityDecl
template<class string_type> template<class string_type>
void basic_Writer<string_type>::externalEntityDecl(const stringT& name, const stringT& publicId, const stringT& systemId) void Writer<string_type>::externalEntityDecl(const stringT& name, const stringT& publicId, const stringT& systemId)
{ {
if(inDTD_ && internalSubset_) if(inDTD_ && internalSubset_)
{ {
@ -581,7 +581,7 @@ void basic_Writer<string_type>::externalEntityDecl(const stringT& name, const st
} // externalEntityDecl } // externalEntityDecl
template<class string_type> template<class string_type>
void basic_Writer<string_type>::startEntityDecl(const stringT& name) void Writer<string_type>::startEntityDecl(const stringT& name)
{ {
*stream_ << UnicodeT::LESS_THAN_SIGN *stream_ << UnicodeT::LESS_THAN_SIGN
<< UnicodeT::EXCLAMATION_MARK << UnicodeT::EXCLAMATION_MARK
@ -596,7 +596,7 @@ void basic_Writer<string_type>::startEntityDecl(const stringT& name)
} // startEntityDecl } // startEntityDecl
template<class string_type> template<class string_type>
void basic_Writer<string_type>::publicAndSystem(const stringT& publicId, const stringT& systemId) void Writer<string_type>::publicAndSystem(const stringT& publicId, const stringT& systemId)
{ {
*stream_ << UnicodeT::SPACE; *stream_ << UnicodeT::SPACE;
@ -628,11 +628,6 @@ void basic_Writer<string_type>::publicAndSystem(const stringT& publicId, const s
} // if ... } // if ...
} // publicAndSystem } // publicAndSystem
typedef basic_Writer<std::string> Writer;
#ifndef ARABICA_NO_WCHAR_T
typedef basic_Writer<std::wstring> wWriter;
#endif
} // namespace SAX } // namespace SAX
} // namespace Arabica } // namespace Arabica

View file

@ -12,25 +12,25 @@ namespace SAX
{ {
template<class string_type, class string_adaptor = Arabica::default_string_adaptor<string_type> > template<class string_type, class string_adaptor = Arabica::default_string_adaptor<string_type> >
class XMLBaseTracker : public basic_XMLFilterImpl<string_type> class XMLBaseTracker : public XMLFilterImpl<string_type>
{ {
typedef basic_XMLBaseSupport<string_type, string_adaptor> XMLBaseSupportT; typedef XMLBaseSupport<string_type, string_adaptor> XMLBaseSupportT;
typedef basic_XMLFilterImpl<string_type> XMLFilterT; typedef XMLFilterImpl<string_type> XMLFilterT;
public: public:
typedef basic_XMLReader<string_type> XMLReaderT; typedef XMLReaderInterface<string_type> XMLReaderT;
typedef basic_Locator<string_type> LocatorT; typedef Locator<string_type> LocatorT;
typedef basic_Attributes<string_type> AttributesT; typedef Attributes<string_type> AttributesT;
XMLBaseTracker() : XMLBaseTracker() :
basic_XMLFilterImpl<string_type>(), XMLFilterImpl<string_type>(),
locator_(0), locator_(0),
base_set_(false) base_set_(false)
{ {
} // XMLBaseTracker } // XMLBaseTracker
XMLBaseTracker(XMLReaderT& parent) : XMLBaseTracker(XMLReaderT& parent) :
basic_XMLFilterImpl<string_type>(parent), XMLFilterImpl<string_type>(parent),
locator_(0), locator_(0),
base_set_(false) base_set_(false)
{ {

View file

@ -37,12 +37,12 @@ const std::string const types[] = { empty_, "CDATA", "ID", "IDREF", "IDREFS", "N
* Default implementation for AttributeList. * Default implementation for AttributeList.
* *
* <p>AttributeList implements the deprecated SAX1 {@link * <p>AttributeList implements the deprecated SAX1 {@link
* basic_AttributeList AttributeList} interface, and has been * AttributeList AttributeList} interface, and has been
* replaced by the new SAX2 {@link basic_AttributesImpl * replaced by the new SAX2 {@link AttributesImpl
* AttributesImpl} interface.</p> * AttributesImpl} interface.</p>
* *
* <p>This class provides a convenience implementation of the SAX * <p>This class provides a convenience implementation of the SAX
* {@link basic_AttributeList AttributeList} interface. This * {@link AttributeList AttributeList} interface. This
* implementation is useful both for SAX parser writers, who can use * implementation is useful both for SAX parser writers, who can use
* it to provide attributes to the application, and for SAX application * it to provide attributes to the application, and for SAX application
* writers, who can use it to create a persistent copy of an element's * writers, who can use it to create a persistent copy of an element's
@ -67,38 +67,38 @@ const std::string const types[] = { empty_, "CDATA", "ID", "IDREF", "IDREFS", "N
* implementations.</p> * implementations.</p>
* *
* @deprecated This class implements a deprecated interface, * @deprecated This class implements a deprecated interface,
* {@link basic_AttributeList AttributeList}; * {@link AttributeList AttributeList};
* that interface has been replaced by * that interface has been replaced by
* {@link basic_Attributes Attributes}, * {@link Attributes Attributes},
* which is implemented in the * which is implemented in the
* {@link basic_AttributesImpl * {@link AttributesImpl
* AttributesImpl} helper class. * AttributesImpl} helper class.
* @since SAX 1.0 * @since SAX 1.0
* @author Jez Higgins, * @author Jez Higgins,
* <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a> * <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a>
* @version 2.0 * @version 2.0
* @see basic_AttributeList * @see AttributeList
* @see basic_DocumentHandler#startElement * @see DocumentHandler#startElement
*/ */
template<class stringT> template<class stringT>
class basic_AttributeListImpl : public basic_AttributeList<stringT> class AttributeListImpl : public AttributeList<stringT>
{ {
public: public:
basic_AttributeListImpl() : atts_() { } AttributeListImpl() : atts_() { }
basic_AttributeListImpl(const basic_AttributeList& atts) AttributeListImpl(const AttributeList& atts)
: atts_(atts.getLength()) : atts_(atts.getLength())
{ {
setAttributeList(atts); setAttributeList(atts);
} // AttributeListImpl } // AttributeListImpl
basic_AttributeListImpl& operator=(const basic_AttributeList& atts) AttributeListImpl& operator=(const AttributeList& atts)
{ {
setAttributeList(atts); setAttributeList(atts);
return *this; return *this;
} // operator= } // operator=
virtual ~basic_AttributeListImpl() { clear(); } virtual ~AttributeListImpl() { clear(); }
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
// Methods specific to this class. // Methods specific to this class.
@ -132,7 +132,7 @@ public:
* @param type The attribute type ("NMTOKEN" for an enumeration). * @param type The attribute type ("NMTOKEN" for an enumeration).
* @param value The attribute value. * @param value The attribute value.
* @see #removeAttribute * @see #removeAttribute
* @see basic_DocumentHandler#startElement * @see DocumentHandler#startElement
*/ */
void addAttribute(const stringT& name, const stringT& type, const stringT& value) void addAttribute(const stringT& name, const stringT& type, const stringT& value)
{ {
@ -170,7 +170,7 @@ public:
* it will make sense to reuse the same AttributeListImpl object * it will make sense to reuse the same AttributeListImpl object
* rather than allocating a new one each time.</p> * rather than allocating a new one each time.</p>
* *
* @see basic_DocumentHandler#startElement * @see DocumentHandler#startElement
*/ */
void clear() void clear()
{ {
@ -188,7 +188,7 @@ public:
* Return the number of attributes in the list. * Return the number of attributes in the list.
* *
* @return The number of attributes in the list. * @return The number of attributes in the list.
* @see basic_AttributeList#getLength * @see AttributeList#getLength
*/ */
virtual int getLength() const virtual int getLength() const
{ {
@ -201,7 +201,7 @@ public:
* @param i The position of the attribute in the list. * @param i The position of the attribute in the list.
* @return The attribute name as a string, or an empty string if there * @return The attribute name as a string, or an empty string if there
* is no attribute at that position. * is no attribute at that position.
* @see basic_AttributeList#getName(int) * @see AttributeList#getName(int)
*/ */
virtual const stringT& getName(int i) const virtual const stringT& getName(int i) const
{ {
@ -218,7 +218,7 @@ public:
* enumeration, and "CDATA" if no declaration was * enumeration, and "CDATA" if no declaration was
* read), or an empty string if there is no attribute at * read), or an empty string if there is no attribute at
* that position. * that position.
* @see basic_AttributeList#getType(int) * @see AttributeList#getType(int)
*/ */
virtual const stringT& getType(int i) const virtual const stringT& getType(int i) const
{ {
@ -233,7 +233,7 @@ public:
* @param i The position of the attribute in the list. * @param i The position of the attribute in the list.
* @return The attribute value as a string, or an empty string if * @return The attribute value as a string, or an empty string if
* there is no attribute at that position. * there is no attribute at that position.
* @see basic_AttributeList#getValue(int) * @see AttributeList#getValue(int)
*/ */
virtual const stringT& getValue(int i) const virtual const stringT& getValue(int i) const
{ {
@ -249,7 +249,7 @@ public:
* @return The attribute type as a string ("NMTOKEN" for an * @return The attribute type as a string ("NMTOKEN" for an
* enumeration, and "CDATA" if no declaration was * enumeration, and "CDATA" if no declaration was
* read). * read).
* @see basic_AttributeList#getType(java.lang.String) * @see AttributeList#getType(java.lang.String)
*/ */
virtual const stringT& getType(const stringT& name) const virtual const stringT& getType(const stringT& name) const
{ {
@ -261,7 +261,7 @@ public:
* Get the value of an attribute (by name). * Get the value of an attribute (by name).
* *
* @param name The attribute name. * @param name The attribute name.
* @see basic_AttributeList#getValue(java.lang.String) * @see AttributeList#getValue(java.lang.String)
*/ */
virtual const stringT& getValue(const stringT& name) const virtual const stringT& getValue(const stringT& name) const
{ {
@ -287,14 +287,9 @@ private:
return res; return res;
} // index } // index
bool operator==(const basic_AttributeList&) const; // not implemented bool operator==(const AttributeList&) const; // not implemented
}; // class AttributeListImpl }; // class AttributeListImpl
typedef basic_AttributeListImpl<std::string> AttributeListImpl;
#ifndef ARABICA_NO_WCHAR_T
typedef basic_AttributeListImpl<std::wstring> wAttributeListImpl;
#endif
} // namespace SAX } // namespace SAX
} // namespace Arabica } // namespace Arabica

View file

@ -17,7 +17,7 @@ namespace SAX
* Default implementation of the Attributes interface. * Default implementation of the Attributes interface.
* *
* <p>This class provides a default implementation of the SAX2 * <p>This class provides a default implementation of the SAX2
* {@link basic_Attributes Attributes} interface, with the * {@link Attributes Attributes} interface, with the
* addition of manipulators so that the list can be modified or * addition of manipulators so that the list can be modified or
* reused.</p> * reused.</p>
* *
@ -25,12 +25,12 @@ namespace SAX
* *
* <ol> * <ol>
* <li>to take a persistent snapshot of an Attributes object * <li>to take a persistent snapshot of an Attributes object
* in a {@link basic_ContentHandler#startElement startElement} event; or</li> * in a {@link ContentHandler#startElement startElement} event; or</li>
* <li>to construct or modify an Attributes object in a SAX2 driver or filter.</li> * <li>to construct or modify an Attributes object in a SAX2 driver or filter.</li>
* </ol> * </ol>
* *
* <p>This class replaces the now-deprecated SAX1 {@link * <p>This class replaces the now-deprecated SAX1 {@link
* basic_AttributeListImpl AttributeListImpl} * AttributeListImpl AttributeListImpl}
* class.</p> * class.</p>
* *
* @since SAX 2.0 * @since SAX 2.0
@ -39,19 +39,19 @@ namespace SAX
* @version 2.0 * @version 2.0
*/ */
template<class string_type> template<class string_type>
class basic_AttributesImpl : public basic_Attributes<string_type> class AttributesImpl : public Attributes<string_type>
{ {
public: public:
typedef string_type stringT; typedef string_type stringT;
typedef basic_Attributes<stringT> AttributesT; typedef Attributes<stringT> AttributesT;
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
// Constructors. // Constructors.
basic_AttributesImpl() { } AttributesImpl() { }
basic_AttributesImpl(const AttributesT& atts) AttributesImpl(const AttributesT& atts)
{ {
setAttributes(atts); setAttributes(atts);
} // basic_AttributesImpl } // AttributesImpl
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
// Implementation of SAX::Attributes. // Implementation of SAX::Attributes.
@ -59,7 +59,7 @@ public:
* Return the number of attributes in the list. * Return the number of attributes in the list.
* *
* @return The number of attributes in the list. * @return The number of attributes in the list.
* @see basic_Attributes#getLength * @see Attributes#getLength
*/ */
virtual int getLength() const virtual int getLength() const
{ {
@ -72,7 +72,7 @@ public:
* @param index The attribute's index (zero-based). * @param index The attribute's index (zero-based).
* @return The Namespace URI, the empty string if none is * @return The Namespace URI, the empty string if none is
* available, or if the index is out of range. * available, or if the index is out of range.
* @see basic_Attributes#getURI * @see Attributes#getURI
*/ */
virtual stringT getURI(unsigned int index) const virtual stringT getURI(unsigned int index) const
{ {
@ -87,7 +87,7 @@ public:
* @param index The attribute's index (zero-based). * @param index The attribute's index (zero-based).
* @return The attribute's local name, the empty string if * @return The attribute's local name, the empty string if
* none is available, or if the index if out of range. * none is available, or if the index if out of range.
* @see basic_Attributes#getLocalName * @see Attributes#getLocalName
*/ */
virtual stringT getLocalName(unsigned int index) const virtual stringT getLocalName(unsigned int index) const
{ {
@ -103,7 +103,7 @@ public:
* @param index The attribute's index (zero-based). * @param index The attribute's index (zero-based).
* @return The attribute's qualified name, the empty string if * @return The attribute's qualified name, the empty string if
* none is available, or if the index is out of bounds. * none is available, or if the index is out of bounds.
* @see basic_Attributes#getQName * @see Attributes#getQName
*/ */
virtual stringT getQName(unsigned int index) const virtual stringT getQName(unsigned int index) const
{ {
@ -119,7 +119,7 @@ public:
* @param index The attribute's index (zero-based). * @param index The attribute's index (zero-based).
* @return The attribute's type, "CDATA" if the type is unknown, or an empty * @return The attribute's type, "CDATA" if the type is unknown, or an empty
* string if the index is out of bounds. * string if the index is out of bounds.
* @see basic_Attributes#getType(int) * @see Attributes#getType(int)
*/ */
virtual stringT getType(unsigned int index) const virtual stringT getType(unsigned int index) const
{ {
@ -134,7 +134,7 @@ public:
* *
* @param index The attribute's index (zero-based). * @param index The attribute's index (zero-based).
* @return The attribute's value or an empty string if the index is out of bounds. * @return The attribute's value or an empty string if the index is out of bounds.
* @see basic_Attributes#getValue(int) * @see Attributes#getValue(int)
*/ */
virtual stringT getValue(unsigned int index) const virtual stringT getValue(unsigned int index) const
{ {
@ -155,7 +155,7 @@ public:
* string if none is available. * string if none is available.
* @param localName The attribute's local name. * @param localName The attribute's local name.
* @return The attribute's index, or -1 if none matches. * @return The attribute's index, or -1 if none matches.
* @see basic_Attributes#getIndex(const stringT&,const stringT&) * @see Attributes#getIndex(const stringT&,const stringT&)
*/ */
virtual int getIndex(const stringT& uri, const stringT& localName) const virtual int getIndex(const stringT& uri, const stringT& localName) const
{ {
@ -170,7 +170,7 @@ public:
* *
* @param qName The qualified name. * @param qName The qualified name.
* @return The attribute's index, or -1 if none matches. * @return The attribute's index, or -1 if none matches.
* @see basic_Attributes#getIndex(const stringT&) * @see Attributes#getIndex(const stringT&)
*/ */
virtual int getIndex(const stringT& qName) const virtual int getIndex(const stringT& qName) const
{ {
@ -191,7 +191,7 @@ public:
* @param localName The local name. * @param localName The local name.
* @return The attribute's type, or an empty string if there is no * @return The attribute's type, or an empty string if there is no
* matching attribute. * matching attribute.
* @see basic_Attributes#getType(const stringT&,const stringT&) * @see Attributes#getType(const stringT&,const stringT&)
*/ */
virtual stringT getType(const stringT& uri, const stringT& localName) const virtual stringT getType(const stringT& uri, const stringT& localName) const
{ {
@ -207,7 +207,7 @@ public:
* @param qName The qualified name. * @param qName The qualified name.
* @return The attribute's type, or an empty string if there is no * @return The attribute's type, or an empty string if there is no
* matching attribute. * matching attribute.
* @see basic_Attributes#getType(const stringT&) * @see Attributes#getType(const stringT&)
*/ */
virtual stringT getType(const stringT& qName) const virtual stringT getType(const stringT& qName) const
{ {
@ -228,7 +228,7 @@ public:
* @param localName The local name. * @param localName The local name.
* @return The attribute's value, or an empty string if there is no * @return The attribute's value, or an empty string if there is no
* matching attribute. * matching attribute.
* @see basic_Attributes#getValue(const stringT&,const stringT&) * @see Attributes#getValue(const stringT&,const stringT&)
*/ */
virtual stringT getValue(const stringT& uri, const stringT& localName) const virtual stringT getValue(const stringT& uri, const stringT& localName) const
{ {
@ -244,7 +244,7 @@ public:
* @param qName The qualified name. * @param qName The qualified name.
* @return The attribute's value, or an empty string if there is no * @return The attribute's value, or an empty string if there is no
* matching attribute. * matching attribute.
* @see basic_Attributes#getValue(const stringT&) * @see Attributes#getValue(const stringT&)
*/ */
virtual stringT getValue(const stringT& qName) const virtual stringT getValue(const stringT& qName) const
{ {
@ -556,11 +556,6 @@ private:
stringT emptyString_; stringT emptyString_;
}; // class AttributesImpl }; // class AttributesImpl
typedef basic_AttributesImpl<std::string> AttributesImpl;
#ifndef ARABICA_NO_WCHAR_T
typedef basic_AttributesImpl<std::wstring> wAttributesImpl;
#endif
} // namespace SAX } // namespace SAX
} // namespace Arabica } // namespace Arabica

View file

@ -12,10 +12,10 @@ namespace Arabica
namespace SAX namespace SAX
{ {
template<class string_type> template<class string_type>
class CatchErrorHandler : public SAX::basic_ErrorHandler<string_type> class CatchErrorHandler : public SAX::ErrorHandler<string_type>
{ {
public: public:
typedef SAX::basic_SAXParseException<string_type> SAXParseExceptionT; typedef SAX::SAXParseException<string_type> SAXParseExceptionT;
CatchErrorHandler() : errors_() { } CatchErrorHandler() : errors_() { }
virtual ~CatchErrorHandler() { } virtual ~CatchErrorHandler() { }

View file

@ -29,9 +29,9 @@ namespace SAX
* callbacks in the four core SAX2 handler classes:</p> * callbacks in the four core SAX2 handler classes:</p>
* *
* <ul> * <ul>
* <li>{@link basic_EntityResolver EntityResolver}</li> * <li>{@link EntityResolver EntityResolver}</li>
* <li>{@link basic_DTDHandler DTDHandler}</li> * <li>{@link DTDHandler DTDHandler}</li>
* <li>{@link basic_ContentHandler ContentHandler}</li> * <li>{@link ContentHandler ContentHandler}</li>
* <li>{@link ErrorHandler ErrorHandler}</li> * <li>{@link ErrorHandler ErrorHandler}</li>
* </ul> * </ul>
* *
@ -41,34 +41,34 @@ namespace SAX
* application has not supplied its own.</p> * application has not supplied its own.</p>
* *
* <p>This class replaces the deprecated SAX1 * <p>This class replaces the deprecated SAX1
* {@link basic_HandlerBase HandlerBase} class.</p> * {@link HandlerBase HandlerBase} class.</p>
* *
* @since SAX 2.0 * @since SAX 2.0
* @author Jez Higgins, * @author Jez Higgins,
* <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a> * <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a>
* @version 2.0 * @version 2.0
* @see basic_EntityResolver * @see EntityResolver
* @see basic_DTDHandler * @see DTDHandler
* @see basic_ContentHandler * @see ContentHandler
* @see basic_ErrorHandler * @see ErrorHandler
*/ */
template<class string_type> template<class string_type>
class basic_DefaultHandler : public basic_EntityResolver<string_type>, class DefaultHandler : public EntityResolver<string_type>,
public basic_DTDHandler<string_type>, public DTDHandler<string_type>,
public basic_ContentHandler<string_type>, public ContentHandler<string_type>,
public basic_ErrorHandler<string_type>, public ErrorHandler<string_type>,
public basic_LexicalHandler<string_type>, public LexicalHandler<string_type>,
public basic_DeclHandler<string_type> public DeclHandler<string_type>
{ {
public: public:
typedef string_type stringT; typedef string_type stringT;
typedef basic_InputSource<stringT> InputSourceT; typedef InputSource<stringT> InputSourceT;
typedef basic_Locator<stringT> LocatorT; typedef Locator<stringT> LocatorT;
typedef basic_Attributes<stringT> AttributesT; typedef Attributes<stringT> AttributesT;
typedef basic_SAXParseException<stringT> SAXParseExceptionT; typedef SAXParseException<stringT> SAXParseExceptionT;
basic_DefaultHandler() { } DefaultHandler() { }
virtual ~basic_DefaultHandler() { } virtual ~DefaultHandler() { }
////////////////////////////////////////////// //////////////////////////////////////////////
// EntityResolver // EntityResolver
@ -88,7 +88,7 @@ public:
* @return The new input source, (empty to require the * @return The new input source, (empty to require the
* default behaviour). * default behaviour).
* @exception SAXException Any SAX exception. * @exception SAXException Any SAX exception.
* @see basic_EntityResolver#resolveEntity * @see EntityResolver#resolveEntity
*/ */
virtual InputSourceT resolveEntity(const stringT& /* publicId */, const stringT& /* systemId */) virtual InputSourceT resolveEntity(const stringT& /* publicId */, const stringT& /* systemId */)
{ {
@ -110,7 +110,7 @@ public:
* @param systemId The notation system identifier. * @param systemId The notation system identifier.
* @exception SAXException Any SAX exception, possibly * @exception SAXException Any SAX exception, possibly
* wrapping another exception. * wrapping another exception.
* @see basic_DTDHandler#notationDecl * @see DTDHandler#notationDecl
*/ */
virtual void notationDecl(const stringT& /* name */, virtual void notationDecl(const stringT& /* name */,
const stringT& /* publicId */, const stringT& /* publicId */,
@ -132,7 +132,7 @@ public:
* @param notationName The name of the associated notation. * @param notationName The name of the associated notation.
* @exception SAXException Any SAX exception, possibly * @exception SAXException Any SAX exception, possibly
* wrapping another exception. * wrapping another exception.
* @see basic_DTDHandler#unparsedEntityDecl * @see DTDHandler#unparsedEntityDecl
*/ */
virtual void unparsedEntityDecl(const stringT& /* name */, virtual void unparsedEntityDecl(const stringT& /* name */,
const stringT& /* publicId */, const stringT& /* publicId */,
@ -151,8 +151,8 @@ public:
* with other document events.</p> * with other document events.</p>
* *
* @param locator A locator for all SAX document events. * @param locator A locator for all SAX document events.
* @see basic_ContentHandler#setDocumentLocator * @see ContentHandler#setDocumentLocator
* @see basic_Locator * @see Locator
*/ */
virtual void setDocumentLocator(const LocatorT& /* locator */) { } virtual void setDocumentLocator(const LocatorT& /* locator */) { }
@ -166,7 +166,7 @@ public:
* *
* @exception SAXException Any SAX exception, possibly * @exception SAXException Any SAX exception, possibly
* wrapping another exception. * wrapping another exception.
* @see basic_ContentHandler#startDocument * @see ContentHandler#startDocument
*/ */
virtual void startDocument() { } virtual void startDocument() { }
/** /**
@ -179,7 +179,7 @@ public:
* *
* @exception SAXException Any SAX exception, possibly * @exception SAXException Any SAX exception, possibly
* wrapping another exception. * wrapping another exception.
* @see basic_ContentHandler#endDocument * @see ContentHandler#endDocument
*/ */
virtual void endDocument() { } virtual void endDocument() { }
@ -194,7 +194,7 @@ public:
* @param uri The Namespace URI mapped to the prefix. * @param uri The Namespace URI mapped to the prefix.
* @exception SAXException Any SAX exception, possibly * @exception SAXException Any SAX exception, possibly
* wrapping another exception. * wrapping another exception.
* @see basic_ContentHandler#startPrefixMapping * @see ContentHandler#startPrefixMapping
*/ */
virtual void startPrefixMapping(const stringT& /* prefix */, const stringT& /* uri */) { } virtual void startPrefixMapping(const stringT& /* prefix */, const stringT& /* uri */) { }
/** /**
@ -207,7 +207,7 @@ public:
* @param prefix The Namespace prefix being declared. * @param prefix The Namespace prefix being declared.
* @exception SAXException Any SAX exception, possibly * @exception SAXException Any SAX exception, possibly
* wrapping another exception. * wrapping another exception.
* @see basic_ContentHandler#endPrefixMapping * @see ContentHandler#endPrefixMapping
*/ */
virtual void endPrefixMapping(const stringT& /* prefix */) { } virtual void endPrefixMapping(const stringT& /* prefix */) { }
@ -230,7 +230,7 @@ public:
* attributes, it shall be an empty Attributes object. * attributes, it shall be an empty Attributes object.
* @exception SAXException Any SAX exception, possibly * @exception SAXException Any SAX exception, possibly
* wrapping another exception. * wrapping another exception.
* @see basic_ContentHandler#startElement * @see ContentHandler#startElement
*/ */
virtual void startElement(const stringT& /* namespaceURI */, const stringT& /* localName */, virtual void startElement(const stringT& /* namespaceURI */, const stringT& /* localName */,
const stringT& /* qName */, const AttributesT& /* atts */) { } const stringT& /* qName */, const AttributesT& /* atts */) { }
@ -251,7 +251,7 @@ public:
* qualified names are not available. * qualified names are not available.
* @exception SAXException Any SAX exception, possibly * @exception SAXException Any SAX exception, possibly
* wrapping another exception. * wrapping another exception.
* @see basic_ContentHandler#endElement * @see ContentHandler#endElement
*/ */
virtual void endElement(const stringT& /* namespaceURI */, const stringT& /* localName */, virtual void endElement(const stringT& /* namespaceURI */, const stringT& /* localName */,
const stringT& /* qName */) { } const stringT& /* qName */) { }
@ -267,7 +267,7 @@ public:
* @param ch The characters. * @param ch The characters.
* @exception SAXException Any SAX exception, possibly * @exception SAXException Any SAX exception, possibly
* wrapping another exception. * wrapping another exception.
* @see basic_ContentHandler#characters * @see ContentHandler#characters
*/ */
virtual void characters(const stringT& /* ch */) { } virtual void characters(const stringT& /* ch */) { }
/** /**
@ -281,7 +281,7 @@ public:
* @param ch The whitespace characters. * @param ch The whitespace characters.
* @exception SAXException Any SAX exception, possibly * @exception SAXException Any SAX exception, possibly
* wrapping another exception. * wrapping another exception.
* @see basic_ContentHandler#ignorableWhitespace * @see ContentHandler#ignorableWhitespace
*/ */
virtual void ignorableWhitespace(const stringT& /* ch */) { } virtual void ignorableWhitespace(const stringT& /* ch */) { }
@ -298,7 +298,7 @@ public:
* none is supplied. * none is supplied.
* @exception SAXException Any SAX exception, possibly * @exception SAXException Any SAX exception, possibly
* wrapping another exception. * wrapping another exception.
* @see basic_ContentHandler#processingInstruction * @see ContentHandler#processingInstruction
*/ */
virtual void processingInstruction(const stringT& /* target */, const stringT& /* data */) { } virtual void processingInstruction(const stringT& /* target */, const stringT& /* data */) { }
@ -313,7 +313,7 @@ public:
* @param name The name of the skipped entity. * @param name The name of the skipped entity.
* @exception SAXException Any SAX exception, possibly * @exception SAXException Any SAX exception, possibly
* wrapping another exception. * wrapping another exception.
* @see basic_ContentHandler#processingInstruction * @see ContentHandler#processingInstruction
*/ */
virtual void skippedEntity(const stringT& /* name */) { } virtual void skippedEntity(const stringT& /* name */) { }
@ -330,7 +330,7 @@ public:
* @param e The warning information encoded as an exception. * @param e The warning information encoded as an exception.
* @exception SAXException Any SAX exception, possibly * @exception SAXException Any SAX exception, possibly
* wrapping another exception. * wrapping another exception.
* @see basic_ErrorHandler#warning * @see ErrorHandler#warning
* @see SAXParseException * @see SAXParseException
*/ */
virtual void warning(const SAXParseExceptionT& /* e */) { } virtual void warning(const SAXParseExceptionT& /* e */) { }
@ -345,7 +345,7 @@ public:
* @param e The warning information encoded as an exception. * @param e The warning information encoded as an exception.
* @exception SAXException Any SAX exception, possibly * @exception SAXException Any SAX exception, possibly
* wrapping another exception. * wrapping another exception.
* @see basic_ErrorHandler#error * @see ErrorHandler#error
* @see SAXParseException * @see SAXParseException
*/ */
virtual void error(const SAXParseExceptionT& /* e */) { } virtual void error(const SAXParseExceptionT& /* e */) { }
@ -363,7 +363,7 @@ public:
* @param e The error information encoded as an exception. * @param e The error information encoded as an exception.
* @exception SAXException Any SAX exception, possibly * @exception SAXException Any SAX exception, possibly
* wrapping another exception. * wrapping another exception.
* @see basic_ErrorHandler#fatalError * @see ErrorHandler#fatalError
* @see SAXParseException * @see SAXParseException
*/ */
virtual void fatalError(const SAXParseExceptionT& e) virtual void fatalError(const SAXParseExceptionT& e)
@ -384,8 +384,8 @@ public:
* this method will not be invoked.</p> * this method will not be invoked.</p>
* *
* <p>All declarations reported through * <p>All declarations reported through
* {@link basic_DTDHandler DTDHandler} or * {@link DTDHandler DTDHandler} or
* {@link basic_DeclHandler DeclHandler} events must appear * {@link DeclHandler DeclHandler} events must appear
* between the startDTD and {@link #endDTD endDTD} events. * between the startDTD and {@link #endDTD endDTD} events.
* Declarations are assumed to belong to the internal DTD subset * Declarations are assumed to belong to the internal DTD subset
* unless they appear between {@link #startEntity startEntity} * unless they appear between {@link #startEntity startEntity}
@ -399,7 +399,7 @@ public:
* <p>Note that the start/endDTD events will appear within * <p>Note that the start/endDTD events will appear within
* the start/endDocument events from ContentHandler and * the start/endDocument events from ContentHandler and
* before the first * before the first
* {@link basic_ContentHandler#startElement startElement} * {@link ContentHandler#startElement startElement}
* event.</p> * event.</p>
* *
* @param name The document type name. * @param name The document type name.
@ -442,11 +442,11 @@ public:
* <p>When a SAX2 driver is providing these events, all other * <p>When a SAX2 driver is providing these events, all other
* events must be properly nested within start/end entity * events must be properly nested within start/end entity
* events. There is no additional requirement that events from * events. There is no additional requirement that events from
* {@link basic_DeclHandler DeclHandler} or * {@link DeclHandler DeclHandler} or
* {@link basic_DTDHandler DTDHandler} be properly ordered.</p> * {@link DTDHandler DTDHandler} be properly ordered.</p>
* *
* <p>Note that skipped entities will be reported through the * <p>Note that skipped entities will be reported through the
* {@link basic_ContentHandler#skippedEntity skippedEntity} * {@link ContentHandler#skippedEntity skippedEntity}
* event, which is part of the ContentHandler interface.</p> * event, which is part of the ContentHandler interface.</p>
* *
* <p>Because of the streaming event model that SAX uses, some * <p>Because of the streaming event model that SAX uses, some
@ -470,8 +470,8 @@ public:
* entity, the name will begin with '%', and if it is the * entity, the name will begin with '%', and if it is the
* external DTD subset, it will be "[dtd]". * external DTD subset, it will be "[dtd]".
* @see #endEntity * @see #endEntity
* @see basic_DeclHandler#internalEntityDecl * @see DeclHandler#internalEntityDecl
* @see basic_DeclHandler#externalEntityDecl * @see DeclHandler#externalEntityDecl
*/ */
virtual void startEntity(const stringT& name) { } virtual void startEntity(const stringT& name) { }
/** /**
@ -486,7 +486,7 @@ public:
* Report the start of a CDATA section. * Report the start of a CDATA section.
* *
* <p>The contents of the CDATA section will be reported through * <p>The contents of the CDATA section will be reported through
* the regular {@link basic_ContentHandler#characters * the regular {@link ContentHandler#characters
* characters} event; this event is intended only to report * characters} event; this event is intended only to report
* the boundary.</p> * the boundary.</p>
* *
@ -570,7 +570,7 @@ public:
* entity, the name will begin with '%'. * entity, the name will begin with '%'.
* @param value The replacement text of the entity. * @param value The replacement text of the entity.
* @see #externalEntityDecl * @see #externalEntityDecl
* @see basic_DTDHandler#unparsedEntityDecl * @see DTDHandler#unparsedEntityDecl
*/ */
virtual void internalEntityDecl(const stringT& name, const stringT& value) { } virtual void internalEntityDecl(const stringT& name, const stringT& value) { }
/** /**
@ -585,21 +585,16 @@ public:
* an empty string if none was declared. * an empty string if none was declared.
* @param systemId The declared system identifier of the entity. * @param systemId The declared system identifier of the entity.
* @see #internalEntityDecl * @see #internalEntityDecl
* @see basic_DTDHandler#unparsedEntityDecl * @see DTDHandler#unparsedEntityDecl
*/ */
virtual void externalEntityDecl(const stringT& name, virtual void externalEntityDecl(const stringT& name,
const stringT& publicId, const stringT& publicId,
const stringT& systemId) { } const stringT& systemId) { }
private: private:
basic_DefaultHandler(const basic_DefaultHandler&); DefaultHandler(const DefaultHandler&);
basic_DefaultHandler& operator=(const basic_DefaultHandler&); DefaultHandler& operator=(const DefaultHandler&);
bool operator==(const basic_DefaultHandler&); bool operator==(const DefaultHandler&);
}; // class basic_DefaultHandler }; // class DefaultHandler
typedef basic_DefaultHandler<std::string> DefaultHandler;
#ifndef ARABICA_NO_WCHAR_T
typedef basic_DefaultHandler<std::wstring> wDefaultHandler;
#endif
} // namespace SAX } // namespace SAX
} // namespace Arabica } // namespace Arabica

View file

@ -14,10 +14,10 @@ namespace SAX
class InputSourceResolver class InputSourceResolver
{ {
public: public:
InputSourceResolver(const SAX::InputSource& inputSource); InputSourceResolver(const SAX::InputSource<std::string>& inputSource);
template<class stringT, class stringAdaptorT> template<class stringT, class stringAdaptorT>
InputSourceResolver(const SAX::basic_InputSource<stringT>& inputSource, InputSourceResolver(const SAX::InputSource<stringT>& inputSource,
const stringAdaptorT& SA) : const stringAdaptorT& SA) :
deleteStream_(false), deleteStream_(false),
byteStream_(0) byteStream_(0)

View file

@ -46,34 +46,34 @@ namespace SAX
* @author Jez Higgins, * @author Jez Higgins,
* <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a> * <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a>
* @version 2.0 * @version 2.0
* @see basic_Locator Locator * @see Locator Locator
*/ */
template<class string_type> template<class string_type>
class basic_LocatorImpl : public basic_Locator<string_type> class LocatorImpl : public Locator<string_type>
{ {
public: public:
typedef string_type stringT; typedef string_type stringT;
typedef basic_Locator<stringT> LocatorT; typedef Locator<stringT> LocatorT;
basic_LocatorImpl() : LocatorImpl() :
publicId_(), publicId_(),
systemId_(), systemId_(),
lineNumber_(-1), lineNumber_(-1),
columnNumber_(-1) columnNumber_(-1)
{ {
} // basic_LocatorImpl } // LocatorImpl
basic_LocatorImpl(const LocatorT& rhs) : LocatorImpl(const LocatorT& rhs) :
publicId_(rhs.getPublicId()), publicId_(rhs.getPublicId()),
systemId_(rhs.getSystemId()), systemId_(rhs.getSystemId()),
lineNumber_(rhs.getLineNumber()), lineNumber_(rhs.getLineNumber()),
columnNumber_(rhs.getColumnNumber()) columnNumber_(rhs.getColumnNumber())
{ {
} // basic_LocatorImpl } // LocatorImpl
virtual ~basic_LocatorImpl() { } virtual ~LocatorImpl() { }
basic_LocatorImpl& operator=(const LocatorT& rhs) LocatorImpl& operator=(const LocatorT& rhs)
{ {
publicId_ = rhs.getPublicId(); publicId_ = rhs.getPublicId();
systemId_ = rhs.getSystemId(); systemId_ = rhs.getSystemId();
@ -88,7 +88,7 @@ public:
* *
* @return The public identifier as a string, or an empty string if none * @return The public identifier as a string, or an empty string if none
* is available. * is available.
* @see basic_Locator#getPublicId * @see Locator#getPublicId
* @see #setPublicId * @see #setPublicId
*/ */
virtual stringT getPublicId() const { return publicId_; } virtual stringT getPublicId() const { return publicId_; }
@ -97,7 +97,7 @@ public:
* *
* @return The system identifier as a string, or an empty string if none * @return The system identifier as a string, or an empty string if none
* is available. * is available.
* @see basic_Locator#getSystemId * @see Locator#getSystemId
* @see #setSystemId * @see #setSystemId
*/ */
virtual stringT getSystemId() const { return systemId_; } virtual stringT getSystemId() const { return systemId_; }
@ -105,7 +105,7 @@ public:
* Return the saved line number (1-based). * Return the saved line number (1-based).
* *
* @return The line number as an integer, or -1 if none is available. * @return The line number as an integer, or -1 if none is available.
* @see basic_Locator#getLineNumber * @see Locator#getLineNumber
* @see #setLineNumber * @see #setLineNumber
*/ */
virtual int getLineNumber() const { return lineNumber_; } virtual int getLineNumber() const { return lineNumber_; }
@ -113,7 +113,7 @@ public:
* Return the saved column number (1-based). * Return the saved column number (1-based).
* *
* @return The column number as an integer, or -1 if none is available. * @return The column number as an integer, or -1 if none is available.
* @see basic_Locator#getColumnNumber * @see Locator#getColumnNumber
* @see #setColumnNumber * @see #setColumnNumber
*/ */
virtual int getColumnNumber() const { return columnNumber_; } virtual int getColumnNumber() const { return columnNumber_; }
@ -162,11 +162,6 @@ private:
bool operator==(const LocatorT& rhs) const; bool operator==(const LocatorT& rhs) const;
}; // class LocatorImpl }; // class LocatorImpl
typedef basic_LocatorImpl<std::string> LocatorImpl;
#ifndef ARABICA_NO_WCHAR_T
typedef basic_LocatorImpl<std::wstring> wLocatorImpl;
#endif
} // namespace SAX } // namespace SAX
} // namespace Arabica } // namespace Arabica

View file

@ -84,7 +84,7 @@ struct NamespaceConstants
* @version 2.0 * @version 2.0
*/ */
template<class stringT, class string_adaptorT> template<class stringT, class string_adaptorT>
class basic_NamespaceSupport class NamespaceSupport
{ {
public: public:
typedef std::vector<stringT> stringListT; typedef std::vector<stringT> stringListT;
@ -98,10 +98,10 @@ class basic_NamespaceSupport
}; // struct Parts }; // struct Parts
// functions // functions
basic_NamespaceSupport() NamespaceSupport()
{ {
reset(); reset();
} // basic_NamespaceSupport } // NamespaceSupport
/** /**
* Reset this Namespace support object for reuse. * Reset this Namespace support object for reuse.
@ -394,10 +394,10 @@ class basic_NamespaceSupport
const NamespaceConstants<stringT, string_adaptorT> nsc_; const NamespaceConstants<stringT, string_adaptorT> nsc_;
// no impl // no impl
basic_NamespaceSupport(const basic_NamespaceSupport&); NamespaceSupport(const NamespaceSupport&);
basic_NamespaceSupport& operator=(const basic_NamespaceSupport&); NamespaceSupport& operator=(const NamespaceSupport&);
bool operator==(const basic_NamespaceSupport&) const; bool operator==(const NamespaceSupport&) const;
}; // class basic_NamespaceSupport }; // class NamespaceSupport
} // namespace SAX } // namespace SAX
} // namespace Arabica } // namespace Arabica

View file

@ -25,10 +25,10 @@ namespace SAX
/** /**
* Adapt a SAX1 Parser as a SAX2 XMLReader. * Adapt a SAX1 Parser as a SAX2 XMLReader.
* *
* <p>This class wraps a SAX1 {@link basic_Parser Parser} * <p>This class wraps a SAX1 {@link Parser Parser}
* and makes it act as a SAX2 {@link basic_XMLReader XMLReader}, * and makes it act as a SAX2 {@link XMLReader XMLReader},
* with feature, property, and Namespace support. Note * with feature, property, and Namespace support. Note
* that it is not possible to report {@link basic_ContentHandler#skippedEntity * that it is not possible to report {@link ContentHandler#skippedEntity
* skippedEntity} events, since SAX1 does not make that information available.</p> * skippedEntity} events, since SAX1 does not make that information available.</p>
* *
* <p>This adapter does not test for duplicate Namespace-qualified * <p>This adapter does not test for duplicate Namespace-qualified
@ -38,27 +38,27 @@ namespace SAX
* @author Jez Higgins, * @author Jez Higgins,
* <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a> * <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a>
* @version 2.0 * @version 2.0
* @see basic_XMLReader * @see XMLReader
* @see basic_Parser * @see Parser
*/ */
template<class string_type, class string_adaptor_type> template<class string_type, class string_adaptor_type>
class basic_ParserAdaptor : public basic_XMLReader<string_type>, class ParserAdaptor : public XMLReaderInterface<string_type>,
public basic_DocumentHandler<string_type> public DocumentHandler<string_type>
{ {
public: public:
typedef string_type stringT; typedef string_type stringT;
typedef string_adaptor_type string_adaptorT; typedef string_adaptor_type string_adaptorT;
typedef basic_Parser<stringT> ParserT; typedef Parser<stringT> ParserT;
typedef basic_EntityResolver<stringT> EntityResolverT; typedef EntityResolver<stringT> EntityResolverT;
typedef basic_DTDHandler<stringT> DTDHandlerT; typedef DTDHandler<stringT> DTDHandlerT;
typedef basic_DocumentHandler<stringT> DocumentHandlerT; typedef DocumentHandler<stringT> DocumentHandlerT;
typedef basic_ContentHandler<stringT> ContentHandlerT; typedef ContentHandler<stringT> ContentHandlerT;
typedef basic_InputSource<stringT> InputSourceT; typedef InputSource<stringT> InputSourceT;
typedef basic_Locator<stringT> LocatorT; typedef Locator<stringT> LocatorT;
typedef basic_SAXParseException<stringT> SAXParseExceptionT; typedef SAXParseException<stringT> SAXParseExceptionT;
typedef basic_AttributeList<stringT> AttributeListT; typedef AttributeList<stringT> AttributeListT;
basic_ParserAdaptor(ParserT& parser) : ParserAdaptor(ParserT& parser) :
parser_(parser), parser_(parser),
parsing_(false), parsing_(false),
locator_(0), locator_(0),
@ -85,7 +85,7 @@ public:
* name is not known. * name is not known.
* @exception SAXNotSupportedException If the feature * @exception SAXNotSupportedException If the feature
* state is not supported. * state is not supported.
* @see basic_XMLReader#setFeature * @see XMLReader#setFeature
*/ */
virtual void setFeature(const stringT& name, bool value) virtual void setFeature(const stringT& name, bool value)
{ {
@ -127,7 +127,7 @@ public:
* name is not known. * name is not known.
* @exception SAXNotSupportedException If querying the * @exception SAXNotSupportedException If querying the
* feature state is not supported. * feature state is not supported.
* @see basic_XMLReader#setFeature * @see XMLReader#setFeature
*/ */
virtual bool getFeature(const stringT& name) const virtual bool getFeature(const stringT& name) const
{ {
@ -167,14 +167,14 @@ public:
* Set the entity resolver. * Set the entity resolver.
* *
* @param resolver The new entity resolver. * @param resolver The new entity resolver.
* @see basic_XMLReader#setEntityResolver * @see XMLReader#setEntityResolver
*/ */
virtual void setEntityResolver(EntityResolverT& resolver) { entityResolver_ = &resolver; } virtual void setEntityResolver(EntityResolverT& resolver) { entityResolver_ = &resolver; }
/** /**
* Return the current entity resolver. * Return the current entity resolver.
* *
* @return The current entity resolver, or null if none was supplied. * @return The current entity resolver, or null if none was supplied.
* @see basic_XMLReader#getEntityResolver * @see XMLReader#getEntityResolver
*/ */
virtual EntityResolverT* getEntityResolver() const { return entityResolver_; } virtual EntityResolverT* getEntityResolver() const { return entityResolver_; }
@ -182,14 +182,14 @@ public:
* Set the DTD handler. * Set the DTD handler.
* *
* @param handler The new DTD handler. * @param handler The new DTD handler.
* @see basic_XMLReader#setEntityResolver * @see XMLReader#setEntityResolver
*/ */
virtual void setDTDHandler(DTDHandlerT& handler) { dtdHandler_ = &handler; } virtual void setDTDHandler(DTDHandlerT& handler) { dtdHandler_ = &handler; }
/** /**
* Return the current DTD handler. * Return the current DTD handler.
* *
* @return The current DTD handler, or null if none was supplied. * @return The current DTD handler, or null if none was supplied.
* @see basic_XMLReader#getEntityResolver * @see XMLReader#getEntityResolver
*/ */
virtual DTDHandlerT* getDTDHandler() const { return dtdHandler_; } virtual DTDHandlerT* getDTDHandler() const { return dtdHandler_; }
@ -197,14 +197,14 @@ public:
* Set the content handler. * Set the content handler.
* *
* @param handler The new content handler. * @param handler The new content handler.
* @see basic_XMLReader#setEntityResolver * @see XMLReader#setEntityResolver
*/ */
virtual void setContentHandler(ContentHandlerT& handler) { contentHandler_ = &handler; } virtual void setContentHandler(ContentHandlerT& handler) { contentHandler_ = &handler; }
/** /**
* Return the current content handler. * Return the current content handler.
* *
* @return The current content handler, or null if none was supplied. * @return The current content handler, or null if none was supplied.
* @see basic_XMLReader#getEntityResolver * @see XMLReader#getEntityResolver
*/ */
virtual ContentHandlerT* getContentHandler() const { return contentHandler_; } virtual ContentHandlerT* getContentHandler() const { return contentHandler_; }
@ -212,14 +212,14 @@ public:
* Set the error handler. * Set the error handler.
* *
* @param handler The new error handler. * @param handler The new error handler.
* @see basic_XMLReader#setEntityResolver * @see XMLReader#setEntityResolver
*/ */
virtual void setErrorHandler(ErrorHandler& handler) { errorHandler_ = &handler; } virtual void setErrorHandler(ErrorHandler& handler) { errorHandler_ = &handler; }
/** /**
* Return the current error handler. * Return the current error handler.
* *
* @return The current error handler, or null if none was supplied. * @return The current error handler, or null if none was supplied.
* @see basic_XMLReader#getEntityResolver * @see XMLReader#getEntityResolver
*/ */
virtual ErrorHandler* getErrorHandler() const { return errorHandler_; } virtual ErrorHandler* getErrorHandler() const { return errorHandler_; }
@ -227,7 +227,7 @@ public:
* Parse an XML document. * Parse an XML document.
* *
* @param input An input source for the document. * @param input An input source for the document.
* @see basic_Parser#parse(InputSource&) * @see Parser#parse(InputSource&)
*/ */
virtual void parse(InputSourceT& input) virtual void parse(InputSourceT& input)
{ {
@ -253,7 +253,7 @@ public:
* Adapt a SAX1 document locator event. * Adapt a SAX1 document locator event.
* *
* @param locator A document locator. * @param locator A document locator.
* @see basic_ContentHandler#setDocumentLocator * @see ContentHandler#setDocumentLocator
*/ */
virtual void setDocumentLocator(const LocatorT& locator) virtual void setDocumentLocator(const LocatorT& locator)
{ {
@ -265,7 +265,7 @@ public:
/** /**
* Adapt a SAX1 start document event. * Adapt a SAX1 start document event.
* *
* @see basic_DocumentHandler#startDocument * @see DocumentHandler#startDocument
*/ */
virtual void startDocument() virtual void startDocument()
{ {
@ -276,7 +276,7 @@ public:
/** /**
* Adapt a SAX1 end document event. * Adapt a SAX1 end document event.
* *
* @see basic_DocumentHandler#endDocument * @see DocumentHandler#endDocument
*/ */
virtual void endDocument() virtual void endDocument()
{ {
@ -369,7 +369,7 @@ public:
* Adapt a SAX1 end element event. * Adapt a SAX1 end element event.
* *
* @param qName The qualified (prefixed) name. * @param qName The qualified (prefixed) name.
* @see basic_DocumentHandler#endElement * @see DocumentHandler#endElement
*/ */
void endElement(const stringT& qName) void endElement(const stringT& qName)
{ {
@ -395,7 +395,7 @@ public:
* Adapt a SAX1 characters event. * Adapt a SAX1 characters event.
* *
* @param ch The characters. * @param ch The characters.
* @see basic_DocumentHandler#characters * @see DocumentHandler#characters
*/ */
virtual void characters(const stringT& ch) virtual void characters(const stringT& ch)
{ {
@ -407,7 +407,7 @@ public:
* Adapt a SAX1 ignorable whitespace event. * Adapt a SAX1 ignorable whitespace event.
* *
* @param ch Thecharacters. * @param ch Thecharacters.
* @see basic_DocumentHandler#ignorableWhitespace * @see DocumentHandler#ignorableWhitespace
*/ */
virtual void ignorableWhitespace(const stringT& ch) virtual void ignorableWhitespace(const stringT& ch)
{ {
@ -420,7 +420,7 @@ public:
* *
* @param target The processing instruction target. * @param target The processing instruction target.
* @param data The remainder of the processing instruction * @param data The remainder of the processing instruction
* @see basic_DocumentHandler#processingInstruction * @see DocumentHandler#processingInstruction
*/ */
virtual void processingInstruction(const stringT& target, const stringT& data) virtual void processingInstruction(const stringT& target, const stringT& data)
{ {
@ -429,8 +429,8 @@ public:
} // processingInstruction } // processingInstruction
private: private:
typedef basic_NamespaceSupport<stringT, string_adaptorT> NamespaceSupportT; typedef NamespaceSupport<stringT, string_adaptorT> NamespaceSupportT;
typedef basic_AttributesImpl<stringT> AttributesImplT; typedef AttributesImpl<stringT> AttributesImplT;
void setupParser() void setupParser()
{ {
@ -477,11 +477,11 @@ private:
} // makeString } // makeString
// This wrapper is used only when Namespace support is disabled. // This wrapper is used only when Namespace support is disabled.
class AttributesListAdaptor : public basic_Attributes<stringT> class AttributesListAdaptor : public Attributes<stringT>
{ {
public: public:
typedef typename basic_ParserAdaptor<stringT, string_adaptorT> ParserAdaptorT; typedef typename ParserAdaptor<stringT, string_adaptorT> ParserAdaptorT;
typedef typename basic_AttributeList<stringT> AttributeListT; typedef typename AttributeList<stringT> AttributeListT;
void setAttributeList(const AttributeListT& attList) void setAttributeList(const AttributeListT& attList)
{ {
@ -538,17 +538,12 @@ public:
const stringT NULL_STRING; const stringT NULL_STRING;
private: private:
basic_ParserAdaptor(); ParserAdaptor();
basic_ParserAdaptor(const basic_ParserAdaptor&); ParserAdaptor(const ParserAdaptor&);
basic_ParserAdaptor& operator=(const basic_ParserAdaptor&); ParserAdaptor& operator=(const ParserAdaptor&);
bool operator==(const basic_ParserAdaptor&); bool operator==(const ParserAdaptor&);
}; // ParserAdaptor }; // ParserAdaptor
typedef basic_ParserAdaptor<std::string, char> ParserAdaptor;
#ifndef ARABICA_NO_WCHAR_T
typedef basic_ParserAdaptor<std::wstring, wchar_t> wParserAdaptor;
#endif
} // namespace SAX } // namespace SAX
} // namespace Arabica } // namespace Arabica

View file

@ -48,15 +48,15 @@ struct XMLBaseConstants
}; // struct XMLBaseConstants }; // struct XMLBaseConstants
template<class string_type, class string_adaptor_type = Arabica::default_string_adaptor<string_type> > template<class string_type, class string_adaptor_type = Arabica::default_string_adaptor<string_type> >
class basic_XMLBaseSupport class XMLBaseSupport
{ {
public: public:
typedef string_type stringT; typedef string_type stringT;
typedef string_adaptor_type string_adaptorT; typedef string_adaptor_type string_adaptorT;
typedef typename string_adaptor_type::value_type valueT; typedef typename string_adaptor_type::value_type valueT;
typedef basic_Attributes<stringT> AttributesT; typedef Attributes<stringT> AttributesT;
basic_XMLBaseSupport() : XMLBaseSupport() :
depth_(0) { } depth_(0) { }
void setDocumentLocation(const stringT& loc) void setDocumentLocation(const stringT& loc)
@ -118,15 +118,10 @@ private:
const XMLBaseConstants<stringT, string_adaptorT> xbc_; const XMLBaseConstants<stringT, string_adaptorT> xbc_;
// no impl // no impl
basic_XMLBaseSupport(const basic_XMLBaseSupport&); XMLBaseSupport(const XMLBaseSupport&);
basic_XMLBaseSupport& operator=(const basic_XMLBaseSupport&); XMLBaseSupport& operator=(const XMLBaseSupport&);
bool operator==(const basic_XMLBaseSupport&); bool operator==(const XMLBaseSupport&);
}; // class basic_XMLBaseSupport }; // class XMLBaseSupport
typedef basic_XMLBaseSupport<std::string> XMLBaseSupport;
#ifndef ARABICA_NO_WCHAR_T
typedef basic_XMLBaseSupport<std::wstring> wXMLBaseSupport;
#endif
} // namespace SAX } // namespace SAX
} // namespace Arabica } // namespace Arabica

View file

@ -18,7 +18,7 @@ namespace SAX
/** /**
* Base class for deriving an XML filter. * Base class for deriving an XML filter.
* *
* <p>This class is designed to sit between an {@link basic_XMLReader * <p>This class is designed to sit between an {@link XMLReader
* XMLReader} and the client application's event handlers. By default, it * XMLReader} and the client application's event handlers. By default, it
* does nothing but pass requests up to the reader and events * does nothing but pass requests up to the reader and events
* on to the handlers unmodified, but subclasses can override * on to the handlers unmodified, but subclasses can override
@ -29,56 +29,56 @@ namespace SAX
* @author Jez Higgins, * @author Jez Higgins,
* <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a> * <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a>
* @version 2.0 * @version 2.0
* @see basic_XMLFilter * @see XMLFilter
* @see basic_XMLReader * @see XMLReader
* @see basic_EntityResolver * @see EntityResolver
* @see basic_DTDHandler * @see DTDHandler
* @see basic_ContentHandler * @see ContentHandler
* @see basic_ErrorHandler * @see ErrorHandler
*/ */
template<class string_type, class string_adaptor_type = Arabica::default_string_adaptor<string_type> > template<class string_type, class string_adaptor_type = Arabica::default_string_adaptor<string_type> >
class basic_XMLFilterImpl : public basic_XMLFilter<string_type>, class XMLFilterImpl : public XMLFilter<string_type>,
public basic_EntityResolver<string_type>, public EntityResolver<string_type>,
public basic_DTDHandler<string_type>, public DTDHandler<string_type>,
public basic_ContentHandler<string_type>, public ContentHandler<string_type>,
public basic_ErrorHandler<string_type>, public ErrorHandler<string_type>,
public basic_DeclHandler<string_type>, public DeclHandler<string_type>,
public basic_LexicalHandler<string_type> public LexicalHandler<string_type>
{ {
public: public:
typedef string_type stringT; typedef string_type stringT;
typedef string_adaptor_type string_adaptorT; typedef string_adaptor_type string_adaptorT;
typedef basic_XMLReader<stringT> XMLReaderT; typedef XMLReaderInterface<stringT> XMLReaderT;
typedef basic_EntityResolver<stringT> EntityResolverT; typedef EntityResolver<stringT> EntityResolverT;
typedef basic_DTDHandler<stringT> DTDHandlerT; typedef DTDHandler<stringT> DTDHandlerT;
typedef basic_ContentHandler<stringT> ContentHandlerT; typedef ContentHandler<stringT> ContentHandlerT;
typedef basic_InputSource<stringT> InputSourceT; typedef InputSource<stringT> InputSourceT;
typedef basic_Locator<stringT> LocatorT; typedef Locator<stringT> LocatorT;
typedef basic_ErrorHandler<stringT> ErrorHandlerT; typedef ErrorHandler<stringT> ErrorHandlerT;
typedef basic_DeclHandler<stringT> DeclHandlerT; typedef DeclHandler<stringT> DeclHandlerT;
typedef basic_LexicalHandler<stringT> LexicalHandlerT; typedef LexicalHandler<stringT> LexicalHandlerT;
typedef typename basic_ErrorHandler<stringT>::SAXParseExceptionT SAXParseExceptionT; typedef typename ErrorHandler<stringT>::SAXParseExceptionT SAXParseExceptionT;
basic_XMLFilterImpl() : XMLFilterImpl() :
parent_(0) parent_(0)
{ {
setDefaults(); setDefaults();
} // basic_XMLFilterImpl } // XMLFilterImpl
basic_XMLFilterImpl(XMLReaderT& parent) : XMLFilterImpl(XMLReaderT& parent) :
parent_(&parent) parent_(&parent)
{ {
setDefaults(); setDefaults();
} // basic_XMLFilterImpl } // XMLFilterImpl
virtual ~basic_XMLFilterImpl() { } virtual ~XMLFilterImpl() { }
///////////////////////////////////////////////// /////////////////////////////////////////////////
// XMLFilter implementation // XMLFilter implementation
/** /**
* Set the parent reader. * Set the parent reader.
* *
* <p>This is the {@link basic_XMLReader XMLReader} from which * <p>This is the {@link XMLReader XMLReader} from which
* this filter will obtain its events and to which it will pass its * this filter will obtain its events and to which it will pass its
* configuration requests. The parent may itself be another filter.</p> * configuration requests. The parent may itself be another filter.</p>
* *
@ -111,7 +111,7 @@ public:
* @exception SAXNotSupportedException When the * @exception SAXNotSupportedException When the
* XMLReader recognizes the feature name but * XMLReader recognizes the feature name but
* cannot set the requested value. * cannot set the requested value.
* @see basic_XMLReader#setFeature * @see XMLReader#setFeature
*/ */
virtual void setFeature(const stringT& name, bool value) virtual void setFeature(const stringT& name, bool value)
{ {
@ -136,7 +136,7 @@ public:
* @exception SAXNotSupportedException When the * @exception SAXNotSupportedException When the
* XMLReader recognizes the feature name but * XMLReader recognizes the feature name but
* cannot determine its state at this time. * cannot determine its state at this time.
* @see basic_XMLReader#getFeature * @see XMLReader#getFeature
*/ */
virtual bool getFeature(const stringT& name) const virtual bool getFeature(const stringT& name) const
{ {
@ -154,56 +154,56 @@ public:
* Set the entity resolver. * Set the entity resolver.
* *
* @param resolver The new entity resolver. * @param resolver The new entity resolver.
* @see basic_XMLReader#setEntityResolver * @see XMLReader#setEntityResolver
*/ */
virtual void setEntityResolver(EntityResolverT& resolver) { entityResolver_ = &resolver; } virtual void setEntityResolver(EntityResolverT& resolver) { entityResolver_ = &resolver; }
/** /**
* Get the current entity resolver. * Get the current entity resolver.
* *
* @return The current entity resolver, or null if none was set. * @return The current entity resolver, or null if none was set.
* @see basic_XMLReader#getEntityResolver * @see XMLReader#getEntityResolver
*/ */
virtual EntityResolverT* getEntityResolver() const { return entityResolver_ ; } virtual EntityResolverT* getEntityResolver() const { return entityResolver_ ; }
/** /**
* Set the DTD event handler. * Set the DTD event handler.
* *
* @param handler The new DTD handler. * @param handler The new DTD handler.
* @see basic_XMLReader#setDTDHandler * @see XMLReader#setDTDHandler
*/ */
virtual void setDTDHandler(DTDHandlerT& handler) { dtdHandler_ = &handler; } virtual void setDTDHandler(DTDHandlerT& handler) { dtdHandler_ = &handler; }
/** /**
* Get the current DTD event handler. * Get the current DTD event handler.
* *
* @return The current DTD handler, or null if none was set. * @return The current DTD handler, or null if none was set.
* @see basic_XMLReader#getDTDHandler * @see XMLReader#getDTDHandler
*/ */
virtual DTDHandlerT* getDTDHandler() const { return dtdHandler_; } virtual DTDHandlerT* getDTDHandler() const { return dtdHandler_; }
/** /**
* Set the content event handler. * Set the content event handler.
* *
* @param handler The new content handler. * @param handler The new content handler.
* @see basic_XMLReader#setContentHandler * @see XMLReader#setContentHandler
*/ */
virtual void setContentHandler(ContentHandlerT& handler) { contentHandler_ = &handler; } virtual void setContentHandler(ContentHandlerT& handler) { contentHandler_ = &handler; }
/** /**
* Get the content event handler. * Get the content event handler.
* *
* @return The current content handler, or null if none was set. * @return The current content handler, or null if none was set.
* @see basic_XMLReader#getContentHandler * @see XMLReader#getContentHandler
*/ */
virtual ContentHandlerT* getContentHandler() const { return contentHandler_; } virtual ContentHandlerT* getContentHandler() const { return contentHandler_; }
/** /**
* Set the error event handler. * Set the error event handler.
* *
* @param handler The new error handler. * @param handler The new error handler.
* @see basic_XMLReader#setErrorHandler * @see XMLReader#setErrorHandler
*/ */
virtual void setErrorHandler(ErrorHandlerT& handler) { errorHandler_ = &handler; } virtual void setErrorHandler(ErrorHandlerT& handler) { errorHandler_ = &handler; }
/** /**
* Get the current error event handler. * Get the current error event handler.
* *
* @return The current error handler, or null if none was set. * @return The current error handler, or null if none was set.
* @see basic_XMLReader#getErrorHandler * @see XMLReader#getErrorHandler
*/ */
virtual ErrorHandlerT* getErrorHandler() const { return errorHandler_; } virtual ErrorHandlerT* getErrorHandler() const { return errorHandler_; }
@ -216,7 +216,7 @@ public:
* Parse a document. * Parse a document.
* *
* @param input The input source for the document entity. * @param input The input source for the document entity.
* @see basic_XMLReader#parse(basic_InputSource) * @see XMLReader#parse(InputSource)
*/ */
virtual void parse(InputSourceT& input) virtual void parse(InputSourceT& input)
{ {
@ -257,7 +257,7 @@ public:
* @param systemId The entity's system identifier. * @param systemId The entity's system identifier.
* @return A new InputSource or a default-constructed * @return A new InputSource or a default-constructed
* <code>InputSourceT</code> for the default. * <code>InputSourceT</code> for the default.
* @see basic_EntityResolver#resolveEntity * @see EntityResolver#resolveEntity
*/ */
virtual InputSourceT resolveEntity(const stringT& publicId, const stringT& systemId) virtual InputSourceT resolveEntity(const stringT& publicId, const stringT& systemId)
{ {
@ -274,7 +274,7 @@ public:
* @param name The notation name. * @param name The notation name.
* @param publicId The notation's public identifier, or an empty string. * @param publicId The notation's public identifier, or an empty string.
* @param systemId The notation's system identifier, or an empty string. * @param systemId The notation's system identifier, or an empty string.
* @see basic_DTDHandler#notationDecl * @see DTDHandler#notationDecl
*/ */
virtual void notationDecl(const stringT& name, virtual void notationDecl(const stringT& name,
const stringT& publicId, const stringT& publicId,
@ -290,7 +290,7 @@ public:
* @param publicId The entity's public identifier, or an empty string. * @param publicId The entity's public identifier, or an empty string.
* @param systemId The entity's system identifier, or an empty string. * @param systemId The entity's system identifier, or an empty string.
* @param notationName The name of the associated notation. * @param notationName The name of the associated notation.
* @see basic_DTDHandler#unparsedEntityDecl * @see DTDHandler#unparsedEntityDecl
*/ */
virtual void unparsedEntityDecl(const stringT& name, virtual void unparsedEntityDecl(const stringT& name,
const stringT& publicId, const stringT& publicId,
@ -306,7 +306,7 @@ public:
* Filter a new document locator event. * Filter a new document locator event.
* *
* @param locator The document locator. * @param locator The document locator.
* @see basic_ContentHandler#setDocumentLocator * @see ContentHandler#setDocumentLocator
*/ */
virtual void setDocumentLocator(const LocatorT& locator) virtual void setDocumentLocator(const LocatorT& locator)
{ {
@ -316,7 +316,7 @@ public:
/** /**
* Filter a start document event. * Filter a start document event.
* *
* @see basic_ContentHandler#startDocument * @see ContentHandler#startDocument
*/ */
virtual void startDocument() virtual void startDocument()
{ {
@ -326,7 +326,7 @@ public:
/** /**
* Filter an end document event. * Filter an end document event.
* *
* @see basic_ContentHandler#endDocument * @see ContentHandler#endDocument
*/ */
virtual void endDocument() virtual void endDocument()
{ {
@ -338,7 +338,7 @@ public:
* *
* @param prefix The Namespace prefix. * @param prefix The Namespace prefix.
* @param uri The Namespace URI. * @param uri The Namespace URI.
* @see basic_ContentHandler#startPrefixMapping * @see ContentHandler#startPrefixMapping
*/ */
virtual void startPrefixMapping(const stringT& prefix, const stringT& uri) virtual void startPrefixMapping(const stringT& prefix, const stringT& uri)
{ {
@ -349,7 +349,7 @@ public:
* Filter an end Namespace prefix mapping event. * Filter an end Namespace prefix mapping event.
* *
* @param prefix The Namespace prefix. * @param prefix The Namespace prefix.
* @see basic_ContentHandler#endPrefixMapping * @see ContentHandler#endPrefixMapping
*/ */
virtual void endPrefixMapping(const stringT& prefix) virtual void endPrefixMapping(const stringT& prefix)
{ {
@ -364,7 +364,7 @@ public:
* @param qName The element's qualified (prefixed) name, or the empty * @param qName The element's qualified (prefixed) name, or the empty
* string. * string.
* @param atts The element's attributes. * @param atts The element's attributes.
* @see basic_ContentHandler#startElement * @see ContentHandler#startElement
*/ */
virtual void startElement(const stringT& namespaceURI, const stringT& localName, virtual void startElement(const stringT& namespaceURI, const stringT& localName,
const stringT& qName, const typename ContentHandlerT::AttributesT& atts) const stringT& qName, const typename ContentHandlerT::AttributesT& atts)
@ -379,7 +379,7 @@ public:
* @param localName The element's local name, or the empty string. * @param localName The element's local name, or the empty string.
* @param qName The element's qualified (prefixed) name, or the empty * @param qName The element's qualified (prefixed) name, or the empty
* string. * string.
* @see basic_ContentHandler#endElement * @see ContentHandler#endElement
*/ */
virtual void endElement(const stringT& namespaceURI, const stringT& localName, virtual void endElement(const stringT& namespaceURI, const stringT& localName,
const stringT& qName) const stringT& qName)
@ -391,7 +391,7 @@ public:
* Filter a character data event. * Filter a character data event.
* *
* @param ch The characters. * @param ch The characters.
* @see basic_ContentHandler#characters * @see ContentHandler#characters
*/ */
virtual void characters(const stringT& ch) virtual void characters(const stringT& ch)
{ {
@ -402,7 +402,7 @@ public:
* Filter an ignorable whitespace event. * Filter an ignorable whitespace event.
* *
* @param ch The whitespace * @param ch The whitespace
* @see basic_ContentHandler#ignorableWhitespace * @see ContentHandler#ignorableWhitespace
*/ */
virtual void ignorableWhitespace(const stringT& ch) virtual void ignorableWhitespace(const stringT& ch)
{ {
@ -414,7 +414,7 @@ public:
* *
* @param target The processing instruction target. * @param target The processing instruction target.
* @param data The text following the target. * @param data The text following the target.
* @see basic_ContentHandler#processingInstruction * @see ContentHandler#processingInstruction
*/ */
virtual void processingInstruction(const stringT& target, const stringT& data) virtual void processingInstruction(const stringT& target, const stringT& data)
{ {
@ -425,7 +425,7 @@ public:
* Filter a skipped entity event. * Filter a skipped entity event.
* *
* @param name The name of the skipped entity. * @param name The name of the skipped entity.
* @see basic_ContentHandler#skippedEntity * @see ContentHandler#skippedEntity
*/ */
virtual void skippedEntity(const stringT& name) virtual void skippedEntity(const stringT& name)
{ {
@ -438,7 +438,7 @@ public:
* Filter a warning event. * Filter a warning event.
* *
* @param exception The warning as an exception. * @param exception The warning as an exception.
* @see basic_ErrorHandler#warning * @see ErrorHandler#warning
*/ */
virtual void warning(const SAXParseExceptionT& exception) virtual void warning(const SAXParseExceptionT& exception)
{ {
@ -449,7 +449,7 @@ public:
* Filter an error event. * Filter an error event.
* *
* @param exception The error as an exception. * @param exception The error as an exception.
* @see basic_ErrorHandler#error * @see ErrorHandler#error
*/ */
virtual void error(const SAXParseExceptionT& exception) virtual void error(const SAXParseExceptionT& exception)
{ {
@ -460,7 +460,7 @@ public:
* Filter a fatal error event. * Filter a fatal error event.
* *
* @param exception The error as an exception. * @param exception The error as an exception.
* @see basic_ErrorHandler#fatalError * @see ErrorHandler#fatalError
*/ */
virtual void fatalError(const SAXParseExceptionT& exception) virtual void fatalError(const SAXParseExceptionT& exception)
{ {
@ -588,9 +588,9 @@ private:
parent_->setLexicalHandler(*this); parent_->setLexicalHandler(*this);
} // setupParse } // setupParse
basic_XMLFilterImpl(const basic_XMLFilterImpl&); XMLFilterImpl(const XMLFilterImpl&);
basic_XMLFilterImpl& operator=(const basic_XMLFilterImpl&); // no impl XMLFilterImpl& operator=(const XMLFilterImpl&); // no impl
bool operator==(const basic_XMLFilterImpl&); // no impl bool operator==(const XMLFilterImpl&); // no impl
XMLReaderT* parent_; XMLReaderT* parent_;
EntityResolverT* entityResolver_; EntityResolverT* entityResolver_;
@ -599,13 +599,8 @@ private:
ErrorHandlerT* errorHandler_; ErrorHandlerT* errorHandler_;
DeclHandlerT* declHandler_; DeclHandlerT* declHandler_;
LexicalHandlerT* lexicalHandler_; LexicalHandlerT* lexicalHandler_;
basic_DefaultHandler<stringT> defaultHandler_; DefaultHandler<stringT> defaultHandler_;
}; // class basic_XMLFilter }; // class XMLFilter
typedef basic_XMLFilterImpl<std::string> XMLFilterImpl;
#ifndef ARABICA_NO_WCHAR_T
typedef basic_XMLFilterImpl<std::wstring> wXMLFilterImpl;
#endif
} // namespace SAX } // namespace SAX
} // namespace Arabica } // namespace Arabica

View file

@ -24,7 +24,7 @@ namespace SAX
template<class string_type, template<class string_type,
class T0 = Arabica::nil_t, class T0 = Arabica::nil_t,
class T1 = Arabica::nil_t> class T1 = Arabica::nil_t>
class Garden : public basic_XMLReader<string_type> class Garden : public XMLReaderInterface<string_type>
{ {
public: public:
typedef string_type stringT; typedef string_type stringT;
@ -32,15 +32,15 @@ public:
Arabica::default_string_adaptor<string_type>, Arabica::default_string_adaptor<string_type>,
T0, T0,
T1>::type string_adaptor_type; T1>::type string_adaptor_type;
typedef basic_EntityResolver<stringT> EntityResolverT; typedef EntityResolver<stringT> EntityResolverT;
typedef basic_DTDHandler<stringT> DTDHandlerT; typedef DTDHandler<stringT> DTDHandlerT;
typedef basic_ContentHandler<stringT> ContentHandlerT; typedef ContentHandler<stringT> ContentHandlerT;
typedef basic_InputSource<stringT> InputSourceT; typedef InputSource<stringT> InputSourceT;
typedef basic_AttributesImpl<stringT> AttributesImplT; typedef AttributesImpl<stringT> AttributesImplT;
typedef basic_ErrorHandler<stringT> ErrorHandlerT; typedef ErrorHandler<stringT> ErrorHandlerT;
typedef basic_DeclHandler<stringT> declHandlerT; typedef DeclHandler<stringT> declHandlerT;
typedef basic_LexicalHandler<stringT> lexicalHandlerT; typedef LexicalHandler<stringT> lexicalHandlerT;
typedef typename basic_XMLReader<stringT>::PropertyBase PropertyBase; typedef typename XMLReaderInterface<stringT>::PropertyBase PropertyBase;
Garden(); Garden();
@ -254,7 +254,7 @@ std::auto_ptr<typename Garden<string_type, T0, T1>::PropertyBase> Garden<string_
} // doGetProperty } // doGetProperty
template<class string_type, class T0, class T1> template<class string_type, class T0, class T1>
void Garden<string_type, T0, T1>::doSetProperty(const stringT& name, std::auto_ptr<typename basic_XMLReader<string_type>::PropertyBase> value) void Garden<string_type, T0, T1>::doSetProperty(const stringT& name, std::auto_ptr<typename XMLReaderInterface<string_type>::PropertyBase> value)
{ {
throw SAXNotRecognizedException(string_adaptor_type::asStdString(name)); throw SAXNotRecognizedException(string_adaptor_type::asStdString(name));
} // doSetProperty } // doSetProperty
@ -451,7 +451,7 @@ void Garden<string_type, T0, T1>::reportError(const std::string& message, bool f
if(!errorHandler_) if(!errorHandler_)
return; return;
SAX::basic_SAXParseException<stringT> e(message); SAX::SAXParseException<stringT> e(message);
if(fatal) if(fatal)
errorHandler_->fatalError(e); errorHandler_->fatalError(e);

View file

@ -73,37 +73,15 @@ namespace Arabica
namespace SAX namespace SAX
{ {
template<class string_type> class basic_AttributeList; template<class string_type> class AttributeList;
template<class string_type> class basic_DocumentHandler; template<class string_type> class DocumentHandler;
template<class string_type> class basic_DTDHandler; template<class string_type> class DTDHandler;
template<class string_type> class basic_EntityResolver; template<class string_type> class EntityResolver;
template<class string_type> class basic_InputSource; template<class string_type> class InputSource;
template<class string_type> class basic_Locator; template<class string_type> class Locator;
template<class string_type> class basic_Parser; template<class string_type> class Parser;
template<class string_type> class basic_SAXParseException; template<class string_type> class SAXParseException;
template<class string_type> class basic_ErrorHandler; template<class string_type> class ErrorHandler;
typedef basic_AttributeList<std::string> AttributeList;
typedef basic_DocumentHandler<std::string> DocumentHandler;
typedef basic_DTDHandler<std::string> DTDHandler;
typedef basic_EntityResolver<std::string> EntityResolver;
typedef basic_InputSource<std::string> InputSource;
typedef basic_Locator<std::string> Locator;
typedef basic_Parser<std::string> Parser;
typedef basic_SAXParseException<std::string> SAXParseException;
typedef basic_ErrorHandler<std::string> ErrorHandler;
#ifndef ARABICA_NO_WCHAR_T
typedef basic_AttributeList<std::wstring> wAttributeList;
typedef basic_DocumentHandler<std::wstring> wDocumentHandler;
typedef basic_DTDHandler<std::wstring> wDTDHandler;
typedef basic_EntityResolver<std::wstring> wEntityResolver;
typedef basic_InputSource<std::wstring> wInputSource;
typedef basic_Locator<std::wstring> wLocator;
typedef basic_Parser<std::wstring> wParser;
typedef basic_SAXParseException<std::wstring> wSAXParseException;
typedef basic_ErrorHandler<std::wstring> wErrorHandler;
#endif
} // namespace SAX } // namespace SAX
} // namespace Arabica } // namespace Arabica

View file

@ -150,7 +150,7 @@ private:
// so the SAX wrapper maps more or less directly to it. // so the SAX wrapper maps more or less directly to it.
/** /**
* expat_wrapper puts an {@link basic_XMLReader XMLReader} interface * expat_wrapper puts an {@link XMLReader XMLReader} interface
* around <a href='http://www.libexpat.org/'>Expat</a>. * around <a href='http://www.libexpat.org/'>Expat</a>.
* <p> * <p>
* For general usage:<br> * For general usage:<br>
@ -195,13 +195,13 @@ private:
* @author Jez Higgins * @author Jez Higgins
* <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a> * <a href="mailto:jez@jezuk.co.uk">jez@jezuk.co.uk</a>
* @version $Id$ * @version $Id$
* @see SAX::basic_XMLReader * @see SAX::XMLReader
*/ */
template<class string_type, template<class string_type,
class T0 = Arabica::nil_t, class T0 = Arabica::nil_t,
class T1 = Arabica::nil_t> class T1 = Arabica::nil_t>
class expat_wrapper : public SAX::basic_XMLReader<string_type>, class expat_wrapper : public SAX::XMLReaderInterface<string_type>,
public SAX::basic_Locator<string_type>, public SAX::Locator<string_type>,
public expat_wrapper_impl_mumbojumbo::expat2base public expat_wrapper_impl_mumbojumbo::expat2base
{ {
public: public:
@ -212,17 +212,17 @@ class expat_wrapper : public SAX::basic_XMLReader<string_type>,
T1>::type string_adaptor_type; T1>::type string_adaptor_type;
typedef string_adaptor_type string_adaptorT; typedef string_adaptor_type string_adaptorT;
typedef string_adaptor_type SA; typedef string_adaptor_type SA;
typedef SAX::basic_EntityResolver<stringT> entityResolverT; typedef SAX::EntityResolver<stringT> entityResolverT;
typedef SAX::basic_DTDHandler<stringT> dtdHandlerT; typedef SAX::DTDHandler<stringT> dtdHandlerT;
typedef SAX::basic_ContentHandler<stringT> contentHandlerT; typedef SAX::ContentHandler<stringT> contentHandlerT;
typedef SAX::basic_DeclHandler<stringT> declHandlerT; typedef SAX::DeclHandler<stringT> declHandlerT;
typedef SAX::basic_LexicalHandler<stringT> lexicalHandlerT; typedef SAX::LexicalHandler<stringT> lexicalHandlerT;
typedef SAX::basic_InputSource<stringT> inputSourceT; typedef SAX::InputSource<stringT> inputSourceT;
typedef SAX::basic_Locator<stringT> locatorT; typedef SAX::Locator<stringT> locatorT;
typedef SAX::basic_NamespaceSupport<stringT, string_adaptorT> namespaceSupportT; typedef SAX::NamespaceSupport<stringT, string_adaptorT> namespaceSupportT;
typedef SAX::basic_ErrorHandler<stringT> errorHandlerT; typedef SAX::ErrorHandler<stringT> errorHandlerT;
typedef SAX::basic_SAXParseException<stringT> SAXParseExceptionT; typedef SAX::SAXParseException<stringT> SAXParseExceptionT;
typedef SAX::basic_XMLReader<stringT> XMLReaderT; typedef SAX::XMLReaderInterface<stringT> XMLReaderT;
typedef typename XMLReaderT::PropertyBase PropertyBaseT; typedef typename XMLReaderT::PropertyBase PropertyBaseT;
typedef typename XMLReaderT::template Property<lexicalHandlerT*> getLexicalHandlerT; typedef typename XMLReaderT::template Property<lexicalHandlerT*> getLexicalHandlerT;
typedef typename XMLReaderT::template Property<lexicalHandlerT&> setLexicalHandlerT; typedef typename XMLReaderT::template Property<lexicalHandlerT&> setLexicalHandlerT;
@ -589,7 +589,7 @@ int expat_wrapper<stringT, T0, T1>::getColumnNumber() const
} // getColumnNumber } // getColumnNumber
template<class stringT, class T0, class T1> template<class stringT, class T0, class T1>
typename SAX::basic_NamespaceSupport<stringT, typename expat_wrapper<stringT, T0, T1>::string_adaptorT>::Parts expat_wrapper<stringT, T0, T1>::processName(const stringT& qName, bool isAttribute) typename SAX::NamespaceSupport<stringT, typename expat_wrapper<stringT, T0, T1>::string_adaptorT>::Parts expat_wrapper<stringT, T0, T1>::processName(const stringT& qName, bool isAttribute)
{ {
typename namespaceSupportT::Parts p = nsSupport_.processName(qName, isAttribute); typename namespaceSupportT::Parts p = nsSupport_.processName(qName, isAttribute);
if(SA::empty(p.URI) && !SA::empty(p.prefix)) if(SA::empty(p.URI) && !SA::empty(p.prefix))
@ -647,7 +647,7 @@ void expat_wrapper<stringT, T0, T1>::startElement(const char* qName, const char*
// OK we're doing Namespaces // OK we're doing Namespaces
nsSupport_.pushContext(); nsSupport_.pushContext();
SAX::basic_AttributesImpl<stringT> attributes; SAX::AttributesImpl<stringT> attributes;
// take a first pass and copy all the attributes, noting any declarations // take a first pass and copy all the attributes, noting any declarations
if(atts && *atts != 0) if(atts && *atts != 0)
@ -699,7 +699,7 @@ void expat_wrapper<stringT, T0, T1>::startElement(const char* qName, const char*
template<class stringT, class T0, class T1> template<class stringT, class T0, class T1>
void expat_wrapper<stringT, T0, T1>::startElementNoNS(const char* qName, const char** atts) void expat_wrapper<stringT, T0, T1>::startElementNoNS(const char* qName, const char** atts)
{ {
SAX::basic_AttributesImpl<stringT> attributes; SAX::AttributesImpl<stringT> attributes;
if(atts && *atts != 0) if(atts && *atts != 0)
{ {

View file

@ -115,8 +115,8 @@ xmlSAXHandler* lwit_SaxHandler();
template<class string_type, template<class string_type,
class T0 = Arabica::nil_t, class T0 = Arabica::nil_t,
class T1 = Arabica::nil_t> class T1 = Arabica::nil_t>
class libxml2_wrapper : public basic_XMLReader<string_type>, class libxml2_wrapper : public XMLReaderInterface<string_type>,
public basic_Locator<string_type>, public Locator<string_type>,
protected libxml2_wrapper_impl_tiddle::libxml2_base protected libxml2_wrapper_impl_tiddle::libxml2_base
{ {
public: public:
@ -126,17 +126,17 @@ class libxml2_wrapper : public basic_XMLReader<string_type>,
T0, T0,
T1>::type string_adaptor_type; T1>::type string_adaptor_type;
typedef string_adaptor_type string_adaptorT; typedef string_adaptor_type string_adaptorT;
typedef SAX::basic_EntityResolver<stringT> entityResolverT; typedef SAX::EntityResolver<stringT> entityResolverT;
typedef SAX::basic_DTDHandler<stringT> dtdHandlerT; typedef SAX::DTDHandler<stringT> dtdHandlerT;
typedef SAX::basic_ContentHandler<stringT> contentHandlerT; typedef SAX::ContentHandler<stringT> contentHandlerT;
typedef SAX::basic_DeclHandler<stringT> declHandlerT; typedef SAX::DeclHandler<stringT> declHandlerT;
typedef SAX::basic_LexicalHandler<stringT> lexicalHandlerT; typedef SAX::LexicalHandler<stringT> lexicalHandlerT;
typedef SAX::basic_InputSource<stringT> inputSourceT; typedef SAX::InputSource<stringT> inputSourceT;
typedef SAX::basic_Locator<stringT> locatorT; typedef SAX::Locator<stringT> locatorT;
typedef SAX::basic_NamespaceSupport<stringT, string_adaptorT> namespaceSupportT; typedef SAX::NamespaceSupport<stringT, string_adaptorT> namespaceSupportT;
typedef SAX::basic_ErrorHandler<stringT> errorHandlerT; typedef SAX::ErrorHandler<stringT> errorHandlerT;
typedef SAX::basic_SAXParseException<stringT> SAXParseExceptionT; typedef SAX::SAXParseException<stringT> SAXParseExceptionT;
typedef SAX::basic_XMLReader<stringT> XMLReaderT; typedef SAX::XMLReaderInterface<stringT> XMLReaderT;
typedef typename XMLReaderT::PropertyBase PropertyBaseT; typedef typename XMLReaderT::PropertyBase PropertyBaseT;
typedef typename XMLReaderT::template Property<lexicalHandlerT*> getLexicalHandlerT; typedef typename XMLReaderT::template Property<lexicalHandlerT*> getLexicalHandlerT;
typedef typename XMLReaderT::template Property<lexicalHandlerT&> setLexicalHandlerT; typedef typename XMLReaderT::template Property<lexicalHandlerT&> setLexicalHandlerT;
@ -152,12 +152,12 @@ class libxml2_wrapper : public basic_XMLReader<string_type>,
//////////////////////////////////////////////// ////////////////////////////////////////////////
// Event Handlers // Event Handlers
virtual void setEntityResolver(basic_EntityResolver<stringT>& resolver) { entityResolver_ = &resolver; } virtual void setEntityResolver(EntityResolver<stringT>& resolver) { entityResolver_ = &resolver; }
virtual basic_EntityResolver<stringT>* getEntityResolver() const { return entityResolver_; } virtual EntityResolver<stringT>* getEntityResolver() const { return entityResolver_; }
virtual void setDTDHandler(basic_DTDHandler<stringT>& handler) { dtdHandler_ = &handler; } virtual void setDTDHandler(DTDHandler<stringT>& handler) { dtdHandler_ = &handler; }
virtual basic_DTDHandler<stringT>* getDTDHandler() const { return dtdHandler_; } virtual DTDHandler<stringT>* getDTDHandler() const { return dtdHandler_; }
virtual void setContentHandler(basic_ContentHandler<stringT>& handler) { contentHandler_ = &handler; } virtual void setContentHandler(ContentHandler<stringT>& handler) { contentHandler_ = &handler; }
virtual basic_ContentHandler<stringT>* getContentHandler() const { return contentHandler_; } virtual ContentHandler<stringT>* getContentHandler() const { return contentHandler_; }
virtual void setErrorHandler(errorHandlerT& handler) { errorHandler_ = &handler; } virtual void setErrorHandler(errorHandlerT& handler) { errorHandler_ = &handler; }
virtual errorHandlerT* getErrorHandler() const { return errorHandler_; } virtual errorHandlerT* getErrorHandler() const { return errorHandler_; }
virtual void setDeclHandler(declHandlerT& handler) { declHandler_ = &handler; } virtual void setDeclHandler(declHandlerT& handler) { declHandler_ = &handler; }
@ -167,7 +167,7 @@ class libxml2_wrapper : public basic_XMLReader<string_type>,
//////////////////////////////////////////////// ////////////////////////////////////////////////
// parsing // parsing
virtual void parse(basic_InputSource<stringT>& source); virtual void parse(InputSource<stringT>& source);
protected: protected:
//////////////////////////////////////////////// ////////////////////////////////////////////////
@ -205,7 +205,7 @@ class libxml2_wrapper : public basic_XMLReader<string_type>,
virtual void SAXentityDecl(const xmlChar *name, int type, const xmlChar *publicId, const xmlChar *systemId, xmlChar *content); virtual void SAXentityDecl(const xmlChar *name, int type, const xmlChar *publicId, const xmlChar *systemId, xmlChar *content);
virtual xmlParserInputPtr SAXresolveEntity(const xmlChar* publicId, const xmlChar* systemId); virtual xmlParserInputPtr SAXresolveEntity(const xmlChar* publicId, const xmlChar* systemId);
typename basic_NamespaceSupport<stringT, string_adaptorT>::Parts processName(const stringT& qName, bool isAttribute); typename NamespaceSupport<stringT, string_adaptorT>::Parts processName(const stringT& qName, bool isAttribute);
void reportError(const std::string& message, bool fatal = false); void reportError(const std::string& message, bool fatal = false);
void checkNotParsing(const stringT& type, const stringT& name) const; void checkNotParsing(const stringT& type, const stringT& name) const;
@ -380,9 +380,9 @@ void libxml2_wrapper<stringT, T0, T1>::doSetProperty(const stringT& name, std::a
} // doSetProperty } // doSetProperty
template<class stringT, class T0, class T1> template<class stringT, class T0, class T1>
typename SAX::basic_NamespaceSupport<stringT, typename libxml2_wrapper<stringT, T0, T1>::string_adaptorT>::Parts libxml2_wrapper<stringT, T0, T1>::processName(const stringT& qName, bool isAttribute) typename SAX::NamespaceSupport<stringT, typename libxml2_wrapper<stringT, T0, T1>::string_adaptorT>::Parts libxml2_wrapper<stringT, T0, T1>::processName(const stringT& qName, bool isAttribute)
{ {
typename basic_NamespaceSupport<stringT, string_adaptorT>::Parts p = typename NamespaceSupport<stringT, string_adaptorT>::Parts p =
nsSupport_.processName(qName, isAttribute); nsSupport_.processName(qName, isAttribute);
if(string_adaptorT::empty(p.URI) && !string_adaptorT::empty(p.prefix)) if(string_adaptorT::empty(p.URI) && !string_adaptorT::empty(p.prefix))
reportError(std::string("Undeclared prefix ") + string_adaptorT::asStdString(qName)); reportError(std::string("Undeclared prefix ") + string_adaptorT::asStdString(qName));
@ -395,7 +395,7 @@ void libxml2_wrapper<stringT, T0, T1>::reportError(const std::string& message, b
if(!errorHandler_) if(!errorHandler_)
return; return;
basic_SAXParseException<stringT> e(message, *this); SAXParseException<stringT> e(message, *this);
if(fatal) if(fatal)
errorHandler_->fatalError(e); errorHandler_->fatalError(e);
else else
@ -446,7 +446,7 @@ int libxml2_wrapper<stringT, T0, T1>::getColumnNumber() const
} // getColumnNumber } // getColumnNumber
template<class stringT, class T0, class T1> template<class stringT, class T0, class T1>
void libxml2_wrapper<stringT, T0, T1>::parse(basic_InputSource<stringT>& source) void libxml2_wrapper<stringT, T0, T1>::parse(InputSource<stringT>& source)
{ {
if(contentHandler_) if(contentHandler_)
contentHandler_->setDocumentLocator(*this); contentHandler_->setDocumentLocator(*this);
@ -501,21 +501,21 @@ template<class stringT, class T0, class T1>
void libxml2_wrapper<stringT, T0, T1>::SAXwarning(const std::string& warning) void libxml2_wrapper<stringT, T0, T1>::SAXwarning(const std::string& warning)
{ {
if(errorHandler_) if(errorHandler_)
errorHandler_->warning(basic_SAXParseException<stringT>(warning, *this)); errorHandler_->warning(SAXParseException<stringT>(warning, *this));
} // warning } // warning
template<class stringT, class T0, class T1> template<class stringT, class T0, class T1>
void libxml2_wrapper<stringT, T0, T1>::SAXerror(const std::string& error) void libxml2_wrapper<stringT, T0, T1>::SAXerror(const std::string& error)
{ {
if(errorHandler_) if(errorHandler_)
errorHandler_->error(basic_SAXParseException<stringT>(error, *this)); errorHandler_->error(SAXParseException<stringT>(error, *this));
} // error } // error
template<class stringT, class T0, class T1> template<class stringT, class T0, class T1>
void libxml2_wrapper<stringT, T0, T1>::SAXfatalError(const std::string& fatal) void libxml2_wrapper<stringT, T0, T1>::SAXfatalError(const std::string& fatal)
{ {
if(errorHandler_) if(errorHandler_)
errorHandler_->fatalError(basic_SAXParseException<stringT>(fatal, *this)); errorHandler_->fatalError(SAXParseException<stringT>(fatal, *this));
} // fatal } // fatal
template<class stringT, class T0, class T1> template<class stringT, class T0, class T1>
@ -547,7 +547,7 @@ void libxml2_wrapper<stringT, T0, T1>::SAXstartElement(const xmlChar* qName, con
// OK we're doing Namespaces // OK we're doing Namespaces
nsSupport_.pushContext(); nsSupport_.pushContext();
SAX::basic_AttributesImpl<stringT> attributes; SAX::AttributesImpl<stringT> attributes;
// take a first pass and copy all the attributes, noting any declarations // take a first pass and copy all the attributes, noting any declarations
if(atts && *atts != 0) if(atts && *atts != 0)
@ -585,21 +585,21 @@ void libxml2_wrapper<stringT, T0, T1>::SAXstartElement(const xmlChar* qName, con
// declaration? // declaration?
if(string_adaptorT::find(attQName, nsc_.xmlns) != 0) if(string_adaptorT::find(attQName, nsc_.xmlns) != 0)
{ {
typename basic_NamespaceSupport<stringT, string_adaptorT>::Parts attName = processName(attQName, true); typename NamespaceSupport<stringT, string_adaptorT>::Parts attName = processName(attQName, true);
attributes.addAttribute(attName.URI, attName.localName, attName.rawName, emptyString_, value); attributes.addAttribute(attName.URI, attName.localName, attName.rawName, emptyString_, value);
} }
} // while ... } // while ...
} // if ... } // if ...
// at last! report the event // at last! report the event
typename basic_NamespaceSupport<stringT, string_adaptorT>::Parts name = processName(string_adaptorT::construct_from_utf8(reinterpret_cast<const char*>(qName)), false); typename NamespaceSupport<stringT, string_adaptorT>::Parts name = processName(string_adaptorT::construct_from_utf8(reinterpret_cast<const char*>(qName)), false);
contentHandler_->startElement(name.URI, name.localName, name.rawName, attributes); contentHandler_->startElement(name.URI, name.localName, name.rawName, attributes);
} // SAXstartElement } // SAXstartElement
template<class stringT, class T0, class T1> template<class stringT, class T0, class T1>
void libxml2_wrapper<stringT, T0, T1>::SAXstartElementNoNS(const xmlChar* qName, const xmlChar** atts) void libxml2_wrapper<stringT, T0, T1>::SAXstartElementNoNS(const xmlChar* qName, const xmlChar** atts)
{ {
SAX::basic_AttributesImpl<stringT> attributes; SAX::AttributesImpl<stringT> attributes;
if(atts && *atts != 0) if(atts && *atts != 0)
{ {
@ -627,9 +627,9 @@ void libxml2_wrapper<stringT, T0, T1>::SAXendElement(const xmlChar* qName)
return; return;
} // if(!namespaces_) } // if(!namespaces_)
typename basic_NamespaceSupport<stringT, string_adaptorT>::Parts name = processName(string_adaptorT::construct_from_utf8(reinterpret_cast<const char*>(qName)), false); typename NamespaceSupport<stringT, string_adaptorT>::Parts name = processName(string_adaptorT::construct_from_utf8(reinterpret_cast<const char*>(qName)), false);
contentHandler_->endElement(name.URI, name.localName, name.rawName); contentHandler_->endElement(name.URI, name.localName, name.rawName);
typename basic_NamespaceSupport<stringT, string_adaptorT>::stringListT prefixes = nsSupport_.getDeclaredPrefixes(); typename NamespaceSupport<stringT, string_adaptorT>::stringListT prefixes = nsSupport_.getDeclaredPrefixes();
for(size_t i = 0, end = prefixes.size(); i < end; ++i) for(size_t i = 0, end = prefixes.size(); i < end; ++i)
contentHandler_->endPrefixMapping(prefixes[i]); contentHandler_->endPrefixMapping(prefixes[i]);
nsSupport_.popContext(); nsSupport_.popContext();

View file

@ -60,7 +60,7 @@ class COMMultiThreadInitializer : public COMInitializer_tag
template<class string_type, template<class string_type,
class T0 = Arabica::nil_t, class T0 = Arabica::nil_t,
class T1 = Arabica::nil_t> class T1 = Arabica::nil_t>
class msxml2_wrapper : public SAX::basic_XMLReader<string_type> class msxml2_wrapper : public SAX::XMLReaderInterface<string_type>
{ {
typedef typename Arabica::get_param<Arabica::string_adaptor_tag, typedef typename Arabica::get_param<Arabica::string_adaptor_tag,
Arabica::default_string_adaptor<string_type>, Arabica::default_string_adaptor<string_type>,
@ -72,14 +72,14 @@ class msxml2_wrapper : public SAX::basic_XMLReader<string_type>
T0>::type COMInitializer_type; T0>::type COMInitializer_type;
public: public:
typedef SAX::basic_EntityResolver<string_type> entityResolverT; typedef SAX::EntityResolver<string_type> entityResolverT;
typedef SAX::basic_DTDHandler<string_type> dtdHandlerT; typedef SAX::DTDHandler<string_type> dtdHandlerT;
typedef SAX::basic_ContentHandler<string_type> contentHandlerT; typedef SAX::ContentHandler<string_type> contentHandlerT;
typedef SAX::basic_DeclHandler<string_type> declHandlerT; typedef SAX::DeclHandler<string_type> declHandlerT;
typedef SAX::basic_LexicalHandler<string_type> lexicalHandlerT; typedef SAX::LexicalHandler<string_type> lexicalHandlerT;
typedef SAX::basic_InputSource<string_type> inputSourceT; typedef SAX::InputSource<string_type> inputSourceT;
typedef SAX::basic_Locator<string_type> locatorT; typedef SAX::Locator<string_type> locatorT;
typedef SAX::basic_ErrorHandler<string_type> errorHandlerT; typedef SAX::ErrorHandler<string_type> errorHandlerT;
msxml2_wrapper(); msxml2_wrapper();
virtual ~msxml2_wrapper(); virtual ~msxml2_wrapper();
@ -92,14 +92,14 @@ class msxml2_wrapper : public SAX::basic_XMLReader<string_type>
///////////////////////////////////////////////// /////////////////////////////////////////////////
// Event Handlers // Event Handlers
/* MSXML does not use EntityResolver currently */ /* MSXML does not use EntityResolver currently */
virtual void setEntityResolver(SAX::basic_EntityResolver<string_type>& resolver) { } virtual void setEntityResolver(SAX::EntityResolver<string_type>& resolver) { }
virtual SAX::basic_EntityResolver<string_type>* getEntityResolver() const { return 0; } virtual SAX::EntityResolver<string_type>* getEntityResolver() const { return 0; }
virtual void setDTDHandler(SAX::basic_DTDHandler<string_type>& handler) { dtdHandler_.setDTDHandler(handler); } virtual void setDTDHandler(SAX::DTDHandler<string_type>& handler) { dtdHandler_.setDTDHandler(handler); }
virtual SAX::basic_DTDHandler<string_type>* getDTDHandler() const { return dtdHandler_.getDTDHandler(); } virtual SAX::DTDHandler<string_type>* getDTDHandler() const { return dtdHandler_.getDTDHandler(); }
virtual void setContentHandler(SAX::basic_ContentHandler<string_type>& handler) { contentHandler_.setContentHandler(handler); } virtual void setContentHandler(SAX::ContentHandler<string_type>& handler) { contentHandler_.setContentHandler(handler); }
virtual SAX::basic_ContentHandler<string_type>* getContentHandler() const { return contentHandler_.getContentHandler(); } virtual SAX::ContentHandler<string_type>* getContentHandler() const { return contentHandler_.getContentHandler(); }
virtual void setErrorHandler(SAX::basic_ErrorHandler<string_type>& handler); virtual void setErrorHandler(SAX::ErrorHandler<string_type>& handler);
virtual SAX::basic_ErrorHandler<string_type>* getErrorHandler() const; virtual SAX::ErrorHandler<string_type>* getErrorHandler() const;
virtual void setDeclHandler(declHandlerT& handler) { declHandler_.setDeclHandler(handler); } virtual void setDeclHandler(declHandlerT& handler) { declHandler_.setDeclHandler(handler); }
virtual declHandlerT* getDeclHandler() const { return declHandler_.getDeclHandler(); } virtual declHandlerT* getDeclHandler() const { return declHandler_.getDeclHandler(); }
virtual void setLexicalHandler(lexicalHandlerT& handler) { lexicalHandler_.setLexicalHandler(handler); } virtual void setLexicalHandler(lexicalHandlerT& handler) { lexicalHandler_.setLexicalHandler(handler); }
@ -107,29 +107,29 @@ class msxml2_wrapper : public SAX::basic_XMLReader<string_type>
////////////////////////////////////////////////// //////////////////////////////////////////////////
// Parsing // Parsing
virtual void parse(SAX::basic_InputSource<string_type>& input); virtual void parse(SAX::InputSource<string_type>& input);
protected: protected:
virtual std::auto_ptr<typename SAX::basic_XMLReader<string_type>::PropertyBase> doGetProperty(const string_type& name) virtual std::auto_ptr<typename SAX::XMLReaderInterface<string_type>::PropertyBase> doGetProperty(const string_type& name)
{ {
if(name == properties_.lexicalHandler) if(name == properties_.lexicalHandler)
{ {
Property<SAX::basic_LexicalHandler<string_type>*>* prop = new Property<SAX::basic_LexicalHandler<string_type>*>(lexicalHandler_.getLexicalHandler()); Property<SAX::LexicalHandler<string_type>*>* prop = new Property<SAX::LexicalHandler<string_type>*>(lexicalHandler_.getLexicalHandler());
return std::auto_ptr<SAX::basic_XMLReader<string_type>::PropertyBase>(prop); return std::auto_ptr<SAX::XMLReaderInterface<string_type>::PropertyBase>(prop);
} }
if(name == properties_.declHandler) if(name == properties_.declHandler)
{ {
Property<SAX::basic_DeclHandler<string_type>*>* prop = new Property<SAX::basic_DeclHandler<string_type>*>(declHandler_.getDeclHandler()); Property<SAX::DeclHandler<string_type>*>* prop = new Property<SAX::DeclHandler<string_type>*>(declHandler_.getDeclHandler());
return std::auto_ptr<SAX::basic_XMLReader<string_type>::PropertyBase>(prop); return std::auto_ptr<SAX::XMLReaderInterface<string_type>::PropertyBase>(prop);
} }
throw SAX::SAXNotRecognizedException("Property not recognized "); throw SAX::SAXNotRecognizedException("Property not recognized ");
} // doGetProperty } // doGetProperty
virtual void doSetProperty(const string_type& name, std::auto_ptr<typename SAX::basic_XMLReader<string_type>::PropertyBase> value) virtual void doSetProperty(const string_type& name, std::auto_ptr<typename SAX::XMLReaderInterface<string_type>::PropertyBase> value)
{ {
if(name == properties_.lexicalHandler) if(name == properties_.lexicalHandler)
{ {
Property<SAX::basic_LexicalHandler<string_type>&>* prop = dynamic_cast<Property<SAX::basic_LexicalHandler<string_type>&>*>(value.get()); Property<SAX::LexicalHandler<string_type>&>* prop = dynamic_cast<Property<SAX::LexicalHandler<string_type>&>*>(value.get());
if(!prop) if(!prop)
throw std::runtime_error("bad_cast: Property LexicalHandler is wrong type, should be SAX::LexicalHandler&"); throw std::runtime_error("bad_cast: Property LexicalHandler is wrong type, should be SAX::LexicalHandler&");
@ -139,7 +139,7 @@ class msxml2_wrapper : public SAX::basic_XMLReader<string_type>
} // if ... } // if ...
if(name == properties_.declHandler) if(name == properties_.declHandler)
{ {
Property<SAX::basic_DeclHandler<string_type>&>* prop = dynamic_cast<Property<SAX::basic_DeclHandler<string_type>&>*>(value.get()); Property<SAX::DeclHandler<string_type>&>* prop = dynamic_cast<Property<SAX::DeclHandler<string_type>&>*>(value.get());
if(!prop) if(!prop)
throw std::runtime_error("bad_cast: Property DeclHandler is wrong type, should be SAX::DeclHandler&"); throw std::runtime_error("bad_cast: Property DeclHandler is wrong type, should be SAX::DeclHandler&");
@ -153,7 +153,7 @@ class msxml2_wrapper : public SAX::basic_XMLReader<string_type>
private: private:
////////////////////////////////////////////////////// //////////////////////////////////////////////////////
// COM interface -> C++ interface adaptors // COM interface -> C++ interface adaptors
class LocatorAdaptor : public SAX::basic_Locator<string_type> class LocatorAdaptor : public SAX::Locator<string_type>
{ {
public: public:
LocatorAdaptor() : locator_(0) { } LocatorAdaptor() : locator_(0) { }
@ -219,8 +219,8 @@ class msxml2_wrapper : public SAX::basic_XMLReader<string_type>
DTDHandlerAdaptor() : dtdHandler_(0) { } DTDHandlerAdaptor() : dtdHandler_(0) { }
~DTDHandlerAdaptor() { } ~DTDHandlerAdaptor() { }
void setDTDHandler(SAX::basic_DTDHandler<string_type>& handler) { dtdHandler_ = &handler; } void setDTDHandler(SAX::DTDHandler<string_type>& handler) { dtdHandler_ = &handler; }
SAX::basic_DTDHandler<string_type>* getDTDHandler() const { return dtdHandler_; } SAX::DTDHandler<string_type>* getDTDHandler() const { return dtdHandler_; }
virtual HRESULT STDMETHODCALLTYPE notationDecl( virtual HRESULT STDMETHODCALLTYPE notationDecl(
/* [in] */ const wchar_t *pwchName, /* [in] */ const wchar_t *pwchName,
@ -261,7 +261,7 @@ class msxml2_wrapper : public SAX::basic_XMLReader<string_type>
unsigned long __stdcall Release() { return 0; } unsigned long __stdcall Release() { return 0; }
private: private:
SAX::basic_DTDHandler<string_type>* dtdHandler_; SAX::DTDHandler<string_type>* dtdHandler_;
}; // class DTDHandlerAdaptor }; // class DTDHandlerAdaptor
class ContentHandlerAdaptor : public ISAXContentHandler class ContentHandlerAdaptor : public ISAXContentHandler
@ -270,8 +270,8 @@ class msxml2_wrapper : public SAX::basic_XMLReader<string_type>
ContentHandlerAdaptor() : contentHandler_(0) { } ContentHandlerAdaptor() : contentHandler_(0) { }
~ContentHandlerAdaptor() { } ~ContentHandlerAdaptor() { }
void setContentHandler(SAX::basic_ContentHandler<string_type>& handler) { contentHandler_ = &handler; } void setContentHandler(SAX::ContentHandler<string_type>& handler) { contentHandler_ = &handler; }
SAX::basic_ContentHandler<string_type>* getContentHandler() const { return contentHandler_; } SAX::ContentHandler<string_type>* getContentHandler() const { return contentHandler_; }
virtual HRESULT STDMETHODCALLTYPE putDocumentLocator( virtual HRESULT STDMETHODCALLTYPE putDocumentLocator(
@ -396,12 +396,12 @@ class msxml2_wrapper : public SAX::basic_XMLReader<string_type>
private: private:
//////////////////////////////////////////////// ////////////////////////////////////////////////
// member varaibles // member varaibles
SAX::basic_ContentHandler<string_type>* contentHandler_; SAX::ContentHandler<string_type>* contentHandler_;
LocatorAdaptor locator_; LocatorAdaptor locator_;
////////////////////////////////////////////////////// //////////////////////////////////////////////////////
// COM interface -> C++ interface adaptors // COM interface -> C++ interface adaptors
class AttributesAdaptor : public SAX::basic_Attributes<string_type> class AttributesAdaptor : public SAX::Attributes<string_type>
{ {
public: public:
AttributesAdaptor(ISAXAttributes __RPC_FAR *pAttributes) : attributes_(pAttributes) { } AttributesAdaptor(ISAXAttributes __RPC_FAR *pAttributes) : attributes_(pAttributes) { }
@ -564,8 +564,8 @@ class msxml2_wrapper : public SAX::basic_XMLReader<string_type>
{ } { }
virtual ~ErrorHandlerAdaptor() { } virtual ~ErrorHandlerAdaptor() { }
void setErrorHandler(SAX::basic_ErrorHandler<string_type>& handler) { errorHandler_ = &handler; } void setErrorHandler(SAX::ErrorHandler<string_type>& handler) { errorHandler_ = &handler; }
SAX::basic_ErrorHandler<string_type>* getErrorHandler() const { return errorHandler_; } SAX::ErrorHandler<string_type>* getErrorHandler() const { return errorHandler_; }
virtual HRESULT STDMETHODCALLTYPE error( virtual HRESULT STDMETHODCALLTYPE error(
/* [in] */ ISAXLocator *pLocator, /* [in] */ ISAXLocator *pLocator,
@ -625,7 +625,7 @@ class msxml2_wrapper : public SAX::basic_XMLReader<string_type>
unsigned long __stdcall Release() { return 0; } unsigned long __stdcall Release() { return 0; }
private: private:
typedef SAX::basic_SAXParseException<string_type> SAXParseExceptionT; typedef SAX::SAXParseException<string_type> SAXParseExceptionT;
bool bWarning_; bool bWarning_;
bool bError_; bool bError_;
bool bFatal_; bool bFatal_;
@ -633,7 +633,7 @@ class msxml2_wrapper : public SAX::basic_XMLReader<string_type>
SAXParseExceptionT eError_; SAXParseExceptionT eError_;
SAXParseExceptionT eFatal_; SAXParseExceptionT eFatal_;
SAX::basic_ErrorHandler<string_type>* errorHandler_; SAX::ErrorHandler<string_type>* errorHandler_;
}; // class ErrorHandlerAdaptor }; // class ErrorHandlerAdaptor
class LexicalHandlerAdaptor : public ISAXLexicalHandler class LexicalHandlerAdaptor : public ISAXLexicalHandler
@ -642,8 +642,8 @@ class msxml2_wrapper : public SAX::basic_XMLReader<string_type>
LexicalHandlerAdaptor() : lexicalHandler_(0) { } LexicalHandlerAdaptor() : lexicalHandler_(0) { }
virtual ~LexicalHandlerAdaptor() { } virtual ~LexicalHandlerAdaptor() { }
void setLexicalHandler(SAX::basic_LexicalHandler<string_type>& handler) { lexicalHandler_ = &handler; } void setLexicalHandler(SAX::LexicalHandler<string_type>& handler) { lexicalHandler_ = &handler; }
SAX::basic_LexicalHandler<string_type>* getLexicalHandler() const { return lexicalHandler_; } SAX::LexicalHandler<string_type>* getLexicalHandler() const { return lexicalHandler_; }
virtual HRESULT STDMETHODCALLTYPE startDTD( virtual HRESULT STDMETHODCALLTYPE startDTD(
/* [in] */ const wchar_t *pwchName, /* [in] */ const wchar_t *pwchName,
@ -721,7 +721,7 @@ class msxml2_wrapper : public SAX::basic_XMLReader<string_type>
unsigned long __stdcall Release() { return 0; } unsigned long __stdcall Release() { return 0; }
private: private:
SAX::basic_LexicalHandler<string_type>* lexicalHandler_; SAX::LexicalHandler<string_type>* lexicalHandler_;
}; // class LexicalHandlerAdaptor }; // class LexicalHandlerAdaptor
class DeclHandlerAdaptor : public ISAXDeclHandler class DeclHandlerAdaptor : public ISAXDeclHandler
@ -730,8 +730,8 @@ class msxml2_wrapper : public SAX::basic_XMLReader<string_type>
DeclHandlerAdaptor() : declHandler_(0) { } DeclHandlerAdaptor() : declHandler_(0) { }
virtual ~DeclHandlerAdaptor() { } virtual ~DeclHandlerAdaptor() { }
void setDeclHandler(SAX::basic_DeclHandler<string_type>& handler) { declHandler_ = &handler; } void setDeclHandler(SAX::DeclHandler<string_type>& handler) { declHandler_ = &handler; }
SAX::basic_DeclHandler<string_type>* getDeclHandler() const { return declHandler_; } SAX::DeclHandler<string_type>* getDeclHandler() const { return declHandler_; }
virtual HRESULT STDMETHODCALLTYPE elementDecl( virtual HRESULT STDMETHODCALLTYPE elementDecl(
/* [in] */ const wchar_t *pwchName, /* [in] */ const wchar_t *pwchName,
@ -807,13 +807,13 @@ class msxml2_wrapper : public SAX::basic_XMLReader<string_type>
unsigned long __stdcall Release() { return 0; } unsigned long __stdcall Release() { return 0; }
private: private:
SAX::basic_DeclHandler<string_type>* declHandler_; SAX::DeclHandler<string_type>* declHandler_;
}; // class DeclHandlerAdaptor }; // class DeclHandlerAdaptor
class StreamAdaptor : public ISequentialStream class StreamAdaptor : public ISequentialStream
{ {
public: public:
StreamAdaptor(SAX::basic_InputSource<string_type>& source) : StreamAdaptor(SAX::InputSource<string_type>& source) :
source_(source) source_(source)
{ {
} // StreamAdaptor } // StreamAdaptor
@ -847,7 +847,7 @@ class msxml2_wrapper : public SAX::basic_XMLReader<string_type>
unsigned long __stdcall Release() { return 1; } unsigned long __stdcall Release() { return 1; }
private: private:
SAX::basic_InputSource<string_type>& source_; SAX::InputSource<string_type>& source_;
}; // StreamAdaptor }; // StreamAdaptor
@ -916,19 +916,19 @@ void msxml2_wrapper<string_type, T0, T1>::setFeature(const string_type& name, bo
} // setFeature } // setFeature
template<class string_type, class T0, class T1> template<class string_type, class T0, class T1>
void msxml2_wrapper<string_type, T0, T1>::setErrorHandler(SAX::basic_ErrorHandler<string_type>& handler) void msxml2_wrapper<string_type, T0, T1>::setErrorHandler(SAX::ErrorHandler<string_type>& handler)
{ {
errorHandler_.setErrorHandler(handler); errorHandler_.setErrorHandler(handler);
} // setErrorHandler } // setErrorHandler
template<class string_type, class T0, class T1> template<class string_type, class T0, class T1>
SAX::basic_ErrorHandler<string_type>* msxml2_wrapper<string_type, T0, T1>::getErrorHandler() const SAX::ErrorHandler<string_type>* msxml2_wrapper<string_type, T0, T1>::getErrorHandler() const
{ {
return errorHandler_.getErrorHandler(); return errorHandler_.getErrorHandler();
} // getErrorHandler } // getErrorHandler
template<class string_type, class T0, class T1> template<class string_type, class T0, class T1>
void msxml2_wrapper<string_type, T0, T1>::parse(SAX::basic_InputSource<string_type>& source) void msxml2_wrapper<string_type, T0, T1>::parse(SAX::InputSource<string_type>& source)
{ {
if(source.getByteStream() == 0) if(source.getByteStream() == 0)
{ {

View file

@ -122,7 +122,7 @@ namespace XercesImpl
template<class string_type, template<class string_type,
class T0 = Arabica::nil_t, class T0 = Arabica::nil_t,
class T1 = Arabica::nil_t> class T1 = Arabica::nil_t>
class xerces_wrapper : public SAX::basic_ProgressiveParser<string_type> class xerces_wrapper : public SAX::ProgressiveParser<string_type>
{ {
private: private:
typedef typename Arabica::get_param<Arabica::string_adaptor_tag, typedef typename Arabica::get_param<Arabica::string_adaptor_tag,
@ -132,18 +132,18 @@ class xerces_wrapper : public SAX::basic_ProgressiveParser<string_type>
typedef string_adaptor_type string_adaptorT; typedef string_adaptor_type string_adaptorT;
protected: protected:
typedef SAX::basic_XMLReader<string_type> base; typedef SAX::XMLReaderInterface<string_type> base;
public: public:
typedef typename base::EntityResolverT EntityResolverT; typedef typename base::EntityResolverT EntityResolverT;
typedef typename base::DTDHandlerT DTDHandlerT; typedef typename base::DTDHandlerT DTDHandlerT;
typedef typename base::ContentHandlerT ContentHandlerT; typedef typename base::ContentHandlerT ContentHandlerT;
typedef typename base::InputSourceT InputSourceT; typedef typename base::InputSourceT InputSourceT;
typedef SAX::basic_LexicalHandler<string_type> LexicalHandlerT; typedef SAX::LexicalHandler<string_type> LexicalHandlerT;
typedef SAX::basic_Locator<string_type> LocatorT; typedef SAX::Locator<string_type> LocatorT;
typedef SAX::basic_Attributes<string_type> AttributesT; typedef SAX::Attributes<string_type> AttributesT;
typedef SAX::basic_DeclHandler<string_type> DeclHandlerT; typedef SAX::DeclHandler<string_type> DeclHandlerT;
typedef SAX::basic_ErrorHandler<string_type> ErrorHandlerT; typedef SAX::ErrorHandler<string_type> ErrorHandlerT;
typedef typename ErrorHandlerT::SAXParseExceptionT SAXParseExceptionT; typedef typename ErrorHandlerT::SAXParseExceptionT SAXParseExceptionT;
typedef SAX::XercesFeatureNames<string_type, string_adaptorT> featuresT; typedef SAX::XercesFeatureNames<string_type, string_adaptorT> featuresT;
@ -939,14 +939,14 @@ void xerces_wrapper<string_type, T0, T1>::setFeature(const string_type& name, bo
template<class string_type, class T0, class T1> template<class string_type, class T0, class T1>
#ifndef ARABICA_VS6_WORKAROUND #ifndef ARABICA_VS6_WORKAROUND
std::auto_ptr<typename SAX::basic_XMLReader<string_type>::PropertyBase> xerces_wrapper<string_type, T0, T1>::doGetProperty(const string_type& name) std::auto_ptr<typename SAX::XMLReaderInterface<string_type>::PropertyBase> xerces_wrapper<string_type, T0, T1>::doGetProperty(const string_type& name)
#else #else
std::auto_ptr<SAX::basic_XMLReader<string_type>::PropertyBase> xerces_wrapper<string_type, T0, T1>::doGetProperty(const string_type& name) std::auto_ptr<SAX::XMLReaderInterface<string_type>::PropertyBase> xerces_wrapper<string_type, T0, T1>::doGetProperty(const string_type& name)
#endif #endif
{ {
if(name == properties_.lexicalHandler) if(name == properties_.lexicalHandler)
{ {
typedef typename SAX::basic_XMLReader<string_type>::template Property<LexicalHandlerT *> Prop; typedef typename SAX::XMLReaderInterface<string_type>::template Property<LexicalHandlerT *> Prop;
Prop *prop = new Prop(lexicalHandlerAdaptor_.getLexicalHandler()); Prop *prop = new Prop(lexicalHandlerAdaptor_.getLexicalHandler());
#ifndef ARABICA_VS6_WORKAROUND #ifndef ARABICA_VS6_WORKAROUND
return std::auto_ptr<typename base::PropertyBase>(prop); return std::auto_ptr<typename base::PropertyBase>(prop);
@ -956,7 +956,7 @@ std::auto_ptr<SAX::basic_XMLReader<string_type>::PropertyBase> xerces_wrapper<st
} }
if(name == properties_.declHandler) if(name == properties_.declHandler)
{ {
typedef typename SAX::basic_XMLReader<string_type>::template Property<DeclHandlerT*> Prop; typedef typename SAX::XMLReaderInterface<string_type>::template Property<DeclHandlerT*> Prop;
Prop* prop = new Prop(declHandlerAdaptor_.getDeclHandler()); Prop* prop = new Prop(declHandlerAdaptor_.getDeclHandler());
#ifndef ARABICA_VS6_WORKAROUND #ifndef ARABICA_VS6_WORKAROUND
return std::auto_ptr<typename base::PropertyBase>(prop); return std::auto_ptr<typename base::PropertyBase>(prop);
@ -966,7 +966,7 @@ std::auto_ptr<SAX::basic_XMLReader<string_type>::PropertyBase> xerces_wrapper<st
} }
if (name == properties_.externalSchemaLocation) if (name == properties_.externalSchemaLocation)
{ {
typedef typename SAX::basic_XMLReader<string_type>::template Property<string_type&> StringPropertyType; typedef typename SAX::XMLReaderInterface<string_type>::template Property<string_type&> StringPropertyType;
XMLCh* xercesExternalSchemaLocation = XMLCh* xercesExternalSchemaLocation =
static_cast<XMLCh*>(xerces_->getProperty( static_cast<XMLCh*>(xerces_->getProperty(
@ -989,7 +989,7 @@ std::auto_ptr<SAX::basic_XMLReader<string_type>::PropertyBase> xerces_wrapper<st
} }
if (name == properties_.externalNoNamespaceSchemaLocation) if (name == properties_.externalNoNamespaceSchemaLocation)
{ {
typedef typename SAX::basic_XMLReader<string_type>::template Property<string_type&> StringPropertyType; typedef typename SAX::XMLReaderInterface<string_type>::template Property<string_type&> StringPropertyType;
XMLCh* xercesExternalNoNamespaceSchemaLocation = XMLCh* xercesExternalNoNamespaceSchemaLocation =
static_cast<XMLCh*>(xerces_->getProperty( static_cast<XMLCh*>(xerces_->getProperty(
@ -1014,7 +1014,7 @@ void xerces_wrapper<string_type, T0, T1>::doSetProperty(const string_type& name,
{ {
if(name == properties_.lexicalHandler) if(name == properties_.lexicalHandler)
{ {
typedef typename SAX::basic_XMLReader<string_type>::template Property<LexicalHandlerT&> Prop; typedef typename SAX::XMLReaderInterface<string_type>::template Property<LexicalHandlerT&> Prop;
Prop* prop = dynamic_cast<Prop*>(value.get()); Prop* prop = dynamic_cast<Prop*>(value.get());
if(!prop) if(!prop)
@ -1026,7 +1026,7 @@ void xerces_wrapper<string_type, T0, T1>::doSetProperty(const string_type& name,
if(name == properties_.declHandler) if(name == properties_.declHandler)
{ {
typedef typename SAX::basic_XMLReader<string_type>::template Property<DeclHandlerT&> Prop; typedef typename SAX::XMLReaderInterface<string_type>::template Property<DeclHandlerT&> Prop;
Prop* prop = dynamic_cast<Prop*>(value.get()); Prop* prop = dynamic_cast<Prop*>(value.get());
if(!prop) if(!prop)

View file

@ -8,7 +8,7 @@ namespace Arabica
namespace XSLT namespace XSLT
{ {
class ApplyImportsHandler : public SAX::DefaultHandler class ApplyImportsHandler : public SAX::DefaultHandler<std::string>
{ {
public: public:
ApplyImportsHandler(CompilationContext& context): ApplyImportsHandler(CompilationContext& context):
@ -24,7 +24,7 @@ public:
virtual void startElement(const std::string& namespaceURI, virtual void startElement(const std::string& namespaceURI,
const std::string& localName, const std::string& localName,
const std::string& qName, const std::string& qName,
const SAX::Attributes& atts) const SAX::Attributes<std::string>& atts)
{ {
if(applyImports_ == 0) if(applyImports_ == 0)
{ {

View file

@ -10,7 +10,7 @@ namespace Arabica
namespace XSLT namespace XSLT
{ {
class ApplyTemplatesHandler : public SAX::DefaultHandler class ApplyTemplatesHandler : public SAX::DefaultHandler<std::string>
{ {
public: public:
ApplyTemplatesHandler(CompilationContext& context) : ApplyTemplatesHandler(CompilationContext& context) :
@ -22,7 +22,7 @@ public:
virtual void startElement(const std::string& namespaceURI, virtual void startElement(const std::string& namespaceURI,
const std::string& localName, const std::string& localName,
const std::string& qName, const std::string& qName,
const SAX::Attributes& atts) const SAX::Attributes<std::string>& atts)
{ {
if(applyTemplates_ == 0) if(applyTemplates_ == 0)
{ {

View file

@ -21,7 +21,7 @@ protected:
virtual Attribute* createContainer(const std::string& namespaceURI, virtual Attribute* createContainer(const std::string& namespaceURI,
const std::string& localName, const std::string& localName,
const std::string& qName, const std::string& qName,
const SAX::Attributes& atts) const SAX::Attributes<std::string>& atts)
{ {
static const ValueRule rules[] = { { "name", true, 0 }, static const ValueRule rules[] = { { "name", true, 0 },
{ "namespace", false, 0 }, { "namespace", false, 0 },

View file

@ -9,7 +9,7 @@ namespace Arabica
namespace XSLT namespace XSLT
{ {
class CallTemplateHandler : public SAX::DefaultHandler class CallTemplateHandler : public SAX::DefaultHandler<std::string>
{ {
public: public:
CallTemplateHandler(CompilationContext& context) : CallTemplateHandler(CompilationContext& context) :
@ -21,7 +21,7 @@ public:
virtual void startElement(const std::string& namespaceURI, virtual void startElement(const std::string& namespaceURI,
const std::string& localName, const std::string& localName,
const std::string& qName, const std::string& qName,
const SAX::Attributes& atts) const SAX::Attributes<std::string>& atts)
{ {
if(callTemplate_ == 0) if(callTemplate_ == 0)
{ {

View file

@ -21,7 +21,7 @@ public:
virtual When* createContainer(const std::string& namespaceURI, virtual When* createContainer(const std::string& namespaceURI,
const std::string& localName, const std::string& localName,
const std::string& qName, const std::string& qName,
const SAX::Attributes& atts) const SAX::Attributes<std::string>& atts)
{ {
static const ValueRule rules[] = { { "test", true, 0 }, static const ValueRule rules[] = { { "test", true, 0 },
{ 0, false, 0} }; { 0, false, 0} };
@ -53,7 +53,7 @@ public:
virtual Otherwise* createContainer(const std::string& namespaceURI, virtual Otherwise* createContainer(const std::string& namespaceURI,
const std::string& localName, const std::string& localName,
const std::string& qName, const std::string& qName,
const SAX::Attributes& atts) const SAX::Attributes<std::string>& atts)
{ {
if(atts.getLength()) if(atts.getLength())
throw SAX::SAXException("xsl:otherwise may not have any attributes"); throw SAX::SAXException("xsl:otherwise may not have any attributes");
@ -73,7 +73,7 @@ private:
Choose* choose_; Choose* choose_;
}; // class OtherwiseHandler }; // class OtherwiseHandler
class ChooseHandler : public SAX::DefaultHandler class ChooseHandler : public SAX::DefaultHandler<std::string>
{ {
public: public:
ChooseHandler(CompilationContext& context) : ChooseHandler(CompilationContext& context) :
@ -86,7 +86,7 @@ public:
virtual void startElement(const std::string& namespaceURI, virtual void startElement(const std::string& namespaceURI,
const std::string& localName, const std::string& localName,
const std::string& qName, const std::string& qName,
const SAX::Attributes& atts) const SAX::Attributes<std::string>& atts)
{ {
if(!choose_) if(!choose_)
{ {

View file

@ -20,7 +20,7 @@ public:
virtual Comment* createContainer(const std::string& namespaceURI, virtual Comment* createContainer(const std::string& namespaceURI,
const std::string& localName, const std::string& localName,
const std::string& qName, const std::string& qName,
const SAX::Attributes& atts) const SAX::Attributes<std::string>& atts)
{ {
if(atts.getLength() != 0) if(atts.getLength() != 0)
throw SAX::SAXException("xsl:comment can not have attributes"); throw SAX::SAXException("xsl:comment can not have attributes");

View file

@ -19,7 +19,7 @@ public:
virtual Copy* createContainer(const std::string& namespaceURI, virtual Copy* createContainer(const std::string& namespaceURI,
const std::string& localName, const std::string& localName,
const std::string& qName, const std::string& qName,
const SAX::Attributes& atts) const SAX::Attributes<std::string>& atts)
{ {
static const ValueRule rules[] = { { "use-attribute-sets", false, 0 }, static const ValueRule rules[] = { { "use-attribute-sets", false, 0 },
{ 0, false, 0} }; { 0, false, 0} };
@ -29,7 +29,7 @@ public:
} // createContainer } // createContainer
}; // class WhenHandler }; // class WhenHandler
class CopyOfHandler : public SAX::DefaultHandler class CopyOfHandler : public SAX::DefaultHandler<std::string>
{ {
public: public:
CopyOfHandler(CompilationContext& context) : CopyOfHandler(CompilationContext& context) :
@ -41,7 +41,7 @@ public:
virtual void startElement(const std::string& namespaceURI, virtual void startElement(const std::string& namespaceURI,
const std::string& localName, const std::string& localName,
const std::string& qName, const std::string& qName,
const SAX::Attributes& atts) const SAX::Attributes<std::string>& atts)
{ {
if(copyOf_ == 0) if(copyOf_ == 0)
{ {

View file

@ -15,12 +15,12 @@ namespace XSLT
{ {
template<class Handler> template<class Handler>
SAX::DefaultHandler* CreateHandler(CompilationContext& context) SAX::DefaultHandler<std::string>* CreateHandler(CompilationContext& context)
{ {
return new Handler(context); return new Handler(context);
} // create } // create
class NotImplementedYetHandler : public SAX::DefaultHandler class NotImplementedYetHandler : public SAX::DefaultHandler<std::string>
{ {
public: public:
NotImplementedYetHandler(CompilationContext& context) { } NotImplementedYetHandler(CompilationContext& context) { }
@ -28,13 +28,13 @@ public:
virtual void startElement(const std::string& namespaceURI, virtual void startElement(const std::string& namespaceURI,
const std::string& localName, const std::string& localName,
const std::string& qName, const std::string& qName,
const SAX::Attributes& atts) const SAX::Attributes<std::string>& atts)
{ {
throw SAX::SAXException("Haven't implemented " + qName + " yet"); throw SAX::SAXException("Haven't implemented " + qName + " yet");
} // startElement } // startElement
}; // NotImplementedYetHandler }; // NotImplementedYetHandler
typedef SAX::DefaultHandler* (*CreateHandlerPtr)(CompilationContext&); typedef SAX::DefaultHandler<std::string>* (*CreateHandlerPtr)(CompilationContext&);
struct ChildElement struct ChildElement
{ {

View file

@ -21,7 +21,7 @@ protected:
virtual Element* createContainer(const std::string& namespaceURI, virtual Element* createContainer(const std::string& namespaceURI,
const std::string& localName, const std::string& localName,
const std::string& qName, const std::string& qName,
const SAX::Attributes& atts) const SAX::Attributes<std::string>& atts)
{ {
static const ValueRule rules[] = { { "name", true, 0 }, static const ValueRule rules[] = { { "name", true, 0 },
{ "namespace", false, 0 }, { "namespace", false, 0 },

View file

@ -23,7 +23,7 @@ protected:
virtual ForEach* createContainer(const std::string& namespaceURI, virtual ForEach* createContainer(const std::string& namespaceURI,
const std::string& localName, const std::string& localName,
const std::string& qName, const std::string& qName,
const SAX::Attributes& atts) const SAX::Attributes<std::string>& atts)
{ {
static const ValueRule rules[] = { { "select", true, 0 }, static const ValueRule rules[] = { { "select", true, 0 },
{ 0, false, 0} }; { 0, false, 0} };
@ -35,7 +35,7 @@ protected:
virtual bool createChild(const std::string& namespaceURI, virtual bool createChild(const std::string& namespaceURI,
const std::string& localName, const std::string& localName,
const std::string& qName, const std::string& qName,
const SAX::Attributes& atts) const SAX::Attributes<std::string>& atts)
{ {
if((namespaceURI == StylesheetConstant::NamespaceURI()) && if((namespaceURI == StylesheetConstant::NamespaceURI()) &&
(localName == "sort")) (localName == "sort"))

View file

@ -20,7 +20,7 @@ public:
virtual If* createContainer(const std::string& namespaceURI, virtual If* createContainer(const std::string& namespaceURI,
const std::string& localName, const std::string& localName,
const std::string& qName, const std::string& qName,
const SAX::Attributes& atts) const SAX::Attributes<std::string>& atts)
{ {
static const ValueRule rules[] = { { "test", true, 0 }, static const ValueRule rules[] = { { "test", true, 0 },
{ 0, false, 0} }; { 0, false, 0} };

View file

@ -10,7 +10,7 @@ namespace Arabica
namespace XSLT namespace XSLT
{ {
class IncludeHandler : public SAX::DefaultHandler class IncludeHandler : public SAX::DefaultHandler<std::string>
{ {
public: public:
IncludeHandler() : IncludeHandler() :
@ -21,7 +21,7 @@ public:
{ {
} // IncludeHandler } // IncludeHandler
void context(CompilationContext& context, SAX::DefaultHandler* compiler) void context(CompilationContext& context, SAX::DefaultHandler<std::string>* compiler)
{ {
context_ = &context; context_ = &context;
compiler_ = compiler; compiler_ = compiler;
@ -30,7 +30,7 @@ public:
void start_include(const std::string& namespaceURI, void start_include(const std::string& namespaceURI,
const std::string& localName, const std::string& localName,
const std::string& qName, const std::string& qName,
const SAX::Attributes& atts) const SAX::Attributes<std::string>& atts)
{ {
context_->parser().setContentHandler(*this); context_->parser().setContentHandler(*this);
startElement(namespaceURI, localName, qName, atts); startElement(namespaceURI, localName, qName, atts);
@ -39,7 +39,7 @@ public:
virtual void startElement(const std::string& namespaceURI, virtual void startElement(const std::string& namespaceURI,
const std::string& localName, const std::string& localName,
const std::string& qName, const std::string& qName,
const SAX::Attributes& atts) const SAX::Attributes<std::string>& atts)
{ {
if(no_content_) if(no_content_)
throw SAX::SAXException("xsl:include must be empty"); throw SAX::SAXException("xsl:include must be empty");
@ -77,10 +77,10 @@ public:
} }
} // startElement } // startElement
virtual void startPrefixMapping(const stringT& prefix, const stringT& uri) virtual void startPrefixMapping(const stringT& prefix, const stringT& uri)
{ {
context_->parentHandler().startPrefixMapping(prefix, uri); context_->parentHandler().startPrefixMapping(prefix, uri);
} // startPrefixMapping } // startPrefixMapping
virtual void endElement(const std::string& namespaceURI, virtual void endElement(const std::string& namespaceURI,
@ -130,7 +130,7 @@ public:
} // unwind_imports } // unwind_imports
private: private:
std::string validate_href(const std::string& qName, const SAX::Attributes& atts) std::string validate_href(const std::string& qName, const SAX::Attributes<std::string>& atts)
{ {
static const ValueRule rules[] = { { "href", true, 0 }, static const ValueRule rules[] = { { "href", true, 0 },
{ 0, false, 0 } }; { 0, false, 0 } };
@ -157,7 +157,7 @@ private:
std::string prev = context_->setBase(href); std::string prev = context_->setBase(href);
SAX::InputSource source(href); SAX::InputSource<std::string> source(href);
SAX::XMLReader<std::string> include_parser; SAX::XMLReader<std::string> include_parser;
SAX::CatchErrorHandler<std::string> errorHandler; SAX::CatchErrorHandler<std::string> errorHandler;
@ -173,7 +173,7 @@ private:
current_includes_.pop_back(); current_includes_.pop_back();
} // include_stylesheet } // include_stylesheet
SAX::DefaultHandler* compiler_; SAX::DefaultHandler<std::string>* compiler_;
CompilationContext* context_; CompilationContext* context_;
unsigned int pass_through_; unsigned int pass_through_;
bool no_content_; bool no_content_;

View file

@ -21,7 +21,7 @@ protected:
virtual InlineElement* createContainer(const std::string& namespaceURI, virtual InlineElement* createContainer(const std::string& namespaceURI,
const std::string& localName, const std::string& localName,
const std::string& qName, const std::string& qName,
const SAX::Attributes& atts) const SAX::Attributes<std::string>& atts)
{ {
std::vector<InlineAttribute> inlineAtts; std::vector<InlineAttribute> inlineAtts;
for(unsigned int i = 0; i != atts.getLength(); ++i) for(unsigned int i = 0; i != atts.getLength(); ++i)

View file

@ -11,10 +11,10 @@ namespace XSLT
{ {
const ChildElement* AllowedChildren(); const ChildElement* AllowedChildren();
SAX::DefaultHandler* createInlineElementHandler(CompilationContext& context); SAX::DefaultHandler<std::string>* createInlineElementHandler(CompilationContext& context);
template<class container_type> template<class container_type>
class ItemContainerHandler : public SAX::DefaultHandler class ItemContainerHandler : public SAX::DefaultHandler<std::string>
{ {
protected: protected:
ItemContainerHandler(CompilationContext& context) : ItemContainerHandler(CompilationContext& context) :
@ -26,7 +26,7 @@ protected:
virtual container_type* createContainer(const std::string& namespaceURI, virtual container_type* createContainer(const std::string& namespaceURI,
const std::string& localName, const std::string& localName,
const std::string& qName, const std::string& qName,
const SAX::Attributes& atts) = 0; const SAX::Attributes<std::string>& atts) = 0;
CompilationContext& context() const { return context_; } CompilationContext& context() const { return context_; }
container_type* container() const { return container_; } container_type* container() const { return container_; }
@ -35,7 +35,7 @@ public:
virtual void startElement(const std::string& namespaceURI, virtual void startElement(const std::string& namespaceURI,
const std::string& localName, const std::string& localName,
const std::string& qName, const std::string& qName,
const SAX::Attributes& atts) const SAX::Attributes<std::string>& atts)
{ {
if(container_ == 0) if(container_ == 0)
{ {
@ -71,7 +71,7 @@ protected:
virtual bool createChild(const std::string& namespaceURI, virtual bool createChild(const std::string& namespaceURI,
const std::string& localName, const std::string& localName,
const std::string& qName, const std::string& qName,
const SAX::Attributes& atts) const SAX::Attributes<std::string>& atts)
{ {
if(namespaceURI == StylesheetConstant::NamespaceURI()) if(namespaceURI == StylesheetConstant::NamespaceURI())
{ {
@ -156,7 +156,7 @@ const ChildElement* AllowedChildren()
return allowedChildren; return allowedChildren;
} // AllowedChildren } // AllowedChildren
SAX::DefaultHandler* createInlineElementHandler(CompilationContext& context) SAX::DefaultHandler<std::string>* createInlineElementHandler(CompilationContext& context)
{ {
return new InlineElementHandler(context); return new InlineElementHandler(context);
} // InlineElementHandler } // InlineElementHandler

View file

@ -21,7 +21,7 @@ protected:
virtual Message* createContainer(const std::string& namespaceURI, virtual Message* createContainer(const std::string& namespaceURI,
const std::string& localName, const std::string& localName,
const std::string& qName, const std::string& qName,
const SAX::Attributes& atts) const SAX::Attributes<std::string>& atts)
{ {
static const ValueRule rules[] = { { "terminate", false, No, AllowedYesNo }, static const ValueRule rules[] = { { "terminate", false, No, AllowedYesNo },
{ 0, false, 0} }; { 0, false, 0} };

View file

@ -8,7 +8,7 @@ namespace Arabica
namespace XSLT namespace XSLT
{ {
class NamespaceAliasHandler : public SAX::DefaultHandler class NamespaceAliasHandler : public SAX::DefaultHandler<std::string>
{ {
public: public:
NamespaceAliasHandler(CompilationContext& context) : NamespaceAliasHandler(CompilationContext& context) :
@ -20,7 +20,7 @@ public:
virtual void startElement(const std::string& namespaceURI, virtual void startElement(const std::string& namespaceURI,
const std::string& localName, const std::string& localName,
const std::string& qName, const std::string& qName,
const SAX::Attributes& atts) const SAX::Attributes<std::string>& atts)
{ {
if(!done_) if(!done_)
{ {

View file

@ -8,7 +8,7 @@ namespace Arabica
namespace XSLT namespace XSLT
{ {
class OutputHandler : public SAX::DefaultHandler class OutputHandler : public SAX::DefaultHandler<std::string>
{ {
public: public:
OutputHandler(CompilationContext& context) : OutputHandler(CompilationContext& context) :
@ -19,7 +19,7 @@ public:
virtual void startElement(const std::string& namespaceURI, virtual void startElement(const std::string& namespaceURI,
const std::string& localName, const std::string& localName,
const std::string& qName, const std::string& qName,
const SAX::Attributes& atts) const SAX::Attributes<std::string>& atts)
{ {
if(settings_.empty()) if(settings_.empty())
{ {

View file

@ -20,7 +20,7 @@ public:
virtual ProcessingInstruction* createContainer(const std::string& namespaceURI, virtual ProcessingInstruction* createContainer(const std::string& namespaceURI,
const std::string& localName, const std::string& localName,
const std::string& qName, const std::string& qName,
const SAX::Attributes& atts) const SAX::Attributes<std::string>& atts)
{ {
static const ValueRule rules[] = { { "name", true, 0 }, static const ValueRule rules[] = { { "name", true, 0 },
{ 0, false, 0} }; { 0, false, 0} };

View file

@ -8,7 +8,7 @@ namespace Arabica
namespace XSLT namespace XSLT
{ {
class SortHandler : public SAX::DefaultHandler class SortHandler : public SAX::DefaultHandler<std::string>
{ {
public: public:
SortHandler(CompilationContext& context, SortHandler(CompilationContext& context,
@ -22,7 +22,7 @@ public:
virtual void startElement(const std::string& namespaceURI, virtual void startElement(const std::string& namespaceURI,
const std::string& localName, const std::string& localName,
const std::string& qName, const std::string& qName,
const SAX::Attributes& atts) const SAX::Attributes<std::string>& atts)
{ {
if(sort_ == 0) if(sort_ == 0)
{ {

View file

@ -22,7 +22,7 @@ protected:
virtual Template* createContainer(const std::string& namespaceURI, virtual Template* createContainer(const std::string& namespaceURI,
const std::string& localName, const std::string& localName,
const std::string& qName, const std::string& qName,
const SAX::Attributes& atts) const SAX::Attributes<std::string>& atts)
{ {
const std::string& match = atts.getValue("match"); const std::string& match = atts.getValue("match");
if((match == "") && (atts.getValue("name") == "")) if((match == "") && (atts.getValue("name") == ""))
@ -45,7 +45,7 @@ protected:
virtual bool createChild(const std::string& namespaceURI, virtual bool createChild(const std::string& namespaceURI,
const std::string& localName, const std::string& localName,
const std::string& qName, const std::string& qName,
const SAX::Attributes& atts) const SAX::Attributes<std::string>& atts)
{ {
if((namespaceURI == StylesheetConstant::NamespaceURI()) && if((namespaceURI == StylesheetConstant::NamespaceURI()) &&
(localName == "param")) (localName == "param"))

View file

@ -8,7 +8,7 @@ namespace Arabica
namespace XSLT namespace XSLT
{ {
class TextHandler : public SAX::DefaultHandler class TextHandler : public SAX::DefaultHandler<std::string>
{ {
public: public:
TextHandler(CompilationContext& context) : TextHandler(CompilationContext& context) :
@ -20,7 +20,7 @@ public:
virtual void startElement(const std::string& namespaceURI, virtual void startElement(const std::string& namespaceURI,
const std::string& localName, const std::string& localName,
const std::string& qName, const std::string& qName,
const SAX::Attributes& atts) const SAX::Attributes<std::string>& atts)
{ {
if(text_ == 0) if(text_ == 0)
{ {

View file

@ -9,7 +9,7 @@ namespace Arabica
namespace XSLT namespace XSLT
{ {
class ValueOfHandler : public SAX::DefaultHandler class ValueOfHandler : public SAX::DefaultHandler<std::string>
{ {
public: public:
ValueOfHandler(CompilationContext& context) : ValueOfHandler(CompilationContext& context) :
@ -21,7 +21,7 @@ public:
virtual void startElement(const std::string& namespaceURI, virtual void startElement(const std::string& namespaceURI,
const std::string& localName, const std::string& localName,
const std::string& qName, const std::string& qName,
const SAX::Attributes& atts) const SAX::Attributes<std::string>& atts)
{ {
if(valueOf_ == 0) if(valueOf_ == 0)
{ {

View file

@ -49,7 +49,7 @@ void validateAttribute(const std::string& parentElement,
} // validateAttribute } // validateAttribute
std::map<std::string, std::string> gatherAttributes(const std::string& parentElement, std::map<std::string, std::string> gatherAttributes(const std::string& parentElement,
const SAX::Attributes& atts, const SAX::Attributes<std::string>& atts,
const ValueRule* rules) const ValueRule* rules)
{ {
std::map<std::string, std::string> results; std::map<std::string, std::string> results;

View file

@ -23,7 +23,7 @@ protected:
virtual VType* createContainer(const std::string& namespaceURI, virtual VType* createContainer(const std::string& namespaceURI,
const std::string& localName, const std::string& localName,
const std::string& qName, const std::string& qName,
const SAX::Attributes& atts) const SAX::Attributes<std::string>& atts)
{ {
static const ValueRule rules[] = { { "name", true, 0 }, static const ValueRule rules[] = { { "name", true, 0 },
{ "select", false, 0 }, { "select", false, 0 },

View file

@ -39,7 +39,7 @@ public:
} // while ... } // while ...
} // ~CompilationContext } // ~CompilationContext
void root(SAX::DefaultHandler& root) void root(SAX::DefaultHandler<std::string>& root)
{ {
handlerStack_.push(&root); handlerStack_.push(&root);
} // root } // root
@ -64,11 +64,11 @@ public:
} // setBase } // setBase
void push(ItemContainer* parent, void push(ItemContainer* parent,
SAX::DefaultHandler* newHandler, SAX::DefaultHandler<std::string>* newHandler,
const std::string& namespaceURI, const std::string& namespaceURI,
const std::string& localName, const std::string& localName,
const std::string& qName, const std::string& qName,
const SAX::Attributes& atts) const SAX::Attributes<std::string>& atts)
{ {
parentStack_.push(parent); parentStack_.push(parent);
handlerStack_.push(newHandler); handlerStack_.push(newHandler);
@ -89,7 +89,7 @@ public:
return *parentStack_.top(); return *parentStack_.top();
} // parentContainer } // parentContainer
SAX::ContentHandler& parentHandler() const SAX::ContentHandler<std::string>& parentHandler() const
{ {
parser_.setContentHandler(*handlerStack_.top()); parser_.setContentHandler(*handlerStack_.top());
return parser_.contentHandler(); return parser_.contentHandler();
@ -131,7 +131,7 @@ private:
StylesheetParser& parser_; StylesheetParser& parser_;
const Arabica::XPath::XPath<std::string>& xpath_; const Arabica::XPath::XPath<std::string>& xpath_;
Stylesheet& stylesheet_; Stylesheet& stylesheet_;
std::stack<SAX::DefaultHandler*> handlerStack_; std::stack<SAX::DefaultHandler<std::string>*> handlerStack_;
std::stack<ItemContainer*> parentStack_; std::stack<ItemContainer*> parentStack_;
std::map<std::string, Namespace> namespaceRemap_; std::map<std::string, Namespace> namespaceRemap_;

View file

@ -62,7 +62,7 @@ private:
Arabica::io::URI absolute(Arabica::io::URI(baseURI_), location); Arabica::io::URI absolute(Arabica::io::URI(baseURI_), location);
SAX::InputSource is(absolute.as_string()); SAX::InputSource<std::string> is(absolute.as_string());
domParser.parse(is); domParser.parse(is);
if(!eh.errorsReported()) if(!eh.errorsReported())

View file

@ -221,7 +221,7 @@ public:
protected: protected:
virtual void do_start_document(const Settings& settings) = 0; virtual void do_start_document(const Settings& settings) = 0;
virtual void do_end_document() = 0; virtual void do_end_document() = 0;
virtual void do_start_element(const std::string& qName, const std::string& namespaceURI, const SAX::Attributes& atts) = 0; virtual void do_start_element(const std::string& qName, const std::string& namespaceURI, const SAX::Attributes<std::string>& atts) = 0;
virtual void do_end_element(const std::string& qName, const std::string& namespaceURI) = 0; virtual void do_end_element(const std::string& qName, const std::string& namespaceURI) = 0;
virtual void do_characters(const std::string& ch) = 0; virtual void do_characters(const std::string& ch) = 0;
virtual void do_comment(const std::string& ch) = 0; virtual void do_comment(const std::string& ch) = 0;
@ -305,7 +305,7 @@ private:
int pending_attribute_; int pending_attribute_;
std::string name_; std::string name_;
std::string namespaceURI_; std::string namespaceURI_;
SAX::AttributesImpl atts_; SAX::AttributesImpl<std::string> atts_;
std::stringstream buffer_; std::stringstream buffer_;
bool text_mode_; bool text_mode_;
NamespaceStack namespaceStack_; NamespaceStack namespaceStack_;
@ -419,7 +419,7 @@ protected:
void do_start_element(const std::string& qName, void do_start_element(const std::string& qName,
const std::string& namespaceURI, const std::string& namespaceURI,
const SAX::Attributes& atts) const SAX::Attributes<std::string>& atts)
{ {
if(!seen_root_) if(!seen_root_)
do_decl(qName); do_decl(qName);
@ -650,7 +650,7 @@ protected:
void do_start_element(const std::string& qName, void do_start_element(const std::string& qName,
const std::string& namespaceURI, const std::string& namespaceURI,
const SAX::Attributes& atts) const SAX::Attributes<std::string>& atts)
{ {
indent(); indent();
DOM::Element<std::string> elem = document().createElementNS(namespaceURI, qName); DOM::Element<std::string> elem = document().createElementNS(namespaceURI, qName);

View file

@ -19,7 +19,7 @@ namespace Arabica
namespace XSLT namespace XSLT
{ {
class StylesheetHandler : public SAX::DefaultHandler class StylesheetHandler : public SAX::DefaultHandler<std::string>
{ {
public: public:
StylesheetHandler(CompilationContext& context) : StylesheetHandler(CompilationContext& context) :
@ -34,7 +34,7 @@ public:
virtual void startElement(const std::string& namespaceURI, virtual void startElement(const std::string& namespaceURI,
const std::string& localName, const std::string& localName,
const std::string& qName, const std::string& qName,
const SAX::Attributes& atts) const SAX::Attributes<std::string>& atts)
{ {
if(top_) if(top_)
{ {
@ -105,13 +105,13 @@ private:
void include_stylesheet(const std::string& namespaceURI, void include_stylesheet(const std::string& namespaceURI,
const std::string& localName, const std::string& localName,
const std::string& qName, const std::string& qName,
const SAX::Attributes& atts) const SAX::Attributes<std::string>& atts)
{ {
includer_.start_include(namespaceURI, localName, qName, atts); includer_.start_include(namespaceURI, localName, qName, atts);
} // include_stylesheet } // include_stylesheet
CompilationContext& context_; CompilationContext& context_;
SAX::DefaultHandler* child_; SAX::DefaultHandler<std::string>* child_;
IncludeHandler includer_; IncludeHandler includer_;
bool top_; bool top_;
unsigned int foreign_; unsigned int foreign_;
@ -149,7 +149,7 @@ public:
{ {
} // ~StylesheetCompiler } // ~StylesheetCompiler
std::auto_ptr<Stylesheet> compile(SAX::InputSource& source) std::auto_ptr<Stylesheet> compile(SAX::InputSource<std::string>& source)
{ {
error_ = ""; error_ = "";

View file

@ -16,17 +16,17 @@ class StylesheetParser
public: public:
StylesheetParser() { } StylesheetParser() { }
void setContentHandler(SAX::ContentHandler& handler) void setContentHandler(SAX::ContentHandler<std::string>& handler)
{ {
namespace_tracker_.setContentHandler(handler); namespace_tracker_.setContentHandler(handler);
} // setContentHandler } // setContentHandler
SAX::ContentHandler& contentHandler() SAX::ContentHandler<std::string>& contentHandler()
{ {
return text_coalescer_; return text_coalescer_;
} // contentHandler } // contentHandler
void parse(SAX::InputSource& source) void parse(SAX::InputSource<std::string>& source)
{ {
SAX::XMLReader<std::string> base_parser; SAX::XMLReader<std::string> base_parser;
text_coalescer_.setParent(base_parser); text_coalescer_.setParent(base_parser);

View file

@ -15,7 +15,7 @@
using namespace Arabica::SAX; using namespace Arabica::SAX;
InputSourceResolver::InputSourceResolver(const Arabica::SAX::InputSource& inputSource) : InputSourceResolver::InputSourceResolver(const Arabica::SAX::InputSource<std::string>& inputSource) :
deleteStream_(false), deleteStream_(false),
byteStream_(0) byteStream_(0)
{ {

View file

@ -28,7 +28,7 @@ class SAX2DOMTest : public TestCase
std::stringstream ss; std::stringstream ss;
ss << SA::asStdString(str); ss << SA::asStdString(str);
Arabica::SAX::basic_InputSource<string_type> is(ss); Arabica::SAX::InputSource<string_type> is(ss);
Arabica::SAX::CatchErrorHandler<string_type> eh; Arabica::SAX::CatchErrorHandler<string_type> eh;
Arabica::SAX2DOM::Parser<string_type, string_adaptor> parser; Arabica::SAX2DOM::Parser<string_type, string_adaptor> parser;
parser.setErrorHandler(eh); parser.setErrorHandler(eh);

View file

@ -28,7 +28,7 @@ class TreeWalkerTest : public TestCase
std::stringstream ss; std::stringstream ss;
ss << SA::asStdString(str); ss << SA::asStdString(str);
Arabica::SAX::basic_InputSource<string_type> is(ss); Arabica::SAX::InputSource<string_type> is(ss);
Arabica::SAX::CatchErrorHandler<string_type> eh; Arabica::SAX::CatchErrorHandler<string_type> eh;
Arabica::SAX2DOM::Parser<string_type, string_adaptor> parser; Arabica::SAX2DOM::Parser<string_type, string_adaptor> parser;
parser.setErrorHandler(eh); parser.setErrorHandler(eh);

View file

@ -125,11 +125,11 @@ class WhitespaceStripperTest : public TestCase
} // testStrip } // testStrip
private: private:
std::auto_ptr<Arabica::SAX::InputSource> source(const std::string& str) std::auto_ptr<Arabica::SAX::InputSource<std::string> > source(const std::string& str)
{ {
std::auto_ptr<std::iostream> ss(new std::stringstream()); std::auto_ptr<std::iostream> ss(new std::stringstream());
(*ss) << str; (*ss) << str;
return std::auto_ptr<Arabica::SAX::InputSource>(new Arabica::SAX::InputSource(ss)); return std::auto_ptr<Arabica::SAX::InputSource<std::string> >(new Arabica::SAX::InputSource<std::string>(ss));
} // source } // source
}; // WhitespaceStripperTest }; // WhitespaceStripperTest

View file

@ -404,7 +404,7 @@ public:
std::stringstream ss; std::stringstream ss;
ss << match; ss << match;
Arabica::SAX::basic_InputSource<string_type> is(ss); Arabica::SAX::InputSource<string_type> is(ss);
Arabica::SAX::CatchErrorHandler<string_type> eh; Arabica::SAX::CatchErrorHandler<string_type> eh;
Arabica::SAX2DOM::Parser<string_type, string_adaptor> parser; Arabica::SAX2DOM::Parser<string_type, string_adaptor> parser;
parser.setErrorHandler(eh); parser.setErrorHandler(eh);

View file

@ -18,7 +18,7 @@ const std::string SEPERATOR = "/";
Arabica::DOM::Document<std::string> buildDOM(const std::string& filename) Arabica::DOM::Document<std::string> buildDOM(const std::string& filename)
{ {
Arabica::SAX::InputSource is(filename); Arabica::SAX::InputSource<std::string> is(filename);
Arabica::SAX2DOM::Parser<std::string> parser; Arabica::SAX2DOM::Parser<std::string> parser;
parser.parse(is); parser.parse(is);
@ -85,7 +85,7 @@ protected:
{ {
Arabica::XSLT::StylesheetCompiler compiler; Arabica::XSLT::StylesheetCompiler compiler;
Arabica::SAX::InputSource source(input_xslt_); Arabica::SAX::InputSource<std::string> source(input_xslt_);
std::auto_ptr<Arabica::XSLT::Stylesheet> stylesheet = compiler.compile(source); std::auto_ptr<Arabica::XSLT::Stylesheet> stylesheet = compiler.compile(source);
if(stylesheet.get() != 0) if(stylesheet.get() != 0)
assertImplementation(false, "Expected " + input_xslt_ + " not to compile. But it did :o"); assertImplementation(false, "Expected " + input_xslt_ + " not to compile. But it did :o");
@ -113,7 +113,7 @@ protected:
{ {
Arabica::XSLT::StylesheetCompiler compiler; Arabica::XSLT::StylesheetCompiler compiler;
Arabica::SAX::InputSource source(input_xslt_); Arabica::SAX::InputSource<std::string> source(input_xslt_);
std::auto_ptr<Arabica::XSLT::Stylesheet> stylesheet = compiler.compile(source); std::auto_ptr<Arabica::XSLT::Stylesheet> stylesheet = compiler.compile(source);
if(stylesheet.get() == 0) if(stylesheet.get() == 0)
assertImplementation(false, "Failed to compile " + input_xslt_ + " : " + compiler.error()); assertImplementation(false, "Failed to compile " + input_xslt_ + " : " + compiler.error());
@ -158,7 +158,7 @@ protected:
{ {
Arabica::XSLT::StylesheetCompiler compiler; Arabica::XSLT::StylesheetCompiler compiler;
Arabica::SAX::InputSource source(input_xslt_); Arabica::SAX::InputSource<std::string> source(input_xslt_);
std::auto_ptr<Arabica::XSLT::Stylesheet> stylesheet = compiler.compile(source); std::auto_ptr<Arabica::XSLT::Stylesheet> stylesheet = compiler.compile(source);
if(stylesheet.get() == 0) if(stylesheet.get() == 0)
assertImplementation(false, "Failed to compile " + input_xslt_ + " : " + compiler.error()); assertImplementation(false, "Failed to compile " + input_xslt_ + " : " + compiler.error());