[
Lists Home |
Date Index |
Thread Index
]
> // for making UTF-8 strings
> > typedef unsigned char utf8Byte;
I would prefer this to be just char, the whole point behind UTF-8 is then
you don't need to know that it is it is just char *. Convertion to unsigned char *
is due to arithmetics, but arithemtics is opaque.
> // writer object
> typedef void * genxWriter;
This is C; any type typedef'ed to void * allows any other type. I would prefer it to
be opaque, but not void:
typedef struct GenxWriter *genxWriter;
to get error 'passing from incompatible pointer type'.
> void genxStartDocument(genxWriter w, FILE * file);
While FILE * is 'standard', it is often incovenient to use it; I would prefer
to have
void genxStartDocument(genxWriter w, char *buf, int size, void (*bytesReady)(int n,void *userData))
size is the size of the buffer, bytesReady is passed actual number of bytes available.
Much more freedom to use.
> int genxText(genxWriter w, const utf8Byte * text);
> int genxTextW(genxWriter w, const codePoint * text);
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);
instead?
> int genxCharacter(genxWriter w, codePoint c);
What's the use case for this?
> int genxScanUTF8(genxWriter w, const utf8Byte * s);
1) again, length. s/)/,int nbytes)/
2) what if I am reading from a stream and the last utf sequence is not read fully?
David Tolpin
|