#include #include "ch.h" #include "esch.h" void esch_init(ESCH *e) { e->v = 0; e->a = 0; e->n = 0; } void esch_clear(ESCH *e) { e->n = 0; } int esch_len(const ESCH *e) { return(e->n); } void esch_append_1(ESCH *e, CH c) { if (e->n >= e->a) { e->a += 8; e->v = realloc(e->v,e->a*sizeof(CH)); } e->v[e->n++] = c; } CH esch_pop(ESCH *e) { if (e->n < 1) abort(); return(e->v[--e->n]); } CH *esch_buf(const ESCH *e) { return(e->v); } CH *esch_take(ESCH *e) { CH *r; r = e->v; e->v = 0; e->a = 0; e->n = 0; return(r); }