hirlite 0.0.2 → 0.0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/hirlite_ext/extconf.rb +2 -2
- data/lib/hirlite/version.rb +1 -1
- data/vendor/rlite/deps/lua/Makefile +128 -0
- data/vendor/rlite/deps/lua/src/fpconv.c +205 -0
- data/vendor/rlite/deps/lua/src/fpconv.h +22 -0
- data/vendor/rlite/deps/lua/src/lapi.c +1087 -0
- data/vendor/rlite/deps/lua/src/lapi.h +16 -0
- data/vendor/rlite/deps/lua/src/lauxlib.c +652 -0
- data/vendor/rlite/deps/lua/src/lauxlib.h +174 -0
- data/vendor/rlite/deps/lua/src/lbaselib.c +653 -0
- data/vendor/rlite/deps/lua/src/lcode.c +831 -0
- data/vendor/rlite/deps/lua/src/lcode.h +76 -0
- data/vendor/rlite/deps/lua/src/ldblib.c +398 -0
- data/vendor/rlite/deps/lua/src/ldebug.c +638 -0
- data/vendor/rlite/deps/lua/src/ldebug.h +33 -0
- data/vendor/rlite/deps/lua/src/ldo.c +519 -0
- data/vendor/rlite/deps/lua/src/ldo.h +57 -0
- data/vendor/rlite/deps/lua/src/ldump.c +164 -0
- data/vendor/rlite/deps/lua/src/lfunc.c +174 -0
- data/vendor/rlite/deps/lua/src/lfunc.h +34 -0
- data/vendor/rlite/deps/lua/src/lgc.c +710 -0
- data/vendor/rlite/deps/lua/src/lgc.h +110 -0
- data/vendor/rlite/deps/lua/src/linit.c +38 -0
- data/vendor/rlite/deps/lua/src/liolib.c +556 -0
- data/vendor/rlite/deps/lua/src/llex.c +463 -0
- data/vendor/rlite/deps/lua/src/llex.h +81 -0
- data/vendor/rlite/deps/lua/src/llimits.h +128 -0
- data/vendor/rlite/deps/lua/src/lmathlib.c +263 -0
- data/vendor/rlite/deps/lua/src/lmem.c +86 -0
- data/vendor/rlite/deps/lua/src/lmem.h +49 -0
- data/vendor/rlite/deps/lua/src/loadlib.c +666 -0
- data/vendor/rlite/deps/lua/src/lobject.c +214 -0
- data/vendor/rlite/deps/lua/src/lobject.h +381 -0
- data/vendor/rlite/deps/lua/src/lopcodes.c +102 -0
- data/vendor/rlite/deps/lua/src/lopcodes.h +268 -0
- data/vendor/rlite/deps/lua/src/loslib.c +243 -0
- data/vendor/rlite/deps/lua/src/lparser.c +1339 -0
- data/vendor/rlite/deps/lua/src/lparser.h +82 -0
- data/vendor/rlite/deps/lua/src/lstate.c +214 -0
- data/vendor/rlite/deps/lua/src/lstate.h +169 -0
- data/vendor/rlite/deps/lua/src/lstring.c +111 -0
- data/vendor/rlite/deps/lua/src/lstring.h +31 -0
- data/vendor/rlite/deps/lua/src/lstrlib.c +871 -0
- data/vendor/rlite/deps/lua/src/ltable.c +588 -0
- data/vendor/rlite/deps/lua/src/ltable.h +40 -0
- data/vendor/rlite/deps/lua/src/ltablib.c +287 -0
- data/vendor/rlite/deps/lua/src/ltm.c +75 -0
- data/vendor/rlite/deps/lua/src/ltm.h +54 -0
- data/vendor/rlite/deps/lua/src/lua.c +392 -0
- data/vendor/rlite/deps/lua/src/lua.h +388 -0
- data/vendor/rlite/deps/lua/src/lua_bit.c +189 -0
- data/vendor/rlite/deps/lua/src/lua_cjson.c +1427 -0
- data/vendor/rlite/deps/lua/src/lua_cmsgpack.c +957 -0
- data/vendor/rlite/deps/lua/src/lua_struct.c +421 -0
- data/vendor/rlite/deps/lua/src/luac.c +200 -0
- data/vendor/rlite/deps/lua/src/luaconf.h +763 -0
- data/vendor/rlite/deps/lua/src/lualib.h +53 -0
- data/vendor/rlite/deps/lua/src/lundump.c +227 -0
- data/vendor/rlite/deps/lua/src/lundump.h +36 -0
- data/vendor/rlite/deps/lua/src/lvm.c +767 -0
- data/vendor/rlite/deps/lua/src/lvm.h +36 -0
- data/vendor/rlite/deps/lua/src/lzio.c +82 -0
- data/vendor/rlite/deps/lua/src/lzio.h +67 -0
- data/vendor/rlite/deps/lua/src/print.c +227 -0
- data/vendor/rlite/deps/lua/src/strbuf.c +251 -0
- data/vendor/rlite/deps/lua/src/strbuf.h +154 -0
- data/vendor/rlite/src/Makefile +97 -25
- data/vendor/rlite/{deps → src}/crc64.c +0 -0
- data/vendor/rlite/{deps → src}/crc64.h +0 -0
- data/vendor/rlite/src/dump.c +2 -2
- data/vendor/rlite/{deps → src}/endianconv.h +0 -0
- data/vendor/rlite/src/hirlite.c +134 -90
- data/vendor/rlite/src/hirlite.h +34 -1
- data/vendor/rlite/{deps → src}/hyperloglog.c +0 -0
- data/vendor/rlite/{deps → src}/hyperloglog.h +0 -0
- data/vendor/rlite/{deps → src}/lzf.h +0 -0
- data/vendor/rlite/{deps → src}/lzfP.h +0 -0
- data/vendor/rlite/{deps → src}/lzf_c.c +0 -0
- data/vendor/rlite/{deps → src}/lzf_d.c +0 -0
- data/vendor/rlite/src/page_btree.c +10 -10
- data/vendor/rlite/src/page_btree.h +2 -2
- data/vendor/rlite/src/page_list.c +3 -3
- data/vendor/rlite/src/page_list.h +1 -1
- data/vendor/rlite/src/page_multi_string.c +1 -1
- data/vendor/rlite/src/page_skiplist.c +1 -1
- data/vendor/rlite/src/page_skiplist.h +1 -1
- data/vendor/rlite/src/rand.c +93 -0
- data/vendor/rlite/src/rand.h +38 -0
- data/vendor/rlite/src/restore.c +286 -155
- data/vendor/rlite/src/restore.h +6 -0
- data/vendor/rlite/src/rlite.c +30 -30
- data/vendor/rlite/src/rlite.h +1 -1
- data/vendor/rlite/src/scripting.c +1138 -0
- data/vendor/rlite/src/scripting.h +10 -0
- data/vendor/rlite/{deps → src}/sha1.c +0 -0
- data/vendor/rlite/{deps → src}/sha1.h +0 -0
- data/vendor/rlite/src/solarisfixes.h +54 -0
- data/vendor/rlite/src/sort.c +4 -2
- data/vendor/rlite/src/sort.h +1 -1
- data/vendor/rlite/src/type_string.c +1 -1
- data/vendor/rlite/src/util.c +4 -4
- data/vendor/rlite/src/util.h +3 -3
- data/vendor/rlite/{deps → src}/utilfromredis.c +0 -0
- data/vendor/rlite/{deps → src}/utilfromredis.h +0 -0
- metadata +84 -15
@@ -0,0 +1,388 @@
|
|
1
|
+
/*
|
2
|
+
** $Id: lua.h,v 1.218.1.7 2012/01/13 20:36:20 roberto Exp $
|
3
|
+
** Lua - An Extensible Extension Language
|
4
|
+
** Lua.org, PUC-Rio, Brazil (http://www.lua.org)
|
5
|
+
** See Copyright Notice at the end of this file
|
6
|
+
*/
|
7
|
+
|
8
|
+
|
9
|
+
#ifndef lua_h
|
10
|
+
#define lua_h
|
11
|
+
|
12
|
+
#include <stdarg.h>
|
13
|
+
#include <stddef.h>
|
14
|
+
|
15
|
+
|
16
|
+
#include "luaconf.h"
|
17
|
+
|
18
|
+
|
19
|
+
#define LUA_VERSION "Lua 5.1"
|
20
|
+
#define LUA_RELEASE "Lua 5.1.5"
|
21
|
+
#define LUA_VERSION_NUM 501
|
22
|
+
#define LUA_COPYRIGHT "Copyright (C) 1994-2012 Lua.org, PUC-Rio"
|
23
|
+
#define LUA_AUTHORS "R. Ierusalimschy, L. H. de Figueiredo & W. Celes"
|
24
|
+
|
25
|
+
|
26
|
+
/* mark for precompiled code (`<esc>Lua') */
|
27
|
+
#define LUA_SIGNATURE "\033Lua"
|
28
|
+
|
29
|
+
/* option for multiple returns in `lua_pcall' and `lua_call' */
|
30
|
+
#define LUA_MULTRET (-1)
|
31
|
+
|
32
|
+
|
33
|
+
/*
|
34
|
+
** pseudo-indices
|
35
|
+
*/
|
36
|
+
#define LUA_REGISTRYINDEX (-10000)
|
37
|
+
#define LUA_ENVIRONINDEX (-10001)
|
38
|
+
#define LUA_GLOBALSINDEX (-10002)
|
39
|
+
#define lua_upvalueindex(i) (LUA_GLOBALSINDEX-(i))
|
40
|
+
|
41
|
+
|
42
|
+
/* thread status; 0 is OK */
|
43
|
+
#define LUA_YIELD 1
|
44
|
+
#define LUA_ERRRUN 2
|
45
|
+
#define LUA_ERRSYNTAX 3
|
46
|
+
#define LUA_ERRMEM 4
|
47
|
+
#define LUA_ERRERR 5
|
48
|
+
|
49
|
+
|
50
|
+
typedef struct lua_State lua_State;
|
51
|
+
|
52
|
+
typedef int (*lua_CFunction) (lua_State *L);
|
53
|
+
|
54
|
+
|
55
|
+
/*
|
56
|
+
** functions that read/write blocks when loading/dumping Lua chunks
|
57
|
+
*/
|
58
|
+
typedef const char * (*lua_Reader) (lua_State *L, void *ud, size_t *sz);
|
59
|
+
|
60
|
+
typedef int (*lua_Writer) (lua_State *L, const void* p, size_t sz, void* ud);
|
61
|
+
|
62
|
+
|
63
|
+
/*
|
64
|
+
** prototype for memory-allocation functions
|
65
|
+
*/
|
66
|
+
typedef void * (*lua_Alloc) (void *ud, void *ptr, size_t osize, size_t nsize);
|
67
|
+
|
68
|
+
|
69
|
+
/*
|
70
|
+
** basic types
|
71
|
+
*/
|
72
|
+
#define LUA_TNONE (-1)
|
73
|
+
|
74
|
+
#define LUA_TNIL 0
|
75
|
+
#define LUA_TBOOLEAN 1
|
76
|
+
#define LUA_TLIGHTUSERDATA 2
|
77
|
+
#define LUA_TNUMBER 3
|
78
|
+
#define LUA_TSTRING 4
|
79
|
+
#define LUA_TTABLE 5
|
80
|
+
#define LUA_TFUNCTION 6
|
81
|
+
#define LUA_TUSERDATA 7
|
82
|
+
#define LUA_TTHREAD 8
|
83
|
+
|
84
|
+
|
85
|
+
|
86
|
+
/* minimum Lua stack available to a C function */
|
87
|
+
#define LUA_MINSTACK 20
|
88
|
+
|
89
|
+
|
90
|
+
/*
|
91
|
+
** generic extra include file
|
92
|
+
*/
|
93
|
+
#if defined(LUA_USER_H)
|
94
|
+
#include LUA_USER_H
|
95
|
+
#endif
|
96
|
+
|
97
|
+
|
98
|
+
/* type of numbers in Lua */
|
99
|
+
typedef LUA_NUMBER lua_Number;
|
100
|
+
|
101
|
+
|
102
|
+
/* type for integer functions */
|
103
|
+
typedef LUA_INTEGER lua_Integer;
|
104
|
+
|
105
|
+
|
106
|
+
|
107
|
+
/*
|
108
|
+
** state manipulation
|
109
|
+
*/
|
110
|
+
LUA_API lua_State *(lua_newstate) (lua_Alloc f, void *ud);
|
111
|
+
LUA_API void (lua_close) (lua_State *L);
|
112
|
+
LUA_API lua_State *(lua_newthread) (lua_State *L);
|
113
|
+
|
114
|
+
LUA_API lua_CFunction (lua_atpanic) (lua_State *L, lua_CFunction panicf);
|
115
|
+
|
116
|
+
|
117
|
+
/*
|
118
|
+
** basic stack manipulation
|
119
|
+
*/
|
120
|
+
LUA_API int (lua_gettop) (lua_State *L);
|
121
|
+
LUA_API void (lua_settop) (lua_State *L, int idx);
|
122
|
+
LUA_API void (lua_pushvalue) (lua_State *L, int idx);
|
123
|
+
LUA_API void (lua_remove) (lua_State *L, int idx);
|
124
|
+
LUA_API void (lua_insert) (lua_State *L, int idx);
|
125
|
+
LUA_API void (lua_replace) (lua_State *L, int idx);
|
126
|
+
LUA_API int (lua_checkstack) (lua_State *L, int sz);
|
127
|
+
|
128
|
+
LUA_API void (lua_xmove) (lua_State *from, lua_State *to, int n);
|
129
|
+
|
130
|
+
|
131
|
+
/*
|
132
|
+
** access functions (stack -> C)
|
133
|
+
*/
|
134
|
+
|
135
|
+
LUA_API int (lua_isnumber) (lua_State *L, int idx);
|
136
|
+
LUA_API int (lua_isstring) (lua_State *L, int idx);
|
137
|
+
LUA_API int (lua_iscfunction) (lua_State *L, int idx);
|
138
|
+
LUA_API int (lua_isuserdata) (lua_State *L, int idx);
|
139
|
+
LUA_API int (lua_type) (lua_State *L, int idx);
|
140
|
+
LUA_API const char *(lua_typename) (lua_State *L, int tp);
|
141
|
+
|
142
|
+
LUA_API int (lua_equal) (lua_State *L, int idx1, int idx2);
|
143
|
+
LUA_API int (lua_rawequal) (lua_State *L, int idx1, int idx2);
|
144
|
+
LUA_API int (lua_lessthan) (lua_State *L, int idx1, int idx2);
|
145
|
+
|
146
|
+
LUA_API lua_Number (lua_tonumber) (lua_State *L, int idx);
|
147
|
+
LUA_API lua_Integer (lua_tointeger) (lua_State *L, int idx);
|
148
|
+
LUA_API int (lua_toboolean) (lua_State *L, int idx);
|
149
|
+
LUA_API const char *(lua_tolstring) (lua_State *L, int idx, size_t *len);
|
150
|
+
LUA_API size_t (lua_objlen) (lua_State *L, int idx);
|
151
|
+
LUA_API lua_CFunction (lua_tocfunction) (lua_State *L, int idx);
|
152
|
+
LUA_API void *(lua_touserdata) (lua_State *L, int idx);
|
153
|
+
LUA_API lua_State *(lua_tothread) (lua_State *L, int idx);
|
154
|
+
LUA_API const void *(lua_topointer) (lua_State *L, int idx);
|
155
|
+
|
156
|
+
|
157
|
+
/*
|
158
|
+
** push functions (C -> stack)
|
159
|
+
*/
|
160
|
+
LUA_API void (lua_pushnil) (lua_State *L);
|
161
|
+
LUA_API void (lua_pushnumber) (lua_State *L, lua_Number n);
|
162
|
+
LUA_API void (lua_pushinteger) (lua_State *L, lua_Integer n);
|
163
|
+
LUA_API void (lua_pushlstring) (lua_State *L, const char *s, size_t l);
|
164
|
+
LUA_API void (lua_pushstring) (lua_State *L, const char *s);
|
165
|
+
LUA_API const char *(lua_pushvfstring) (lua_State *L, const char *fmt,
|
166
|
+
va_list argp);
|
167
|
+
LUA_API const char *(lua_pushfstring) (lua_State *L, const char *fmt, ...);
|
168
|
+
LUA_API void (lua_pushcclosure) (lua_State *L, lua_CFunction fn, int n);
|
169
|
+
LUA_API void (lua_pushboolean) (lua_State *L, int b);
|
170
|
+
LUA_API void (lua_pushlightuserdata) (lua_State *L, void *p);
|
171
|
+
LUA_API int (lua_pushthread) (lua_State *L);
|
172
|
+
|
173
|
+
|
174
|
+
/*
|
175
|
+
** get functions (Lua -> stack)
|
176
|
+
*/
|
177
|
+
LUA_API void (lua_gettable) (lua_State *L, int idx);
|
178
|
+
LUA_API void (lua_getfield) (lua_State *L, int idx, const char *k);
|
179
|
+
LUA_API void (lua_rawget) (lua_State *L, int idx);
|
180
|
+
LUA_API void (lua_rawgeti) (lua_State *L, int idx, int n);
|
181
|
+
LUA_API void (lua_createtable) (lua_State *L, int narr, int nrec);
|
182
|
+
LUA_API void *(lua_newuserdata) (lua_State *L, size_t sz);
|
183
|
+
LUA_API int (lua_getmetatable) (lua_State *L, int objindex);
|
184
|
+
LUA_API void (lua_getfenv) (lua_State *L, int idx);
|
185
|
+
|
186
|
+
|
187
|
+
/*
|
188
|
+
** set functions (stack -> Lua)
|
189
|
+
*/
|
190
|
+
LUA_API void (lua_settable) (lua_State *L, int idx);
|
191
|
+
LUA_API void (lua_setfield) (lua_State *L, int idx, const char *k);
|
192
|
+
LUA_API void (lua_rawset) (lua_State *L, int idx);
|
193
|
+
LUA_API void (lua_rawseti) (lua_State *L, int idx, int n);
|
194
|
+
LUA_API int (lua_setmetatable) (lua_State *L, int objindex);
|
195
|
+
LUA_API int (lua_setfenv) (lua_State *L, int idx);
|
196
|
+
|
197
|
+
|
198
|
+
/*
|
199
|
+
** `load' and `call' functions (load and run Lua code)
|
200
|
+
*/
|
201
|
+
LUA_API void (lua_call) (lua_State *L, int nargs, int nresults);
|
202
|
+
LUA_API int (lua_pcall) (lua_State *L, int nargs, int nresults, int errfunc);
|
203
|
+
LUA_API int (lua_cpcall) (lua_State *L, lua_CFunction func, void *ud);
|
204
|
+
LUA_API int (lua_load) (lua_State *L, lua_Reader reader, void *dt,
|
205
|
+
const char *chunkname);
|
206
|
+
|
207
|
+
LUA_API int (lua_dump) (lua_State *L, lua_Writer writer, void *data);
|
208
|
+
|
209
|
+
|
210
|
+
/*
|
211
|
+
** coroutine functions
|
212
|
+
*/
|
213
|
+
LUA_API int (lua_yield) (lua_State *L, int nresults);
|
214
|
+
LUA_API int (lua_resume) (lua_State *L, int narg);
|
215
|
+
LUA_API int (lua_status) (lua_State *L);
|
216
|
+
|
217
|
+
/*
|
218
|
+
** garbage-collection function and options
|
219
|
+
*/
|
220
|
+
|
221
|
+
#define LUA_GCSTOP 0
|
222
|
+
#define LUA_GCRESTART 1
|
223
|
+
#define LUA_GCCOLLECT 2
|
224
|
+
#define LUA_GCCOUNT 3
|
225
|
+
#define LUA_GCCOUNTB 4
|
226
|
+
#define LUA_GCSTEP 5
|
227
|
+
#define LUA_GCSETPAUSE 6
|
228
|
+
#define LUA_GCSETSTEPMUL 7
|
229
|
+
|
230
|
+
LUA_API int (lua_gc) (lua_State *L, int what, int data);
|
231
|
+
|
232
|
+
|
233
|
+
/*
|
234
|
+
** miscellaneous functions
|
235
|
+
*/
|
236
|
+
|
237
|
+
LUA_API int (lua_error) (lua_State *L);
|
238
|
+
|
239
|
+
LUA_API int (lua_next) (lua_State *L, int idx);
|
240
|
+
|
241
|
+
LUA_API void (lua_concat) (lua_State *L, int n);
|
242
|
+
|
243
|
+
LUA_API lua_Alloc (lua_getallocf) (lua_State *L, void **ud);
|
244
|
+
LUA_API void lua_setallocf (lua_State *L, lua_Alloc f, void *ud);
|
245
|
+
|
246
|
+
|
247
|
+
|
248
|
+
/*
|
249
|
+
** ===============================================================
|
250
|
+
** some useful macros
|
251
|
+
** ===============================================================
|
252
|
+
*/
|
253
|
+
|
254
|
+
#define lua_pop(L,n) lua_settop(L, -(n)-1)
|
255
|
+
|
256
|
+
#define lua_newtable(L) lua_createtable(L, 0, 0)
|
257
|
+
|
258
|
+
#define lua_register(L,n,f) (lua_pushcfunction(L, (f)), lua_setglobal(L, (n)))
|
259
|
+
|
260
|
+
#define lua_pushcfunction(L,f) lua_pushcclosure(L, (f), 0)
|
261
|
+
|
262
|
+
#define lua_strlen(L,i) lua_objlen(L, (i))
|
263
|
+
|
264
|
+
#define lua_isfunction(L,n) (lua_type(L, (n)) == LUA_TFUNCTION)
|
265
|
+
#define lua_istable(L,n) (lua_type(L, (n)) == LUA_TTABLE)
|
266
|
+
#define lua_islightuserdata(L,n) (lua_type(L, (n)) == LUA_TLIGHTUSERDATA)
|
267
|
+
#define lua_isnil(L,n) (lua_type(L, (n)) == LUA_TNIL)
|
268
|
+
#define lua_isboolean(L,n) (lua_type(L, (n)) == LUA_TBOOLEAN)
|
269
|
+
#define lua_isthread(L,n) (lua_type(L, (n)) == LUA_TTHREAD)
|
270
|
+
#define lua_isnone(L,n) (lua_type(L, (n)) == LUA_TNONE)
|
271
|
+
#define lua_isnoneornil(L, n) (lua_type(L, (n)) <= 0)
|
272
|
+
|
273
|
+
#define lua_pushliteral(L, s) \
|
274
|
+
lua_pushlstring(L, "" s, (sizeof(s)/sizeof(char))-1)
|
275
|
+
|
276
|
+
#define lua_setglobal(L,s) lua_setfield(L, LUA_GLOBALSINDEX, (s))
|
277
|
+
#define lua_getglobal(L,s) lua_getfield(L, LUA_GLOBALSINDEX, (s))
|
278
|
+
|
279
|
+
#define lua_tostring(L,i) lua_tolstring(L, (i), NULL)
|
280
|
+
|
281
|
+
|
282
|
+
|
283
|
+
/*
|
284
|
+
** compatibility macros and functions
|
285
|
+
*/
|
286
|
+
|
287
|
+
#define lua_open() luaL_newstate()
|
288
|
+
|
289
|
+
#define lua_getregistry(L) lua_pushvalue(L, LUA_REGISTRYINDEX)
|
290
|
+
|
291
|
+
#define lua_getgccount(L) lua_gc(L, LUA_GCCOUNT, 0)
|
292
|
+
|
293
|
+
#define lua_Chunkreader lua_Reader
|
294
|
+
#define lua_Chunkwriter lua_Writer
|
295
|
+
|
296
|
+
|
297
|
+
/* hack */
|
298
|
+
LUA_API void lua_setlevel (lua_State *from, lua_State *to);
|
299
|
+
|
300
|
+
|
301
|
+
/*
|
302
|
+
** {======================================================================
|
303
|
+
** Debug API
|
304
|
+
** =======================================================================
|
305
|
+
*/
|
306
|
+
|
307
|
+
|
308
|
+
/*
|
309
|
+
** Event codes
|
310
|
+
*/
|
311
|
+
#define LUA_HOOKCALL 0
|
312
|
+
#define LUA_HOOKRET 1
|
313
|
+
#define LUA_HOOKLINE 2
|
314
|
+
#define LUA_HOOKCOUNT 3
|
315
|
+
#define LUA_HOOKTAILRET 4
|
316
|
+
|
317
|
+
|
318
|
+
/*
|
319
|
+
** Event masks
|
320
|
+
*/
|
321
|
+
#define LUA_MASKCALL (1 << LUA_HOOKCALL)
|
322
|
+
#define LUA_MASKRET (1 << LUA_HOOKRET)
|
323
|
+
#define LUA_MASKLINE (1 << LUA_HOOKLINE)
|
324
|
+
#define LUA_MASKCOUNT (1 << LUA_HOOKCOUNT)
|
325
|
+
|
326
|
+
typedef struct lua_Debug lua_Debug; /* activation record */
|
327
|
+
|
328
|
+
|
329
|
+
/* Functions to be called by the debuger in specific events */
|
330
|
+
typedef void (*lua_Hook) (lua_State *L, lua_Debug *ar);
|
331
|
+
|
332
|
+
|
333
|
+
LUA_API int lua_getstack (lua_State *L, int level, lua_Debug *ar);
|
334
|
+
LUA_API int lua_getinfo (lua_State *L, const char *what, lua_Debug *ar);
|
335
|
+
LUA_API const char *lua_getlocal (lua_State *L, const lua_Debug *ar, int n);
|
336
|
+
LUA_API const char *lua_setlocal (lua_State *L, const lua_Debug *ar, int n);
|
337
|
+
LUA_API const char *lua_getupvalue (lua_State *L, int funcindex, int n);
|
338
|
+
LUA_API const char *lua_setupvalue (lua_State *L, int funcindex, int n);
|
339
|
+
|
340
|
+
LUA_API int lua_sethook (lua_State *L, lua_Hook func, int mask, int count);
|
341
|
+
LUA_API lua_Hook lua_gethook (lua_State *L);
|
342
|
+
LUA_API int lua_gethookmask (lua_State *L);
|
343
|
+
LUA_API int lua_gethookcount (lua_State *L);
|
344
|
+
|
345
|
+
|
346
|
+
struct lua_Debug {
|
347
|
+
int event;
|
348
|
+
const char *name; /* (n) */
|
349
|
+
const char *namewhat; /* (n) `global', `local', `field', `method' */
|
350
|
+
const char *what; /* (S) `Lua', `C', `main', `tail' */
|
351
|
+
const char *source; /* (S) */
|
352
|
+
int currentline; /* (l) */
|
353
|
+
int nups; /* (u) number of upvalues */
|
354
|
+
int linedefined; /* (S) */
|
355
|
+
int lastlinedefined; /* (S) */
|
356
|
+
char short_src[LUA_IDSIZE]; /* (S) */
|
357
|
+
/* private part */
|
358
|
+
int i_ci; /* active function */
|
359
|
+
};
|
360
|
+
|
361
|
+
/* }====================================================================== */
|
362
|
+
|
363
|
+
|
364
|
+
/******************************************************************************
|
365
|
+
* Copyright (C) 1994-2012 Lua.org, PUC-Rio. All rights reserved.
|
366
|
+
*
|
367
|
+
* Permission is hereby granted, free of charge, to any person obtaining
|
368
|
+
* a copy of this software and associated documentation files (the
|
369
|
+
* "Software"), to deal in the Software without restriction, including
|
370
|
+
* without limitation the rights to use, copy, modify, merge, publish,
|
371
|
+
* distribute, sublicense, and/or sell copies of the Software, and to
|
372
|
+
* permit persons to whom the Software is furnished to do so, subject to
|
373
|
+
* the following conditions:
|
374
|
+
*
|
375
|
+
* The above copyright notice and this permission notice shall be
|
376
|
+
* included in all copies or substantial portions of the Software.
|
377
|
+
*
|
378
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
379
|
+
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
380
|
+
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
381
|
+
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
382
|
+
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
383
|
+
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
384
|
+
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
385
|
+
******************************************************************************/
|
386
|
+
|
387
|
+
|
388
|
+
#endif
|
@@ -0,0 +1,189 @@
|
|
1
|
+
/*
|
2
|
+
** Lua BitOp -- a bit operations library for Lua 5.1/5.2.
|
3
|
+
** http://bitop.luajit.org/
|
4
|
+
**
|
5
|
+
** Copyright (C) 2008-2012 Mike Pall. All rights reserved.
|
6
|
+
**
|
7
|
+
** Permission is hereby granted, free of charge, to any person obtaining
|
8
|
+
** a copy of this software and associated documentation files (the
|
9
|
+
** "Software"), to deal in the Software without restriction, including
|
10
|
+
** without limitation the rights to use, copy, modify, merge, publish,
|
11
|
+
** distribute, sublicense, and/or sell copies of the Software, and to
|
12
|
+
** permit persons to whom the Software is furnished to do so, subject to
|
13
|
+
** the following conditions:
|
14
|
+
**
|
15
|
+
** The above copyright notice and this permission notice shall be
|
16
|
+
** included in all copies or substantial portions of the Software.
|
17
|
+
**
|
18
|
+
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
19
|
+
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
20
|
+
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
21
|
+
** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
22
|
+
** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
23
|
+
** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
24
|
+
** SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
25
|
+
**
|
26
|
+
** [ MIT license: http://www.opensource.org/licenses/mit-license.php ]
|
27
|
+
*/
|
28
|
+
|
29
|
+
#define LUA_BITOP_VERSION "1.0.2"
|
30
|
+
|
31
|
+
#define LUA_LIB
|
32
|
+
#include "lua.h"
|
33
|
+
#include "lauxlib.h"
|
34
|
+
|
35
|
+
#ifdef _MSC_VER
|
36
|
+
/* MSVC is stuck in the last century and doesn't have C99's stdint.h. */
|
37
|
+
typedef __int32 int32_t;
|
38
|
+
typedef unsigned __int32 uint32_t;
|
39
|
+
typedef unsigned __int64 uint64_t;
|
40
|
+
#else
|
41
|
+
#include <stdint.h>
|
42
|
+
#endif
|
43
|
+
|
44
|
+
typedef int32_t SBits;
|
45
|
+
typedef uint32_t UBits;
|
46
|
+
|
47
|
+
typedef union {
|
48
|
+
lua_Number n;
|
49
|
+
#ifdef LUA_NUMBER_DOUBLE
|
50
|
+
uint64_t b;
|
51
|
+
#else
|
52
|
+
UBits b;
|
53
|
+
#endif
|
54
|
+
} BitNum;
|
55
|
+
|
56
|
+
/* Convert argument to bit type. */
|
57
|
+
static UBits barg(lua_State *L, int idx)
|
58
|
+
{
|
59
|
+
BitNum bn;
|
60
|
+
UBits b;
|
61
|
+
#if LUA_VERSION_NUM < 502
|
62
|
+
bn.n = lua_tonumber(L, idx);
|
63
|
+
#else
|
64
|
+
bn.n = luaL_checknumber(L, idx);
|
65
|
+
#endif
|
66
|
+
#if defined(LUA_NUMBER_DOUBLE)
|
67
|
+
bn.n += 6755399441055744.0; /* 2^52+2^51 */
|
68
|
+
#ifdef SWAPPED_DOUBLE
|
69
|
+
b = (UBits)(bn.b >> 32);
|
70
|
+
#else
|
71
|
+
b = (UBits)bn.b;
|
72
|
+
#endif
|
73
|
+
#elif defined(LUA_NUMBER_INT) || defined(LUA_NUMBER_LONG) || \
|
74
|
+
defined(LUA_NUMBER_LONGLONG) || defined(LUA_NUMBER_LONG_LONG) || \
|
75
|
+
defined(LUA_NUMBER_LLONG)
|
76
|
+
if (sizeof(UBits) == sizeof(lua_Number))
|
77
|
+
b = bn.b;
|
78
|
+
else
|
79
|
+
b = (UBits)(SBits)bn.n;
|
80
|
+
#elif defined(LUA_NUMBER_FLOAT)
|
81
|
+
#error "A 'float' lua_Number type is incompatible with this library"
|
82
|
+
#else
|
83
|
+
#error "Unknown number type, check LUA_NUMBER_* in luaconf.h"
|
84
|
+
#endif
|
85
|
+
#if LUA_VERSION_NUM < 502
|
86
|
+
if (b == 0 && !lua_isnumber(L, idx)) {
|
87
|
+
luaL_typerror(L, idx, "number");
|
88
|
+
}
|
89
|
+
#endif
|
90
|
+
return b;
|
91
|
+
}
|
92
|
+
|
93
|
+
/* Return bit type. */
|
94
|
+
#define BRET(b) lua_pushnumber(L, (lua_Number)(SBits)(b)); return 1;
|
95
|
+
|
96
|
+
static int bit_tobit(lua_State *L) { BRET(barg(L, 1)) }
|
97
|
+
static int bit_bnot(lua_State *L) { BRET(~barg(L, 1)) }
|
98
|
+
|
99
|
+
#define BIT_OP(func, opr) \
|
100
|
+
static int func(lua_State *L) { int i; UBits b = barg(L, 1); \
|
101
|
+
for (i = lua_gettop(L); i > 1; i--) b opr barg(L, i); BRET(b) }
|
102
|
+
BIT_OP(bit_band, &=)
|
103
|
+
BIT_OP(bit_bor, |=)
|
104
|
+
BIT_OP(bit_bxor, ^=)
|
105
|
+
|
106
|
+
#define bshl(b, n) (b << n)
|
107
|
+
#define bshr(b, n) (b >> n)
|
108
|
+
#define bsar(b, n) ((SBits)b >> n)
|
109
|
+
#define brol(b, n) ((b << n) | (b >> (32-n)))
|
110
|
+
#define bror(b, n) ((b << (32-n)) | (b >> n))
|
111
|
+
#define BIT_SH(func, fn) \
|
112
|
+
static int func(lua_State *L) { \
|
113
|
+
UBits b = barg(L, 1); UBits n = barg(L, 2) & 31; BRET(fn(b, n)) }
|
114
|
+
BIT_SH(bit_lshift, bshl)
|
115
|
+
BIT_SH(bit_rshift, bshr)
|
116
|
+
BIT_SH(bit_arshift, bsar)
|
117
|
+
BIT_SH(bit_rol, brol)
|
118
|
+
BIT_SH(bit_ror, bror)
|
119
|
+
|
120
|
+
static int bit_bswap(lua_State *L)
|
121
|
+
{
|
122
|
+
UBits b = barg(L, 1);
|
123
|
+
b = (b >> 24) | ((b >> 8) & 0xff00) | ((b & 0xff00) << 8) | (b << 24);
|
124
|
+
BRET(b)
|
125
|
+
}
|
126
|
+
|
127
|
+
static int bit_tohex(lua_State *L)
|
128
|
+
{
|
129
|
+
UBits b = barg(L, 1);
|
130
|
+
SBits n = lua_isnone(L, 2) ? 8 : (SBits)barg(L, 2);
|
131
|
+
const char *hexdigits = "0123456789abcdef";
|
132
|
+
char buf[8];
|
133
|
+
int i;
|
134
|
+
if (n < 0) { n = -n; hexdigits = "0123456789ABCDEF"; }
|
135
|
+
if (n > 8) n = 8;
|
136
|
+
for (i = (int)n; --i >= 0; ) { buf[i] = hexdigits[b & 15]; b >>= 4; }
|
137
|
+
lua_pushlstring(L, buf, (size_t)n);
|
138
|
+
return 1;
|
139
|
+
}
|
140
|
+
|
141
|
+
static const struct luaL_Reg bit_funcs[] = {
|
142
|
+
{ "tobit", bit_tobit },
|
143
|
+
{ "bnot", bit_bnot },
|
144
|
+
{ "band", bit_band },
|
145
|
+
{ "bor", bit_bor },
|
146
|
+
{ "bxor", bit_bxor },
|
147
|
+
{ "lshift", bit_lshift },
|
148
|
+
{ "rshift", bit_rshift },
|
149
|
+
{ "arshift", bit_arshift },
|
150
|
+
{ "rol", bit_rol },
|
151
|
+
{ "ror", bit_ror },
|
152
|
+
{ "bswap", bit_bswap },
|
153
|
+
{ "tohex", bit_tohex },
|
154
|
+
{ NULL, NULL }
|
155
|
+
};
|
156
|
+
|
157
|
+
/* Signed right-shifts are implementation-defined per C89/C99.
|
158
|
+
** But the de facto standard are arithmetic right-shifts on two's
|
159
|
+
** complement CPUs. This behaviour is required here, so test for it.
|
160
|
+
*/
|
161
|
+
#define BAD_SAR (bsar(-8, 2) != (SBits)-2)
|
162
|
+
|
163
|
+
LUALIB_API int luaopen_bit(lua_State *L)
|
164
|
+
{
|
165
|
+
UBits b;
|
166
|
+
lua_pushnumber(L, (lua_Number)1437217655L);
|
167
|
+
b = barg(L, -1);
|
168
|
+
if (b != (UBits)1437217655L || BAD_SAR) { /* Perform a simple self-test. */
|
169
|
+
const char *msg = "compiled with incompatible luaconf.h";
|
170
|
+
#ifdef LUA_NUMBER_DOUBLE
|
171
|
+
#ifdef _WIN32
|
172
|
+
if (b == (UBits)1610612736L)
|
173
|
+
msg = "use D3DCREATE_FPU_PRESERVE with DirectX";
|
174
|
+
#endif
|
175
|
+
if (b == (UBits)1127743488L)
|
176
|
+
msg = "not compiled with SWAPPED_DOUBLE";
|
177
|
+
#endif
|
178
|
+
if (BAD_SAR)
|
179
|
+
msg = "arithmetic right-shift broken";
|
180
|
+
luaL_error(L, "bit library self-test failed (%s)", msg);
|
181
|
+
}
|
182
|
+
#if LUA_VERSION_NUM < 502
|
183
|
+
luaL_register(L, "bit", bit_funcs);
|
184
|
+
#else
|
185
|
+
luaL_newlib(L, bit_funcs);
|
186
|
+
#endif
|
187
|
+
return 1;
|
188
|
+
}
|
189
|
+
|