vtable
p = (*in.vtable->readline)(&in);
return src->vtable->readchar(src);
src->vtable->unreadchar(src);
return src->vtable->readline(src);
src->vtable->free(src);
struct vtable *vtable;
while ((ch = (*src->vtable->readchar)(src)) != EOF) {
(*src->vtable->unreadchar)(src);
while ((ch = (*src->vtable->readchar)(src)) != EOF) {
static struct vtable stream_vtable = {
static struct vtable string_vtable = {
src->vtable = &stream_vtable;
src->vtable = &string_vtable;