Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
3rdparty
lua-5.4.1
src
lzio.c
Go to the documentation of this file.
1
/*
2
** $Id: lzio.c $
3
** Buffered streams
4
** See Copyright Notice in lua.h
5
*/
6
7
#define lzio_c
8
#define LUA_CORE
9
10
#include "
lprefix.h
"
11
12
13
#include <string.h>
14
15
#include "
lua.h
"
16
17
#include "
llimits.h
"
18
#include "
lmem.h
"
19
#include "
lstate.h
"
20
#include "
lzio.h
"
21
22
23
int
luaZ_fill
(
ZIO
*z) {
24
size_t
size;
25
lua_State
*L = z->
L
;
26
const
char
*buff;
27
lua_unlock
(L);
28
buff = z->
reader
(L, z->
data
, &size);
29
lua_lock
(L);
30
if
(buff == NULL || size == 0)
31
return
EOZ
;
32
z->
n
= size - 1;
/* discount char being returned */
33
z->
p
= buff;
34
return
cast_uchar
(*(z->
p
++));
35
}
36
37
38
void
luaZ_init
(
lua_State
*L,
ZIO
*z,
lua_Reader
reader,
void
*
data
) {
39
z->
L
= L;
40
z->
reader
= reader;
41
z->
data
=
data
;
42
z->
n
= 0;
43
z->
p
= NULL;
44
}
45
46
47
/* --------------------------------------------------------------- read --- */
48
size_t
luaZ_read
(
ZIO
*z,
void
*b,
size_t
n) {
49
while
(n) {
50
size_t
m;
51
if
(z->
n
== 0) {
/* no bytes in buffer? */
52
if
(
luaZ_fill
(z) ==
EOZ
)
/* try to read more */
53
return
n;
/* no more input; return number of missing bytes */
54
else
{
55
z->
n
++;
/* luaZ_fill consumed first byte; put it back */
56
z->
p
--;
57
}
58
}
59
m = (n <= z->
n
) ? n : z->
n
;
/* min. between n and z->n */
60
memcpy(b, z->
p
, m);
61
z->
n
-= m;
62
z->
p
+= m;
63
b = (
char
*)b + m;
64
n -= m;
65
}
66
return
0;
67
}
68
Zio::p
const char * p
Definition:
lzio.h:57
Zio::data
void * data
Definition:
lzio.h:59
Zio::reader
lua_Reader reader
Definition:
lzio.h:58
Zio::L
lua_State * L
Definition:
lzio.h:60
lua_unlock
#define lua_unlock(L)
Definition:
llimits.h:243
lua_lock
#define lua_lock(L)
Definition:
llimits.h:242
luaZ_init
void luaZ_init(lua_State *L, ZIO *z, lua_Reader reader, void *data)
Definition:
lzio.c:38
lua_State
Definition:
lstate.h:306
luaZ_fill
int luaZ_fill(ZIO *z)
Definition:
lzio.c:23
lmem.h
luaZ_read
size_t luaZ_read(ZIO *z, void *b, size_t n)
Definition:
lzio.c:48
lzio.h
cast_uchar
#define cast_uchar(i)
Definition:
llimits.h:131
lua.h
lprefix.h
Zio
Definition:
lzio.h:55
lua_Reader
const char *(* lua_Reader)(lua_State *L, void *ud, size_t *sz)
Definition:
lua.h:117
llimits.h
lstate.h
EOZ
#define EOZ
Definition:
lzio.h:16
mqtt_test.data
dictionary data
Definition:
mqtt_test.py:22
Zio::n
size_t n
Definition:
lzio.h:56
plotjuggler
Author(s): Davide Faconti
autogenerated on Sun Dec 6 2020 03:48:09