diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2002-10-08 15:46:08 -0300 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2002-10-08 15:46:08 -0300 |
commit | b3d0682fb94f56a438dbb4fdb2b3440ccc10cfb4 (patch) | |
tree | 746fc9900768dfaf1ddffca35cb4f6fd55903bbf /lzio.h | |
parent | 02afc892d5ce5d85e88faac443d7294589ee697a (diff) | |
download | lua-b3d0682fb94f56a438dbb4fdb2b3440ccc10cfb4.tar.gz lua-b3d0682fb94f56a438dbb4fdb2b3440ccc10cfb4.tar.bz2 lua-b3d0682fb94f56a438dbb4fdb2b3440ccc10cfb4.zip |
use of different buffers for scanner and concatenation
Diffstat (limited to 'lzio.h')
-rw-r--r-- | lzio.h | 27 |
1 files changed, 24 insertions, 3 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: lzio.h,v 1.12 2002/06/06 12:40:22 roberto Exp roberto $ | 2 | ** $Id: lzio.h,v 1.13 2002/08/05 18:45:02 roberto Exp roberto $ |
3 | ** Buffered streams | 3 | ** Buffered streams |
4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
5 | */ | 5 | */ |
@@ -13,7 +13,7 @@ | |||
13 | 13 | ||
14 | #define EOZ (-1) /* end of stream */ | 14 | #define EOZ (-1) /* end of stream */ |
15 | 15 | ||
16 | typedef struct zio ZIO; | 16 | typedef struct Zio ZIO; |
17 | 17 | ||
18 | #define zgetc(z) (((z)->n--)>0 ? \ | 18 | #define zgetc(z) (((z)->n--)>0 ? \ |
19 | cast(int, cast(unsigned char, *(z)->p++)) : \ | 19 | cast(int, cast(unsigned char, *(z)->p++)) : \ |
@@ -26,9 +26,30 @@ size_t luaZ_read (ZIO* z, void* b, size_t n); /* read next n bytes */ | |||
26 | int luaZ_lookahead (ZIO *z); | 26 | int luaZ_lookahead (ZIO *z); |
27 | 27 | ||
28 | 28 | ||
29 | |||
30 | typedef struct Mbuffer { | ||
31 | char *buffer; | ||
32 | size_t buffsize; | ||
33 | } Mbuffer; | ||
34 | |||
35 | |||
36 | char *luaZ_openspace (lua_State *L, Mbuffer *buff, size_t n); | ||
37 | |||
38 | #define luaZ_initbuffer(L, buff) ((buff)->buffer = NULL, (buff)->buffsize = 0) | ||
39 | |||
40 | #define luaZ_sizebuffer(buff) ((buff)->buffsize) | ||
41 | #define luaZ_buffer(buff) ((buff)->buffer) | ||
42 | |||
43 | #define luaZ_resizebuffer(L, buff, size) \ | ||
44 | (luaM_reallocvector(L, (buff)->buffer, (buff)->buffsize, size, char), \ | ||
45 | (buff)->buffsize = size) | ||
46 | |||
47 | #define luaZ_freebuffer(L, buff) luaZ_resizebuffer(L, buff, 0) | ||
48 | |||
49 | |||
29 | /* --------- Private Part ------------------ */ | 50 | /* --------- Private Part ------------------ */ |
30 | 51 | ||
31 | struct zio { | 52 | struct Zio { |
32 | size_t n; /* bytes still unread */ | 53 | size_t n; /* bytes still unread */ |
33 | const char *p; /* current position in buffer */ | 54 | const char *p; /* current position in buffer */ |
34 | lua_Chunkreader reader; | 55 | lua_Chunkreader reader; |