[
Lists Home |
Date Index |
Thread Index
]
At 03:32 21.1.2004, you wrote:
>----- Original Message -----
>From: "Toni Uusitalo" <toni.uusitalo@pan.nu>
> > >However, the XML writer needs to deal with Write and Close only,
> > >since the start of the document can be inferred when Write is called
> > >on a "Closed" writer target. I believe, the rest is up to the application.
> > >
> > >For your call-back above this could be done with adding a boolean
> > >flag isLast to the parameters (indicating the last buffer).
> > >One could also add a separate call-back instead.
> >
> > I don't understand this. Why the application couldn't be responsible for
> > opening
> > "stream", then setting genxSetWriterTarget and then closing the
> "stream" after
> > all writing's done?
>
>Actually, you are correct, that would be more flexible.
>I was thinking along the lines of tying the Close call to
>the genxEndDocument call, saving the programmer one call.
>But who says you need to close the stream - maybe you want to
>write several documents in succession before closing it.
Yep. And stdout doesn't need to be closed. I think this abstract output
callback
thing isn't adding too much complexity into genx inplementation, not when
flexibility's
taken into account.
void genxStartDocument(genxWriter w, FILE * file);
could be implemented as
void genxStartDocument(genxWriter w,
void * outputData,
PFNOUTPUTCALLBACK outputCallback);
where PFNOUTPUTCALLBACK was something like:
typedef int (*PFNOUTPUTCALLBACK)(void *outputData, genxByte *buf, int
cBytes, int *cBytesWritten);
if genxStartDocument is called with outputCallback parameter being NULL i.e:
genxStartDocument(pWriter, stdout, NULL);
it could default to internal FILE* PFNOUTPUTCALLBACK which simply calls fwrite.
with respect,
Toni Uusitalo
|