[Home] [By Thread] [By Date] [Recent Entries]




> Joe Gregorio:
> > David Tolpin wrote: 
> > > passing data in buffers oftern requires number of bytes or characters to be passed;
> > > consider getting data from Expat and writing it to the output.
> > > 
> > > int genxText(genxWriter w, const utf8Byte * text, int nbytes);
> > > int genxTextW(genxWriter w, const codePoint * text, int nchars);
> > 
> > This is a C interface and null terminated strings are
> > the standard way of handling this, the nbytes would
> > just be redundant information. If the implmentation of
> > genxText() needs the length it can call strlen(text), 
> > if it doesn't need the length then why force it to 
> > be passed in?
> 
> Have you looked at the API of James Clark's Expat?

The reason there is that (especially) character data are passed
through pointers into an internal working buffer. Having a null
terminator in the API would effectively force Expat to allocate
a new copy of the string.

Could there be a similar siutation for a writer API?
Possibly yes - as it is conceivable that the data to be
written out are part of some larger text/structure and
there is no reason to force a new string allocation on the caller.

Karl



  • Follow-Ups:
    • Re: Genx
      • From: David Tolpin <dvd@d...>
  • References:
    • Re: Genx
      • From: David Tolpin <dvd@d...>
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member