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.
Files changed (106) hide show
  1. checksums.yaml +4 -4
  2. data/ext/hirlite_ext/extconf.rb +2 -2
  3. data/lib/hirlite/version.rb +1 -1
  4. data/vendor/rlite/deps/lua/Makefile +128 -0
  5. data/vendor/rlite/deps/lua/src/fpconv.c +205 -0
  6. data/vendor/rlite/deps/lua/src/fpconv.h +22 -0
  7. data/vendor/rlite/deps/lua/src/lapi.c +1087 -0
  8. data/vendor/rlite/deps/lua/src/lapi.h +16 -0
  9. data/vendor/rlite/deps/lua/src/lauxlib.c +652 -0
  10. data/vendor/rlite/deps/lua/src/lauxlib.h +174 -0
  11. data/vendor/rlite/deps/lua/src/lbaselib.c +653 -0
  12. data/vendor/rlite/deps/lua/src/lcode.c +831 -0
  13. data/vendor/rlite/deps/lua/src/lcode.h +76 -0
  14. data/vendor/rlite/deps/lua/src/ldblib.c +398 -0
  15. data/vendor/rlite/deps/lua/src/ldebug.c +638 -0
  16. data/vendor/rlite/deps/lua/src/ldebug.h +33 -0
  17. data/vendor/rlite/deps/lua/src/ldo.c +519 -0
  18. data/vendor/rlite/deps/lua/src/ldo.h +57 -0
  19. data/vendor/rlite/deps/lua/src/ldump.c +164 -0
  20. data/vendor/rlite/deps/lua/src/lfunc.c +174 -0
  21. data/vendor/rlite/deps/lua/src/lfunc.h +34 -0
  22. data/vendor/rlite/deps/lua/src/lgc.c +710 -0
  23. data/vendor/rlite/deps/lua/src/lgc.h +110 -0
  24. data/vendor/rlite/deps/lua/src/linit.c +38 -0
  25. data/vendor/rlite/deps/lua/src/liolib.c +556 -0
  26. data/vendor/rlite/deps/lua/src/llex.c +463 -0
  27. data/vendor/rlite/deps/lua/src/llex.h +81 -0
  28. data/vendor/rlite/deps/lua/src/llimits.h +128 -0
  29. data/vendor/rlite/deps/lua/src/lmathlib.c +263 -0
  30. data/vendor/rlite/deps/lua/src/lmem.c +86 -0
  31. data/vendor/rlite/deps/lua/src/lmem.h +49 -0
  32. data/vendor/rlite/deps/lua/src/loadlib.c +666 -0
  33. data/vendor/rlite/deps/lua/src/lobject.c +214 -0
  34. data/vendor/rlite/deps/lua/src/lobject.h +381 -0
  35. data/vendor/rlite/deps/lua/src/lopcodes.c +102 -0
  36. data/vendor/rlite/deps/lua/src/lopcodes.h +268 -0
  37. data/vendor/rlite/deps/lua/src/loslib.c +243 -0
  38. data/vendor/rlite/deps/lua/src/lparser.c +1339 -0
  39. data/vendor/rlite/deps/lua/src/lparser.h +82 -0
  40. data/vendor/rlite/deps/lua/src/lstate.c +214 -0
  41. data/vendor/rlite/deps/lua/src/lstate.h +169 -0
  42. data/vendor/rlite/deps/lua/src/lstring.c +111 -0
  43. data/vendor/rlite/deps/lua/src/lstring.h +31 -0
  44. data/vendor/rlite/deps/lua/src/lstrlib.c +871 -0
  45. data/vendor/rlite/deps/lua/src/ltable.c +588 -0
  46. data/vendor/rlite/deps/lua/src/ltable.h +40 -0
  47. data/vendor/rlite/deps/lua/src/ltablib.c +287 -0
  48. data/vendor/rlite/deps/lua/src/ltm.c +75 -0
  49. data/vendor/rlite/deps/lua/src/ltm.h +54 -0
  50. data/vendor/rlite/deps/lua/src/lua.c +392 -0
  51. data/vendor/rlite/deps/lua/src/lua.h +388 -0
  52. data/vendor/rlite/deps/lua/src/lua_bit.c +189 -0
  53. data/vendor/rlite/deps/lua/src/lua_cjson.c +1427 -0
  54. data/vendor/rlite/deps/lua/src/lua_cmsgpack.c +957 -0
  55. data/vendor/rlite/deps/lua/src/lua_struct.c +421 -0
  56. data/vendor/rlite/deps/lua/src/luac.c +200 -0
  57. data/vendor/rlite/deps/lua/src/luaconf.h +763 -0
  58. data/vendor/rlite/deps/lua/src/lualib.h +53 -0
  59. data/vendor/rlite/deps/lua/src/lundump.c +227 -0
  60. data/vendor/rlite/deps/lua/src/lundump.h +36 -0
  61. data/vendor/rlite/deps/lua/src/lvm.c +767 -0
  62. data/vendor/rlite/deps/lua/src/lvm.h +36 -0
  63. data/vendor/rlite/deps/lua/src/lzio.c +82 -0
  64. data/vendor/rlite/deps/lua/src/lzio.h +67 -0
  65. data/vendor/rlite/deps/lua/src/print.c +227 -0
  66. data/vendor/rlite/deps/lua/src/strbuf.c +251 -0
  67. data/vendor/rlite/deps/lua/src/strbuf.h +154 -0
  68. data/vendor/rlite/src/Makefile +97 -25
  69. data/vendor/rlite/{deps → src}/crc64.c +0 -0
  70. data/vendor/rlite/{deps → src}/crc64.h +0 -0
  71. data/vendor/rlite/src/dump.c +2 -2
  72. data/vendor/rlite/{deps → src}/endianconv.h +0 -0
  73. data/vendor/rlite/src/hirlite.c +134 -90
  74. data/vendor/rlite/src/hirlite.h +34 -1
  75. data/vendor/rlite/{deps → src}/hyperloglog.c +0 -0
  76. data/vendor/rlite/{deps → src}/hyperloglog.h +0 -0
  77. data/vendor/rlite/{deps → src}/lzf.h +0 -0
  78. data/vendor/rlite/{deps → src}/lzfP.h +0 -0
  79. data/vendor/rlite/{deps → src}/lzf_c.c +0 -0
  80. data/vendor/rlite/{deps → src}/lzf_d.c +0 -0
  81. data/vendor/rlite/src/page_btree.c +10 -10
  82. data/vendor/rlite/src/page_btree.h +2 -2
  83. data/vendor/rlite/src/page_list.c +3 -3
  84. data/vendor/rlite/src/page_list.h +1 -1
  85. data/vendor/rlite/src/page_multi_string.c +1 -1
  86. data/vendor/rlite/src/page_skiplist.c +1 -1
  87. data/vendor/rlite/src/page_skiplist.h +1 -1
  88. data/vendor/rlite/src/rand.c +93 -0
  89. data/vendor/rlite/src/rand.h +38 -0
  90. data/vendor/rlite/src/restore.c +286 -155
  91. data/vendor/rlite/src/restore.h +6 -0
  92. data/vendor/rlite/src/rlite.c +30 -30
  93. data/vendor/rlite/src/rlite.h +1 -1
  94. data/vendor/rlite/src/scripting.c +1138 -0
  95. data/vendor/rlite/src/scripting.h +10 -0
  96. data/vendor/rlite/{deps → src}/sha1.c +0 -0
  97. data/vendor/rlite/{deps → src}/sha1.h +0 -0
  98. data/vendor/rlite/src/solarisfixes.h +54 -0
  99. data/vendor/rlite/src/sort.c +4 -2
  100. data/vendor/rlite/src/sort.h +1 -1
  101. data/vendor/rlite/src/type_string.c +1 -1
  102. data/vendor/rlite/src/util.c +4 -4
  103. data/vendor/rlite/src/util.h +3 -3
  104. data/vendor/rlite/{deps → src}/utilfromredis.c +0 -0
  105. data/vendor/rlite/{deps → src}/utilfromredis.h +0 -0
  106. 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
+