struct U8_OUTPUT is an structural type which provides for UTF-8 output.
This structure is subclassed by other structures which share its initial fields, allowing casting into the more general class which output functions operate over. At any point, the stream has at least one internal buffer of UTF-8 characters, pointed to by u8_inbuf and with a current cursor of u8_inptr and a limit (the end of writable data) of u8_inlim. The size of the buffer is in u8_bufsz (note that this is redundant with u8_outlim) and various other bits are stored in u8_streaminfo. If an output operation overflows the buffer, the u8_flushfn (if non-NULL) is called on the stream. If space is still not available, the output buffer is automatically grown. Also provided is a u8_closefn which indicates that an application is done with a stream.