dub 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (142) hide show
  1. data/.gitignore +8 -0
  2. data/History.txt +5 -0
  3. data/LICENSE +20 -0
  4. data/README.rdoc +53 -0
  5. data/Rakefile +58 -0
  6. data/dub.gemspec +194 -0
  7. data/lib/dub/argument.rb +261 -0
  8. data/lib/dub/entities_unescape.rb +16 -0
  9. data/lib/dub/function.rb +111 -0
  10. data/lib/dub/function_group.rb +74 -0
  11. data/lib/dub/generator.rb +15 -0
  12. data/lib/dub/group.rb +10 -0
  13. data/lib/dub/klass.rb +231 -0
  14. data/lib/dub/lua/class.cpp.erb +75 -0
  15. data/lib/dub/lua/class_gen.rb +78 -0
  16. data/lib/dub/lua/function.cpp.erb +4 -0
  17. data/lib/dub/lua/function_gen.rb +223 -0
  18. data/lib/dub/lua/group.cpp.erb +10 -0
  19. data/lib/dub/lua/lua_cpp_helper.h +141 -0
  20. data/lib/dub/lua/namespace.cpp.erb +35 -0
  21. data/lib/dub/lua/namespace_gen.rb +86 -0
  22. data/lib/dub/lua.rb +24 -0
  23. data/lib/dub/member_extraction.rb +88 -0
  24. data/lib/dub/namespace.rb +276 -0
  25. data/lib/dub/parser.rb +46 -0
  26. data/lib/dub/templates/lua_template.erb +21 -0
  27. data/lib/dub/version.rb +3 -0
  28. data/lib/dub.rb +26 -0
  29. data/test/argument_test.rb +423 -0
  30. data/test/fixtures/app/CMakeLists.txt +54 -0
  31. data/test/fixtures/app/Doxyfile +1600 -0
  32. data/test/fixtures/app/bindings/all_lua.cpp +299 -0
  33. data/test/fixtures/app/include/matrix.h +123 -0
  34. data/test/fixtures/app/make_lua_bindings.rb +13 -0
  35. data/test/fixtures/app/vendor/lua/CMakeLists.txt +25 -0
  36. data/test/fixtures/app/vendor/lua/COPYRIGHT +34 -0
  37. data/test/fixtures/app/vendor/lua/HISTORY +183 -0
  38. data/test/fixtures/app/vendor/lua/INSTALL +99 -0
  39. data/test/fixtures/app/vendor/lua/Makefile +183 -0
  40. data/test/fixtures/app/vendor/lua/README +37 -0
  41. data/test/fixtures/app/vendor/lua/lapi.c +1080 -0
  42. data/test/fixtures/app/vendor/lua/lapi.h +16 -0
  43. data/test/fixtures/app/vendor/lua/lauxlib.c +653 -0
  44. data/test/fixtures/app/vendor/lua/lauxlib.h +174 -0
  45. data/test/fixtures/app/vendor/lua/lbaselib.c +643 -0
  46. data/test/fixtures/app/vendor/lua/lcode.c +839 -0
  47. data/test/fixtures/app/vendor/lua/lcode.h +76 -0
  48. data/test/fixtures/app/vendor/lua/ldblib.c +397 -0
  49. data/test/fixtures/app/vendor/lua/ldebug.c +622 -0
  50. data/test/fixtures/app/vendor/lua/ldebug.h +33 -0
  51. data/test/fixtures/app/vendor/lua/ldo.c +516 -0
  52. data/test/fixtures/app/vendor/lua/ldo.h +57 -0
  53. data/test/fixtures/app/vendor/lua/ldump.c +164 -0
  54. data/test/fixtures/app/vendor/lua/lfunc.c +174 -0
  55. data/test/fixtures/app/vendor/lua/lfunc.h +34 -0
  56. data/test/fixtures/app/vendor/lua/lgc.c +711 -0
  57. data/test/fixtures/app/vendor/lua/lgc.h +110 -0
  58. data/test/fixtures/app/vendor/lua/liblua.a +0 -0
  59. data/test/fixtures/app/vendor/lua/linit.c +38 -0
  60. data/test/fixtures/app/vendor/lua/liolib.c +532 -0
  61. data/test/fixtures/app/vendor/lua/llex.c +461 -0
  62. data/test/fixtures/app/vendor/lua/llex.h +81 -0
  63. data/test/fixtures/app/vendor/lua/llimits.h +128 -0
  64. data/test/fixtures/app/vendor/lua/lmathlib.c +263 -0
  65. data/test/fixtures/app/vendor/lua/lmem.c +86 -0
  66. data/test/fixtures/app/vendor/lua/lmem.h +49 -0
  67. data/test/fixtures/app/vendor/lua/loadlib.c +664 -0
  68. data/test/fixtures/app/vendor/lua/lobject.c +214 -0
  69. data/test/fixtures/app/vendor/lua/lobject.h +381 -0
  70. data/test/fixtures/app/vendor/lua/lopcodes.c +102 -0
  71. data/test/fixtures/app/vendor/lua/lopcodes.h +268 -0
  72. data/test/fixtures/app/vendor/lua/loslib.c +244 -0
  73. data/test/fixtures/app/vendor/lua/lparser.c +1337 -0
  74. data/test/fixtures/app/vendor/lua/lparser.h +82 -0
  75. data/test/fixtures/app/vendor/lua/lstate.c +214 -0
  76. data/test/fixtures/app/vendor/lua/lstate.h +168 -0
  77. data/test/fixtures/app/vendor/lua/lstring.c +111 -0
  78. data/test/fixtures/app/vendor/lua/lstring.h +31 -0
  79. data/test/fixtures/app/vendor/lua/lstrlib.c +868 -0
  80. data/test/fixtures/app/vendor/lua/ltable.c +588 -0
  81. data/test/fixtures/app/vendor/lua/ltable.h +40 -0
  82. data/test/fixtures/app/vendor/lua/ltablib.c +278 -0
  83. data/test/fixtures/app/vendor/lua/ltm.c +75 -0
  84. data/test/fixtures/app/vendor/lua/ltm.h +54 -0
  85. data/test/fixtures/app/vendor/lua/lua.c +695 -0
  86. data/test/fixtures/app/vendor/lua/lua.h +385 -0
  87. data/test/fixtures/app/vendor/lua/lua_dub_helper.h +77 -0
  88. data/test/fixtures/app/vendor/lua/luac +0 -0
  89. data/test/fixtures/app/vendor/lua/luac.c +200 -0
  90. data/test/fixtures/app/vendor/lua/luaconf.h +762 -0
  91. data/test/fixtures/app/vendor/lua/lualib.h +53 -0
  92. data/test/fixtures/app/vendor/lua/lundump.c +223 -0
  93. data/test/fixtures/app/vendor/lua/lundump.h +36 -0
  94. data/test/fixtures/app/vendor/lua/lvm.c +765 -0
  95. data/test/fixtures/app/vendor/lua/lvm.h +36 -0
  96. data/test/fixtures/app/vendor/lua/lzio.c +82 -0
  97. data/test/fixtures/app/vendor/lua/lzio.h +67 -0
  98. data/test/fixtures/app/vendor/lua/matrix.h +102 -0
  99. data/test/fixtures/app/vendor/lua/print.c +227 -0
  100. data/test/fixtures/app/vendor/lua/test/README +26 -0
  101. data/test/fixtures/app/vendor/lua/test/bisect.lua +27 -0
  102. data/test/fixtures/app/vendor/lua/test/cf.lua +16 -0
  103. data/test/fixtures/app/vendor/lua/test/echo.lua +5 -0
  104. data/test/fixtures/app/vendor/lua/test/env.lua +7 -0
  105. data/test/fixtures/app/vendor/lua/test/factorial.lua +32 -0
  106. data/test/fixtures/app/vendor/lua/test/fib.lua +40 -0
  107. data/test/fixtures/app/vendor/lua/test/fibfor.lua +13 -0
  108. data/test/fixtures/app/vendor/lua/test/globals.lua +13 -0
  109. data/test/fixtures/app/vendor/lua/test/hello.lua +3 -0
  110. data/test/fixtures/app/vendor/lua/test/life.lua +111 -0
  111. data/test/fixtures/app/vendor/lua/test/luac.lua +7 -0
  112. data/test/fixtures/app/vendor/lua/test/printf.lua +7 -0
  113. data/test/fixtures/app/vendor/lua/test/readonly.lua +12 -0
  114. data/test/fixtures/app/vendor/lua/test/sieve.lua +29 -0
  115. data/test/fixtures/app/vendor/lua/test/sort.lua +66 -0
  116. data/test/fixtures/app/vendor/lua/test/table.lua +12 -0
  117. data/test/fixtures/app/vendor/lua/test/trace-calls.lua +32 -0
  118. data/test/fixtures/app/vendor/lua/test/trace-globals.lua +38 -0
  119. data/test/fixtures/app/vendor/lua/test/xd.lua +14 -0
  120. data/test/fixtures/app/xml/classdub_1_1_matrix.xml +239 -0
  121. data/test/fixtures/app/xml/classdub_1_1_t_mat.xml +233 -0
  122. data/test/fixtures/app/xml/combine.xslt +15 -0
  123. data/test/fixtures/app/xml/compound.xsd +814 -0
  124. data/test/fixtures/app/xml/dir_53661a2bdeb1d55e60581a7e15deb763.xml +12 -0
  125. data/test/fixtures/app/xml/index.xml +42 -0
  126. data/test/fixtures/app/xml/index.xsd +66 -0
  127. data/test/fixtures/app/xml/matrix_8h.xml +149 -0
  128. data/test/fixtures/app/xml/namespacedub.xml +41 -0
  129. data/test/fixtures/classcv_1_1_mat.xml +1996 -0
  130. data/test/fixtures/classcv_1_1_point__.xml +341 -0
  131. data/test/fixtures/classcv_1_1_size__.xml +270 -0
  132. data/test/fixtures/group___magic_type.xml +406 -0
  133. data/test/fixtures/namespacecv.xml +12659 -0
  134. data/test/function_group_test.rb +15 -0
  135. data/test/function_test.rb +252 -0
  136. data/test/group_test.rb +155 -0
  137. data/test/helper.rb +34 -0
  138. data/test/klass_test.rb +297 -0
  139. data/test/lua_function_gen_test.rb +179 -0
  140. data/test/namespace_test.rb +220 -0
  141. data/test/parser_test.rb +36 -0
  142. metadata +216 -0
@@ -0,0 +1,263 @@
1
+ /*
2
+ ** $Id: lmathlib.c,v 1.67 2005/08/26 17:36:32 roberto Exp $
3
+ ** Standard mathematical library
4
+ ** See Copyright Notice in lua.h
5
+ */
6
+
7
+
8
+ #include <stdlib.h>
9
+ #include <math.h>
10
+
11
+ #define lmathlib_c
12
+ #define LUA_LIB
13
+
14
+ #include "lua.h"
15
+
16
+ #include "lauxlib.h"
17
+ #include "lualib.h"
18
+
19
+
20
+ #undef PI
21
+ #define PI (3.14159265358979323846)
22
+ #define RADIANS_PER_DEGREE (PI/180.0)
23
+
24
+
25
+
26
+ static int math_abs (lua_State *L) {
27
+ lua_pushnumber(L, fabs(luaL_checknumber(L, 1)));
28
+ return 1;
29
+ }
30
+
31
+ static int math_sin (lua_State *L) {
32
+ lua_pushnumber(L, sin(luaL_checknumber(L, 1)));
33
+ return 1;
34
+ }
35
+
36
+ static int math_sinh (lua_State *L) {
37
+ lua_pushnumber(L, sinh(luaL_checknumber(L, 1)));
38
+ return 1;
39
+ }
40
+
41
+ static int math_cos (lua_State *L) {
42
+ lua_pushnumber(L, cos(luaL_checknumber(L, 1)));
43
+ return 1;
44
+ }
45
+
46
+ static int math_cosh (lua_State *L) {
47
+ lua_pushnumber(L, cosh(luaL_checknumber(L, 1)));
48
+ return 1;
49
+ }
50
+
51
+ static int math_tan (lua_State *L) {
52
+ lua_pushnumber(L, tan(luaL_checknumber(L, 1)));
53
+ return 1;
54
+ }
55
+
56
+ static int math_tanh (lua_State *L) {
57
+ lua_pushnumber(L, tanh(luaL_checknumber(L, 1)));
58
+ return 1;
59
+ }
60
+
61
+ static int math_asin (lua_State *L) {
62
+ lua_pushnumber(L, asin(luaL_checknumber(L, 1)));
63
+ return 1;
64
+ }
65
+
66
+ static int math_acos (lua_State *L) {
67
+ lua_pushnumber(L, acos(luaL_checknumber(L, 1)));
68
+ return 1;
69
+ }
70
+
71
+ static int math_atan (lua_State *L) {
72
+ lua_pushnumber(L, atan(luaL_checknumber(L, 1)));
73
+ return 1;
74
+ }
75
+
76
+ static int math_atan2 (lua_State *L) {
77
+ lua_pushnumber(L, atan2(luaL_checknumber(L, 1), luaL_checknumber(L, 2)));
78
+ return 1;
79
+ }
80
+
81
+ static int math_ceil (lua_State *L) {
82
+ lua_pushnumber(L, ceil(luaL_checknumber(L, 1)));
83
+ return 1;
84
+ }
85
+
86
+ static int math_floor (lua_State *L) {
87
+ lua_pushnumber(L, floor(luaL_checknumber(L, 1)));
88
+ return 1;
89
+ }
90
+
91
+ static int math_fmod (lua_State *L) {
92
+ lua_pushnumber(L, fmod(luaL_checknumber(L, 1), luaL_checknumber(L, 2)));
93
+ return 1;
94
+ }
95
+
96
+ static int math_modf (lua_State *L) {
97
+ double ip;
98
+ double fp = modf(luaL_checknumber(L, 1), &ip);
99
+ lua_pushnumber(L, ip);
100
+ lua_pushnumber(L, fp);
101
+ return 2;
102
+ }
103
+
104
+ static int math_sqrt (lua_State *L) {
105
+ lua_pushnumber(L, sqrt(luaL_checknumber(L, 1)));
106
+ return 1;
107
+ }
108
+
109
+ static int math_pow (lua_State *L) {
110
+ lua_pushnumber(L, pow(luaL_checknumber(L, 1), luaL_checknumber(L, 2)));
111
+ return 1;
112
+ }
113
+
114
+ static int math_log (lua_State *L) {
115
+ lua_pushnumber(L, log(luaL_checknumber(L, 1)));
116
+ return 1;
117
+ }
118
+
119
+ static int math_log10 (lua_State *L) {
120
+ lua_pushnumber(L, log10(luaL_checknumber(L, 1)));
121
+ return 1;
122
+ }
123
+
124
+ static int math_exp (lua_State *L) {
125
+ lua_pushnumber(L, exp(luaL_checknumber(L, 1)));
126
+ return 1;
127
+ }
128
+
129
+ static int math_deg (lua_State *L) {
130
+ lua_pushnumber(L, luaL_checknumber(L, 1)/RADIANS_PER_DEGREE);
131
+ return 1;
132
+ }
133
+
134
+ static int math_rad (lua_State *L) {
135
+ lua_pushnumber(L, luaL_checknumber(L, 1)*RADIANS_PER_DEGREE);
136
+ return 1;
137
+ }
138
+
139
+ static int math_frexp (lua_State *L) {
140
+ int e;
141
+ lua_pushnumber(L, frexp(luaL_checknumber(L, 1), &e));
142
+ lua_pushinteger(L, e);
143
+ return 2;
144
+ }
145
+
146
+ static int math_ldexp (lua_State *L) {
147
+ lua_pushnumber(L, ldexp(luaL_checknumber(L, 1), luaL_checkint(L, 2)));
148
+ return 1;
149
+ }
150
+
151
+
152
+
153
+ static int math_min (lua_State *L) {
154
+ int n = lua_gettop(L); /* number of arguments */
155
+ lua_Number dmin = luaL_checknumber(L, 1);
156
+ int i;
157
+ for (i=2; i<=n; i++) {
158
+ lua_Number d = luaL_checknumber(L, i);
159
+ if (d < dmin)
160
+ dmin = d;
161
+ }
162
+ lua_pushnumber(L, dmin);
163
+ return 1;
164
+ }
165
+
166
+
167
+ static int math_max (lua_State *L) {
168
+ int n = lua_gettop(L); /* number of arguments */
169
+ lua_Number dmax = luaL_checknumber(L, 1);
170
+ int i;
171
+ for (i=2; i<=n; i++) {
172
+ lua_Number d = luaL_checknumber(L, i);
173
+ if (d > dmax)
174
+ dmax = d;
175
+ }
176
+ lua_pushnumber(L, dmax);
177
+ return 1;
178
+ }
179
+
180
+
181
+ static int math_random (lua_State *L) {
182
+ /* the `%' avoids the (rare) case of r==1, and is needed also because on
183
+ some systems (SunOS!) `rand()' may return a value larger than RAND_MAX */
184
+ lua_Number r = (lua_Number)(rand()%RAND_MAX) / (lua_Number)RAND_MAX;
185
+ switch (lua_gettop(L)) { /* check number of arguments */
186
+ case 0: { /* no arguments */
187
+ lua_pushnumber(L, r); /* Number between 0 and 1 */
188
+ break;
189
+ }
190
+ case 1: { /* only upper limit */
191
+ int u = luaL_checkint(L, 1);
192
+ luaL_argcheck(L, 1<=u, 1, "interval is empty");
193
+ lua_pushnumber(L, floor(r*u)+1); /* int between 1 and `u' */
194
+ break;
195
+ }
196
+ case 2: { /* lower and upper limits */
197
+ int l = luaL_checkint(L, 1);
198
+ int u = luaL_checkint(L, 2);
199
+ luaL_argcheck(L, l<=u, 2, "interval is empty");
200
+ lua_pushnumber(L, floor(r*(u-l+1))+l); /* int between `l' and `u' */
201
+ break;
202
+ }
203
+ default: return luaL_error(L, "wrong number of arguments");
204
+ }
205
+ return 1;
206
+ }
207
+
208
+
209
+ static int math_randomseed (lua_State *L) {
210
+ srand(luaL_checkint(L, 1));
211
+ return 0;
212
+ }
213
+
214
+
215
+ static const luaL_Reg mathlib[] = {
216
+ {"abs", math_abs},
217
+ {"acos", math_acos},
218
+ {"asin", math_asin},
219
+ {"atan2", math_atan2},
220
+ {"atan", math_atan},
221
+ {"ceil", math_ceil},
222
+ {"cosh", math_cosh},
223
+ {"cos", math_cos},
224
+ {"deg", math_deg},
225
+ {"exp", math_exp},
226
+ {"floor", math_floor},
227
+ {"fmod", math_fmod},
228
+ {"frexp", math_frexp},
229
+ {"ldexp", math_ldexp},
230
+ {"log10", math_log10},
231
+ {"log", math_log},
232
+ {"max", math_max},
233
+ {"min", math_min},
234
+ {"modf", math_modf},
235
+ {"pow", math_pow},
236
+ {"rad", math_rad},
237
+ {"random", math_random},
238
+ {"randomseed", math_randomseed},
239
+ {"sinh", math_sinh},
240
+ {"sin", math_sin},
241
+ {"sqrt", math_sqrt},
242
+ {"tanh", math_tanh},
243
+ {"tan", math_tan},
244
+ {NULL, NULL}
245
+ };
246
+
247
+
248
+ /*
249
+ ** Open math library
250
+ */
251
+ LUALIB_API int luaopen_math (lua_State *L) {
252
+ luaL_register(L, LUA_MATHLIBNAME, mathlib);
253
+ lua_pushnumber(L, PI);
254
+ lua_setfield(L, -2, "pi");
255
+ lua_pushnumber(L, HUGE_VAL);
256
+ lua_setfield(L, -2, "huge");
257
+ #if defined(LUA_COMPAT_MOD)
258
+ lua_getfield(L, -1, "fmod");
259
+ lua_setfield(L, -2, "mod");
260
+ #endif
261
+ return 1;
262
+ }
263
+
@@ -0,0 +1,86 @@
1
+ /*
2
+ ** $Id: lmem.c,v 1.70 2005/12/26 13:35:47 roberto Exp $
3
+ ** Interface to Memory Manager
4
+ ** See Copyright Notice in lua.h
5
+ */
6
+
7
+
8
+ #include <stddef.h>
9
+
10
+ #define lmem_c
11
+ #define LUA_CORE
12
+
13
+ #include "lua.h"
14
+
15
+ #include "ldebug.h"
16
+ #include "ldo.h"
17
+ #include "lmem.h"
18
+ #include "lobject.h"
19
+ #include "lstate.h"
20
+
21
+
22
+
23
+ /*
24
+ ** About the realloc function:
25
+ ** void * frealloc (void *ud, void *ptr, size_t osize, size_t nsize);
26
+ ** (`osize' is the old size, `nsize' is the new size)
27
+ **
28
+ ** Lua ensures that (ptr == NULL) iff (osize == 0).
29
+ **
30
+ ** * frealloc(ud, NULL, 0, x) creates a new block of size `x'
31
+ **
32
+ ** * frealloc(ud, p, x, 0) frees the block `p'
33
+ ** (in this specific case, frealloc must return NULL).
34
+ ** particularly, frealloc(ud, NULL, 0, 0) does nothing
35
+ ** (which is equivalent to free(NULL) in ANSI C)
36
+ **
37
+ ** frealloc returns NULL if it cannot create or reallocate the area
38
+ ** (any reallocation to an equal or smaller size cannot fail!)
39
+ */
40
+
41
+
42
+
43
+ #define MINSIZEARRAY 4
44
+
45
+
46
+ void *luaM_growaux_ (lua_State *L, void *block, int *size, size_t size_elems,
47
+ int limit, const char *errormsg) {
48
+ void *newblock;
49
+ int newsize;
50
+ if (*size >= limit/2) { /* cannot double it? */
51
+ if (*size >= limit) /* cannot grow even a little? */
52
+ luaG_runerror(L, errormsg);
53
+ newsize = limit; /* still have at least one free place */
54
+ }
55
+ else {
56
+ newsize = (*size)*2;
57
+ if (newsize < MINSIZEARRAY)
58
+ newsize = MINSIZEARRAY; /* minimum size */
59
+ }
60
+ newblock = luaM_reallocv(L, block, *size, newsize, size_elems);
61
+ *size = newsize; /* update only when everything else is OK */
62
+ return newblock;
63
+ }
64
+
65
+
66
+ void *luaM_toobig (lua_State *L) {
67
+ luaG_runerror(L, "memory allocation error: block too big");
68
+ return NULL; /* to avoid warnings */
69
+ }
70
+
71
+
72
+
73
+ /*
74
+ ** generic allocation routine.
75
+ */
76
+ void *luaM_realloc_ (lua_State *L, void *block, size_t osize, size_t nsize) {
77
+ global_State *g = G(L);
78
+ lua_assert((osize == 0) == (block == NULL));
79
+ block = (*g->frealloc)(g->ud, block, osize, nsize);
80
+ if (block == NULL && nsize > 0)
81
+ luaD_throw(L, LUA_ERRMEM);
82
+ lua_assert((nsize == 0) == (block == NULL));
83
+ g->totalbytes = (g->totalbytes - osize) + nsize;
84
+ return block;
85
+ }
86
+
@@ -0,0 +1,49 @@
1
+ /*
2
+ ** $Id: lmem.h,v 1.31 2005/04/25 19:24:10 roberto Exp $
3
+ ** Interface to Memory Manager
4
+ ** See Copyright Notice in lua.h
5
+ */
6
+
7
+ #ifndef lmem_h
8
+ #define lmem_h
9
+
10
+
11
+ #include <stddef.h>
12
+
13
+ #include "llimits.h"
14
+ #include "lua.h"
15
+
16
+ #define MEMERRMSG "not enough memory"
17
+
18
+
19
+ #define luaM_reallocv(L,b,on,n,e) \
20
+ ((cast(size_t, (n)+1) <= MAX_SIZET/(e)) ? /* +1 to avoid warnings */ \
21
+ luaM_realloc_(L, (b), (on)*(e), (n)*(e)) : \
22
+ luaM_toobig(L))
23
+
24
+ #define luaM_freemem(L, b, s) luaM_realloc_(L, (b), (s), 0)
25
+ #define luaM_free(L, b) luaM_realloc_(L, (b), sizeof(*(b)), 0)
26
+ #define luaM_freearray(L, b, n, t) luaM_reallocv(L, (b), n, 0, sizeof(t))
27
+
28
+ #define luaM_malloc(L,t) luaM_realloc_(L, NULL, 0, (t))
29
+ #define luaM_new(L,t) cast(t *, luaM_malloc(L, sizeof(t)))
30
+ #define luaM_newvector(L,n,t) \
31
+ cast(t *, luaM_reallocv(L, NULL, 0, n, sizeof(t)))
32
+
33
+ #define luaM_growvector(L,v,nelems,size,t,limit,e) \
34
+ if ((nelems)+1 > (size)) \
35
+ ((v)=cast(t *, luaM_growaux_(L,v,&(size),sizeof(t),limit,e)))
36
+
37
+ #define luaM_reallocvector(L, v,oldn,n,t) \
38
+ ((v)=cast(t *, luaM_reallocv(L, v, oldn, n, sizeof(t))))
39
+
40
+
41
+ LUAI_FUNC void *luaM_realloc_ (lua_State *L, void *block, size_t oldsize,
42
+ size_t size);
43
+ LUAI_FUNC void *luaM_toobig (lua_State *L);
44
+ LUAI_FUNC void *luaM_growaux_ (lua_State *L, void *block, int *size,
45
+ size_t size_elem, int limit,
46
+ const char *errormsg);
47
+
48
+ #endif
49
+