Mercurial > vba-clojure
view src/lua/lzio.h @ 199:d4e673d09181
merge
author | Robert McIntyre <rlm@mit.edu> |
---|---|
date | Fri, 23 Mar 2012 00:32:44 -0500 |
parents | 27763b933818 |
children |
line wrap: on
line source
1 /*2 ** $Id: lzio.h,v 1.21.1.1 2007/12/27 13:02:25 roberto Exp $3 ** Buffered streams4 ** See Copyright Notice in lua.h5 */8 #ifndef lzio_h9 #define lzio_h11 #include "lua.h"13 #include "lmem.h"16 #define EOZ (-1) /* end of stream */18 typedef struct Zio ZIO;20 #define char2int(c) cast(int, cast(unsigned char, (c)))22 #define zgetc(z) (((z)->n--)>0 ? char2int(*(z)->p++) : luaZ_fill(z))24 typedef struct Mbuffer {25 char *buffer;26 size_t n;27 size_t buffsize;28 } Mbuffer;30 #define luaZ_initbuffer(L, buff) ((buff)->buffer = NULL, (buff)->buffsize = 0)32 #define luaZ_buffer(buff) ((buff)->buffer)33 #define luaZ_sizebuffer(buff) ((buff)->buffsize)34 #define luaZ_bufflen(buff) ((buff)->n)36 #define luaZ_resetbuffer(buff) ((buff)->n = 0)39 #define luaZ_resizebuffer(L, buff, size) \40 (luaM_reallocvector(L, (buff)->buffer, (buff)->buffsize, size, char), \41 (buff)->buffsize = size)43 #define luaZ_freebuffer(L, buff) luaZ_resizebuffer(L, buff, 0)46 LUAI_FUNC char *luaZ_openspace (lua_State *L, Mbuffer *buff, size_t n);47 LUAI_FUNC void luaZ_init (lua_State *L, ZIO *z, lua_Reader reader,48 void *data);49 LUAI_FUNC size_t luaZ_read (ZIO* z, void* b, size_t n); /* read next n bytes */50 LUAI_FUNC int luaZ_lookahead (ZIO *z);54 /* --------- Private Part ------------------ */56 struct Zio {57 size_t n; /* bytes still unread */58 const char *p; /* current position in buffer */59 lua_Reader reader;60 void* data; /* additional data */61 lua_State *L; /* Lua state (for reader) */62 };65 LUAI_FUNC int luaZ_fill (ZIO *z);67 #endif