dub 0.2.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of dub might be problematic. Click here for more details.

Files changed (277) hide show
  1. data/History.txt +92 -0
  2. data/LICENSE +20 -0
  3. data/README.rdoc +115 -0
  4. data/Rakefile +59 -0
  5. data/dub.gemspec +197 -0
  6. data/lib/dub/argument.rb +286 -0
  7. data/lib/dub/entities_unescape.rb +9 -0
  8. data/lib/dub/function.rb +177 -0
  9. data/lib/dub/function_group.rb +72 -0
  10. data/lib/dub/generator.rb +15 -0
  11. data/lib/dub/group.rb +20 -0
  12. data/lib/dub/klass.rb +338 -0
  13. data/lib/dub/lua/class.cpp.erb +114 -0
  14. data/lib/dub/lua/class_gen.rb +96 -0
  15. data/lib/dub/lua/function.cpp.erb +15 -0
  16. data/lib/dub/lua/function_gen.rb +329 -0
  17. data/lib/dub/lua/group.cpp.erb +9 -0
  18. data/lib/dub/lua/lua_cpp_helper.cpp +259 -0
  19. data/lib/dub/lua/lua_cpp_helper.h +219 -0
  20. data/lib/dub/lua/lua_object.cpp +158 -0
  21. data/lib/dub/lua/lua_object.h +69 -0
  22. data/lib/dub/lua/namespace.cpp.erb +42 -0
  23. data/lib/dub/lua/namespace_gen.rb +69 -0
  24. data/lib/dub/lua.rb +24 -0
  25. data/lib/dub/member_extraction.rb +128 -0
  26. data/lib/dub/namespace.rb +295 -0
  27. data/lib/dub/opts_parser.rb +30 -0
  28. data/lib/dub/parser.rb +46 -0
  29. data/lib/dub/templates/lua_template.erb +21 -0
  30. data/lib/dub/version.rb +3 -0
  31. data/lib/dub.rb +24 -20
  32. data/test/argument_test.rb +581 -0
  33. data/test/fixtures/app/CMakeLists.txt +54 -0
  34. data/test/fixtures/app/Doxyfile +1600 -0
  35. data/test/fixtures/app/bindings/all_lua.cpp +299 -0
  36. data/test/fixtures/app/include/matrix.h +283 -0
  37. data/test/fixtures/app/make_lua_bindings.rb +13 -0
  38. data/test/fixtures/app/vendor/lua/CMakeLists.txt +25 -0
  39. data/test/fixtures/app/vendor/lua/COPYRIGHT +34 -0
  40. data/test/fixtures/app/vendor/lua/HISTORY +183 -0
  41. data/test/fixtures/app/vendor/lua/INSTALL +99 -0
  42. data/test/fixtures/app/vendor/lua/Makefile +183 -0
  43. data/test/fixtures/app/vendor/lua/README +37 -0
  44. data/test/fixtures/app/vendor/lua/lapi.c +1080 -0
  45. data/test/fixtures/app/vendor/lua/lapi.h +16 -0
  46. data/test/fixtures/app/vendor/lua/lauxlib.c +653 -0
  47. data/test/fixtures/app/vendor/lua/lauxlib.h +174 -0
  48. data/test/fixtures/app/vendor/lua/lbaselib.c +643 -0
  49. data/test/fixtures/app/vendor/lua/lcode.c +839 -0
  50. data/test/fixtures/app/vendor/lua/lcode.h +76 -0
  51. data/test/fixtures/app/vendor/lua/ldblib.c +397 -0
  52. data/test/fixtures/app/vendor/lua/ldebug.c +622 -0
  53. data/test/fixtures/app/vendor/lua/ldebug.h +33 -0
  54. data/test/fixtures/app/vendor/lua/ldo.c +516 -0
  55. data/test/fixtures/app/vendor/lua/ldo.h +57 -0
  56. data/test/fixtures/app/vendor/lua/ldump.c +164 -0
  57. data/test/fixtures/app/vendor/lua/lfunc.c +174 -0
  58. data/test/fixtures/app/vendor/lua/lfunc.h +34 -0
  59. data/test/fixtures/app/vendor/lua/lgc.c +711 -0
  60. data/test/fixtures/app/vendor/lua/lgc.h +110 -0
  61. data/test/fixtures/app/vendor/lua/liblua.a +0 -0
  62. data/test/fixtures/app/vendor/lua/linit.c +38 -0
  63. data/test/fixtures/app/vendor/lua/liolib.c +532 -0
  64. data/test/fixtures/app/vendor/lua/llex.c +461 -0
  65. data/test/fixtures/app/vendor/lua/llex.h +81 -0
  66. data/test/fixtures/app/vendor/lua/llimits.h +128 -0
  67. data/test/fixtures/app/vendor/lua/lmathlib.c +263 -0
  68. data/test/fixtures/app/vendor/lua/lmem.c +86 -0
  69. data/test/fixtures/app/vendor/lua/lmem.h +49 -0
  70. data/test/fixtures/app/vendor/lua/loadlib.c +664 -0
  71. data/test/fixtures/app/vendor/lua/lobject.c +214 -0
  72. data/test/fixtures/app/vendor/lua/lobject.h +381 -0
  73. data/test/fixtures/app/vendor/lua/lopcodes.c +102 -0
  74. data/test/fixtures/app/vendor/lua/lopcodes.h +268 -0
  75. data/test/fixtures/app/vendor/lua/loslib.c +244 -0
  76. data/test/fixtures/app/vendor/lua/lparser.c +1337 -0
  77. data/test/fixtures/app/vendor/lua/lparser.h +82 -0
  78. data/test/fixtures/app/vendor/lua/lstate.c +214 -0
  79. data/test/fixtures/app/vendor/lua/lstate.h +168 -0
  80. data/test/fixtures/app/vendor/lua/lstring.c +111 -0
  81. data/test/fixtures/app/vendor/lua/lstring.h +31 -0
  82. data/test/fixtures/app/vendor/lua/lstrlib.c +868 -0
  83. data/test/fixtures/app/vendor/lua/ltable.c +588 -0
  84. data/test/fixtures/app/vendor/lua/ltable.h +40 -0
  85. data/test/fixtures/app/vendor/lua/ltablib.c +278 -0
  86. data/test/fixtures/app/vendor/lua/ltm.c +75 -0
  87. data/test/fixtures/app/vendor/lua/ltm.h +54 -0
  88. data/test/fixtures/app/vendor/lua/lua.c +695 -0
  89. data/test/fixtures/app/vendor/lua/lua.h +385 -0
  90. data/test/fixtures/app/vendor/lua/lua_dub_helper.h +77 -0
  91. data/test/fixtures/app/vendor/lua/luac +0 -0
  92. data/test/fixtures/app/vendor/lua/luac.c +200 -0
  93. data/test/fixtures/app/vendor/lua/luaconf.h +762 -0
  94. data/test/fixtures/app/vendor/lua/lualib.h +53 -0
  95. data/test/fixtures/app/vendor/lua/lundump.c +223 -0
  96. data/test/fixtures/app/vendor/lua/lundump.h +36 -0
  97. data/test/fixtures/app/vendor/lua/lvm.c +765 -0
  98. data/test/fixtures/app/vendor/lua/lvm.h +36 -0
  99. data/test/fixtures/app/vendor/lua/lzio.c +82 -0
  100. data/test/fixtures/app/vendor/lua/lzio.h +67 -0
  101. data/test/fixtures/app/vendor/lua/matrix.h +102 -0
  102. data/test/fixtures/app/vendor/lua/print.c +227 -0
  103. data/test/fixtures/app/vendor/lua/test/README +26 -0
  104. data/test/fixtures/app/vendor/lua/test/bisect.lua +27 -0
  105. data/test/fixtures/app/vendor/lua/test/cf.lua +16 -0
  106. data/test/fixtures/app/vendor/lua/test/echo.lua +5 -0
  107. data/test/fixtures/app/vendor/lua/test/env.lua +7 -0
  108. data/test/fixtures/app/vendor/lua/test/factorial.lua +32 -0
  109. data/test/fixtures/app/vendor/lua/test/fib.lua +40 -0
  110. data/test/fixtures/app/vendor/lua/test/fibfor.lua +13 -0
  111. data/test/fixtures/app/vendor/lua/test/globals.lua +13 -0
  112. data/test/fixtures/app/vendor/lua/test/hello.lua +3 -0
  113. data/test/fixtures/app/vendor/lua/test/life.lua +111 -0
  114. data/test/fixtures/app/vendor/lua/test/luac.lua +7 -0
  115. data/test/fixtures/app/vendor/lua/test/printf.lua +7 -0
  116. data/test/fixtures/app/vendor/lua/test/readonly.lua +12 -0
  117. data/test/fixtures/app/vendor/lua/test/sieve.lua +29 -0
  118. data/test/fixtures/app/vendor/lua/test/sort.lua +66 -0
  119. data/test/fixtures/app/vendor/lua/test/table.lua +12 -0
  120. data/test/fixtures/app/vendor/lua/test/trace-calls.lua +32 -0
  121. data/test/fixtures/app/vendor/lua/test/trace-globals.lua +38 -0
  122. data/test/fixtures/app/vendor/lua/test/xd.lua +14 -0
  123. data/test/fixtures/app/xml/classdub_1_1_base.xml +85 -0
  124. data/test/fixtures/app/xml/classdub_1_1_custom_destructor.xml +67 -0
  125. data/test/fixtures/app/xml/classdub_1_1_deletable_out_of_lua.xml +43 -0
  126. data/test/fixtures/app/xml/classdub_1_1_matrix.xml +482 -0
  127. data/test/fixtures/app/xml/classdub_1_1_no_destructor.xml +49 -0
  128. data/test/fixtures/app/xml/classdub_1_1_priv_sub_base.xml +89 -0
  129. data/test/fixtures/app/xml/classdub_1_1_private_constr.xml +68 -0
  130. data/test/fixtures/app/xml/classdub_1_1_static_constr.xml +69 -0
  131. data/test/fixtures/app/xml/classdub_1_1_sub_base.xml +89 -0
  132. data/test/fixtures/app/xml/classdub_1_1_t_mat.xml +252 -0
  133. data/test/fixtures/app/xml/combine.xslt +15 -0
  134. data/test/fixtures/app/xml/compound.xsd +814 -0
  135. data/test/fixtures/app/xml/dir_53661a2bdeb1d55e60581a7e15deb763.xml +12 -0
  136. data/test/fixtures/app/xml/index.xml +91 -0
  137. data/test/fixtures/app/xml/index.xsd +66 -0
  138. data/test/fixtures/app/xml/matrix_8h.xml +310 -0
  139. data/test/fixtures/app/xml/namespacedub.xml +48 -0
  140. data/test/fixtures/classcv_1_1_mat.xml +1996 -0
  141. data/test/fixtures/classcv_1_1_point__.xml +341 -0
  142. data/test/fixtures/classcv_1_1_scalar__.xml +269 -0
  143. data/test/fixtures/classcv_1_1_size__.xml +270 -0
  144. data/test/fixtures/dummy_class.cpp.erb +1 -0
  145. data/test/fixtures/dummy_function.cpp.erb +1 -0
  146. data/test/fixtures/group___magic_type.xml +406 -0
  147. data/test/fixtures/namespacecv.xml +12659 -0
  148. data/test/function_group_test.rb +43 -0
  149. data/test/function_test.rb +405 -0
  150. data/test/group_test.rb +241 -0
  151. data/test/helper.rb +34 -0
  152. data/test/klass_test.rb +551 -0
  153. data/test/lua_function_gen_test.rb +242 -0
  154. data/test/namespace_test.rb +220 -0
  155. data/test/parser_test.rb +36 -0
  156. metadata +229 -272
  157. checksums.yaml +0 -7
  158. data/lib/open_api_sdk/analytics.rb +0 -99
  159. data/lib/open_api_sdk/domains.rb +0 -353
  160. data/lib/open_api_sdk/dub.rb +0 -88
  161. data/lib/open_api_sdk/links.rb +0 -766
  162. data/lib/open_api_sdk/metatags.rb +0 -54
  163. data/lib/open_api_sdk/models/operations/bulkcreatelinks_response.rb +0 -60
  164. data/lib/open_api_sdk/models/operations/bulkupdatelinks_requestbody.rb +0 -27
  165. data/lib/open_api_sdk/models/operations/bulkupdatelinks_response.rb +0 -60
  166. data/lib/open_api_sdk/models/operations/color.rb +0 -24
  167. data/lib/open_api_sdk/models/operations/createdomain_requestbody.rb +0 -33
  168. data/lib/open_api_sdk/models/operations/createdomain_response.rb +0 -60
  169. data/lib/open_api_sdk/models/operations/createlink_requestbody.rb +0 -95
  170. data/lib/open_api_sdk/models/operations/createlink_response.rb +0 -60
  171. data/lib/open_api_sdk/models/operations/createtag_requestbody.rb +0 -32
  172. data/lib/open_api_sdk/models/operations/createtag_response.rb +0 -60
  173. data/lib/open_api_sdk/models/operations/data.rb +0 -83
  174. data/lib/open_api_sdk/models/operations/deletedomain_request.rb +0 -24
  175. data/lib/open_api_sdk/models/operations/deletedomain_response.rb +0 -60
  176. data/lib/open_api_sdk/models/operations/deletedomain_responsebody.rb +0 -24
  177. data/lib/open_api_sdk/models/operations/deletelink_request.rb +0 -24
  178. data/lib/open_api_sdk/models/operations/deletelink_response.rb +0 -60
  179. data/lib/open_api_sdk/models/operations/deletelink_responsebody.rb +0 -24
  180. data/lib/open_api_sdk/models/operations/event.rb +0 -21
  181. data/lib/open_api_sdk/models/operations/getlinkinfo_request.rb +0 -33
  182. data/lib/open_api_sdk/models/operations/getlinkinfo_response.rb +0 -60
  183. data/lib/open_api_sdk/models/operations/getlinks_request.rb +0 -51
  184. data/lib/open_api_sdk/models/operations/getlinks_response.rb +0 -60
  185. data/lib/open_api_sdk/models/operations/getlinkscount_request.rb +0 -48
  186. data/lib/open_api_sdk/models/operations/getlinkscount_response.rb +0 -60
  187. data/lib/open_api_sdk/models/operations/getmetatags_request.rb +0 -24
  188. data/lib/open_api_sdk/models/operations/getmetatags_response.rb +0 -33
  189. data/lib/open_api_sdk/models/operations/getmetatags_responsebody.rb +0 -30
  190. data/lib/open_api_sdk/models/operations/getqrcode_request.rb +0 -39
  191. data/lib/open_api_sdk/models/operations/getqrcode_response.rb +0 -60
  192. data/lib/open_api_sdk/models/operations/gettags_response.rb +0 -60
  193. data/lib/open_api_sdk/models/operations/getworkspace_request.rb +0 -24
  194. data/lib/open_api_sdk/models/operations/getworkspace_response.rb +0 -60
  195. data/lib/open_api_sdk/models/operations/groupby.rb +0 -28
  196. data/lib/open_api_sdk/models/operations/interval.rb +0 -25
  197. data/lib/open_api_sdk/models/operations/level.rb +0 -21
  198. data/lib/open_api_sdk/models/operations/listdomains_response.rb +0 -60
  199. data/lib/open_api_sdk/models/operations/paymentprocessor.rb +0 -20
  200. data/lib/open_api_sdk/models/operations/requestbody.rb +0 -95
  201. data/lib/open_api_sdk/models/operations/retrieveanalytics_request.rb +0 -81
  202. data/lib/open_api_sdk/models/operations/retrieveanalytics_response.rb +0 -60
  203. data/lib/open_api_sdk/models/operations/sort.rb +0 -20
  204. data/lib/open_api_sdk/models/operations/trackcustomer_requestbody.rb +0 -33
  205. data/lib/open_api_sdk/models/operations/trackcustomer_response.rb +0 -60
  206. data/lib/open_api_sdk/models/operations/trackcustomer_responsebody.rb +0 -33
  207. data/lib/open_api_sdk/models/operations/tracklead_requestbody.rb +0 -42
  208. data/lib/open_api_sdk/models/operations/tracklead_response.rb +0 -60
  209. data/lib/open_api_sdk/models/operations/tracklead_responsebody.rb +0 -42
  210. data/lib/open_api_sdk/models/operations/tracksale_requestbody.rb +0 -42
  211. data/lib/open_api_sdk/models/operations/tracksale_response.rb +0 -60
  212. data/lib/open_api_sdk/models/operations/tracksale_responsebody.rb +0 -42
  213. data/lib/open_api_sdk/models/operations/updatedomain_request.rb +0 -27
  214. data/lib/open_api_sdk/models/operations/updatedomain_requestbody.rb +0 -33
  215. data/lib/open_api_sdk/models/operations/updatedomain_response.rb +0 -60
  216. data/lib/open_api_sdk/models/operations/updatelink_request.rb +0 -27
  217. data/lib/open_api_sdk/models/operations/updatelink_requestbody.rb +0 -95
  218. data/lib/open_api_sdk/models/operations/updatelink_response.rb +0 -60
  219. data/lib/open_api_sdk/models/operations/updatetag_color.rb +0 -24
  220. data/lib/open_api_sdk/models/operations/updatetag_request.rb +0 -27
  221. data/lib/open_api_sdk/models/operations/updatetag_requestbody.rb +0 -32
  222. data/lib/open_api_sdk/models/operations/updatetag_response.rb +0 -60
  223. data/lib/open_api_sdk/models/operations/updateworkspace_request.rb +0 -27
  224. data/lib/open_api_sdk/models/operations/updateworkspace_requestbody.rb +0 -27
  225. data/lib/open_api_sdk/models/operations/updateworkspace_response.rb +0 -60
  226. data/lib/open_api_sdk/models/operations/upsertlink_requestbody.rb +0 -95
  227. data/lib/open_api_sdk/models/operations/upsertlink_response.rb +0 -60
  228. data/lib/open_api_sdk/models/operations.rb +0 -74
  229. data/lib/open_api_sdk/models/shared/badrequest.rb +0 -24
  230. data/lib/open_api_sdk/models/shared/code.rb +0 -18
  231. data/lib/open_api_sdk/models/shared/color.rb +0 -24
  232. data/lib/open_api_sdk/models/shared/conflict.rb +0 -24
  233. data/lib/open_api_sdk/models/shared/conflict_code.rb +0 -18
  234. data/lib/open_api_sdk/models/shared/conflict_error.rb +0 -30
  235. data/lib/open_api_sdk/models/shared/countrycode.rb +0 -267
  236. data/lib/open_api_sdk/models/shared/domains.rb +0 -27
  237. data/lib/open_api_sdk/models/shared/domainschema.rb +0 -48
  238. data/lib/open_api_sdk/models/shared/error.rb +0 -30
  239. data/lib/open_api_sdk/models/shared/forbidden.rb +0 -24
  240. data/lib/open_api_sdk/models/shared/forbidden_code.rb +0 -18
  241. data/lib/open_api_sdk/models/shared/forbidden_error.rb +0 -30
  242. data/lib/open_api_sdk/models/shared/geo.rb +0 -771
  243. data/lib/open_api_sdk/models/shared/internalservererror.rb +0 -24
  244. data/lib/open_api_sdk/models/shared/internalservererror_code.rb +0 -18
  245. data/lib/open_api_sdk/models/shared/internalservererror_error.rb +0 -30
  246. data/lib/open_api_sdk/models/shared/inviteexpired.rb +0 -24
  247. data/lib/open_api_sdk/models/shared/inviteexpired_code.rb +0 -18
  248. data/lib/open_api_sdk/models/shared/inviteexpired_error.rb +0 -30
  249. data/lib/open_api_sdk/models/shared/linkgeotargeting.rb +0 -771
  250. data/lib/open_api_sdk/models/shared/linkschema.rb +0 -142
  251. data/lib/open_api_sdk/models/shared/notfound.rb +0 -24
  252. data/lib/open_api_sdk/models/shared/notfound_code.rb +0 -18
  253. data/lib/open_api_sdk/models/shared/notfound_error.rb +0 -30
  254. data/lib/open_api_sdk/models/shared/plan.rb +0 -24
  255. data/lib/open_api_sdk/models/shared/ratelimitexceeded.rb +0 -24
  256. data/lib/open_api_sdk/models/shared/ratelimitexceeded_code.rb +0 -18
  257. data/lib/open_api_sdk/models/shared/ratelimitexceeded_error.rb +0 -30
  258. data/lib/open_api_sdk/models/shared/role.rb +0 -19
  259. data/lib/open_api_sdk/models/shared/security.rb +0 -24
  260. data/lib/open_api_sdk/models/shared/tagschema.rb +0 -30
  261. data/lib/open_api_sdk/models/shared/unauthorized.rb +0 -24
  262. data/lib/open_api_sdk/models/shared/unauthorized_code.rb +0 -18
  263. data/lib/open_api_sdk/models/shared/unauthorized_error.rb +0 -30
  264. data/lib/open_api_sdk/models/shared/unprocessableentity.rb +0 -24
  265. data/lib/open_api_sdk/models/shared/unprocessableentity_code.rb +0 -18
  266. data/lib/open_api_sdk/models/shared/unprocessableentity_error.rb +0 -30
  267. data/lib/open_api_sdk/models/shared/users.rb +0 -24
  268. data/lib/open_api_sdk/models/shared/workspaceschema.rb +0 -81
  269. data/lib/open_api_sdk/models/shared.rb +0 -49
  270. data/lib/open_api_sdk/qr_codes.rb +0 -97
  271. data/lib/open_api_sdk/sdkconfiguration.rb +0 -52
  272. data/lib/open_api_sdk/tags.rb +0 -272
  273. data/lib/open_api_sdk/track.rb +0 -276
  274. data/lib/open_api_sdk/utils/metadata_fields.rb +0 -150
  275. data/lib/open_api_sdk/utils/t.rb +0 -59
  276. data/lib/open_api_sdk/utils/utils.rb +0 -772
  277. data/lib/open_api_sdk/workspaces.rb +0 -192
@@ -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
+