struct sio_module_st { const char *name; sio_rc_t (*init) (sio_t *, void **); sio_rc_t (*configure) (sio_t *, void *, void *, void *); sio_rc_t (*cleanup) (sio_t *, void *); sio_rc_t (*openr) (sio_t *, al_t *, void *); sio_rc_t (*closer) (sio_t *, al_t *, void *); sio_rc_t (*openw) (sio_t *, al_t *, void *); sio_rc_t (*closew) (sio_t *, al_t *, void *); sio_rc_t (*input) (sio_t *, al_t *, void *); sio_rc_t (*output) (sio_t *, al_t *, void *); }; typedef enum { SIO_LN_DATA, SIO_LN_ERROR, SIO_LN_EOF } sio_labelnum_t; sio_rc_t sio_label(sio_t *, sio_labelnum_t label, void **labelp);