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,299 @@
1
+ #include "matrix.h"
2
+
3
+ #include "lua_cpp_helper.h"
4
+
5
+
6
+ using namespace dub;
7
+
8
+
9
+ /* ============================ Constructors ====================== */
10
+
11
+
12
+ /** dub::Matrix::Matrix()
13
+ * app/include/matrix.h:14
14
+ */
15
+ static int Matrix_Matrix1(lua_State *L) {
16
+ Matrix * retval__ = new Matrix();
17
+ lua_pushclass<Matrix>(L, retval__, "dub.Matrix");
18
+ return 1;
19
+ }
20
+
21
+
22
+ /** dub::Matrix::Matrix(int rows, int cols)
23
+ * app/include/matrix.h:16
24
+ */
25
+ static int Matrix_Matrix2(lua_State *L) {
26
+ int rows = luaL_checkint (L, 1);
27
+ int cols = luaL_checkint (L, 2);
28
+ Matrix * retval__ = new Matrix(rows, cols);
29
+ lua_pushclass<Matrix>(L, retval__, "dub.Matrix");
30
+ return 1;
31
+ }
32
+
33
+
34
+
35
+ /** Overloaded function chooser for Matrix(...) */
36
+ static int Matrix_Matrix(lua_State *L) {
37
+ int type__ = lua_type(L, 1);
38
+ if (type__ == LUA_TNUMBER) {
39
+ return Matrix_Matrix2(L);
40
+ } else if (type__ == LUA_TNONE) {
41
+ return Matrix_Matrix1(L);
42
+ } else {
43
+ // use any to raise errors
44
+ return Matrix_Matrix1(L);
45
+ }
46
+ }
47
+
48
+ /* ============================ Destructor ====================== */
49
+
50
+ static int Matrix_destructor(lua_State *L) {
51
+ Matrix **userdata = (Matrix**)luaL_checkudata(L, 1, "dub.Matrix");
52
+ if (*userdata) delete *userdata;
53
+ *userdata = NULL;
54
+ return 0;
55
+ }
56
+
57
+ /* ============================ tostring ====================== */
58
+
59
+ static int Matrix__tostring(lua_State *L) {
60
+ Matrix **userdata = (Matrix**)luaL_checkudata(L, 1, "dub.Matrix");
61
+ lua_pushfstring(L, "dub.Matrix: %p", *userdata);
62
+ return 1;
63
+ }
64
+
65
+ /* ============================ Member Methods ====================== */
66
+
67
+
68
+ /** double dub::Matrix::cols()
69
+ * app/include/matrix.h:29
70
+ */
71
+ static int Matrix_cols(lua_State *L) {
72
+ Matrix *self__ = *((Matrix**)luaL_checkudata(L, 1, "dub.Matrix"));
73
+ lua_remove(L, 1);
74
+ double retval__ = self__->cols();
75
+ lua_pushnumber(L, retval__);
76
+ return 1;
77
+ }
78
+
79
+
80
+ /** double dub::Matrix::rows()
81
+ * app/include/matrix.h:33
82
+ */
83
+ static int Matrix_rows(lua_State *L) {
84
+ Matrix *self__ = *((Matrix**)luaL_checkudata(L, 1, "dub.Matrix"));
85
+ lua_remove(L, 1);
86
+ double retval__ = self__->rows();
87
+ lua_pushnumber(L, retval__);
88
+ return 1;
89
+ }
90
+
91
+
92
+ /** size_t dub::Matrix::size()
93
+ * app/include/matrix.h:25
94
+ */
95
+ static int Matrix_size(lua_State *L) {
96
+ Matrix *self__ = *((Matrix**)luaL_checkudata(L, 1, "dub.Matrix"));
97
+ lua_remove(L, 1);
98
+ size_t retval__ = self__->size();
99
+ lua_pushnumber(L, retval__);
100
+ return 1;
101
+ }
102
+
103
+
104
+
105
+
106
+ /* ============================ Lua Registration ====================== */
107
+
108
+ static const struct luaL_Reg Matrix_member_methods[] = {
109
+ {"cols" , Matrix_cols},
110
+ {"rows" , Matrix_rows},
111
+ {"size" , Matrix_size},
112
+ {"__tostring" , Matrix__tostring},
113
+ {"__gc" , Matrix_destructor},
114
+ {NULL, NULL},
115
+ };
116
+
117
+ static const struct luaL_Reg Matrix_namespace_methods[] = {
118
+ {"Matrix" , Matrix_Matrix},
119
+ {NULL, NULL},
120
+ };
121
+
122
+ static void luaopen_dub_Matrix(lua_State *L) {
123
+ // Create the metatable which will contain all the member methods
124
+ luaL_newmetatable(L, "dub.Matrix"); // "dub.Matrix"
125
+
126
+ // metatable.__index = metatable (find methods in the table itself)
127
+ lua_pushvalue(L, -1);
128
+ lua_setfield(L, -2, "__index");
129
+
130
+ // register member methods
131
+ luaL_register(L, NULL, Matrix_member_methods); // dub_Matrix_member_methods
132
+
133
+ // register class methods in a global table like "dub.Matrix"
134
+ luaL_register(L, "dub", Matrix_namespace_methods); // dub_Matrix_class_methods
135
+ }
136
+ #include "matrix.h"
137
+
138
+ #include "lua_cpp_helper.h"
139
+
140
+
141
+ using namespace dub;
142
+
143
+
144
+ /* ============================ Constructors ====================== */
145
+
146
+
147
+ /** dub::FloatMat::FloatMat()
148
+ * app/include/matrix.h:62
149
+ */
150
+ static int FloatMat_FloatMat1(lua_State *L) {
151
+ FloatMat * retval__ = new FloatMat();
152
+ lua_pushclass<FloatMat>(L, retval__, "dub.FloatMat");
153
+ return 1;
154
+ }
155
+
156
+
157
+ /** dub::FloatMat::FloatMat(int rows, int cols)
158
+ * app/include/matrix.h:64
159
+ */
160
+ static int FloatMat_FloatMat2(lua_State *L) {
161
+ int rows = luaL_checkint (L, 1);
162
+ int cols = luaL_checkint (L, 2);
163
+ FloatMat * retval__ = new FloatMat(rows, cols);
164
+ lua_pushclass<FloatMat>(L, retval__, "dub.FloatMat");
165
+ return 1;
166
+ }
167
+
168
+
169
+
170
+ /** Overloaded function chooser for FloatMat(...) */
171
+ static int FloatMat_FloatMat(lua_State *L) {
172
+ int type__ = lua_type(L, 1);
173
+ if (type__ == LUA_TNUMBER) {
174
+ return FloatMat_FloatMat2(L);
175
+ } else if (type__ == LUA_TNONE) {
176
+ return FloatMat_FloatMat1(L);
177
+ } else {
178
+ // use any to raise errors
179
+ return FloatMat_FloatMat1(L);
180
+ }
181
+ }
182
+
183
+ /* ============================ Destructor ====================== */
184
+
185
+ static int FloatMat_destructor(lua_State *L) {
186
+ FloatMat **userdata = (FloatMat**)luaL_checkudata(L, 1, "dub.FloatMat");
187
+ if (*userdata) delete *userdata;
188
+ *userdata = NULL;
189
+ return 0;
190
+ }
191
+
192
+ /* ============================ tostring ====================== */
193
+
194
+ static int FloatMat__tostring(lua_State *L) {
195
+ FloatMat **userdata = (FloatMat**)luaL_checkudata(L, 1, "dub.FloatMat");
196
+ lua_pushfstring(L, "dub.FloatMat: %p", *userdata);
197
+ return 1;
198
+ }
199
+
200
+ /* ============================ Member Methods ====================== */
201
+
202
+
203
+ /** size_t dub::FloatMat::cols()
204
+ * app/include/matrix.h:77
205
+ */
206
+ static int FloatMat_cols(lua_State *L) {
207
+ FloatMat *self__ = *((FloatMat**)luaL_checkudata(L, 1, "dub.FloatMat"));
208
+ lua_remove(L, 1);
209
+ size_t retval__ = self__->cols();
210
+ lua_pushnumber(L, retval__);
211
+ return 1;
212
+ }
213
+
214
+
215
+ /** void dub::FloatMat::fill(T value)
216
+ * app/include/matrix.h:85
217
+ */
218
+ static int FloatMat_fill(lua_State *L) {
219
+ FloatMat *self__ = *((FloatMat**)luaL_checkudata(L, 1, "dub.FloatMat"));
220
+ lua_remove(L, 1);
221
+ float value = luaL_checknumber(L, 1);
222
+ self__->fill(value);
223
+ return 0;
224
+ }
225
+
226
+
227
+ /** T dub::FloatMat::get(size_t row, size_t col)
228
+ * app/include/matrix.h:89
229
+ */
230
+ static int FloatMat_get(lua_State *L) {
231
+ FloatMat *self__ = *((FloatMat**)luaL_checkudata(L, 1, "dub.FloatMat"));
232
+ lua_remove(L, 1);
233
+ size_t row = luaL_checknumber(L, 1);
234
+ size_t col = luaL_checknumber(L, 2);
235
+ float retval__ = self__->get(row, col);
236
+ lua_pushnumber(L, retval__);
237
+ return 1;
238
+ }
239
+
240
+
241
+ /** size_t dub::FloatMat::rows()
242
+ * app/include/matrix.h:81
243
+ */
244
+ static int FloatMat_rows(lua_State *L) {
245
+ FloatMat *self__ = *((FloatMat**)luaL_checkudata(L, 1, "dub.FloatMat"));
246
+ lua_remove(L, 1);
247
+ size_t retval__ = self__->rows();
248
+ lua_pushnumber(L, retval__);
249
+ return 1;
250
+ }
251
+
252
+
253
+ /** size_t dub::FloatMat::size()
254
+ * app/include/matrix.h:73
255
+ */
256
+ static int FloatMat_size(lua_State *L) {
257
+ FloatMat *self__ = *((FloatMat**)luaL_checkudata(L, 1, "dub.FloatMat"));
258
+ lua_remove(L, 1);
259
+ size_t retval__ = self__->size();
260
+ lua_pushnumber(L, retval__);
261
+ return 1;
262
+ }
263
+
264
+
265
+
266
+
267
+ /* ============================ Lua Registration ====================== */
268
+
269
+ static const struct luaL_Reg FloatMat_member_methods[] = {
270
+ {"cols" , FloatMat_cols},
271
+ {"fill" , FloatMat_fill},
272
+ {"get" , FloatMat_get},
273
+ {"rows" , FloatMat_rows},
274
+ {"size" , FloatMat_size},
275
+ {"__tostring" , FloatMat__tostring},
276
+ {"__gc" , FloatMat_destructor},
277
+ {NULL, NULL},
278
+ };
279
+
280
+ static const struct luaL_Reg FloatMat_namespace_methods[] = {
281
+ {"FloatMat" , FloatMat_FloatMat},
282
+ {"FMatrix" , FloatMat_FloatMat},
283
+ {NULL, NULL},
284
+ };
285
+
286
+ static void luaopen_dub_FloatMat(lua_State *L) {
287
+ // Create the metatable which will contain all the member methods
288
+ luaL_newmetatable(L, "dub.FloatMat"); // "dub.Matrix"
289
+
290
+ // metatable.__index = metatable (find methods in the table itself)
291
+ lua_pushvalue(L, -1);
292
+ lua_setfield(L, -2, "__index");
293
+
294
+ // register member methods
295
+ luaL_register(L, NULL, FloatMat_member_methods); // dub_Matrix_member_methods
296
+
297
+ // register class methods in a global table like "dub.Matrix"
298
+ luaL_register(L, "dub", FloatMat_namespace_methods); // dub_Matrix_class_methods
299
+ }
@@ -0,0 +1,283 @@
1
+ #ifndef DOXY_GENERATOR_TEST_FIXTURES_APP_MATRIX_H_
2
+ #define DOXY_GENERATOR_TEST_FIXTURES_APP_MATRIX_H_
3
+
4
+ #include <cstring>
5
+ #include <stdlib.h> // malloc
6
+
7
+
8
+ /** @file */
9
+ typedef int LuaStackSize;
10
+
11
+ namespace dub {
12
+
13
+ /** Matrix class.
14
+ *
15
+ * @dub var_from_dub:'dummy value'
16
+ * other_from_dub: "some other value"
17
+ * ignore: 'bad_method'
18
+ */
19
+ class Matrix {
20
+
21
+ Q_PROPERTY(size_t foo_prop READ size)
22
+ Q_PROPERTY(size_t size READ size WRITE setSize)
23
+ public:
24
+ Matrix() : data_(NULL), rows_(0), cols_(0) {}
25
+
26
+ Matrix(int rows, int cols) : rows_(rows), cols_(cols) {
27
+ data_ = (double*)malloc(size() * sizeof(double));
28
+ }
29
+
30
+ ~Matrix() {
31
+ if (data_) free(data_);
32
+ }
33
+
34
+ /** Return size of matrix (rows * cols). */
35
+ size_t size() {
36
+ return rows_ * cols_;
37
+ }
38
+
39
+ double cols() {
40
+ return cols_;
41
+ }
42
+
43
+ double rows() {
44
+ return rows_;
45
+ }
46
+
47
+ /** Dummy template based class method.
48
+ */
49
+ template<class T>
50
+ T *give_me_tea() {
51
+ return new T();
52
+ }
53
+
54
+ operator size_t() {
55
+ return size();
56
+ }
57
+
58
+ void mul(TMat<int> other) {
59
+ // dummy
60
+ }
61
+
62
+ void do_something(int i, bool fast=false) {
63
+
64
+ }
65
+
66
+ void do_something(int i, const char *baz) {
67
+ // overloaded member method
68
+ }
69
+
70
+ void bad_method(int i) {
71
+ // method should not exist in bindings
72
+ }
73
+
74
+ void use_other_lib(const std::string &name) {
75
+ // dummy
76
+ }
77
+
78
+ int *ptr() {
79
+ // dummy
80
+ }
81
+
82
+ bool true() {
83
+ // dummy
84
+ return true;
85
+ }
86
+
87
+ const char *name() {
88
+ // should make method return string
89
+ }
90
+
91
+ int *lua_thing(int a, lua_State *L, int b) {
92
+ // dummy
93
+ }
94
+
95
+ LuaStackSize work_with_lua(int a, int b) {
96
+ // method that directly pushes lua values on the stack
97
+ return 2;
98
+ }
99
+
100
+ /** Named constructor.
101
+ */
102
+ static Matrix *MakeMatrix(int rows, int cols) {
103
+ return new Matrix(rows, cols);
104
+ }
105
+
106
+ private:
107
+ Matrix(int x) {
108
+ // private constructor
109
+ }
110
+
111
+ int private_method() {
112
+ // should not be implemented
113
+ return 0;
114
+ }
115
+
116
+ protected:
117
+
118
+ int protected_method() {
119
+ // should not be implemented
120
+ return 0;
121
+ }
122
+
123
+ double *data_;
124
+ size_t rows_;
125
+ size_t cols_;
126
+ };
127
+
128
+
129
+ /** Test that private constructors are not used.
130
+ */
131
+ class PrivateConstr {
132
+ public:
133
+
134
+ PrivateConstr(int x) {}
135
+
136
+ ~PrivateConstr() {}
137
+
138
+ private:
139
+ // should not be used to build a FunctionGroup
140
+ PrivateConstr(const char *name) {}
141
+ };
142
+
143
+ /** Test that custom destructors are used.
144
+ * @dub destructor: 'dub_destroy'
145
+ */
146
+ class CustomDestructor : public DeletableOutOfLua
147
+ {
148
+ public:
149
+
150
+ CustomDestructor(int x) {}
151
+
152
+ ~CustomDestructor() {}
153
+
154
+ void do_this(int x) {
155
+
156
+ }
157
+ };
158
+
159
+ /** Test that no destructor option is used.
160
+ *
161
+ * @dub destructor: ''
162
+ */
163
+ class NoDestructor {
164
+ public:
165
+
166
+ NoDestructor(int x) {}
167
+
168
+ ~NoDestructor() {}
169
+ };
170
+
171
+ /** Test that we can use a static constructor.
172
+ * @dub constructor: 'MakeStaticConstr'
173
+ */
174
+ class StaticConstr {
175
+ public:
176
+
177
+ StaticConstr(int x) {}
178
+
179
+ ~StaticConstr() {}
180
+
181
+ // We usually want to push the userdata ourself in
182
+ // such cases.
183
+ static LuaStackSize MakeStaticConstr(lua_State *L) {
184
+ return 0; // fake error (nil return)
185
+ }
186
+ };
187
+
188
+ // class inheritence tests
189
+ class Base {
190
+ public:
191
+ Base() {}
192
+ ~Base() {}
193
+
194
+ const char *method_in_base(int x, float y) {
195
+ return "nothing";
196
+ }
197
+ };
198
+
199
+ // class inheritence tests
200
+ class SubBase : public Base {
201
+ public:
202
+ SubBase() {}
203
+ ~SubBase() {}
204
+
205
+ void method_in_sub(float y) {
206
+ return "nothing";
207
+ }
208
+ };
209
+
210
+ // class inheritence tests
211
+ class PrivSubBase : private Base {
212
+ public:
213
+ SubBase() {}
214
+ ~SubBase() {}
215
+
216
+ void method_in_sub(float y) {
217
+ return "nothing";
218
+ }
219
+ };
220
+ template<class T>
221
+ class TMat {
222
+ public:
223
+ TMat() : data_(NULL), rows_(0), cols_(0) {}
224
+
225
+ TMat(int rows, int cols) : rows_(rows), cols_(cols) {
226
+ data_ = (T*)malloc(size() * sizeof(T));
227
+ }
228
+
229
+ // test constructor with T parameter
230
+ TMat(T dummy) {
231
+
232
+ }
233
+
234
+ ~TMat() {
235
+ if (data_) free(data_);
236
+ }
237
+
238
+ /** Dummy template based class method.
239
+ */
240
+ template<class T2>
241
+ T2 *give_me_tea() {
242
+ return new T2();
243
+ }
244
+
245
+ /** Return size of matrix (rows * cols). */
246
+ size_t size() {
247
+ return rows_ * cols_;
248
+ }
249
+
250
+ size_t cols() {
251
+ return cols_;
252
+ }
253
+
254
+ size_t rows() {
255
+ return rows_;
256
+ }
257
+
258
+ void fill(T value) {
259
+ // dummy
260
+ }
261
+
262
+ void FunkyThing(double v[7]) {
263
+
264
+ }
265
+
266
+ T get(size_t row, size_t col) {
267
+ return data_[row * cols_ + col];
268
+ }
269
+
270
+ private:
271
+ T *data_;
272
+ size_t rows_;
273
+ size_t cols_;
274
+ };
275
+
276
+ /** @var FloatMat
277
+ */
278
+ typedef TMat<float> FloatMat;
279
+ typedef FloatMat FMatrix;
280
+
281
+ } // dub
282
+
283
+ #endif // DOXY_GENERATOR_TEST_FIXTURES_APP_MATRIX_H_
@@ -0,0 +1,13 @@
1
+ require 'dub'
2
+ require 'dub/lua'
3
+ require 'pathname'
4
+
5
+ dub = Dub.parse(Pathname(__FILE__).dirname + 'xml/namespacedub.xml')[:dub]
6
+
7
+ Dub::Lua.bind(dub)
8
+
9
+ File.open(Pathname(__FILE__).dirname + "bindings/all_lua.cpp", 'wb') do |f|
10
+ %w{Matrix FloatMat}.each do |name|
11
+ f.puts dub[name]
12
+ end
13
+ end
@@ -0,0 +1,25 @@
1
+ # ----------------------------------------------------------------------------
2
+ # CMake file for Lua. See root CMakeLists.txt
3
+ #
4
+ # ----------------------------------------------------------------------------
5
+ project(lua)
6
+
7
+ include_directories(${CMAKE_CURRENT_SOURCE_DIR})
8
+
9
+ # ----------------------------------------------------------------------------------
10
+ # Define the library target:
11
+ # ----------------------------------------------------------------------------------
12
+
13
+ set(the_target "lua")
14
+
15
+ file(GLOB lib_srcs *.c)
16
+ list (REMOVE_ITEM lib_srcs ${CMAKE_CURRENT_SOURCE_DIR}/lua.c ${CMAKE_CURRENT_SOURCE_DIR}/luac.c)
17
+ file(GLOB lib_hdrs *.h)
18
+ set(lib_ext_hdrs)
19
+
20
+ add_library(${the_target} STATIC ${lib_srcs} ${lib_hdrs} ${lib_ext_hdrs})
21
+
22
+ set_target_properties(${the_target}
23
+ PROPERTIES OUTPUT_NAME "${the_target}"
24
+ ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/vendor_lib
25
+ )
@@ -0,0 +1,34 @@
1
+ Lua License
2
+ -----------
3
+
4
+ Lua is licensed under the terms of the MIT license reproduced below.
5
+ This means that Lua is free software and can be used for both academic
6
+ and commercial purposes at absolutely no cost.
7
+
8
+ For details and rationale, see http://www.lua.org/license.html .
9
+
10
+ ===============================================================================
11
+
12
+ Copyright (C) 1994-2007 Lua.org, PUC-Rio.
13
+
14
+ Permission is hereby granted, free of charge, to any person obtaining a copy
15
+ of this software and associated documentation files (the "Software"), to deal
16
+ in the Software without restriction, including without limitation the rights
17
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
18
+ copies of the Software, and to permit persons to whom the Software is
19
+ furnished to do so, subject to the following conditions:
20
+
21
+ The above copyright notice and this permission notice shall be included in
22
+ all copies or substantial portions of the Software.
23
+
24
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
25
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
26
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
27
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
28
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
29
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
30
+ THE SOFTWARE.
31
+
32
+ ===============================================================================
33
+
34
+ (end of COPYRIGHT)