Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/ceguilua/src/lua/lzio.h @ 2214

Last change on this file since 2214 was 1806, checked in by rgrieder, 16 years ago

added single 5.1.3 directory for lua since CEGUILua 0.5 can also build against lua 5.1

  • Property svn:eol-style set to native
File size: 1.5 KB
RevLine 
[1806]1/*
2** $Id: lzio.h,v 1.21.1.1 2007/12/27 13:02:25 roberto Exp $
3** Buffered streams
4** See Copyright Notice in lua.h
5*/
6
7
8#ifndef lzio_h
9#define lzio_h
10
11#include "lua.h"
12
13#include "lmem.h"
14
15
16#define EOZ     (-1)                    /* end of stream */
17
18typedef struct Zio ZIO;
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
24typedef struct Mbuffer {
25  char *buffer;
26  size_t n;
27  size_t buffsize;
28} Mbuffer;
29
30#define luaZ_initbuffer(L, buff) ((buff)->buffer = NULL, (buff)->buffsize = 0)
31
32#define luaZ_buffer(buff)       ((buff)->buffer)
33#define luaZ_sizebuffer(buff)   ((buff)->buffsize)
34#define luaZ_bufflen(buff)      ((buff)->n)
35
36#define luaZ_resetbuffer(buff) ((buff)->n = 0)
37
38
39#define luaZ_resizebuffer(L, buff, size) \
40        (luaM_reallocvector(L, (buff)->buffer, (buff)->buffsize, size, char), \
41        (buff)->buffsize = size)
42
43#define luaZ_freebuffer(L, buff)        luaZ_resizebuffer(L, buff, 0)
44
45
46LUAI_FUNC char *luaZ_openspace (lua_State *L, Mbuffer *buff, size_t n);
47LUAI_FUNC void luaZ_init (lua_State *L, ZIO *z, lua_Reader reader,
48                                        void *data);
49LUAI_FUNC size_t luaZ_read (ZIO* z, void* b, size_t n); /* read next n bytes */
50LUAI_FUNC int luaZ_lookahead (ZIO *z);
51
52
53
54/* --------- Private Part ------------------ */
55
56struct 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};
63
64
65LUAI_FUNC int luaZ_fill (ZIO *z);
66
67#endif
Note: See TracBrowser for help on using the repository browser.