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.
- data/History.txt +92 -0
- data/LICENSE +20 -0
- data/README.rdoc +115 -0
- data/Rakefile +59 -0
- data/dub.gemspec +197 -0
- data/lib/dub/argument.rb +286 -0
- data/lib/dub/entities_unescape.rb +9 -0
- data/lib/dub/function.rb +177 -0
- data/lib/dub/function_group.rb +72 -0
- data/lib/dub/generator.rb +15 -0
- data/lib/dub/group.rb +20 -0
- data/lib/dub/klass.rb +338 -0
- data/lib/dub/lua/class.cpp.erb +114 -0
- data/lib/dub/lua/class_gen.rb +96 -0
- data/lib/dub/lua/function.cpp.erb +15 -0
- data/lib/dub/lua/function_gen.rb +329 -0
- data/lib/dub/lua/group.cpp.erb +9 -0
- data/lib/dub/lua/lua_cpp_helper.cpp +259 -0
- data/lib/dub/lua/lua_cpp_helper.h +219 -0
- data/lib/dub/lua/lua_object.cpp +158 -0
- data/lib/dub/lua/lua_object.h +69 -0
- data/lib/dub/lua/namespace.cpp.erb +42 -0
- data/lib/dub/lua/namespace_gen.rb +69 -0
- data/lib/dub/lua.rb +24 -0
- data/lib/dub/member_extraction.rb +128 -0
- data/lib/dub/namespace.rb +295 -0
- data/lib/dub/opts_parser.rb +30 -0
- data/lib/dub/parser.rb +46 -0
- data/lib/dub/templates/lua_template.erb +21 -0
- data/lib/dub/version.rb +3 -0
- data/lib/dub.rb +24 -20
- data/test/argument_test.rb +581 -0
- data/test/fixtures/app/CMakeLists.txt +54 -0
- data/test/fixtures/app/Doxyfile +1600 -0
- data/test/fixtures/app/bindings/all_lua.cpp +299 -0
- data/test/fixtures/app/include/matrix.h +283 -0
- data/test/fixtures/app/make_lua_bindings.rb +13 -0
- data/test/fixtures/app/vendor/lua/CMakeLists.txt +25 -0
- data/test/fixtures/app/vendor/lua/COPYRIGHT +34 -0
- data/test/fixtures/app/vendor/lua/HISTORY +183 -0
- data/test/fixtures/app/vendor/lua/INSTALL +99 -0
- data/test/fixtures/app/vendor/lua/Makefile +183 -0
- data/test/fixtures/app/vendor/lua/README +37 -0
- data/test/fixtures/app/vendor/lua/lapi.c +1080 -0
- data/test/fixtures/app/vendor/lua/lapi.h +16 -0
- data/test/fixtures/app/vendor/lua/lauxlib.c +653 -0
- data/test/fixtures/app/vendor/lua/lauxlib.h +174 -0
- data/test/fixtures/app/vendor/lua/lbaselib.c +643 -0
- data/test/fixtures/app/vendor/lua/lcode.c +839 -0
- data/test/fixtures/app/vendor/lua/lcode.h +76 -0
- data/test/fixtures/app/vendor/lua/ldblib.c +397 -0
- data/test/fixtures/app/vendor/lua/ldebug.c +622 -0
- data/test/fixtures/app/vendor/lua/ldebug.h +33 -0
- data/test/fixtures/app/vendor/lua/ldo.c +516 -0
- data/test/fixtures/app/vendor/lua/ldo.h +57 -0
- data/test/fixtures/app/vendor/lua/ldump.c +164 -0
- data/test/fixtures/app/vendor/lua/lfunc.c +174 -0
- data/test/fixtures/app/vendor/lua/lfunc.h +34 -0
- data/test/fixtures/app/vendor/lua/lgc.c +711 -0
- data/test/fixtures/app/vendor/lua/lgc.h +110 -0
- data/test/fixtures/app/vendor/lua/liblua.a +0 -0
- data/test/fixtures/app/vendor/lua/linit.c +38 -0
- data/test/fixtures/app/vendor/lua/liolib.c +532 -0
- data/test/fixtures/app/vendor/lua/llex.c +461 -0
- data/test/fixtures/app/vendor/lua/llex.h +81 -0
- data/test/fixtures/app/vendor/lua/llimits.h +128 -0
- data/test/fixtures/app/vendor/lua/lmathlib.c +263 -0
- data/test/fixtures/app/vendor/lua/lmem.c +86 -0
- data/test/fixtures/app/vendor/lua/lmem.h +49 -0
- data/test/fixtures/app/vendor/lua/loadlib.c +664 -0
- data/test/fixtures/app/vendor/lua/lobject.c +214 -0
- data/test/fixtures/app/vendor/lua/lobject.h +381 -0
- data/test/fixtures/app/vendor/lua/lopcodes.c +102 -0
- data/test/fixtures/app/vendor/lua/lopcodes.h +268 -0
- data/test/fixtures/app/vendor/lua/loslib.c +244 -0
- data/test/fixtures/app/vendor/lua/lparser.c +1337 -0
- data/test/fixtures/app/vendor/lua/lparser.h +82 -0
- data/test/fixtures/app/vendor/lua/lstate.c +214 -0
- data/test/fixtures/app/vendor/lua/lstate.h +168 -0
- data/test/fixtures/app/vendor/lua/lstring.c +111 -0
- data/test/fixtures/app/vendor/lua/lstring.h +31 -0
- data/test/fixtures/app/vendor/lua/lstrlib.c +868 -0
- data/test/fixtures/app/vendor/lua/ltable.c +588 -0
- data/test/fixtures/app/vendor/lua/ltable.h +40 -0
- data/test/fixtures/app/vendor/lua/ltablib.c +278 -0
- data/test/fixtures/app/vendor/lua/ltm.c +75 -0
- data/test/fixtures/app/vendor/lua/ltm.h +54 -0
- data/test/fixtures/app/vendor/lua/lua.c +695 -0
- data/test/fixtures/app/vendor/lua/lua.h +385 -0
- data/test/fixtures/app/vendor/lua/lua_dub_helper.h +77 -0
- data/test/fixtures/app/vendor/lua/luac +0 -0
- data/test/fixtures/app/vendor/lua/luac.c +200 -0
- data/test/fixtures/app/vendor/lua/luaconf.h +762 -0
- data/test/fixtures/app/vendor/lua/lualib.h +53 -0
- data/test/fixtures/app/vendor/lua/lundump.c +223 -0
- data/test/fixtures/app/vendor/lua/lundump.h +36 -0
- data/test/fixtures/app/vendor/lua/lvm.c +765 -0
- data/test/fixtures/app/vendor/lua/lvm.h +36 -0
- data/test/fixtures/app/vendor/lua/lzio.c +82 -0
- data/test/fixtures/app/vendor/lua/lzio.h +67 -0
- data/test/fixtures/app/vendor/lua/matrix.h +102 -0
- data/test/fixtures/app/vendor/lua/print.c +227 -0
- data/test/fixtures/app/vendor/lua/test/README +26 -0
- data/test/fixtures/app/vendor/lua/test/bisect.lua +27 -0
- data/test/fixtures/app/vendor/lua/test/cf.lua +16 -0
- data/test/fixtures/app/vendor/lua/test/echo.lua +5 -0
- data/test/fixtures/app/vendor/lua/test/env.lua +7 -0
- data/test/fixtures/app/vendor/lua/test/factorial.lua +32 -0
- data/test/fixtures/app/vendor/lua/test/fib.lua +40 -0
- data/test/fixtures/app/vendor/lua/test/fibfor.lua +13 -0
- data/test/fixtures/app/vendor/lua/test/globals.lua +13 -0
- data/test/fixtures/app/vendor/lua/test/hello.lua +3 -0
- data/test/fixtures/app/vendor/lua/test/life.lua +111 -0
- data/test/fixtures/app/vendor/lua/test/luac.lua +7 -0
- data/test/fixtures/app/vendor/lua/test/printf.lua +7 -0
- data/test/fixtures/app/vendor/lua/test/readonly.lua +12 -0
- data/test/fixtures/app/vendor/lua/test/sieve.lua +29 -0
- data/test/fixtures/app/vendor/lua/test/sort.lua +66 -0
- data/test/fixtures/app/vendor/lua/test/table.lua +12 -0
- data/test/fixtures/app/vendor/lua/test/trace-calls.lua +32 -0
- data/test/fixtures/app/vendor/lua/test/trace-globals.lua +38 -0
- data/test/fixtures/app/vendor/lua/test/xd.lua +14 -0
- data/test/fixtures/app/xml/classdub_1_1_base.xml +85 -0
- data/test/fixtures/app/xml/classdub_1_1_custom_destructor.xml +67 -0
- data/test/fixtures/app/xml/classdub_1_1_deletable_out_of_lua.xml +43 -0
- data/test/fixtures/app/xml/classdub_1_1_matrix.xml +482 -0
- data/test/fixtures/app/xml/classdub_1_1_no_destructor.xml +49 -0
- data/test/fixtures/app/xml/classdub_1_1_priv_sub_base.xml +89 -0
- data/test/fixtures/app/xml/classdub_1_1_private_constr.xml +68 -0
- data/test/fixtures/app/xml/classdub_1_1_static_constr.xml +69 -0
- data/test/fixtures/app/xml/classdub_1_1_sub_base.xml +89 -0
- data/test/fixtures/app/xml/classdub_1_1_t_mat.xml +252 -0
- data/test/fixtures/app/xml/combine.xslt +15 -0
- data/test/fixtures/app/xml/compound.xsd +814 -0
- data/test/fixtures/app/xml/dir_53661a2bdeb1d55e60581a7e15deb763.xml +12 -0
- data/test/fixtures/app/xml/index.xml +91 -0
- data/test/fixtures/app/xml/index.xsd +66 -0
- data/test/fixtures/app/xml/matrix_8h.xml +310 -0
- data/test/fixtures/app/xml/namespacedub.xml +48 -0
- data/test/fixtures/classcv_1_1_mat.xml +1996 -0
- data/test/fixtures/classcv_1_1_point__.xml +341 -0
- data/test/fixtures/classcv_1_1_scalar__.xml +269 -0
- data/test/fixtures/classcv_1_1_size__.xml +270 -0
- data/test/fixtures/dummy_class.cpp.erb +1 -0
- data/test/fixtures/dummy_function.cpp.erb +1 -0
- data/test/fixtures/group___magic_type.xml +406 -0
- data/test/fixtures/namespacecv.xml +12659 -0
- data/test/function_group_test.rb +43 -0
- data/test/function_test.rb +405 -0
- data/test/group_test.rb +241 -0
- data/test/helper.rb +34 -0
- data/test/klass_test.rb +551 -0
- data/test/lua_function_gen_test.rb +242 -0
- data/test/namespace_test.rb +220 -0
- data/test/parser_test.rb +36 -0
- metadata +229 -272
- checksums.yaml +0 -7
- data/lib/open_api_sdk/analytics.rb +0 -99
- data/lib/open_api_sdk/domains.rb +0 -353
- data/lib/open_api_sdk/dub.rb +0 -88
- data/lib/open_api_sdk/links.rb +0 -766
- data/lib/open_api_sdk/metatags.rb +0 -54
- data/lib/open_api_sdk/models/operations/bulkcreatelinks_response.rb +0 -60
- data/lib/open_api_sdk/models/operations/bulkupdatelinks_requestbody.rb +0 -27
- data/lib/open_api_sdk/models/operations/bulkupdatelinks_response.rb +0 -60
- data/lib/open_api_sdk/models/operations/color.rb +0 -24
- data/lib/open_api_sdk/models/operations/createdomain_requestbody.rb +0 -33
- data/lib/open_api_sdk/models/operations/createdomain_response.rb +0 -60
- data/lib/open_api_sdk/models/operations/createlink_requestbody.rb +0 -95
- data/lib/open_api_sdk/models/operations/createlink_response.rb +0 -60
- data/lib/open_api_sdk/models/operations/createtag_requestbody.rb +0 -32
- data/lib/open_api_sdk/models/operations/createtag_response.rb +0 -60
- data/lib/open_api_sdk/models/operations/data.rb +0 -83
- data/lib/open_api_sdk/models/operations/deletedomain_request.rb +0 -24
- data/lib/open_api_sdk/models/operations/deletedomain_response.rb +0 -60
- data/lib/open_api_sdk/models/operations/deletedomain_responsebody.rb +0 -24
- data/lib/open_api_sdk/models/operations/deletelink_request.rb +0 -24
- data/lib/open_api_sdk/models/operations/deletelink_response.rb +0 -60
- data/lib/open_api_sdk/models/operations/deletelink_responsebody.rb +0 -24
- data/lib/open_api_sdk/models/operations/event.rb +0 -21
- data/lib/open_api_sdk/models/operations/getlinkinfo_request.rb +0 -33
- data/lib/open_api_sdk/models/operations/getlinkinfo_response.rb +0 -60
- data/lib/open_api_sdk/models/operations/getlinks_request.rb +0 -51
- data/lib/open_api_sdk/models/operations/getlinks_response.rb +0 -60
- data/lib/open_api_sdk/models/operations/getlinkscount_request.rb +0 -48
- data/lib/open_api_sdk/models/operations/getlinkscount_response.rb +0 -60
- data/lib/open_api_sdk/models/operations/getmetatags_request.rb +0 -24
- data/lib/open_api_sdk/models/operations/getmetatags_response.rb +0 -33
- data/lib/open_api_sdk/models/operations/getmetatags_responsebody.rb +0 -30
- data/lib/open_api_sdk/models/operations/getqrcode_request.rb +0 -39
- data/lib/open_api_sdk/models/operations/getqrcode_response.rb +0 -60
- data/lib/open_api_sdk/models/operations/gettags_response.rb +0 -60
- data/lib/open_api_sdk/models/operations/getworkspace_request.rb +0 -24
- data/lib/open_api_sdk/models/operations/getworkspace_response.rb +0 -60
- data/lib/open_api_sdk/models/operations/groupby.rb +0 -28
- data/lib/open_api_sdk/models/operations/interval.rb +0 -25
- data/lib/open_api_sdk/models/operations/level.rb +0 -21
- data/lib/open_api_sdk/models/operations/listdomains_response.rb +0 -60
- data/lib/open_api_sdk/models/operations/paymentprocessor.rb +0 -20
- data/lib/open_api_sdk/models/operations/requestbody.rb +0 -95
- data/lib/open_api_sdk/models/operations/retrieveanalytics_request.rb +0 -81
- data/lib/open_api_sdk/models/operations/retrieveanalytics_response.rb +0 -60
- data/lib/open_api_sdk/models/operations/sort.rb +0 -20
- data/lib/open_api_sdk/models/operations/trackcustomer_requestbody.rb +0 -33
- data/lib/open_api_sdk/models/operations/trackcustomer_response.rb +0 -60
- data/lib/open_api_sdk/models/operations/trackcustomer_responsebody.rb +0 -33
- data/lib/open_api_sdk/models/operations/tracklead_requestbody.rb +0 -42
- data/lib/open_api_sdk/models/operations/tracklead_response.rb +0 -60
- data/lib/open_api_sdk/models/operations/tracklead_responsebody.rb +0 -42
- data/lib/open_api_sdk/models/operations/tracksale_requestbody.rb +0 -42
- data/lib/open_api_sdk/models/operations/tracksale_response.rb +0 -60
- data/lib/open_api_sdk/models/operations/tracksale_responsebody.rb +0 -42
- data/lib/open_api_sdk/models/operations/updatedomain_request.rb +0 -27
- data/lib/open_api_sdk/models/operations/updatedomain_requestbody.rb +0 -33
- data/lib/open_api_sdk/models/operations/updatedomain_response.rb +0 -60
- data/lib/open_api_sdk/models/operations/updatelink_request.rb +0 -27
- data/lib/open_api_sdk/models/operations/updatelink_requestbody.rb +0 -95
- data/lib/open_api_sdk/models/operations/updatelink_response.rb +0 -60
- data/lib/open_api_sdk/models/operations/updatetag_color.rb +0 -24
- data/lib/open_api_sdk/models/operations/updatetag_request.rb +0 -27
- data/lib/open_api_sdk/models/operations/updatetag_requestbody.rb +0 -32
- data/lib/open_api_sdk/models/operations/updatetag_response.rb +0 -60
- data/lib/open_api_sdk/models/operations/updateworkspace_request.rb +0 -27
- data/lib/open_api_sdk/models/operations/updateworkspace_requestbody.rb +0 -27
- data/lib/open_api_sdk/models/operations/updateworkspace_response.rb +0 -60
- data/lib/open_api_sdk/models/operations/upsertlink_requestbody.rb +0 -95
- data/lib/open_api_sdk/models/operations/upsertlink_response.rb +0 -60
- data/lib/open_api_sdk/models/operations.rb +0 -74
- data/lib/open_api_sdk/models/shared/badrequest.rb +0 -24
- data/lib/open_api_sdk/models/shared/code.rb +0 -18
- data/lib/open_api_sdk/models/shared/color.rb +0 -24
- data/lib/open_api_sdk/models/shared/conflict.rb +0 -24
- data/lib/open_api_sdk/models/shared/conflict_code.rb +0 -18
- data/lib/open_api_sdk/models/shared/conflict_error.rb +0 -30
- data/lib/open_api_sdk/models/shared/countrycode.rb +0 -267
- data/lib/open_api_sdk/models/shared/domains.rb +0 -27
- data/lib/open_api_sdk/models/shared/domainschema.rb +0 -48
- data/lib/open_api_sdk/models/shared/error.rb +0 -30
- data/lib/open_api_sdk/models/shared/forbidden.rb +0 -24
- data/lib/open_api_sdk/models/shared/forbidden_code.rb +0 -18
- data/lib/open_api_sdk/models/shared/forbidden_error.rb +0 -30
- data/lib/open_api_sdk/models/shared/geo.rb +0 -771
- data/lib/open_api_sdk/models/shared/internalservererror.rb +0 -24
- data/lib/open_api_sdk/models/shared/internalservererror_code.rb +0 -18
- data/lib/open_api_sdk/models/shared/internalservererror_error.rb +0 -30
- data/lib/open_api_sdk/models/shared/inviteexpired.rb +0 -24
- data/lib/open_api_sdk/models/shared/inviteexpired_code.rb +0 -18
- data/lib/open_api_sdk/models/shared/inviteexpired_error.rb +0 -30
- data/lib/open_api_sdk/models/shared/linkgeotargeting.rb +0 -771
- data/lib/open_api_sdk/models/shared/linkschema.rb +0 -142
- data/lib/open_api_sdk/models/shared/notfound.rb +0 -24
- data/lib/open_api_sdk/models/shared/notfound_code.rb +0 -18
- data/lib/open_api_sdk/models/shared/notfound_error.rb +0 -30
- data/lib/open_api_sdk/models/shared/plan.rb +0 -24
- data/lib/open_api_sdk/models/shared/ratelimitexceeded.rb +0 -24
- data/lib/open_api_sdk/models/shared/ratelimitexceeded_code.rb +0 -18
- data/lib/open_api_sdk/models/shared/ratelimitexceeded_error.rb +0 -30
- data/lib/open_api_sdk/models/shared/role.rb +0 -19
- data/lib/open_api_sdk/models/shared/security.rb +0 -24
- data/lib/open_api_sdk/models/shared/tagschema.rb +0 -30
- data/lib/open_api_sdk/models/shared/unauthorized.rb +0 -24
- data/lib/open_api_sdk/models/shared/unauthorized_code.rb +0 -18
- data/lib/open_api_sdk/models/shared/unauthorized_error.rb +0 -30
- data/lib/open_api_sdk/models/shared/unprocessableentity.rb +0 -24
- data/lib/open_api_sdk/models/shared/unprocessableentity_code.rb +0 -18
- data/lib/open_api_sdk/models/shared/unprocessableentity_error.rb +0 -30
- data/lib/open_api_sdk/models/shared/users.rb +0 -24
- data/lib/open_api_sdk/models/shared/workspaceschema.rb +0 -81
- data/lib/open_api_sdk/models/shared.rb +0 -49
- data/lib/open_api_sdk/qr_codes.rb +0 -97
- data/lib/open_api_sdk/sdkconfiguration.rb +0 -52
- data/lib/open_api_sdk/tags.rb +0 -272
- data/lib/open_api_sdk/track.rb +0 -276
- data/lib/open_api_sdk/utils/metadata_fields.rb +0 -150
- data/lib/open_api_sdk/utils/t.rb +0 -59
- data/lib/open_api_sdk/utils/utils.rb +0 -772
- 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
|
+
|