SAX/C++: First interface draft

Steinar Bang sb at metis.no
Mon Dec 6 09:06:35 GMT 1999


>>>>> Steinar Bang <sb at metis.no>:

>>>>> James Clark <jjc at jclark.com>:
>> - Would it be better to typedef SAXString to the Standard C++ string
>> class (ie std::basic_string<SAXChar>)?

> An argument for using 
>         typdef const SAXChar* SAXString;
> is that you get late construction of the basic_string<>, ie. you don't 
> create it until you have to (eg. when using it to do a lookup in an
> STL map<>).

After thinking over the weekend, I'm changing my vote on this issue.
I think the convenience of using basic_string<> way outweighs the
cost advantages of lazy conversion, since in most cases the first
thing that would be done in the DocumentHandler (or whereever) would
be to create a basic_string<> for the appropriate character size
anyway. 

But the UTF-16 string should not be a straight typedef.  We should
derive from basic_string<SAXChar> to get a char* constructor that
would take a UTF-8-encoded string.  This is for ease of use with
character constants.

Hm... we may also need an operator<<() for byte streams, that would do 
UTF-8 encoding...? (fewer implementations have templated streams than
have basic_string<>, and we may want to use a byte stream rather than
a wide stream for I/O anyway.)

that would make the SAX.h file something like this:

Here's SAX.h:

#ifndef __SAX_HXX
#define __SAX_HXX

// Forward declarations of std::istream
#include <iosfwd>

namespace SAX_UTF8 {

  typedef char SAXChar;
  typedef std::string SAXString;
#include "SAXDecl.h"

}

namespace SAX_UTF16 {

  typedef unsigned short SAXChar;
  class SAXString : public std::basic_string<SAXChar> {
  public:
    SAXString(const char* utf8);
  };

  ostream& operator::<<(ostream&,const SAXString&);

#include "SAXDecl.h"

}

#endif

..or something...

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