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
data/History.txt ADDED
@@ -0,0 +1,92 @@
1
+ == 1.0.0
2
+
3
+ * Major enhancement
4
+ * Support for yaml definition of binding body.
5
+ * Support for superclass (reuse of definitions from the super class)
6
+
7
+ == 0.7.1
8
+
9
+ The tests in this release do not pass, but the generator is really better and works. I just
10
+ don't have the time to fix the tests.
11
+
12
+ * Major enhancement
13
+ * When the object inherits from a LuaObject class, it calls luaInit(L, obj, "foo.Bar")
14
+
15
+ == 0.7.0 2011-08-19
16
+
17
+ The tests in this release do not pass, but the generator is really better and works. I just
18
+ don't have the time to fix the tests.
19
+
20
+ * Major enhancements
21
+ * Support for finding userdata from lua table ('super').
22
+
23
+ == 0.6.7
24
+
25
+ * Major enhancements
26
+ * Added support for LuaStackSize pseudo return value (enables direct stack manipulation).
27
+ * Added support for Qt 'public slot:' declarations.
28
+ * Added support for 'ignore' @dub setting.
29
+ * Added support for custom (or no) destructors.
30
+ * Fixed bugs related to overloaded methods and constructors.
31
+ * Added support for const char * return type.
32
+ * Added support for delete in C++ and/or Lua (DeletableOutOfLua class).
33
+ * Added 'deleted' method when the class can be destroyed out of Lua.
34
+ * Added support for custom constructors.
35
+ * Giving access to meta-table in libname.ClassName_.
36
+ * Changed LuaL_check... for dubL_check... to work in try/catch scope (thanks to Ignacio Burgueño)
37
+ * Fixed a bug in argument decision tree when there are default values.
38
+ * Fixed error reporting in try/catch to avoid memory leaks (thanks to Ignacio Burgueño)
39
+
40
+ == 0.6.6 2010-12-16
41
+
42
+ * Major enhancements
43
+ * Added support for @dub custom Doxygen tag to set class options.
44
+
45
+ == 0.6.5 2010-12-15
46
+
47
+ * Major enhancements
48
+ * Added support for custom_types (defined with Dub::Lua.function_generator.custom_type).
49
+ * Added support for lib_name and other customizations through klass.opts.
50
+
51
+ == 0.6.4 2010-07-14
52
+
53
+ * 1 enhancement
54
+ * Fixed homepage link in gem and documentation.
55
+
56
+ == 0.6.3 2010-07-07
57
+
58
+ * 1 enhancement
59
+ * Should ignore non-public member methods.
60
+
61
+ == 0.6.2 2010-07-07
62
+
63
+ * 1 enhancement
64
+ * Added an option define (DUB_LUA_NO_OPEN) to replace luaopen_xx by luaload_xx
65
+ * Added char in the list of 'int' types.
66
+
67
+ == 0.6.1 2010-03-12
68
+
69
+ * 2 enhancements
70
+ * Wrapping all function calls in try.. catch blocks
71
+ * Added support for custome templates (customize exception handling for example)
72
+
73
+ == 0.6.0 2010-03-11
74
+
75
+ * 4 enhancements
76
+ * added support for custom tostring methods for classes
77
+ * fixed parsing of templated return types
78
+ * static class methods are now registered in the namespace as Klass_method
79
+ * removing functions and methods with class pointer arguments (could use lists later on)
80
+ * better parsing of complex types (including nested template arguments)
81
+
82
+ == 0.5.1 2010-03-05
83
+
84
+ * 2 minor enhancements
85
+ * if an argument is fully specified, should not append namespace
86
+ * better handling of boolean values
87
+
88
+ == 0.5.0 2010-03-03
89
+
90
+ * 1 major enhancement
91
+ * initial release and tested with OpenCV bindings for Lua
92
+
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2010 by Gaspard Bucher - Buma (http://teti.ch).
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,115 @@
1
+ = Dub (Doxygen based Ubiquitous Binder)
2
+
3
+ This is a tool to ease the creation of scripting language bindings for a C++ library.
4
+ It is currently developed to crete the OpenCV bindings for Lua in Rubyk (http://rubyk.org).
5
+
6
+ The generator uses the xml output from Doxygen to avoid parsing C++ code by itself.
7
+
8
+ Homepage: http://rubyk.org/en/project311.html
9
+
10
+ = Features
11
+
12
+ Currently, the parser supports:
13
+
14
+ * class methods
15
+ * overloaded class constructors
16
+ * overloaded class methods
17
+ * class instantiation from templates through typedefs
18
+ * class alias through typedefs
19
+ * automatic resolution of template parameters
20
+ * automatic handling of default values
21
+ * class enums
22
+ * namespace enums
23
+ * group constant defines
24
+ * bindings for superclass
25
+ * hand made bindings in yaml (this is used to do more 'natural' bindings for
26
+ the target language)
27
+ * well tested
28
+ in fact no, it was but the tests are not up to date and need fixing
29
+ our best testing is that bindings run and compile without a warning or bug.
30
+
31
+
32
+ If you are not good at reading lists, here is an example of the kind of tricks Dub plays with types:
33
+
34
+ template<class T>
35
+ class Point_ {
36
+ ...
37
+ };
38
+
39
+ template<class T>
40
+ class Size_ {
41
+ Size_(const Point_<T>);
42
+ };
43
+ typedef Size_<int> Size2i;
44
+ typedef Size2i Size;
45
+
46
+ typedef Point_<int> Point2i;
47
+ typedef Point2i Point;
48
+
49
+
50
+ All these typedefs and templates will generate two class bindings with some aliases:
51
+
52
+ * <tt>Size</tt>, aliased as <tt>Size2i</tt>
53
+ * <tt>Point</tt>, aliased as <tt>Point2i</tt>
54
+
55
+ And what's really good is that in the definition for the <tt>Size</tt> constructor, <tt>Point_<T></tt> is
56
+ recognized as <tt>Point</tt> !
57
+
58
+ = Using @dub
59
+
60
+ If you want to set class options inside the sources with the @dub tag, you need to set the ALIASES as follows
61
+ in the Doxyfile:
62
+
63
+ ALIASES = "dub=\par Bindings info:\n"
64
+
65
+ Then you can write settings in the class documentation:
66
+
67
+ /** Some class.
68
+ *
69
+ * @dub string_format:'%%f'
70
+ * string_args:'(*userdata)->interval()'
71
+ * super: 'QObject, QWidget'
72
+ * bind: 'Foobar.yml'
73
+ */
74
+
75
+ Note that for some strange reason, you have to use a double '%' to get one.
76
+
77
+ == Constants
78
+
79
+ The easiest way to deal with constants is through documented enums (if this is possible) or defines with @defgroup.
80
+
81
+ == Custom destructors
82
+
83
+ By default Dub expects that the scripting app manages memory. This means that objects are deleted by the __gc method in
84
+ Lua for example. If you want to allow destruction from both the scripting language and C++, you can subclass the C++ with
85
+ DeletableOutOfLua (this protects Lua userdata from dangling pointers):
86
+
87
+ /** This class can be deleted from C++ or Lua
88
+ * @dub destructor: 'dub_destroy'
89
+ */
90
+ class CustomDestructor : public DeletableOutOfLua
91
+ {
92
+ public:
93
+ // nothing special here
94
+ };
95
+
96
+ Once a custom destructor is set, the method calls in Lua are protected (check that the object still exists). You also get a new
97
+ method "deleted" that returns true if the C++ is ... well, yes: deleted.
98
+
99
+ You can also disable destruction from the scripting language by setting "destructor: ''" (empty string).
100
+
101
+ == Cucstom constructors
102
+
103
+ You can use custom constructors by using a static member function:
104
+
105
+ /** This class can be deleted from C++ or Lua
106
+ * @dub constructor: 'BuildCar'
107
+ */
108
+ class Car
109
+ {
110
+ public:
111
+ static LuaStackSize BuildCar(lua_State *L);
112
+ };
113
+
114
+ Note that we have used the two special return values and parameters so that we can be in full control (this also means we will need
115
+ to push the userdata on the stack before returning the stack size). The LuaStackSize is a typedef for int.
data/Rakefile ADDED
@@ -0,0 +1,59 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+
4
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), 'lib'))
5
+ require 'dub/version'
6
+
7
+ begin
8
+ require 'jeweler'
9
+ Jeweler::Tasks.new do |gem|
10
+ gem.name = "dub"
11
+ gem.version = Dub::VERSION
12
+ gem.summary = %Q{A tool to ease the creation of scripting language bindings for a C++ library.}
13
+ gem.description = %Q{This is a tool to ease the creation of scripting language bindings for a C++ library.
14
+ It is currently developed to crete the OpenCV bindings for Lua in Rubyk (http://rubyk.org). The generator uses the xml output from Doxygen to avoid parsing C++ code by itself.}
15
+ gem.email = "gaspard@teti.ch"
16
+ gem.homepage = "http://rubyk.org/en/project311.html"
17
+ gem.authors = ["Gaspard Bucher"]
18
+ gem.add_dependency "hpricot"
19
+ gem.add_development_dependency "shoulda", ">= 0"
20
+ # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
21
+ end
22
+ Jeweler::GemcutterTasks.new
23
+ rescue LoadError
24
+ puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
25
+ end
26
+
27
+ require 'rake/testtask'
28
+ Rake::TestTask.new(:test) do |test|
29
+ test.libs << 'lib' << 'test'
30
+ test.pattern = 'test/**/*_test.rb'
31
+ test.verbose = true
32
+ end
33
+
34
+ begin
35
+ require 'rcov/rcovtask'
36
+ Rcov::RcovTask.new do |test|
37
+ test.libs << 'test'
38
+ test.pattern = 'test/**/*_test.rb'
39
+ test.verbose = true
40
+ end
41
+ rescue LoadError
42
+ task :rcov do
43
+ abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
44
+ end
45
+ end
46
+
47
+ task :test => :check_dependencies
48
+
49
+ task :default => :test
50
+
51
+ require 'rake/rdoctask'
52
+ Rake::RDocTask.new do |rdoc|
53
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
54
+
55
+ rdoc.rdoc_dir = 'rdoc'
56
+ rdoc.title = "Dub #{version}"
57
+ rdoc.rdoc_files.include('README*')
58
+ rdoc.rdoc_files.include('lib/**/*.rb')
59
+ end
data/dub.gemspec ADDED
@@ -0,0 +1,197 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{dub}
8
+ s.version = "1.0.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = [%q{Gaspard Bucher}]
12
+ s.date = %q{2011-09-04}
13
+ s.description = %q{This is a tool to ease the creation of scripting language bindings for a C++ library.
14
+ It is currently developed to crete the OpenCV bindings for Lua in Rubyk (http://rubyk.org). The generator uses the xml output from Doxygen to avoid parsing C++ code by itself.}
15
+ s.email = %q{gaspard@teti.ch}
16
+ s.extra_rdoc_files = [
17
+ "LICENSE",
18
+ "README.rdoc"
19
+ ]
20
+ s.files = [
21
+ "History.txt",
22
+ "LICENSE",
23
+ "README.rdoc",
24
+ "Rakefile",
25
+ "dub.gemspec",
26
+ "lib/dub.rb",
27
+ "lib/dub/argument.rb",
28
+ "lib/dub/entities_unescape.rb",
29
+ "lib/dub/function.rb",
30
+ "lib/dub/function_group.rb",
31
+ "lib/dub/generator.rb",
32
+ "lib/dub/group.rb",
33
+ "lib/dub/klass.rb",
34
+ "lib/dub/lua.rb",
35
+ "lib/dub/lua/class.cpp.erb",
36
+ "lib/dub/lua/class_gen.rb",
37
+ "lib/dub/lua/function.cpp.erb",
38
+ "lib/dub/lua/function_gen.rb",
39
+ "lib/dub/lua/group.cpp.erb",
40
+ "lib/dub/lua/lua_cpp_helper.cpp",
41
+ "lib/dub/lua/lua_cpp_helper.h",
42
+ "lib/dub/lua/lua_object.cpp",
43
+ "lib/dub/lua/lua_object.h",
44
+ "lib/dub/lua/namespace.cpp.erb",
45
+ "lib/dub/lua/namespace_gen.rb",
46
+ "lib/dub/member_extraction.rb",
47
+ "lib/dub/namespace.rb",
48
+ "lib/dub/opts_parser.rb",
49
+ "lib/dub/parser.rb",
50
+ "lib/dub/templates/lua_template.erb",
51
+ "lib/dub/version.rb",
52
+ "test/argument_test.rb",
53
+ "test/fixtures/app/CMakeLists.txt",
54
+ "test/fixtures/app/Doxyfile",
55
+ "test/fixtures/app/bindings/all_lua.cpp",
56
+ "test/fixtures/app/include/matrix.h",
57
+ "test/fixtures/app/make_lua_bindings.rb",
58
+ "test/fixtures/app/vendor/lua/CMakeLists.txt",
59
+ "test/fixtures/app/vendor/lua/COPYRIGHT",
60
+ "test/fixtures/app/vendor/lua/HISTORY",
61
+ "test/fixtures/app/vendor/lua/INSTALL",
62
+ "test/fixtures/app/vendor/lua/Makefile",
63
+ "test/fixtures/app/vendor/lua/README",
64
+ "test/fixtures/app/vendor/lua/lapi.c",
65
+ "test/fixtures/app/vendor/lua/lapi.h",
66
+ "test/fixtures/app/vendor/lua/lauxlib.c",
67
+ "test/fixtures/app/vendor/lua/lauxlib.h",
68
+ "test/fixtures/app/vendor/lua/lbaselib.c",
69
+ "test/fixtures/app/vendor/lua/lcode.c",
70
+ "test/fixtures/app/vendor/lua/lcode.h",
71
+ "test/fixtures/app/vendor/lua/ldblib.c",
72
+ "test/fixtures/app/vendor/lua/ldebug.c",
73
+ "test/fixtures/app/vendor/lua/ldebug.h",
74
+ "test/fixtures/app/vendor/lua/ldo.c",
75
+ "test/fixtures/app/vendor/lua/ldo.h",
76
+ "test/fixtures/app/vendor/lua/ldump.c",
77
+ "test/fixtures/app/vendor/lua/lfunc.c",
78
+ "test/fixtures/app/vendor/lua/lfunc.h",
79
+ "test/fixtures/app/vendor/lua/lgc.c",
80
+ "test/fixtures/app/vendor/lua/lgc.h",
81
+ "test/fixtures/app/vendor/lua/liblua.a",
82
+ "test/fixtures/app/vendor/lua/linit.c",
83
+ "test/fixtures/app/vendor/lua/liolib.c",
84
+ "test/fixtures/app/vendor/lua/llex.c",
85
+ "test/fixtures/app/vendor/lua/llex.h",
86
+ "test/fixtures/app/vendor/lua/llimits.h",
87
+ "test/fixtures/app/vendor/lua/lmathlib.c",
88
+ "test/fixtures/app/vendor/lua/lmem.c",
89
+ "test/fixtures/app/vendor/lua/lmem.h",
90
+ "test/fixtures/app/vendor/lua/loadlib.c",
91
+ "test/fixtures/app/vendor/lua/lobject.c",
92
+ "test/fixtures/app/vendor/lua/lobject.h",
93
+ "test/fixtures/app/vendor/lua/lopcodes.c",
94
+ "test/fixtures/app/vendor/lua/lopcodes.h",
95
+ "test/fixtures/app/vendor/lua/loslib.c",
96
+ "test/fixtures/app/vendor/lua/lparser.c",
97
+ "test/fixtures/app/vendor/lua/lparser.h",
98
+ "test/fixtures/app/vendor/lua/lstate.c",
99
+ "test/fixtures/app/vendor/lua/lstate.h",
100
+ "test/fixtures/app/vendor/lua/lstring.c",
101
+ "test/fixtures/app/vendor/lua/lstring.h",
102
+ "test/fixtures/app/vendor/lua/lstrlib.c",
103
+ "test/fixtures/app/vendor/lua/ltable.c",
104
+ "test/fixtures/app/vendor/lua/ltable.h",
105
+ "test/fixtures/app/vendor/lua/ltablib.c",
106
+ "test/fixtures/app/vendor/lua/ltm.c",
107
+ "test/fixtures/app/vendor/lua/ltm.h",
108
+ "test/fixtures/app/vendor/lua/lua.c",
109
+ "test/fixtures/app/vendor/lua/lua.h",
110
+ "test/fixtures/app/vendor/lua/lua_dub_helper.h",
111
+ "test/fixtures/app/vendor/lua/luac",
112
+ "test/fixtures/app/vendor/lua/luac.c",
113
+ "test/fixtures/app/vendor/lua/luaconf.h",
114
+ "test/fixtures/app/vendor/lua/lualib.h",
115
+ "test/fixtures/app/vendor/lua/lundump.c",
116
+ "test/fixtures/app/vendor/lua/lundump.h",
117
+ "test/fixtures/app/vendor/lua/lvm.c",
118
+ "test/fixtures/app/vendor/lua/lvm.h",
119
+ "test/fixtures/app/vendor/lua/lzio.c",
120
+ "test/fixtures/app/vendor/lua/lzio.h",
121
+ "test/fixtures/app/vendor/lua/matrix.h",
122
+ "test/fixtures/app/vendor/lua/print.c",
123
+ "test/fixtures/app/vendor/lua/test/README",
124
+ "test/fixtures/app/vendor/lua/test/bisect.lua",
125
+ "test/fixtures/app/vendor/lua/test/cf.lua",
126
+ "test/fixtures/app/vendor/lua/test/echo.lua",
127
+ "test/fixtures/app/vendor/lua/test/env.lua",
128
+ "test/fixtures/app/vendor/lua/test/factorial.lua",
129
+ "test/fixtures/app/vendor/lua/test/fib.lua",
130
+ "test/fixtures/app/vendor/lua/test/fibfor.lua",
131
+ "test/fixtures/app/vendor/lua/test/globals.lua",
132
+ "test/fixtures/app/vendor/lua/test/hello.lua",
133
+ "test/fixtures/app/vendor/lua/test/life.lua",
134
+ "test/fixtures/app/vendor/lua/test/luac.lua",
135
+ "test/fixtures/app/vendor/lua/test/printf.lua",
136
+ "test/fixtures/app/vendor/lua/test/readonly.lua",
137
+ "test/fixtures/app/vendor/lua/test/sieve.lua",
138
+ "test/fixtures/app/vendor/lua/test/sort.lua",
139
+ "test/fixtures/app/vendor/lua/test/table.lua",
140
+ "test/fixtures/app/vendor/lua/test/trace-calls.lua",
141
+ "test/fixtures/app/vendor/lua/test/trace-globals.lua",
142
+ "test/fixtures/app/vendor/lua/test/xd.lua",
143
+ "test/fixtures/app/xml/classdub_1_1_base.xml",
144
+ "test/fixtures/app/xml/classdub_1_1_custom_destructor.xml",
145
+ "test/fixtures/app/xml/classdub_1_1_deletable_out_of_lua.xml",
146
+ "test/fixtures/app/xml/classdub_1_1_matrix.xml",
147
+ "test/fixtures/app/xml/classdub_1_1_no_destructor.xml",
148
+ "test/fixtures/app/xml/classdub_1_1_priv_sub_base.xml",
149
+ "test/fixtures/app/xml/classdub_1_1_private_constr.xml",
150
+ "test/fixtures/app/xml/classdub_1_1_static_constr.xml",
151
+ "test/fixtures/app/xml/classdub_1_1_sub_base.xml",
152
+ "test/fixtures/app/xml/classdub_1_1_t_mat.xml",
153
+ "test/fixtures/app/xml/combine.xslt",
154
+ "test/fixtures/app/xml/compound.xsd",
155
+ "test/fixtures/app/xml/dir_53661a2bdeb1d55e60581a7e15deb763.xml",
156
+ "test/fixtures/app/xml/index.xml",
157
+ "test/fixtures/app/xml/index.xsd",
158
+ "test/fixtures/app/xml/matrix_8h.xml",
159
+ "test/fixtures/app/xml/namespacedub.xml",
160
+ "test/fixtures/classcv_1_1_mat.xml",
161
+ "test/fixtures/classcv_1_1_point__.xml",
162
+ "test/fixtures/classcv_1_1_scalar__.xml",
163
+ "test/fixtures/classcv_1_1_size__.xml",
164
+ "test/fixtures/dummy_class.cpp.erb",
165
+ "test/fixtures/dummy_function.cpp.erb",
166
+ "test/fixtures/group___magic_type.xml",
167
+ "test/fixtures/namespacecv.xml",
168
+ "test/function_group_test.rb",
169
+ "test/function_test.rb",
170
+ "test/group_test.rb",
171
+ "test/helper.rb",
172
+ "test/klass_test.rb",
173
+ "test/lua_function_gen_test.rb",
174
+ "test/namespace_test.rb",
175
+ "test/parser_test.rb"
176
+ ]
177
+ s.homepage = %q{http://rubyk.org/en/project311.html}
178
+ s.require_paths = [%q{lib}]
179
+ s.rubygems_version = %q{1.8.6}
180
+ s.summary = %q{A tool to ease the creation of scripting language bindings for a C++ library.}
181
+
182
+ if s.respond_to? :specification_version then
183
+ s.specification_version = 3
184
+
185
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
186
+ s.add_runtime_dependency(%q<hpricot>, [">= 0"])
187
+ s.add_development_dependency(%q<shoulda>, [">= 0"])
188
+ else
189
+ s.add_dependency(%q<hpricot>, [">= 0"])
190
+ s.add_dependency(%q<shoulda>, [">= 0"])
191
+ end
192
+ else
193
+ s.add_dependency(%q<hpricot>, [">= 0"])
194
+ s.add_dependency(%q<shoulda>, [">= 0"])
195
+ end
196
+ end
197
+