From b27664e0db93f513fe43fa582a9950b8ad701905 Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Thu, 28 Aug 2003 11:38:46 -0300 Subject: simpler manipulation of buffer count in scanner --- lzio.h | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'lzio.h') diff --git a/lzio.h b/lzio.h index bcf11e45..6df40748 100644 --- a/lzio.h +++ b/lzio.h @@ -1,5 +1,5 @@ /* -** $Id: lzio.h,v 1.16 2003/08/25 19:51:54 roberto Exp roberto $ +** $Id: lzio.h,v 1.17 2003/08/25 20:00:50 roberto Exp roberto $ ** Buffered streams ** See Copyright Notice in lua.h */ @@ -10,6 +10,8 @@ #include "lua.h" +#include "lmem.h" + #define EOZ (-1) /* end of stream */ @@ -28,7 +30,8 @@ int luaZ_lookahead (ZIO *z); typedef struct Mbuffer { char *buffer; - size_t buffsize; + int n; + int buffsize; } Mbuffer; @@ -36,8 +39,12 @@ char *luaZ_openspace (lua_State *L, Mbuffer *buff, size_t n); #define luaZ_initbuffer(L, buff) ((buff)->buffer = NULL, (buff)->buffsize = 0) -#define luaZ_sizebuffer(buff) ((buff)->buffsize) #define luaZ_buffer(buff) ((buff)->buffer) +#define luaZ_sizebuffer(buff) ((buff)->buffsize) +#define luaZ_bufflen(buff) ((buff)->n) + +#define luaZ_resetbuffer(buff) ((buff)->n = 0) + #define luaZ_resizebuffer(L, buff, size) \ (luaM_reallocvector(L, (buff)->buffer, (buff)->buffsize, size, char), \ @@ -45,6 +52,11 @@ char *luaZ_openspace (lua_State *L, Mbuffer *buff, size_t n); #define luaZ_freebuffer(L, buff) luaZ_resizebuffer(L, buff, 0) +#define luaZ_save(L,b,c) { \ + luaM_growvector(L, b->buffer, b->n, b->buffsize, char, \ + MAX_INT, "token too long"); \ + b->buffer[b->n++] = cast(char, c); } + /* --------- Private Part ------------------ */ -- cgit v1.2.3-55-g6feb