dub 0.3.0 → 0.6.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 (405) hide show
  1. data/.gitignore +8 -0
  2. data/History.txt +20 -0
  3. data/LICENSE +20 -0
  4. data/README.rdoc +53 -0
  5. data/Rakefile +58 -0
  6. data/dub.gemspec +195 -0
  7. data/lib/dub/argument.rb +273 -0
  8. data/lib/dub/entities_unescape.rb +16 -0
  9. data/lib/dub/function.rb +159 -0
  10. data/lib/dub/function_group.rb +72 -0
  11. data/lib/dub/generator.rb +15 -0
  12. data/lib/dub/group.rb +24 -0
  13. data/lib/dub/klass.rb +231 -0
  14. data/lib/dub/lua/class.cpp.erb +79 -0
  15. data/lib/dub/lua/class_gen.rb +86 -0
  16. data/lib/dub/lua/function.cpp.erb +4 -0
  17. data/lib/dub/lua/function_gen.rb +247 -0
  18. data/lib/dub/lua/group.cpp.erb +9 -0
  19. data/lib/dub/lua/lua_cpp_helper.h +141 -0
  20. data/lib/dub/lua/namespace.cpp.erb +35 -0
  21. data/lib/dub/lua/namespace_gen.rb +88 -0
  22. data/lib/dub/lua.rb +24 -0
  23. data/lib/dub/member_extraction.rb +92 -0
  24. data/lib/dub/namespace.rb +277 -0
  25. data/lib/dub/parser.rb +46 -0
  26. data/lib/dub/templates/lua_template.erb +21 -0
  27. data/lib/dub/version.rb +3 -0
  28. data/lib/dub.rb +23 -24
  29. data/test/argument_test.rb +547 -0
  30. data/test/fixtures/app/CMakeLists.txt +54 -0
  31. data/test/fixtures/app/Doxyfile +1600 -0
  32. data/test/fixtures/app/bindings/all_lua.cpp +299 -0
  33. data/test/fixtures/app/include/matrix.h +140 -0
  34. data/test/fixtures/app/make_lua_bindings.rb +13 -0
  35. data/test/fixtures/app/vendor/lua/CMakeLists.txt +25 -0
  36. data/test/fixtures/app/vendor/lua/COPYRIGHT +34 -0
  37. data/test/fixtures/app/vendor/lua/HISTORY +183 -0
  38. data/test/fixtures/app/vendor/lua/INSTALL +99 -0
  39. data/test/fixtures/app/vendor/lua/Makefile +183 -0
  40. data/test/fixtures/app/vendor/lua/README +37 -0
  41. data/test/fixtures/app/vendor/lua/lapi.c +1080 -0
  42. data/test/fixtures/app/vendor/lua/lapi.h +16 -0
  43. data/test/fixtures/app/vendor/lua/lauxlib.c +653 -0
  44. data/test/fixtures/app/vendor/lua/lauxlib.h +174 -0
  45. data/test/fixtures/app/vendor/lua/lbaselib.c +643 -0
  46. data/test/fixtures/app/vendor/lua/lcode.c +839 -0
  47. data/test/fixtures/app/vendor/lua/lcode.h +76 -0
  48. data/test/fixtures/app/vendor/lua/ldblib.c +397 -0
  49. data/test/fixtures/app/vendor/lua/ldebug.c +622 -0
  50. data/test/fixtures/app/vendor/lua/ldebug.h +33 -0
  51. data/test/fixtures/app/vendor/lua/ldo.c +516 -0
  52. data/test/fixtures/app/vendor/lua/ldo.h +57 -0
  53. data/test/fixtures/app/vendor/lua/ldump.c +164 -0
  54. data/test/fixtures/app/vendor/lua/lfunc.c +174 -0
  55. data/test/fixtures/app/vendor/lua/lfunc.h +34 -0
  56. data/test/fixtures/app/vendor/lua/lgc.c +711 -0
  57. data/test/fixtures/app/vendor/lua/lgc.h +110 -0
  58. data/test/fixtures/app/vendor/lua/liblua.a +0 -0
  59. data/test/fixtures/app/vendor/lua/linit.c +38 -0
  60. data/test/fixtures/app/vendor/lua/liolib.c +532 -0
  61. data/test/fixtures/app/vendor/lua/llex.c +461 -0
  62. data/test/fixtures/app/vendor/lua/llex.h +81 -0
  63. data/test/fixtures/app/vendor/lua/llimits.h +128 -0
  64. data/test/fixtures/app/vendor/lua/lmathlib.c +263 -0
  65. data/test/fixtures/app/vendor/lua/lmem.c +86 -0
  66. data/test/fixtures/app/vendor/lua/lmem.h +49 -0
  67. data/test/fixtures/app/vendor/lua/loadlib.c +664 -0
  68. data/test/fixtures/app/vendor/lua/lobject.c +214 -0
  69. data/test/fixtures/app/vendor/lua/lobject.h +381 -0
  70. data/test/fixtures/app/vendor/lua/lopcodes.c +102 -0
  71. data/test/fixtures/app/vendor/lua/lopcodes.h +268 -0
  72. data/test/fixtures/app/vendor/lua/loslib.c +244 -0
  73. data/test/fixtures/app/vendor/lua/lparser.c +1337 -0
  74. data/test/fixtures/app/vendor/lua/lparser.h +82 -0
  75. data/test/fixtures/app/vendor/lua/lstate.c +214 -0
  76. data/test/fixtures/app/vendor/lua/lstate.h +168 -0
  77. data/test/fixtures/app/vendor/lua/lstring.c +111 -0
  78. data/test/fixtures/app/vendor/lua/lstring.h +31 -0
  79. data/test/fixtures/app/vendor/lua/lstrlib.c +868 -0
  80. data/test/fixtures/app/vendor/lua/ltable.c +588 -0
  81. data/test/fixtures/app/vendor/lua/ltable.h +40 -0
  82. data/test/fixtures/app/vendor/lua/ltablib.c +278 -0
  83. data/test/fixtures/app/vendor/lua/ltm.c +75 -0
  84. data/test/fixtures/app/vendor/lua/ltm.h +54 -0
  85. data/test/fixtures/app/vendor/lua/lua.c +695 -0
  86. data/test/fixtures/app/vendor/lua/lua.h +385 -0
  87. data/test/fixtures/app/vendor/lua/lua_dub_helper.h +77 -0
  88. data/test/fixtures/app/vendor/lua/luac +0 -0
  89. data/test/fixtures/app/vendor/lua/luac.c +200 -0
  90. data/test/fixtures/app/vendor/lua/luaconf.h +762 -0
  91. data/test/fixtures/app/vendor/lua/lualib.h +53 -0
  92. data/test/fixtures/app/vendor/lua/lundump.c +223 -0
  93. data/test/fixtures/app/vendor/lua/lundump.h +36 -0
  94. data/test/fixtures/app/vendor/lua/lvm.c +765 -0
  95. data/test/fixtures/app/vendor/lua/lvm.h +36 -0
  96. data/test/fixtures/app/vendor/lua/lzio.c +82 -0
  97. data/test/fixtures/app/vendor/lua/lzio.h +67 -0
  98. data/test/fixtures/app/vendor/lua/matrix.h +102 -0
  99. data/test/fixtures/app/vendor/lua/print.c +227 -0
  100. data/test/fixtures/app/vendor/lua/test/README +26 -0
  101. data/test/fixtures/app/vendor/lua/test/bisect.lua +27 -0
  102. data/test/fixtures/app/vendor/lua/test/cf.lua +16 -0
  103. data/test/fixtures/app/vendor/lua/test/echo.lua +5 -0
  104. data/test/fixtures/app/vendor/lua/test/env.lua +7 -0
  105. data/test/fixtures/app/vendor/lua/test/factorial.lua +32 -0
  106. data/test/fixtures/app/vendor/lua/test/fib.lua +40 -0
  107. data/test/fixtures/app/vendor/lua/test/fibfor.lua +13 -0
  108. data/test/fixtures/app/vendor/lua/test/globals.lua +13 -0
  109. data/test/fixtures/app/vendor/lua/test/hello.lua +3 -0
  110. data/test/fixtures/app/vendor/lua/test/life.lua +111 -0
  111. data/test/fixtures/app/vendor/lua/test/luac.lua +7 -0
  112. data/test/fixtures/app/vendor/lua/test/printf.lua +7 -0
  113. data/test/fixtures/app/vendor/lua/test/readonly.lua +12 -0
  114. data/test/fixtures/app/vendor/lua/test/sieve.lua +29 -0
  115. data/test/fixtures/app/vendor/lua/test/sort.lua +66 -0
  116. data/test/fixtures/app/vendor/lua/test/table.lua +12 -0
  117. data/test/fixtures/app/vendor/lua/test/trace-calls.lua +32 -0
  118. data/test/fixtures/app/vendor/lua/test/trace-globals.lua +38 -0
  119. data/test/fixtures/app/vendor/lua/test/xd.lua +14 -0
  120. data/test/fixtures/app/xml/classdub_1_1_matrix.xml +281 -0
  121. data/test/fixtures/app/xml/classdub_1_1_t_mat.xml +233 -0
  122. data/test/fixtures/app/xml/combine.xslt +15 -0
  123. data/test/fixtures/app/xml/compound.xsd +814 -0
  124. data/test/fixtures/app/xml/dir_53661a2bdeb1d55e60581a7e15deb763.xml +12 -0
  125. data/test/fixtures/app/xml/index.xml +44 -0
  126. data/test/fixtures/app/xml/index.xsd +66 -0
  127. data/test/fixtures/app/xml/matrix_8h.xml +157 -0
  128. data/test/fixtures/app/xml/namespacedub.xml +41 -0
  129. data/test/fixtures/classcv_1_1_mat.xml +1996 -0
  130. data/test/fixtures/classcv_1_1_point__.xml +341 -0
  131. data/test/fixtures/classcv_1_1_scalar__.xml +269 -0
  132. data/test/fixtures/classcv_1_1_size__.xml +270 -0
  133. data/test/fixtures/group___magic_type.xml +406 -0
  134. data/test/fixtures/namespacecv.xml +12659 -0
  135. data/test/function_group_test.rb +24 -0
  136. data/test/function_test.rb +379 -0
  137. data/test/group_test.rb +155 -0
  138. data/test/helper.rb +34 -0
  139. data/test/klass_test.rb +372 -0
  140. data/test/lua_function_gen_test.rb +179 -0
  141. data/test/namespace_test.rb +220 -0
  142. data/test/parser_test.rb +36 -0
  143. metadata +202 -460
  144. checksums.yaml +0 -7
  145. data/lib/crystalline/metadata_fields.rb +0 -163
  146. data/lib/crystalline/t.rb +0 -59
  147. data/lib/crystalline/utils.rb +0 -65
  148. data/lib/crystalline.rb +0 -12
  149. data/lib/open_api_sdk/analytics.rb +0 -154
  150. data/lib/open_api_sdk/commissions.rb +0 -298
  151. data/lib/open_api_sdk/customers.rb +0 -709
  152. data/lib/open_api_sdk/domains.rb +0 -839
  153. data/lib/open_api_sdk/dub.rb +0 -99
  154. data/lib/open_api_sdk/embed_tokens.rb +0 -163
  155. data/lib/open_api_sdk/events.rb +0 -154
  156. data/lib/open_api_sdk/folders.rb +0 -570
  157. data/lib/open_api_sdk/links.rb +0 -1377
  158. data/lib/open_api_sdk/models/operations/accesslevel.rb +0 -18
  159. data/lib/open_api_sdk/models/operations/bulkcreatelinks_response.rb +0 -60
  160. data/lib/open_api_sdk/models/operations/bulkcreatelinks_testvariants.rb +0 -27
  161. data/lib/open_api_sdk/models/operations/bulkdeletelinks_request.rb +0 -24
  162. data/lib/open_api_sdk/models/operations/bulkdeletelinks_response.rb +0 -60
  163. data/lib/open_api_sdk/models/operations/bulkdeletelinks_responsebody.rb +0 -24
  164. data/lib/open_api_sdk/models/operations/bulkupdatelinks_requestbody.rb +0 -30
  165. data/lib/open_api_sdk/models/operations/bulkupdatelinks_response.rb +0 -60
  166. data/lib/open_api_sdk/models/operations/bulkupdatelinks_testvariants.rb +0 -27
  167. data/lib/open_api_sdk/models/operations/checkdomainstatus_request.rb +0 -24
  168. data/lib/open_api_sdk/models/operations/checkdomainstatus_response.rb +0 -60
  169. data/lib/open_api_sdk/models/operations/click.rb +0 -24
  170. data/lib/open_api_sdk/models/operations/color.rb +0 -23
  171. data/lib/open_api_sdk/models/operations/country.rb +0 -266
  172. data/lib/open_api_sdk/models/operations/createcustomer_discount.rb +0 -48
  173. data/lib/open_api_sdk/models/operations/createcustomer_link.rb +0 -39
  174. data/lib/open_api_sdk/models/operations/createcustomer_partner.rb +0 -33
  175. data/lib/open_api_sdk/models/operations/createcustomer_requestbody.rb +0 -33
  176. data/lib/open_api_sdk/models/operations/createcustomer_response.rb +0 -60
  177. data/lib/open_api_sdk/models/operations/createcustomer_responsebody.rb +0 -60
  178. data/lib/open_api_sdk/models/operations/createcustomer_type.rb +0 -18
  179. data/lib/open_api_sdk/models/operations/createdomain_requestbody.rb +0 -45
  180. data/lib/open_api_sdk/models/operations/createdomain_response.rb +0 -60
  181. data/lib/open_api_sdk/models/operations/createfolder_requestbody.rb +0 -27
  182. data/lib/open_api_sdk/models/operations/createfolder_response.rb +0 -60
  183. data/lib/open_api_sdk/models/operations/createlink_requestbody.rb +0 -145
  184. data/lib/open_api_sdk/models/operations/createlink_response.rb +0 -60
  185. data/lib/open_api_sdk/models/operations/createpartner_link.rb +0 -48
  186. data/lib/open_api_sdk/models/operations/createpartner_requestbody.rb +0 -45
  187. data/lib/open_api_sdk/models/operations/createpartner_response.rb +0 -60
  188. data/lib/open_api_sdk/models/operations/createpartner_responsebody.rb +0 -104
  189. data/lib/open_api_sdk/models/operations/createpartner_status.rb +0 -23
  190. data/lib/open_api_sdk/models/operations/createpartner_testvariants.rb +0 -27
  191. data/lib/open_api_sdk/models/operations/createpartnerlink_linkprops.rb +0 -111
  192. data/lib/open_api_sdk/models/operations/createpartnerlink_requestbody.rb +0 -39
  193. data/lib/open_api_sdk/models/operations/createpartnerlink_response.rb +0 -60
  194. data/lib/open_api_sdk/models/operations/createpartnerlink_testvariants.rb +0 -27
  195. data/lib/open_api_sdk/models/operations/createreferralsembedtoken_country.rb +0 -266
  196. data/lib/open_api_sdk/models/operations/createreferralsembedtoken_linkprops.rb +0 -111
  197. data/lib/open_api_sdk/models/operations/createreferralsembedtoken_requestbody.rb +0 -30
  198. data/lib/open_api_sdk/models/operations/createreferralsembedtoken_response.rb +0 -60
  199. data/lib/open_api_sdk/models/operations/createreferralsembedtoken_responsebody.rb +0 -27
  200. data/lib/open_api_sdk/models/operations/createreferralsembedtoken_testvariants.rb +0 -27
  201. data/lib/open_api_sdk/models/operations/createtag_requestbody.rb +0 -32
  202. data/lib/open_api_sdk/models/operations/createtag_response.rb +0 -60
  203. data/lib/open_api_sdk/models/operations/customer.rb +0 -33
  204. data/lib/open_api_sdk/models/operations/data.rb +0 -130
  205. data/lib/open_api_sdk/models/operations/deletecustomer_request.rb +0 -24
  206. data/lib/open_api_sdk/models/operations/deletecustomer_response.rb +0 -60
  207. data/lib/open_api_sdk/models/operations/deletecustomer_responsebody.rb +0 -24
  208. data/lib/open_api_sdk/models/operations/deletedomain_request.rb +0 -24
  209. data/lib/open_api_sdk/models/operations/deletedomain_response.rb +0 -60
  210. data/lib/open_api_sdk/models/operations/deletedomain_responsebody.rb +0 -24
  211. data/lib/open_api_sdk/models/operations/deletefolder_request.rb +0 -24
  212. data/lib/open_api_sdk/models/operations/deletefolder_response.rb +0 -60
  213. data/lib/open_api_sdk/models/operations/deletefolder_responsebody.rb +0 -24
  214. data/lib/open_api_sdk/models/operations/deletelink_request.rb +0 -24
  215. data/lib/open_api_sdk/models/operations/deletelink_response.rb +0 -60
  216. data/lib/open_api_sdk/models/operations/deletelink_responsebody.rb +0 -24
  217. data/lib/open_api_sdk/models/operations/deletetag_request.rb +0 -24
  218. data/lib/open_api_sdk/models/operations/deletetag_response.rb +0 -60
  219. data/lib/open_api_sdk/models/operations/deletetag_responsebody.rb +0 -24
  220. data/lib/open_api_sdk/models/operations/discount.rb +0 -48
  221. data/lib/open_api_sdk/models/operations/event.rb +0 -20
  222. data/lib/open_api_sdk/models/operations/getcustomer_discount.rb +0 -48
  223. data/lib/open_api_sdk/models/operations/getcustomer_link.rb +0 -39
  224. data/lib/open_api_sdk/models/operations/getcustomer_partner.rb +0 -33
  225. data/lib/open_api_sdk/models/operations/getcustomer_request.rb +0 -27
  226. data/lib/open_api_sdk/models/operations/getcustomer_response.rb +0 -60
  227. data/lib/open_api_sdk/models/operations/getcustomer_responsebody.rb +0 -60
  228. data/lib/open_api_sdk/models/operations/getcustomer_type.rb +0 -18
  229. data/lib/open_api_sdk/models/operations/getcustomers_link.rb +0 -39
  230. data/lib/open_api_sdk/models/operations/getcustomers_partner.rb +0 -33
  231. data/lib/open_api_sdk/models/operations/getcustomers_queryparam_sortby.rb +0 -18
  232. data/lib/open_api_sdk/models/operations/getcustomers_queryparam_sortorder.rb +0 -18
  233. data/lib/open_api_sdk/models/operations/getcustomers_request.rb +0 -51
  234. data/lib/open_api_sdk/models/operations/getcustomers_response.rb +0 -60
  235. data/lib/open_api_sdk/models/operations/getcustomers_responsebody.rb +0 -60
  236. data/lib/open_api_sdk/models/operations/getcustomers_type.rb +0 -18
  237. data/lib/open_api_sdk/models/operations/getlinkinfo_request.rb +0 -33
  238. data/lib/open_api_sdk/models/operations/getlinkinfo_response.rb +0 -60
  239. data/lib/open_api_sdk/models/operations/getlinks_request.rb +0 -66
  240. data/lib/open_api_sdk/models/operations/getlinks_response.rb +0 -60
  241. data/lib/open_api_sdk/models/operations/getlinkscount_request.rb +0 -54
  242. data/lib/open_api_sdk/models/operations/getlinkscount_response.rb +0 -60
  243. data/lib/open_api_sdk/models/operations/getqrcode_request.rb +0 -48
  244. data/lib/open_api_sdk/models/operations/getqrcode_response.rb +0 -60
  245. data/lib/open_api_sdk/models/operations/gettags_queryparam_sortby.rb +0 -18
  246. data/lib/open_api_sdk/models/operations/gettags_queryparam_sortorder.rb +0 -18
  247. data/lib/open_api_sdk/models/operations/gettags_request.rb +0 -39
  248. data/lib/open_api_sdk/models/operations/gettags_response.rb +0 -60
  249. data/lib/open_api_sdk/models/operations/getworkspace_request.rb +0 -24
  250. data/lib/open_api_sdk/models/operations/getworkspace_response.rb +0 -60
  251. data/lib/open_api_sdk/models/operations/groupby.rb +0 -37
  252. data/lib/open_api_sdk/models/operations/interval.rb +0 -25
  253. data/lib/open_api_sdk/models/operations/level.rb +0 -20
  254. data/lib/open_api_sdk/models/operations/link.rb +0 -48
  255. data/lib/open_api_sdk/models/operations/linkprops.rb +0 -111
  256. data/lib/open_api_sdk/models/operations/listcommissions_queryparam_interval.rb +0 -25
  257. data/lib/open_api_sdk/models/operations/listcommissions_queryparam_sortby.rb +0 -18
  258. data/lib/open_api_sdk/models/operations/listcommissions_queryparam_sortorder.rb +0 -18
  259. data/lib/open_api_sdk/models/operations/listcommissions_request.rb +0 -60
  260. data/lib/open_api_sdk/models/operations/listcommissions_response.rb +0 -60
  261. data/lib/open_api_sdk/models/operations/listcommissions_responsebody.rb +0 -51
  262. data/lib/open_api_sdk/models/operations/listcommissions_status.rb +0 -23
  263. data/lib/open_api_sdk/models/operations/listcommissions_type.rb +0 -20
  264. data/lib/open_api_sdk/models/operations/listdomains_request.rb +0 -33
  265. data/lib/open_api_sdk/models/operations/listdomains_response.rb +0 -60
  266. data/lib/open_api_sdk/models/operations/listevents_request.rb +0 -138
  267. data/lib/open_api_sdk/models/operations/listevents_response.rb +0 -60
  268. data/lib/open_api_sdk/models/operations/listfolders_request.rb +0 -30
  269. data/lib/open_api_sdk/models/operations/listfolders_response.rb +0 -60
  270. data/lib/open_api_sdk/models/operations/mode.rb +0 -18
  271. data/lib/open_api_sdk/models/operations/order.rb +0 -20
  272. data/lib/open_api_sdk/models/operations/partner.rb +0 -45
  273. data/lib/open_api_sdk/models/operations/paymentprocessor.rb +0 -21
  274. data/lib/open_api_sdk/models/operations/queryparam_event.rb +0 -19
  275. data/lib/open_api_sdk/models/operations/queryparam_groupby.rb +0 -19
  276. data/lib/open_api_sdk/models/operations/queryparam_interval.rb +0 -25
  277. data/lib/open_api_sdk/models/operations/queryparam_sortby.rb +0 -17
  278. data/lib/open_api_sdk/models/operations/queryparam_sortorder.rb +0 -18
  279. data/lib/open_api_sdk/models/operations/queryparam_status.rb +0 -23
  280. data/lib/open_api_sdk/models/operations/queryparam_trigger.rb +0 -18
  281. data/lib/open_api_sdk/models/operations/registerdomain_requestbody.rb +0 -24
  282. data/lib/open_api_sdk/models/operations/registerdomain_response.rb +0 -60
  283. data/lib/open_api_sdk/models/operations/registerdomain_responsebody.rb +0 -30
  284. data/lib/open_api_sdk/models/operations/requestbody.rb +0 -145
  285. data/lib/open_api_sdk/models/operations/responsebody.rb +0 -33
  286. data/lib/open_api_sdk/models/operations/retrieveanalytics_request.rb +0 -126
  287. data/lib/open_api_sdk/models/operations/retrieveanalytics_response.rb +0 -60
  288. data/lib/open_api_sdk/models/operations/retrievelinks_request.rb +0 -27
  289. data/lib/open_api_sdk/models/operations/retrievelinks_response.rb +0 -60
  290. data/lib/open_api_sdk/models/operations/retrievepartneranalytics_queryparam_interval.rb +0 -25
  291. data/lib/open_api_sdk/models/operations/retrievepartneranalytics_request.rb +0 -42
  292. data/lib/open_api_sdk/models/operations/retrievepartneranalytics_response.rb +0 -60
  293. data/lib/open_api_sdk/models/operations/sale.rb +0 -36
  294. data/lib/open_api_sdk/models/operations/sort.rb +0 -22
  295. data/lib/open_api_sdk/models/operations/sortby.rb +0 -20
  296. data/lib/open_api_sdk/models/operations/sortorder.rb +0 -18
  297. data/lib/open_api_sdk/models/operations/status.rb +0 -20
  298. data/lib/open_api_sdk/models/operations/testvariants.rb +0 -27
  299. data/lib/open_api_sdk/models/operations/tracklead_requestbody.rb +0 -48
  300. data/lib/open_api_sdk/models/operations/tracklead_response.rb +0 -60
  301. data/lib/open_api_sdk/models/operations/tracklead_responsebody.rb +0 -27
  302. data/lib/open_api_sdk/models/operations/tracksale_customer.rb +0 -36
  303. data/lib/open_api_sdk/models/operations/tracksale_requestbody.rb +0 -45
  304. data/lib/open_api_sdk/models/operations/tracksale_response.rb +0 -60
  305. data/lib/open_api_sdk/models/operations/tracksale_responsebody.rb +0 -30
  306. data/lib/open_api_sdk/models/operations/trigger.rb +0 -18
  307. data/lib/open_api_sdk/models/operations/type.rb +0 -20
  308. data/lib/open_api_sdk/models/operations/updatecommission_request.rb +0 -27
  309. data/lib/open_api_sdk/models/operations/updatecommission_requestbody.rb +0 -33
  310. data/lib/open_api_sdk/models/operations/updatecommission_response.rb +0 -60
  311. data/lib/open_api_sdk/models/operations/updatecommission_responsebody.rb +0 -51
  312. data/lib/open_api_sdk/models/operations/updatecommission_status.rb +0 -23
  313. data/lib/open_api_sdk/models/operations/updatecommission_type.rb +0 -20
  314. data/lib/open_api_sdk/models/operations/updatecustomer_discount.rb +0 -48
  315. data/lib/open_api_sdk/models/operations/updatecustomer_link.rb +0 -39
  316. data/lib/open_api_sdk/models/operations/updatecustomer_partner.rb +0 -33
  317. data/lib/open_api_sdk/models/operations/updatecustomer_request.rb +0 -30
  318. data/lib/open_api_sdk/models/operations/updatecustomer_requestbody.rb +0 -33
  319. data/lib/open_api_sdk/models/operations/updatecustomer_response.rb +0 -60
  320. data/lib/open_api_sdk/models/operations/updatecustomer_responsebody.rb +0 -60
  321. data/lib/open_api_sdk/models/operations/updatecustomer_type.rb +0 -18
  322. data/lib/open_api_sdk/models/operations/updatedomain_request.rb +0 -27
  323. data/lib/open_api_sdk/models/operations/updatedomain_requestbody.rb +0 -45
  324. data/lib/open_api_sdk/models/operations/updatedomain_response.rb +0 -60
  325. data/lib/open_api_sdk/models/operations/updatefolder_accesslevel.rb +0 -18
  326. data/lib/open_api_sdk/models/operations/updatefolder_request.rb +0 -27
  327. data/lib/open_api_sdk/models/operations/updatefolder_requestbody.rb +0 -27
  328. data/lib/open_api_sdk/models/operations/updatefolder_response.rb +0 -60
  329. data/lib/open_api_sdk/models/operations/updatelink_request.rb +0 -27
  330. data/lib/open_api_sdk/models/operations/updatelink_requestbody.rb +0 -139
  331. data/lib/open_api_sdk/models/operations/updatelink_response.rb +0 -60
  332. data/lib/open_api_sdk/models/operations/updatelink_testvariants.rb +0 -27
  333. data/lib/open_api_sdk/models/operations/updatetag_color.rb +0 -23
  334. data/lib/open_api_sdk/models/operations/updatetag_request.rb +0 -27
  335. data/lib/open_api_sdk/models/operations/updatetag_requestbody.rb +0 -32
  336. data/lib/open_api_sdk/models/operations/updatetag_response.rb +0 -60
  337. data/lib/open_api_sdk/models/operations/updateworkspace_request.rb +0 -27
  338. data/lib/open_api_sdk/models/operations/updateworkspace_requestbody.rb +0 -36
  339. data/lib/open_api_sdk/models/operations/updateworkspace_response.rb +0 -60
  340. data/lib/open_api_sdk/models/operations/upsertlink_requestbody.rb +0 -145
  341. data/lib/open_api_sdk/models/operations/upsertlink_response.rb +0 -60
  342. data/lib/open_api_sdk/models/operations/upsertlink_testvariants.rb +0 -27
  343. data/lib/open_api_sdk/models/operations/upsertpartnerlink_linkprops.rb +0 -111
  344. data/lib/open_api_sdk/models/operations/upsertpartnerlink_requestbody.rb +0 -39
  345. data/lib/open_api_sdk/models/operations/upsertpartnerlink_response.rb +0 -60
  346. data/lib/open_api_sdk/models/operations/upsertpartnerlink_testvariants.rb +0 -27
  347. data/lib/open_api_sdk/models/operations.rb +0 -198
  348. data/lib/open_api_sdk/models/shared/accesslevel.rb +0 -18
  349. data/lib/open_api_sdk/models/shared/badrequest.rb +0 -24
  350. data/lib/open_api_sdk/models/shared/code.rb +0 -17
  351. data/lib/open_api_sdk/models/shared/color.rb +0 -23
  352. data/lib/open_api_sdk/models/shared/conflict.rb +0 -24
  353. data/lib/open_api_sdk/models/shared/conflict_code.rb +0 -17
  354. data/lib/open_api_sdk/models/shared/conflict_error.rb +0 -30
  355. data/lib/open_api_sdk/models/shared/continentcode.rb +0 -23
  356. data/lib/open_api_sdk/models/shared/countrycode.rb +0 -266
  357. data/lib/open_api_sdk/models/shared/domains.rb +0 -30
  358. data/lib/open_api_sdk/models/shared/domainschema.rb +0 -63
  359. data/lib/open_api_sdk/models/shared/error.rb +0 -30
  360. data/lib/open_api_sdk/models/shared/folderschema.rb +0 -39
  361. data/lib/open_api_sdk/models/shared/forbidden.rb +0 -24
  362. data/lib/open_api_sdk/models/shared/forbidden_code.rb +0 -17
  363. data/lib/open_api_sdk/models/shared/forbidden_error.rb +0 -30
  364. data/lib/open_api_sdk/models/shared/geo.rb +0 -771
  365. data/lib/open_api_sdk/models/shared/internalservererror.rb +0 -24
  366. data/lib/open_api_sdk/models/shared/internalservererror_code.rb +0 -17
  367. data/lib/open_api_sdk/models/shared/internalservererror_error.rb +0 -30
  368. data/lib/open_api_sdk/models/shared/inviteexpired.rb +0 -24
  369. data/lib/open_api_sdk/models/shared/inviteexpired_code.rb +0 -17
  370. data/lib/open_api_sdk/models/shared/inviteexpired_error.rb +0 -30
  371. data/lib/open_api_sdk/models/shared/linkgeotargeting.rb +0 -771
  372. data/lib/open_api_sdk/models/shared/linkschema.rb +0 -172
  373. data/lib/open_api_sdk/models/shared/notfound.rb +0 -24
  374. data/lib/open_api_sdk/models/shared/notfound_code.rb +0 -17
  375. data/lib/open_api_sdk/models/shared/notfound_error.rb +0 -30
  376. data/lib/open_api_sdk/models/shared/plan.rb +0 -24
  377. data/lib/open_api_sdk/models/shared/ratelimitexceeded.rb +0 -24
  378. data/lib/open_api_sdk/models/shared/ratelimitexceeded_code.rb +0 -17
  379. data/lib/open_api_sdk/models/shared/ratelimitexceeded_error.rb +0 -30
  380. data/lib/open_api_sdk/models/shared/registereddomain.rb +0 -30
  381. data/lib/open_api_sdk/models/shared/role.rb +0 -18
  382. data/lib/open_api_sdk/models/shared/security.rb +0 -24
  383. data/lib/open_api_sdk/models/shared/tagschema.rb +0 -30
  384. data/lib/open_api_sdk/models/shared/testvariants.rb +0 -27
  385. data/lib/open_api_sdk/models/shared/type.rb +0 -18
  386. data/lib/open_api_sdk/models/shared/unauthorized.rb +0 -24
  387. data/lib/open_api_sdk/models/shared/unauthorized_code.rb +0 -17
  388. data/lib/open_api_sdk/models/shared/unauthorized_error.rb +0 -30
  389. data/lib/open_api_sdk/models/shared/unprocessableentity.rb +0 -24
  390. data/lib/open_api_sdk/models/shared/unprocessableentity_code.rb +0 -17
  391. data/lib/open_api_sdk/models/shared/unprocessableentity_error.rb +0 -30
  392. data/lib/open_api_sdk/models/shared/users.rb +0 -27
  393. data/lib/open_api_sdk/models/shared/workspaceschema.rb +0 -123
  394. data/lib/open_api_sdk/models/shared.rb +0 -55
  395. data/lib/open_api_sdk/partners.rb +0 -701
  396. data/lib/open_api_sdk/qr_codes.rb +0 -151
  397. data/lib/open_api_sdk/sdk_hooks/hooks.rb +0 -103
  398. data/lib/open_api_sdk/sdk_hooks/registration.rb +0 -35
  399. data/lib/open_api_sdk/sdk_hooks/types.rb +0 -152
  400. data/lib/open_api_sdk/sdkconfiguration.rb +0 -75
  401. data/lib/open_api_sdk/tags.rb +0 -570
  402. data/lib/open_api_sdk/track.rb +0 -302
  403. data/lib/open_api_sdk/utils/retries.rb +0 -95
  404. data/lib/open_api_sdk/utils/utils.rb +0 -738
  405. data/lib/open_api_sdk/workspaces.rb +0 -301
@@ -0,0 +1,159 @@
1
+ require 'dub/argument'
2
+ require 'dub/entities_unescape'
3
+
4
+ module Dub
5
+ class Function
6
+ include Dub::EntitiesUnescape
7
+ attr_reader :arguments, :prefix, :overloaded_index, :return_value, :xml, :parent
8
+ attr_accessor :gen, :name, :is_constructor
9
+
10
+ def initialize(parent, name, xml, prefix = '', overloaded_index = nil)
11
+ @parent, @name = parent, name
12
+ @xml, @prefix, @overloaded_index = xml, prefix, overloaded_index
13
+ parse_xml
14
+ parse_template_params
15
+ end
16
+
17
+ def set_as_constructor
18
+ @return_value = Argument.new(self, (Hpricot::XML("<type>#{name} *</type>")/''))
19
+ @is_constructor = true
20
+ end
21
+
22
+ def bind(generator)
23
+ @gen = generator.function_generator
24
+ end
25
+
26
+ def to_s
27
+ generator.function(self)
28
+ end
29
+
30
+ def generator
31
+ @gen || (@parent && @parent.function_generator)
32
+ end
33
+
34
+ def klass
35
+ @parent.kind_of?(Klass) ? @parent : nil
36
+ end
37
+
38
+ def member_method?
39
+ !klass.nil?
40
+ end
41
+
42
+ def constructor?
43
+ @is_constructor
44
+ end
45
+
46
+ def static?
47
+ @is_static
48
+ end
49
+
50
+ alias gen generator
51
+
52
+ def name=(n)
53
+ @name = n
54
+ if constructor?
55
+ @return_value.type = n
56
+ end
57
+ end
58
+
59
+ def call_name
60
+ if klass
61
+ static? ? "#{klass.name}::#{name}" : name
62
+ else
63
+ name
64
+ end
65
+ end
66
+
67
+ def source
68
+ loc = (@xml/'location').first.attributes
69
+ "#{loc['file'].split('/')[-3..-1].join('/')}:#{loc['line']}"
70
+ end
71
+
72
+ def original_signature
73
+ unescape "#{(@xml/'definition').innerHTML}#{(@xml/'argsstring').innerHTML}"
74
+ end
75
+
76
+ def has_default_arguments?
77
+ return @has_defaults if defined?(@has_defaults)
78
+ @has_defaults = !@arguments.detect {|a| a.has_default? }.nil?
79
+ end
80
+
81
+ def has_array_arguments?
82
+ return @has_array_arguments if defined?(@has_array_arguments)
83
+ @has_array_arguments = !@arguments.detect {|a| a.array_suffix }.nil?
84
+ end
85
+
86
+ def has_class_pointer_arguments?
87
+ return @has_class_pointer_arguments if defined?(@has_class_pointer_arguments)
88
+ @has_class_pointer_arguments = !@arguments.detect {|a| !a.is_native? && a.is_pointer? }.nil?
89
+ end
90
+
91
+ def has_complex_arguments?
92
+ return @has_complex_arguments if defined?(@has_complex_arguments)
93
+ @has_complex_arguments = !(@arguments + [@return_value]).compact.detect {|a| a.complex? }.nil?
94
+ end
95
+
96
+ def vararg?
97
+ @arguments.last && @arguments.last.vararg?
98
+ end
99
+
100
+ def arg_is_list(list_position, count_position)
101
+ @arguments[list_position ].is_list = true
102
+ @arguments[count_position].is_list_count = true
103
+ end
104
+
105
+ def template?
106
+ !@template_params.nil?
107
+ end
108
+
109
+ def template_params
110
+ @template_params
111
+ end
112
+
113
+ def inspect
114
+ "#<Function #{@prefix}_#{@name}(#{@arguments.inspect[1..-2]})>"
115
+ end
116
+
117
+ def <=>(other)
118
+ name <=> other.name
119
+ end
120
+
121
+ # ====== these methods are alias to
122
+ # generator methods on this object
123
+
124
+ def method_name(overloaded_index = nil)
125
+ gen.method_name(self, overloaded_index)
126
+ end
127
+
128
+ # =================================
129
+
130
+ private
131
+ def parse_xml
132
+ @arguments = []
133
+
134
+ (@xml/'param').each_with_index do |arg, i|
135
+ @arguments << Argument.new(self, arg, i + 1)
136
+ end
137
+
138
+ raw_type = (@xml/'/type').innerHTML
139
+
140
+ if raw_type.strip == ''
141
+ # no return type
142
+ else
143
+ arg = Argument.new(self, (@xml/'/type'))
144
+ @return_value = arg unless arg.create_type =~ /void\s*$/
145
+ end
146
+
147
+ @is_static = @xml[:static] == 'yes'
148
+ end
149
+
150
+ def parse_template_params
151
+ template_params = (@xml/'/templateparamlist/param')
152
+ if !template_params.empty?
153
+ @template_params = template_params.map do |param|
154
+ (param/'/type').innerHTML.gsub(/^\s*(typename|class)\s+/,'')
155
+ end
156
+ end
157
+ end
158
+ end
159
+ end # Namespace
@@ -0,0 +1,72 @@
1
+ module Dub
2
+ class FunctionGroup < Array
3
+ def initialize(parent, gen = nil)
4
+ @parent, @gen = parent, gen
5
+ end
6
+
7
+ def bind(generator)
8
+ self.gen = generator.function_generator
9
+ end
10
+
11
+ def generator
12
+ @gen || (@parent && @parent.function_generator)
13
+ end
14
+
15
+ def gen=(generator)
16
+ @gen = generator
17
+ @gen_members = nil
18
+ end
19
+
20
+ alias gen generator
21
+
22
+ def members
23
+ if self.generator
24
+ if @parent.generator
25
+ @gen_members ||= @parent.generator.members_list(self)
26
+ else
27
+ @gen_members ||= generator.namespace_generator.members_list(self)
28
+ end
29
+ else
30
+ self
31
+ end
32
+ end
33
+
34
+ def to_s
35
+ generator.group(self)
36
+ end
37
+
38
+ def method_name(overloaded_index = nil)
39
+ first.method_name(overloaded_index)
40
+ end
41
+
42
+ def map(&block)
43
+ list = self.class.new(@parent, @gen)
44
+ super(&block).each do |e|
45
+ list << e
46
+ end
47
+ list
48
+ end
49
+
50
+ def compact
51
+ list = self.class.new(@parent, @gen)
52
+ super.each do |e|
53
+ list << e
54
+ end
55
+ list
56
+ end
57
+
58
+ def overloaded_index
59
+ nil
60
+ end
61
+
62
+ def <=>(other)
63
+ name <=> other.name
64
+ end
65
+
66
+ private
67
+ def method_missing(method, *args)
68
+ first.send(method, *args)
69
+ end
70
+
71
+ end
72
+ end
@@ -0,0 +1,15 @@
1
+ require 'dub/function'
2
+
3
+ module Dub
4
+ class Generator
5
+
6
+ def comment(func)
7
+ "/** #{func.original_signature}\n * #{func.source}\n */"
8
+ end
9
+
10
+ protected
11
+ def indent(str, indent)
12
+ str.gsub(/^/, ' ' * indent)
13
+ end
14
+ end # Generator
15
+ end # Dub
data/lib/dub/group.rb ADDED
@@ -0,0 +1,24 @@
1
+ require 'dub/namespace'
2
+
3
+ module Dub
4
+ class Group < Namespace
5
+ def parse_xml
6
+ super
7
+ parse_defines
8
+ end
9
+
10
+ def arg_is_list(argument_pos, count_pos)
11
+ each do |f|
12
+ f.arg_is_list(argument_pos, count_pos)
13
+ end
14
+ end
15
+
16
+ def members
17
+ if self.generator
18
+ @gen_members ||= self.generator.members_list(super, @ignores)
19
+ else
20
+ super
21
+ end
22
+ end
23
+ end
24
+ end
data/lib/dub/klass.rb ADDED
@@ -0,0 +1,231 @@
1
+ module Dub
2
+ module MemberExtraction
3
+ end
4
+ end
5
+ require 'dub/member_extraction'
6
+
7
+ module Dub
8
+ class Klass
9
+ include MemberExtraction
10
+ attr_reader :name, :xml, :prefix, :constructor, :alias_names, :enums, :parent, :instanciations
11
+ attr_accessor :header, :string_format, :string_args
12
+
13
+ def initialize(parent, name, xml, prefix = '')
14
+ @parent, @name, @xml, @prefix = parent, name, xml, prefix
15
+
16
+ @alias_names = []
17
+ @enums = []
18
+ @ignores = []
19
+ @instanciations = {}
20
+ parse_xml
21
+ end
22
+
23
+ def bind(generator)
24
+ self.gen = generator.class_generator
25
+ end
26
+
27
+ def gen=(generator)
28
+ @gen = generator
29
+ @gen_members = nil
30
+ end
31
+
32
+ def to_s
33
+ generator.klass(self)
34
+ end
35
+
36
+ def generator
37
+ @gen || (@parent && @parent.class_generator)
38
+ end
39
+
40
+ def function_generator
41
+ if generator = self.generator
42
+ generator.function_generator
43
+ else
44
+ nil
45
+ end
46
+ end
47
+
48
+ alias gen generator
49
+
50
+ def ignore(list)
51
+ list = [list].flatten
52
+ @ignores += list
53
+ @ignores.uniq!
54
+ @gen_members = nil
55
+ end
56
+
57
+ def members
58
+ if self.generator
59
+ @gen_members ||= self.generator.members_list(super, @ignores)
60
+ else
61
+ super
62
+ end
63
+ end
64
+
65
+ def <=>(other)
66
+ (name || "") <=> (other.name || "")
67
+ end
68
+
69
+ def [](name)
70
+ name.to_s == @name ? constructor : get_member(name.to_s)
71
+ end
72
+
73
+ def class_methods
74
+ []
75
+ end
76
+
77
+ def template?
78
+ !@template_params.nil?
79
+ end
80
+
81
+ def has_constants?
82
+ has_enums?
83
+ end
84
+
85
+ def has_enums?
86
+ !@enums.empty?
87
+ end
88
+
89
+ def template_params
90
+ @template_params
91
+ end
92
+
93
+ def class_with_params(template_params)
94
+ @instanciations[template_params]
95
+ end
96
+
97
+ def register_instanciation(template_params, klass)
98
+ @instanciations[template_params] = klass
99
+ end
100
+
101
+ def source
102
+ loc = (@xml/'location').first.attributes
103
+ "#{loc['file'].split('/')[-3..-1].join('/')}:#{loc['line']}"
104
+ end
105
+
106
+ def header
107
+ @header ||= (@xml/'location').first.attributes['file'].split('/').last
108
+ end
109
+
110
+ def full_type
111
+ @parent ? "#{@parent.full_type}::#{name}" : name
112
+ end
113
+
114
+ def lib_name
115
+ "#{prefix}_#{name}"
116
+ end
117
+
118
+ def id_name(name = self.name)
119
+ "#{prefix}.#{name}"
120
+ end
121
+
122
+ def destructor_name
123
+ "#{name}_destructor"
124
+ end
125
+
126
+ def tostring_name
127
+ "#{name}__tostring"
128
+ end
129
+
130
+ def constructor
131
+ if defined?(@constructor)
132
+ @constructor
133
+ else
134
+ self.members
135
+ @constructor ||= nil
136
+ end
137
+ @constructor
138
+ end
139
+
140
+ def names
141
+ [@name] + @alias_names
142
+ end
143
+
144
+ private
145
+ def parse_xml
146
+ parse_enums
147
+ parse_members
148
+ parse_template_params
149
+ parse_instanciations
150
+ parse_alias_names
151
+ end
152
+
153
+ def parse_enums
154
+ @enums = (@xml/"enumvalue/name").map{|e| e.innerHTML}
155
+ end
156
+
157
+ def parse_template_params
158
+ template_params = (@xml/'/templateparamlist/param')
159
+ if !template_params.empty?
160
+ @template_params = template_params.map do |param|
161
+ (param/'/type').innerHTML.gsub(/^\s*(typename|class)\s+/,'')
162
+ end
163
+ end
164
+ end
165
+
166
+ def parse_instanciations
167
+ (@xml/'instanciation').each do |klass|
168
+ name = (klass/'name').innerHTML
169
+ params = (klass/'param').map do |p|
170
+ p.innerHTML
171
+ end
172
+
173
+ @instanciations[params] = @parent[name]
174
+ end
175
+ end
176
+
177
+ def parse_alias_names
178
+ (@xml/'aliases/name').each do |name|
179
+ name = name.innerHTML
180
+ if name.size < @name.size
181
+ @alias_names << @name
182
+ change_name(name)
183
+ else
184
+ @alias_names << name
185
+ end
186
+
187
+ if @parent
188
+ @parent.register_alias(name, self)
189
+ end
190
+ end
191
+ end
192
+
193
+ def make_member(name, member, overloaded_index = nil)
194
+ if names.include?(name)
195
+ # keep constructors out of members list
196
+ if @constructor.kind_of?(FunctionGroup)
197
+ constr = super
198
+ constr.name = @name # force key name
199
+ constr.set_as_constructor
200
+ @constructor << constr
201
+ elsif @constructor
202
+ constr = super
203
+ constr.name = @name
204
+ constr.set_as_constructor
205
+ list = Dub::FunctionGroup.new(self)
206
+ list << @constructor
207
+ list << constr
208
+ @constructor = list
209
+ else
210
+ @constructor = super
211
+ @constructor.set_as_constructor
212
+ @constructor.name = @name
213
+ end
214
+ nil
215
+ else
216
+ super
217
+ end
218
+ end
219
+
220
+ def change_name(new_name)
221
+ @name = new_name
222
+ if @constructor.kind_of?(Array)
223
+ @constructor.each do |c|
224
+ c.name = new_name
225
+ end
226
+ elsif @constructor
227
+ @constructor.name = new_name
228
+ end
229
+ end
230
+ end
231
+ end
@@ -0,0 +1,79 @@
1
+ #include "<%= @class.header %>"
2
+
3
+ #include "lua_cpp_helper.h"
4
+
5
+ <% if @class.prefix %>
6
+ using namespace <%= @class.prefix %>;
7
+ <% end %>
8
+
9
+ /* ============================ Constructors ====================== */
10
+
11
+ <%= @class.constructor %>
12
+
13
+ /* ============================ Destructor ====================== */
14
+
15
+ static int <%= @class.destructor_name %>(lua_State *L) {
16
+ <%= @class.name %> **userdata = (<%= @class.name %>**)luaL_checkudata(L, 1, <%= @class.id_name.inspect %>);
17
+ if (*userdata) delete *userdata;
18
+ *userdata = NULL;
19
+ return 0;
20
+ }
21
+
22
+ /* ============================ tostring ====================== */
23
+
24
+ static int <%= @class.tostring_name %>(lua_State *L) {
25
+ <%= @class.name %> **userdata = (<%= @class.name %>**)luaL_checkudata(L, 1, <%= @class.id_name.inspect %>);
26
+ <% if @class.string_format %>
27
+ lua_pushfstring(L, "<<%= @class.id_name %>: %p <%= @class.string_format %>>", *userdata, <%= @class.string_args %>);
28
+ <% else %>
29
+ lua_pushfstring(L, "<<%= @class.id_name %>: %p>", *userdata);
30
+ <% end %>
31
+ return 1;
32
+ }
33
+
34
+ /* ============================ Member Methods ====================== */
35
+
36
+ <% if @class.members; @class.members.each do |function| %>
37
+ <%= function %>
38
+
39
+ <% end; end %>
40
+
41
+
42
+ /* ============================ Lua Registration ====================== */
43
+
44
+ static const struct luaL_Reg <%= @class.name %>_member_methods[] = {
45
+ <%= indent(method_registration, 2) %>,
46
+ {NULL, NULL},
47
+ };
48
+
49
+ static const struct luaL_Reg <%= @class.name %>_namespace_methods[] = {
50
+ <%= indent(namespace_methods_registration, 2) %>,
51
+ {NULL, NULL},
52
+ };
53
+
54
+ <% if @class.has_constants? %>
55
+ static const struct lua_constants_Reg <%= @class.name %>_namespace_constants[] = {
56
+ <%= indent(constants_registration, 2) %>,
57
+ {NULL, NULL},
58
+ };
59
+ <% end %>
60
+
61
+ void luaopen_<%= @class.lib_name %>(lua_State *L) {
62
+ // Create the metatable which will contain all the member methods
63
+ luaL_newmetatable(L, <%= @class.id_name.inspect %>);
64
+
65
+ // metatable.__index = metatable (find methods in the table itself)
66
+ lua_pushvalue(L, -1);
67
+ lua_setfield(L, -2, "__index");
68
+
69
+ // register member methods
70
+ luaL_register(L, NULL, <%= @class.name %>_member_methods);
71
+
72
+ // register class methods in a global namespace table
73
+ luaL_register(L, <%= @class.prefix.inspect %>, <%= @class.name %>_namespace_methods);
74
+
75
+ <% if @class.has_constants? %>
76
+ // register class enums
77
+ register_constants(L, <%= (@class.id_name + '_const').inspect %>, <%= @class.name %>_namespace_constants);
78
+ <% end %>
79
+ }
@@ -0,0 +1,86 @@
1
+
2
+ require 'dub/generator'
3
+ require 'erb'
4
+
5
+ module Dub
6
+ module Lua
7
+ class ClassGen < Dub::Generator
8
+ def initialize
9
+ @class_template = ::ERB.new(File.read(File.join(File.dirname(__FILE__), 'class.cpp.erb')))
10
+ end
11
+
12
+ def klass(klass)
13
+ @class = klass
14
+ @class_template.result(binding)
15
+ end
16
+
17
+ def function_generator
18
+ Lua.function_generator
19
+ end
20
+
21
+ def method_registration(klass = @class)
22
+ member_methods = (klass.members || []).map do |method|
23
+ next if method.static?
24
+ "{%-20s, #{method.method_name(0)}}" % method.name.inspect
25
+ end.compact
26
+
27
+ member_methods << "{%-20s, #{klass.tostring_name}}" % "__tostring".inspect
28
+ member_methods << "{%-20s, #{klass.destructor_name}}" % "__gc".inspect
29
+
30
+ member_methods.join(",\n")
31
+ end
32
+
33
+ def namespace_methods_registration(klass = @class)
34
+ global_methods = klass.names.map do |name|
35
+ "{%-20s, #{klass.constructor.method_name(0)}}" % name.inspect
36
+ end
37
+
38
+ (klass.members || []).map do |method|
39
+ next unless method.static?
40
+ global_methods << "{%-20s, #{method.method_name(0)}}" % "#{klass.name}_#{method.name}".inspect
41
+ end
42
+
43
+ global_methods.join(",\n")
44
+ end
45
+
46
+ def constants_registration(klass = @class)
47
+ klass.enums.map do |name|
48
+ "{%-20s, #{klass.full_type}::#{name}}" % name.inspect
49
+ end.join(",\n")
50
+ end
51
+
52
+ def members_list(all_members, ignore_list = [])
53
+ list = all_members.map do |member_or_group|
54
+ if ignore_list.include?(member_or_group.name)
55
+ nil
56
+ elsif member_or_group.kind_of?(Array)
57
+ members_list(member_or_group)
58
+ elsif ignore_member?(member_or_group)
59
+ nil
60
+ else
61
+ member_or_group
62
+ end
63
+ end
64
+
65
+ list.compact!
66
+ list == [] ? nil : list
67
+ end
68
+
69
+ def ignore_member?(member)
70
+ if member.name =~ /^~/ || # do not build constructor
71
+ member.name =~ /^operator/ || # no conversion operators
72
+ member.has_complex_arguments? || # no complex arguments or return values
73
+ member.has_array_arguments? ||
74
+ member.vararg? ||
75
+ member.original_signature =~ /void\s+\*/ # used to detect return value and parameters
76
+ true # ignore
77
+ elsif return_value = member.return_value
78
+ return_value.type =~ />$/ || # no complex return types
79
+ return_value.is_native? && member.return_value.is_pointer?
80
+ else
81
+ false # ok, do not ignore
82
+ end
83
+ end
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,4 @@
1
+ <%= comment(@function) %>
2
+ <%= signature(@function) %> {
3
+ <%= indent(body(@function), 2) %>
4
+ }