#define MAXARGS 2 enum vt_state { vt_idle, vt_esc, vt_args, vt_cmd, vt_utf, vt_osc, vt_osce }; struct vt_context { enum vt_state state; /* Record attribute sequence */ char buf[1024]; ptrdiff_t bufx; /* Numeric arguments */ ptrdiff_t argv[MAXARGS + 1]; ptrdiff_t argc; P *top; ptrdiff_t height; ptrdiff_t width; ptrdiff_t regn_top; ptrdiff_t regn_bot; P *vtcur; B *b; KBD *kbd; int attr; /* Current attributes */ struct utf8_sm utf8_sm; }; VT *mkvt(B *b, P *top, ptrdiff_t height, ptrdiff_t width); void vtrm(VT *vt); MACRO *vt_data(VT *vt, char **indat, ptrdiff_t *insiz); void vt_resize(VT *vt, P *top, ptrdiff_t height, ptrdiff_t width);