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;
if (vtable[BEAUTIFY].v_access&CHANGED) {
vtable[BEAUTIFY].v_access &= ~CHANGED;
if (vtable[SCRIPT].v_access&CHANGED) {
vtable[SCRIPT].v_access &= ~CHANGED;
if (vtable[RECORD].v_access&CHANGED)
vtable[RECORD].v_access &= ~CHANGED;
if (vtable[RECORD].v_access&CHANGED) {
vtable[RECORD].v_access &= ~CHANGED;
if (vtable[TAND].v_access&CHANGED) {
vtable[TAND].v_access &= ~CHANGED;
if (vtable[LECHO].v_access&CHANGED) {
vtable[LECHO].v_access &= ~CHANGED;
if (vtable[PARITY].v_access&CHANGED) {
vtable[PARITY].v_access &= ~CHANGED;
if (vtable[HARDWAREFLOW].v_access&CHANGED) {
vtable[HARDWAREFLOW].v_access &= ~CHANGED;
#define value(v) vtable[v].v_value
extern value_t vtable[]; /* variable table */
for (p = vtable; p->v_name; p++)
for (p = vtable; p->v_name; p++)
for (p = vtable; p->v_name != NULL; p++) {
vtable[EXCEPTIONS].v_access &= ~(WRITE<<PUBLIC);
value_t vtable[] = {