gateway: simplify stopping the cleanup timer
[olsrd.git] / lib / tas / src / lua / lzio.h
1
2 /*
3 ** $Id: lzio.h,v 1.15 2003/03/20 16:00:56 roberto Exp $
4 ** Buffered streams
5 ** See Copyright Notice in lua.h
6 */
7
8
9 #ifndef lzio_h
10 #define lzio_h
11
12 #include "lua.h"
13
14
15 #define EOZ     (-1)            /* end of stream */
16
17 typedef struct Zio ZIO;
18
19
20 #define char2int(c)     cast(int, cast(unsigned char, (c)))
21
22 #define zgetc(z)  (((z)->n--)>0 ?  char2int(*(z)->p++) : luaZ_fill(z))
23
24 #define zname(z)        ((z)->name)
25
26 void luaZ_init(ZIO * z, lua_Chunkreader reader, void *data, const char *name);
27 size_t luaZ_read(ZIO * z, void *b, size_t n);   /* read next n bytes */
28 int luaZ_lookahead(ZIO * z);
29
30
31
32 typedef struct Mbuffer {
33   char *buffer;
34   size_t buffsize;
35 } Mbuffer;
36
37
38 char *luaZ_openspace(lua_State * L, Mbuffer * buff, size_t n);
39
40 #define luaZ_initbuffer(L, buff) ((buff)->buffer = NULL, (buff)->buffsize = 0)
41
42 #define luaZ_sizebuffer(buff)   ((buff)->buffsize)
43 #define luaZ_buffer(buff)       ((buff)->buffer)
44
45 #define luaZ_resizebuffer(L, buff, size) \
46         (luaM_reallocvector(L, (buff)->buffer, (buff)->buffsize, size, char), \
47         (buff)->buffsize = size)
48
49 #define luaZ_freebuffer(L, buff)        luaZ_resizebuffer(L, buff, 0)
50
51
52 /* --------- Private Part ------------------ */
53
54 struct Zio {
55   size_t n;                            /* bytes still unread */
56   const char *p;                       /* current position in buffer */
57   lua_Chunkreader reader;
58   void *data;                          /* additional data */
59   const char *name;
60 };
61
62
63 int luaZ_fill(ZIO * z);
64
65 #endif