Request for Discussion: SAX 1.0 in C++
Steinar Bang
sb at metis.no
Tue Dec 21 08:04:49 GMT 1999
>>>>> John Aldridge <john.aldridge at informatix.co.uk>:
> It seems to me that code like:
> void DocumentHandler::startElement (
> const std::wstring &name, const AttributeList &atts)
> {
> if (name == L"Paragraph") ...
> }
> is going to be a whole lot neater than
> void DocumentHandler::startElement (
> const std::basic_string<SAXChar> &name, const AttributeList &atts)
> {
> static const SAXChar paraString[] =
> {'P','a','r','a','g','r','a','p','h',\0'};
> if (name == paraString) ...
> }
Sure, but how about this, then...?
typedef unsigned short SAXChar;
class SAXString : public basic_string<SAXChar> {
public:
SAXString(const SAXString& s, size_type pos = 0, size_type n = npos)
: basic_string<SAXChar>(s,pos,npos) {}
SAXString(const SAXChar* p, size_type n)
: basic_string<SAXChar>(p,n) {}
SAXString(const SAXChar* p)
: basic_string<SAXChar>(p) {}
SAXString(size_type n, SAXChar c)
: basic_string<SAXChar>(n,c) {}
SAXString(const char* p)
: basic_string<SAXChar>(p)
{
// do UTF-8 to UTF-16 decoding here
}
};
and then:
void DocumentHandler::startElement (
const SAXString& name, const AttributeList& atts)
{
if (name == SAXString("Paragraph")) ...
}
or maybe just
void DocumentHandler::startElement (
const SAXString& name, const AttributeList& atts)
{
if (name == "Paragraph") ...
}
since the appropriate copy constructor is available.
Does it matter if SAXString doesn't have a virtual destructor if it
doesn't add any extra state to basic_string<SAXChar> and has no
virtual functions?
xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev at ic.ac.uk
Archived as: http://www.lists.ic.ac.uk/hypermail/xml-dev/ and on CD-ROM/ISBN 981-02-3594-1
To unsubscribe, mailto:majordomo at ic.ac.uk the following message;
unsubscribe xml-dev
To subscribe to the digests, mailto:majordomo at ic.ac.uk the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (mailto:rzepa at ic.ac.uk)
More information about the Xml-dev
mailing list