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,247 @@
1
+ require 'dub/generator'
2
+ require 'erb'
3
+
4
+ module Dub
5
+ module Lua
6
+ class FunctionGen < Dub::Generator
7
+ NUMBER_TYPES = [
8
+ 'float',
9
+ 'double',
10
+ 'time_t',
11
+ ]
12
+
13
+ INT_TYPES = [
14
+ 'int',
15
+ 'size_t',
16
+ 'unsigned int',
17
+ 'uint',
18
+ 'uchar',
19
+ ]
20
+
21
+ BOOL_TYPES = [
22
+ 'bool',
23
+ ]
24
+
25
+ def initialize
26
+ @function_template = ::ERB.new(File.read(File.join(File.dirname(__FILE__), 'function.cpp.erb')))
27
+ @group_template = ::ERB.new(File.read(File.join(File.dirname(__FILE__), 'group.cpp.erb')))
28
+ end
29
+
30
+ # Produce bindings for a group of overloaded functions
31
+ def group(group)
32
+ @group = group
33
+ if @group.members
34
+ @group_template.result(binding)
35
+ else
36
+ ''
37
+ end
38
+ end
39
+
40
+ def function(function)
41
+ @function = function
42
+ @function_template.result(binding)
43
+ end
44
+
45
+ def function_generator
46
+ self
47
+ end
48
+
49
+ def namespace_generator
50
+ Dub::Lua.namespace_generator
51
+ end
52
+
53
+ def chooser_body(group = @group)
54
+ decision_tree = Argument.decision_tree(group.members)
55
+ res = []
56
+ res << "int type__ = lua_type(L, 1);"
57
+ if flatten_hash(decision_tree).include?(nil)
58
+ res << "int top__ = lua_gettop(L);"
59
+ end
60
+ res << switch(decision_tree)
61
+ res.join("\n")
62
+ end
63
+
64
+ # Create a switch to choose the correct method from argument types (overloaded functions)
65
+ def switch(hash_or_function, depth = 1)
66
+ if hash_or_function.kind_of?(Function)
67
+ method_call(hash_or_function)
68
+ else
69
+ res = []
70
+ res << "type__ = lua_type(L, #{depth});" unless depth == 1
71
+ else_prefix = ''
72
+ default_sub_group = nil
73
+ hash_or_function.each do |type, sub_group|
74
+ default_sub_group = sub_group
75
+ case type
76
+ when :number
77
+ res << "#{else_prefix}if (type__ == LUA_TNUMBER) {"
78
+ when :string
79
+ res << "#{else_prefix}if (type__ == LUA_TSTRING) {"
80
+ when nil
81
+ res << "#{else_prefix}if (top__ < #{depth}) {"
82
+ else
83
+ res << "#{else_prefix}if (type__ == LUA_TUSERDATA && is_userdata(L, #{depth}, \"#{type}\")) {"
84
+ end
85
+
86
+ res << indent(switch(sub_group, depth + 1), 2)
87
+
88
+ else_prefix = '} else '
89
+ end
90
+
91
+ last = default_sub_group.kind_of?(Hash) ? flatten_hash(default_sub_group).last : default_sub_group
92
+
93
+ res << "} else {"
94
+ res << " // use any to raise errors"
95
+ res << indent(method_call(last), 2)
96
+ res << "}"
97
+ res.join("\n")
98
+ end
99
+ end
100
+
101
+ def signature(func, overloaded_index = nil)
102
+ "static int #{method_name(func, overloaded_index)}(lua_State *L)"
103
+ end
104
+
105
+ def body(func)
106
+ res = []
107
+
108
+ if func.member_method? && !func.constructor? && !func.static?
109
+ klass = func.parent
110
+ res << "#{klass.name} *self__ = *((#{klass.name}**)luaL_checkudata(L, 1, #{klass.id_name.inspect}));"
111
+ res << "lua_remove(L, 1);"
112
+ end
113
+
114
+ if func.has_default_arguments?
115
+ res << "int top__ = lua_gettop(L);"
116
+ if return_value = func.return_value
117
+ res << "#{return_value.create_type} retval__;"
118
+ end
119
+ end
120
+
121
+ if_indent = 0
122
+ func.arguments.each_with_index do |arg, i|
123
+ if arg.has_default?
124
+ res << indent("if (top__ < #{i+1}) {", if_indent)
125
+ res << indent(" #{call_string(func, i)}", if_indent)
126
+ res << indent("} else {", if_indent)
127
+ if_indent += 2
128
+ end
129
+ res << indent(get_arg(arg, i + 1), if_indent)
130
+ end
131
+ res << indent(call_string(func, func.arguments.count), if_indent)
132
+ while if_indent > 0
133
+ if_indent -= 2
134
+ res << indent("}", if_indent)
135
+ end
136
+
137
+ res << return_value(func)
138
+ res.join("\n")
139
+ end
140
+
141
+ def method_name(func, overloaded_index = nil)
142
+ overloaded_index ||= func.overloaded_index
143
+ overloaded_index = '' if overloaded_index == 0
144
+ "#{func.prefix}_#{func.name}#{overloaded_index}"
145
+ end
146
+
147
+ def method_call(func)
148
+ "return #{method_name(func)}(L);"
149
+ end
150
+
151
+ def call_string(func, upto_arg = nil)
152
+ upto_arg ||= func.arguments.count
153
+ if upto_arg == 0
154
+ call_string = "#{func.call_name}();"
155
+ else
156
+ call_string = "#{func.call_name}(#{func.arguments[0..(upto_arg-1)].map{|arg| arg.in_call_type}.join(', ')});"
157
+ end
158
+
159
+ if func.constructor?
160
+ call_string = "new #{call_string}"
161
+ elsif func.member_method? && !func.static?
162
+ call_string = "self__->#{call_string}"
163
+ end
164
+
165
+
166
+ if return_value = func.return_value
167
+ if func.has_default_arguments?
168
+ "retval__ = #{call_string}"
169
+ else
170
+ "#{return_value.create_type} retval__ = #{call_string}"
171
+ end
172
+ else
173
+ call_string
174
+ end
175
+ end
176
+
177
+ def return_value(func)
178
+ res = []
179
+ if return_value = func.return_value
180
+ case Argument.type_group(return_value)
181
+ when :number
182
+ res << "lua_pushnumber(L, retval__);"
183
+ when :boolean
184
+ res << "lua_pushboolean(L, retval__);"
185
+ when :string
186
+ raise "Not supported yet"
187
+ else
188
+ if func.constructor?
189
+ prefix = func.klass.prefix
190
+ else
191
+ prefix = func.prefix
192
+ end
193
+ res << "lua_pushclass<#{return_value.type}>(L, retval__, \"#{return_value.id_name}\");"
194
+ end
195
+ res << "return 1;"
196
+ else
197
+ res << "return 0;"
198
+ end
199
+ res.join("\n")
200
+ end
201
+
202
+ # Get argument and verify type
203
+ # // luaL_argcheck could be better to report errors like "expected Mat"
204
+ def get_arg(arg, stack_pos)
205
+ type_def = "#{arg.create_type}#{arg.name}#{arg.array_suffix}"
206
+ if arg.is_native?
207
+ if arg.is_pointer?
208
+ if arg.type == 'char'
209
+ type_def = "const #{type_def}" unless arg.is_const?
210
+ "#{type_def} = luaL_checkstring(L, #{stack_pos});"
211
+ else
212
+ # retrieve by using a table accessor
213
+ # TODO: we should have a hint on required sizes !
214
+ "\nDubArgPointer<#{arg.type}> ptr_#{arg.name};\n" +
215
+ "#{type_def} = ptr_#{arg.name}(L, #{stack_pos});"
216
+ end
217
+ else
218
+ if NUMBER_TYPES.include?(arg.type)
219
+ "#{type_def} = luaL_checknumber(L, #{stack_pos});"
220
+ elsif BOOL_TYPES.include?(arg.type)
221
+ "#{type_def} = lua_toboolean(L, #{stack_pos});"
222
+ elsif INT_TYPES.include?(arg.type)
223
+ "#{type_def} = luaL_checkint(L, #{stack_pos});"
224
+ else
225
+ raise "Unsuported type: #{arg.type}"
226
+ end
227
+ end
228
+ else
229
+ "#{type_def} = *((#{arg.create_type}*)luaL_checkudata(L, #{stack_pos}, #{arg.id_name.inspect}));"
230
+ end
231
+ end
232
+
233
+ def flatten_hash(hash)
234
+ list = []
235
+ hash.each do |k, v|
236
+ if v.kind_of?(Hash)
237
+ list << [k, flatten_hash(v)]
238
+ else
239
+ list << [k, v]
240
+ end
241
+ end
242
+ list.flatten
243
+ end
244
+
245
+ end # FunctionGen
246
+ end # Lua
247
+ end # Dub
@@ -0,0 +1,9 @@
1
+ <% @group.members.each do |f| %>
2
+ <%= function(f) %>
3
+
4
+ <% end %>
5
+
6
+ /** Overloaded function chooser for <%= @group.name %>(...) */
7
+ <%= signature(@group.first, 0) %> {
8
+ <%= indent(chooser_body, 2) %>
9
+ }
@@ -0,0 +1,141 @@
1
+
2
+ #ifndef DOXY_GENERATOR_LIB_DOXY_GENERATOR_INCLUDE_LUA_DOXY_HELPER_H_
3
+ #define DOXY_GENERATOR_LIB_DOXY_GENERATOR_INCLUDE_LUA_DOXY_HELPER_H_
4
+
5
+ #include <stdlib.h> // malloc
6
+
7
+ #ifdef __cplusplus
8
+ extern "C" {
9
+ #endif
10
+ // We need C linkage because lua lib is compiled as C code
11
+ #include "lua.h"
12
+ #include "lauxlib.h"
13
+
14
+ #ifdef __cplusplus
15
+ }
16
+ #endif
17
+ /** ======================================== lua_pushclass */
18
+
19
+ /** Push a custom type on the stack.
20
+ * Since the value is passed as a pointer, we assume it has been created
21
+ * using 'new' and Lua can safely call delete when it needs to garbage-
22
+ * -collect it.
23
+ */
24
+ template<class T>
25
+ void lua_pushclass(lua_State *L, T *ptr, const char *type_name) {
26
+ T **userdata = (T**)lua_newuserdata(L, sizeof(T*));
27
+ *userdata = ptr;
28
+
29
+ // the userdata is now on top of the stack
30
+
31
+ // set metatable (contains methods)
32
+ luaL_getmetatable(L, type_name);
33
+ lua_setmetatable(L, -2);
34
+ }
35
+
36
+ /** Push a custom type on the stack.
37
+ * Since the value is passed by value, we have to allocate a copy
38
+ * using 'new' so that Lua can keep it.
39
+ */
40
+ template<class T>
41
+ void lua_pushclass(lua_State *L, T &val, const char *type_name) {
42
+ T *val_ptr = new T(val);
43
+ lua_pushclass<T>(L, val_ptr, type_name);
44
+ }
45
+
46
+ /** ======================================== DubArgPointer */
47
+
48
+ /** This class is a helper to provide pointer to data from
49
+ * Lua to C (but maybe it's not a good idea).
50
+ */
51
+ template<class T>
52
+ class DubArgPointer {
53
+ public:
54
+ DubArgPointer() : data(NULL) {}
55
+
56
+ ~DubArgPointer() {
57
+ if (data) free(data);
58
+ }
59
+
60
+ // TODO: we should have a hint on required sizes !
61
+ T *operator()(lua_State *L, int index) {
62
+ if (!lua_istable(L, index)) throw 1;
63
+
64
+ size_t size = lua_objlen(L, index);
65
+ if (size == 0) return NULL;
66
+
67
+ data = (T*)malloc(size * sizeof(T));
68
+ if (!data) throw 1;
69
+
70
+ for(size_t i=0; i < size; ++i) {
71
+ data[i] = get_value_at(L, index, i+1);
72
+ }
73
+ return data;
74
+ }
75
+
76
+ private:
77
+ T get_value_at(lua_State *L, int table_index, int index) {
78
+ lua_pushinteger(L, index + 1);
79
+ lua_gettable(L, index);
80
+ T value = luaL_checknumber(L, -1);
81
+ lua_pop(L, 1);
82
+ return value;
83
+ }
84
+
85
+ T *data;
86
+ };
87
+
88
+ /** ======================================== is_userdata */
89
+
90
+ inline bool is_userdata(lua_State *L, int index, const char *tname) {
91
+ void *p = lua_touserdata(L, index);
92
+ if (p != NULL) { /* value is a userdata? */
93
+ if (lua_getmetatable(L, index)) { /* does it have a metatable? */
94
+ lua_getfield(L, LUA_REGISTRYINDEX, tname); /* get correct metatable */
95
+ if (lua_rawequal(L, -1, -2)) { /* does it have the correct mt? */
96
+ lua_pop(L, 2); /* remove both metatables */
97
+ // type match
98
+ return true;
99
+ }
100
+ }
101
+ }
102
+ // type does not match
103
+ return false;
104
+ }
105
+
106
+ /** ======================================== register_constants */
107
+
108
+
109
+ typedef struct lua_constants_Reg {
110
+ const char *name;
111
+ double constant;
112
+ } lua_constants_Reg;
113
+
114
+ inline int libsize (const lua_constants_Reg *l) {
115
+ int size = 0;
116
+ for (; l->name; l++) size++;
117
+ return size;
118
+ }
119
+
120
+ inline void register_constants(lua_State *L, const char *name_space, const lua_constants_Reg *l) {
121
+ if (name_space) {
122
+ /* compute size hint for new table. */
123
+ int size = libsize(l);
124
+
125
+ /* try global variable (and create one if it does not exist) */
126
+ if (luaL_findtable(L, LUA_GLOBALSINDEX, name_space, size) != NULL)
127
+ luaL_error(L, "name conflict for module " LUA_QS, name_space);
128
+
129
+ /* found name_space in global index ==> stack -1 */
130
+ }
131
+ for (; l->name; l++) {
132
+ /* push each constant into the name_space (stack position = -1)*/
133
+ lua_pushnumber(L, l->constant);
134
+ lua_setfield(L, -2, l->name);
135
+ }
136
+ /* pop name_space */
137
+ lua_pop(L, 1);
138
+ }
139
+
140
+
141
+ #endif // DOXY_GENERATOR_LIB_DOXY_GENERATOR_INCLUDE_LUA_DOXY_HELPER_H_
@@ -0,0 +1,35 @@
1
+ #include "<%= @namespace.header %>"
2
+
3
+ #include "lua_cpp_helper.h"
4
+
5
+ using namespace <%= @namespace.name %>;
6
+
7
+ <% if @namespace.members; @namespace.members.each do |function| %>
8
+
9
+ <%= function %>
10
+
11
+ <% end; end %>
12
+
13
+ // Register namespace
14
+
15
+
16
+ static const struct luaL_Reg <%= @namespace.name %>_functions[] = {
17
+ <%= indent(functions_registration, 2) %>,
18
+ {NULL, NULL},
19
+ };
20
+
21
+ <% if @namespace.has_constants? %>
22
+ static const struct lua_constants_Reg <%= @namespace.name %>_namespace_constants[] = {
23
+ <%= indent(constants_registration, 2) %>,
24
+ {NULL, NULL},
25
+ };
26
+ <% end %>
27
+
28
+ void luaopen_<%= @namespace.lib_name %>(lua_State *L) {
29
+ // register functions
30
+ luaL_register(L, <%= @namespace.name.inspect %>, <%= @namespace.name %>_functions);
31
+ <% if @namespace.has_constants? %>
32
+ // register namespace enums
33
+ register_constants(L, <%= @namespace.id_name.inspect %>, <%= @namespace.name %>_namespace_constants);
34
+ <% end %>
35
+ }
@@ -0,0 +1,88 @@
1
+ require 'dub/generator'
2
+ require 'erb'
3
+
4
+ module Dub
5
+ module Lua
6
+ class NamespaceGen < Dub::Generator
7
+ def initialize
8
+ @namespace_template = ::ERB.new(File.read(File.join(File.dirname(__FILE__), 'namespace.cpp.erb')))
9
+ end
10
+
11
+ def namespace(namespace)
12
+ @namespace = namespace
13
+ @namespace_template.result(binding)
14
+ end
15
+
16
+ def class_generator
17
+ Lua.class_generator
18
+ end
19
+
20
+ def function_generator
21
+ Lua.function_generator
22
+ end
23
+
24
+ def functions_registration(namespace = @namespace)
25
+ (namespace.members || []).map do |method|
26
+ "{%-32s, #{method.method_name(0)}}" % method.name.inspect
27
+ end.join(",\n")
28
+ end
29
+
30
+ def constants_registration(namespace = @namespace)
31
+ res = []
32
+ if namespace.has_enums?
33
+ res << namespace.enums.map do |name|
34
+ "{%-32s, #{namespace.full_type}::#{name}}" % name.inspect
35
+ end.join(",\n")
36
+ end
37
+
38
+ if namespace.has_defines?
39
+ res << namespace.defines.map do |name|
40
+ "{%-32s, #{name}}" % name.inspect
41
+ end.join(",\n")
42
+ end
43
+
44
+ same = namespace.enums & namespace.defines
45
+ unless same.empty?
46
+ # Should never happen (not sure if it would compile ok in the first place)
47
+ puts "Warning: the following are present both as enum and define: #{same.inspect}"
48
+ end
49
+ res.join(",\n\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.original_signature =~ />/ || # no complex types in signature
73
+ member.has_array_arguments? ||
74
+ member.vararg? ||
75
+ member.original_signature =~ /void\s+\*/ ||
76
+ member.has_class_pointer_arguments?
77
+
78
+ true # ignore
79
+ elsif return_value = member.return_value
80
+ return_value.type =~ />$/ || # no complex return types
81
+ return_value.is_native? && member.return_value.is_pointer?
82
+ else
83
+ false # ok, do not ignore
84
+ end
85
+ end
86
+ end
87
+ end
88
+ end
data/lib/dub/lua.rb ADDED
@@ -0,0 +1,24 @@
1
+ require 'dub/lua/function_gen'
2
+ require 'dub/lua/namespace_gen'
3
+ require 'dub/lua/class_gen'
4
+
5
+ module Dub
6
+ module Lua
7
+ def self.function_generator
8
+ @@function_generator ||= Dub::Lua::FunctionGen.new
9
+ end
10
+
11
+ def self.class_generator
12
+ @@class_generator ||= Dub::Lua::ClassGen.new
13
+ end
14
+
15
+ def self.namespace_generator
16
+ @@namespace_generator ||= Dub::Lua::NamespaceGen.new
17
+ end
18
+
19
+ def self.bind(object)
20
+ object.bind(self)
21
+ object
22
+ end
23
+ end # Lua
24
+ end # Dub
@@ -0,0 +1,92 @@
1
+ require 'dub/function'
2
+ require 'dub/function_group'
3
+ require 'dub/klass'
4
+
5
+ module Dub
6
+ class Klass
7
+ end
8
+
9
+ # This module is used by Namespace and Klass to extract member functions
10
+ module MemberExtraction
11
+ def members_prefix
12
+ @name
13
+ end
14
+
15
+ def parse_members
16
+ @members_hash = {}
17
+ @t_members_hash = {}
18
+ # TODO: template functions
19
+ (@xml/'memberdef').each do |member|
20
+ Dub.logger.info "Parsing #{(member/'name').innerHTML}"
21
+ name = (member/"name").innerHTML
22
+ if (member/'templateparamlist').first
23
+ insert_member(member, name, @t_members_hash)
24
+ else
25
+ insert_member(member, name, @members_hash)
26
+ end
27
+ end
28
+ end
29
+
30
+ def insert_member(member, name, destination)
31
+ if destination[name].kind_of?(Array)
32
+ destination[name] << member
33
+ elsif first_member = destination[name]
34
+ destination[name] = [first_member, member]
35
+ else
36
+ destination[name] = member
37
+ end
38
+ end
39
+
40
+ def member(name)
41
+ get_member(name.to_s, @members_hash)
42
+ end
43
+
44
+ def members
45
+ @members ||= begin
46
+ list = []
47
+ @members_hash.each do |name, member|
48
+ list << get_member(name)
49
+ end
50
+ list.compact!
51
+ list.sort
52
+ end
53
+ end
54
+
55
+ def template_method(name)
56
+ get_member(name.to_s, @t_members_hash)
57
+ end
58
+
59
+ # Lazy construction of members
60
+ def get_member(name, source = @members_hash)
61
+ if member_or_group = source[name]
62
+ if member_or_group.kind_of?(Array)
63
+ if member_or_group.first.kind_of?(Hpricot::Elem)
64
+ list = Dub::FunctionGroup.new(self)
65
+ member_or_group.each_with_index do |m,i|
66
+ list << make_member(name, m, i + 1)
67
+ end
68
+ member_or_group = list.compact
69
+ member_or_group = nil if member_or_group == []
70
+ end
71
+ elsif member_or_group.kind_of?(Hpricot::Elem)
72
+ source[name] = member_or_group = make_member(name, member_or_group)
73
+ end
74
+ end
75
+ member_or_group
76
+ end
77
+
78
+ def make_member(name, member, overloaded_index = nil)
79
+ case member[:kind]
80
+ when 'function'
81
+ Dub.logger.info "Building #{members_prefix}::#{name}"
82
+ Function.new(self, name, member, members_prefix, overloaded_index)
83
+ when 'class'
84
+ Dub.logger.info "Building #{members_prefix}::#{name}"
85
+ Klass.new(self, name, member, members_prefix)
86
+ else
87
+ # not supported: ignore
88
+ nil
89
+ end
90
+ end
91
+ end
92
+ end # Dub