aboutsummaryrefslogtreecommitdiff
path: root/src/lib/lua/lzio.h
diff options
context:
space:
mode:
authorAlex Auvolat <alex@adnab.me>2016-07-15 22:39:04 +0200
committerAlex Auvolat <alex@adnab.me>2016-07-15 22:39:04 +0200
commit7a1ea510a9fc43ccbc257601b149a90920332e13 (patch)
tree75ac252bb8ce029c62d6834e4ca927f59eaf5769 /src/lib/lua/lzio.h
parentd415aca695956c79110c88fa58c12bf55c0e2163 (diff)
downloadkogata-7a1ea510a9fc43ccbc257601b149a90920332e13.tar.gz
kogata-7a1ea510a9fc43ccbc257601b149a90920332e13.zip
Add Lua source, not compiled yet as libc/libm functions remain unimplemented
Diffstat (limited to 'src/lib/lua/lzio.h')
-rw-r--r--src/lib/lua/lzio.h66
1 files changed, 66 insertions, 0 deletions
diff --git a/src/lib/lua/lzio.h b/src/lib/lua/lzio.h
new file mode 100644
index 0000000..e7b6f34
--- /dev/null
+++ b/src/lib/lua/lzio.h
@@ -0,0 +1,66 @@
+/*
+** $Id: lzio.h,v 1.31 2015/09/08 15:41:05 roberto Exp $
+** Buffered streams
+** See Copyright Notice in lua.h
+*/
+
+
+#ifndef lzio_h
+#define lzio_h
+
+#include "lua.h"
+
+#include "lmem.h"
+
+
+#define EOZ (-1) /* end of stream */
+
+typedef struct Zio ZIO;
+
+#define zgetc(z) (((z)->n--)>0 ? cast_uchar(*(z)->p++) : luaZ_fill(z))
+
+
+typedef struct Mbuffer {
+ char *buffer;
+ size_t n;
+ size_t buffsize;
+} Mbuffer;
+
+#define luaZ_initbuffer(L, buff) ((buff)->buffer = NULL, (buff)->buffsize = 0)
+
+#define luaZ_buffer(buff) ((buff)->buffer)
+#define luaZ_sizebuffer(buff) ((buff)->buffsize)
+#define luaZ_bufflen(buff) ((buff)->n)
+
+#define luaZ_buffremove(buff,i) ((buff)->n -= (i))
+#define luaZ_resetbuffer(buff) ((buff)->n = 0)
+
+
+#define luaZ_resizebuffer(L, buff, size) \
+ ((buff)->buffer = luaM_reallocvchar(L, (buff)->buffer, \
+ (buff)->buffsize, size), \
+ (buff)->buffsize = size)
+
+#define luaZ_freebuffer(L, buff) luaZ_resizebuffer(L, buff, 0)
+
+
+LUAI_FUNC void luaZ_init (lua_State *L, ZIO *z, lua_Reader reader,
+ void *data);
+LUAI_FUNC size_t luaZ_read (ZIO* z, void *b, size_t n); /* read next n bytes */
+
+
+
+/* --------- Private Part ------------------ */
+
+struct Zio {
+ size_t n; /* bytes still unread */
+ const char *p; /* current position in buffer */
+ lua_Reader reader; /* reader function */
+ void *data; /* additional data */
+ lua_State *L; /* Lua state (for reader) */
+};
+
+
+LUAI_FUNC int luaZ_fill (ZIO *z);
+
+#endif