/* This file is in the public domain. */ #include #include #include "es.h" XES_DEFINE_INIT(es,ES,char) XES_DEFINE_DONE(es,ES,char) XES_DEFINE_CLEAR(es,ES,char) XES_DEFINE_APPEND_1(es,ES,char) XES_DEFINE_APPEND_N(es,ES,char) XES_DEFINE_LEN(es,ES,char) XES_DEFINE_BUF(es,ES,char) // No XES_DEFINE_ macro (see manpage) char *es_buf_nul(ES *e) { es_append_1(e,'\0'); e->l --; return(e->b); } // Semantics differ from XES_DEFINE_POP_1_SENTINEL code (see manpage) int es_pop_1(ES *e) { if (e->l < 1) return(-1); return(((unsigned char *)e->b)[--e->l]); } XES_DEFINE_POP_N(es,ES,char) XES_DEFINE_TAKE(es,ES,char)