dub 0.2.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of dub might be problematic. Click here for more details.

Files changed (277) hide show
  1. data/History.txt +92 -0
  2. data/LICENSE +20 -0
  3. data/README.rdoc +115 -0
  4. data/Rakefile +59 -0
  5. data/dub.gemspec +197 -0
  6. data/lib/dub/argument.rb +286 -0
  7. data/lib/dub/entities_unescape.rb +9 -0
  8. data/lib/dub/function.rb +177 -0
  9. data/lib/dub/function_group.rb +72 -0
  10. data/lib/dub/generator.rb +15 -0
  11. data/lib/dub/group.rb +20 -0
  12. data/lib/dub/klass.rb +338 -0
  13. data/lib/dub/lua/class.cpp.erb +114 -0
  14. data/lib/dub/lua/class_gen.rb +96 -0
  15. data/lib/dub/lua/function.cpp.erb +15 -0
  16. data/lib/dub/lua/function_gen.rb +329 -0
  17. data/lib/dub/lua/group.cpp.erb +9 -0
  18. data/lib/dub/lua/lua_cpp_helper.cpp +259 -0
  19. data/lib/dub/lua/lua_cpp_helper.h +219 -0
  20. data/lib/dub/lua/lua_object.cpp +158 -0
  21. data/lib/dub/lua/lua_object.h +69 -0
  22. data/lib/dub/lua/namespace.cpp.erb +42 -0
  23. data/lib/dub/lua/namespace_gen.rb +69 -0
  24. data/lib/dub/lua.rb +24 -0
  25. data/lib/dub/member_extraction.rb +128 -0
  26. data/lib/dub/namespace.rb +295 -0
  27. data/lib/dub/opts_parser.rb +30 -0
  28. data/lib/dub/parser.rb +46 -0
  29. data/lib/dub/templates/lua_template.erb +21 -0
  30. data/lib/dub/version.rb +3 -0
  31. data/lib/dub.rb +24 -20
  32. data/test/argument_test.rb +581 -0
  33. data/test/fixtures/app/CMakeLists.txt +54 -0
  34. data/test/fixtures/app/Doxyfile +1600 -0
  35. data/test/fixtures/app/bindings/all_lua.cpp +299 -0
  36. data/test/fixtures/app/include/matrix.h +283 -0
  37. data/test/fixtures/app/make_lua_bindings.rb +13 -0
  38. data/test/fixtures/app/vendor/lua/CMakeLists.txt +25 -0
  39. data/test/fixtures/app/vendor/lua/COPYRIGHT +34 -0
  40. data/test/fixtures/app/vendor/lua/HISTORY +183 -0
  41. data/test/fixtures/app/vendor/lua/INSTALL +99 -0
  42. data/test/fixtures/app/vendor/lua/Makefile +183 -0
  43. data/test/fixtures/app/vendor/lua/README +37 -0
  44. data/test/fixtures/app/vendor/lua/lapi.c +1080 -0
  45. data/test/fixtures/app/vendor/lua/lapi.h +16 -0
  46. data/test/fixtures/app/vendor/lua/lauxlib.c +653 -0
  47. data/test/fixtures/app/vendor/lua/lauxlib.h +174 -0
  48. data/test/fixtures/app/vendor/lua/lbaselib.c +643 -0
  49. data/test/fixtures/app/vendor/lua/lcode.c +839 -0
  50. data/test/fixtures/app/vendor/lua/lcode.h +76 -0
  51. data/test/fixtures/app/vendor/lua/ldblib.c +397 -0
  52. data/test/fixtures/app/vendor/lua/ldebug.c +622 -0
  53. data/test/fixtures/app/vendor/lua/ldebug.h +33 -0
  54. data/test/fixtures/app/vendor/lua/ldo.c +516 -0
  55. data/test/fixtures/app/vendor/lua/ldo.h +57 -0
  56. data/test/fixtures/app/vendor/lua/ldump.c +164 -0
  57. data/test/fixtures/app/vendor/lua/lfunc.c +174 -0
  58. data/test/fixtures/app/vendor/lua/lfunc.h +34 -0
  59. data/test/fixtures/app/vendor/lua/lgc.c +711 -0
  60. data/test/fixtures/app/vendor/lua/lgc.h +110 -0
  61. data/test/fixtures/app/vendor/lua/liblua.a +0 -0
  62. data/test/fixtures/app/vendor/lua/linit.c +38 -0
  63. data/test/fixtures/app/vendor/lua/liolib.c +532 -0
  64. data/test/fixtures/app/vendor/lua/llex.c +461 -0
  65. data/test/fixtures/app/vendor/lua/llex.h +81 -0
  66. data/test/fixtures/app/vendor/lua/llimits.h +128 -0
  67. data/test/fixtures/app/vendor/lua/lmathlib.c +263 -0
  68. data/test/fixtures/app/vendor/lua/lmem.c +86 -0
  69. data/test/fixtures/app/vendor/lua/lmem.h +49 -0
  70. data/test/fixtures/app/vendor/lua/loadlib.c +664 -0
  71. data/test/fixtures/app/vendor/lua/lobject.c +214 -0
  72. data/test/fixtures/app/vendor/lua/lobject.h +381 -0
  73. data/test/fixtures/app/vendor/lua/lopcodes.c +102 -0
  74. data/test/fixtures/app/vendor/lua/lopcodes.h +268 -0
  75. data/test/fixtures/app/vendor/lua/loslib.c +244 -0
  76. data/test/fixtures/app/vendor/lua/lparser.c +1337 -0
  77. data/test/fixtures/app/vendor/lua/lparser.h +82 -0
  78. data/test/fixtures/app/vendor/lua/lstate.c +214 -0
  79. data/test/fixtures/app/vendor/lua/lstate.h +168 -0
  80. data/test/fixtures/app/vendor/lua/lstring.c +111 -0
  81. data/test/fixtures/app/vendor/lua/lstring.h +31 -0
  82. data/test/fixtures/app/vendor/lua/lstrlib.c +868 -0
  83. data/test/fixtures/app/vendor/lua/ltable.c +588 -0
  84. data/test/fixtures/app/vendor/lua/ltable.h +40 -0
  85. data/test/fixtures/app/vendor/lua/ltablib.c +278 -0
  86. data/test/fixtures/app/vendor/lua/ltm.c +75 -0
  87. data/test/fixtures/app/vendor/lua/ltm.h +54 -0
  88. data/test/fixtures/app/vendor/lua/lua.c +695 -0
  89. data/test/fixtures/app/vendor/lua/lua.h +385 -0
  90. data/test/fixtures/app/vendor/lua/lua_dub_helper.h +77 -0
  91. data/test/fixtures/app/vendor/lua/luac +0 -0
  92. data/test/fixtures/app/vendor/lua/luac.c +200 -0
  93. data/test/fixtures/app/vendor/lua/luaconf.h +762 -0
  94. data/test/fixtures/app/vendor/lua/lualib.h +53 -0
  95. data/test/fixtures/app/vendor/lua/lundump.c +223 -0
  96. data/test/fixtures/app/vendor/lua/lundump.h +36 -0
  97. data/test/fixtures/app/vendor/lua/lvm.c +765 -0
  98. data/test/fixtures/app/vendor/lua/lvm.h +36 -0
  99. data/test/fixtures/app/vendor/lua/lzio.c +82 -0
  100. data/test/fixtures/app/vendor/lua/lzio.h +67 -0
  101. data/test/fixtures/app/vendor/lua/matrix.h +102 -0
  102. data/test/fixtures/app/vendor/lua/print.c +227 -0
  103. data/test/fixtures/app/vendor/lua/test/README +26 -0
  104. data/test/fixtures/app/vendor/lua/test/bisect.lua +27 -0
  105. data/test/fixtures/app/vendor/lua/test/cf.lua +16 -0
  106. data/test/fixtures/app/vendor/lua/test/echo.lua +5 -0
  107. data/test/fixtures/app/vendor/lua/test/env.lua +7 -0
  108. data/test/fixtures/app/vendor/lua/test/factorial.lua +32 -0
  109. data/test/fixtures/app/vendor/lua/test/fib.lua +40 -0
  110. data/test/fixtures/app/vendor/lua/test/fibfor.lua +13 -0
  111. data/test/fixtures/app/vendor/lua/test/globals.lua +13 -0
  112. data/test/fixtures/app/vendor/lua/test/hello.lua +3 -0
  113. data/test/fixtures/app/vendor/lua/test/life.lua +111 -0
  114. data/test/fixtures/app/vendor/lua/test/luac.lua +7 -0
  115. data/test/fixtures/app/vendor/lua/test/printf.lua +7 -0
  116. data/test/fixtures/app/vendor/lua/test/readonly.lua +12 -0
  117. data/test/fixtures/app/vendor/lua/test/sieve.lua +29 -0
  118. data/test/fixtures/app/vendor/lua/test/sort.lua +66 -0
  119. data/test/fixtures/app/vendor/lua/test/table.lua +12 -0
  120. data/test/fixtures/app/vendor/lua/test/trace-calls.lua +32 -0
  121. data/test/fixtures/app/vendor/lua/test/trace-globals.lua +38 -0
  122. data/test/fixtures/app/vendor/lua/test/xd.lua +14 -0
  123. data/test/fixtures/app/xml/classdub_1_1_base.xml +85 -0
  124. data/test/fixtures/app/xml/classdub_1_1_custom_destructor.xml +67 -0
  125. data/test/fixtures/app/xml/classdub_1_1_deletable_out_of_lua.xml +43 -0
  126. data/test/fixtures/app/xml/classdub_1_1_matrix.xml +482 -0
  127. data/test/fixtures/app/xml/classdub_1_1_no_destructor.xml +49 -0
  128. data/test/fixtures/app/xml/classdub_1_1_priv_sub_base.xml +89 -0
  129. data/test/fixtures/app/xml/classdub_1_1_private_constr.xml +68 -0
  130. data/test/fixtures/app/xml/classdub_1_1_static_constr.xml +69 -0
  131. data/test/fixtures/app/xml/classdub_1_1_sub_base.xml +89 -0
  132. data/test/fixtures/app/xml/classdub_1_1_t_mat.xml +252 -0
  133. data/test/fixtures/app/xml/combine.xslt +15 -0
  134. data/test/fixtures/app/xml/compound.xsd +814 -0
  135. data/test/fixtures/app/xml/dir_53661a2bdeb1d55e60581a7e15deb763.xml +12 -0
  136. data/test/fixtures/app/xml/index.xml +91 -0
  137. data/test/fixtures/app/xml/index.xsd +66 -0
  138. data/test/fixtures/app/xml/matrix_8h.xml +310 -0
  139. data/test/fixtures/app/xml/namespacedub.xml +48 -0
  140. data/test/fixtures/classcv_1_1_mat.xml +1996 -0
  141. data/test/fixtures/classcv_1_1_point__.xml +341 -0
  142. data/test/fixtures/classcv_1_1_scalar__.xml +269 -0
  143. data/test/fixtures/classcv_1_1_size__.xml +270 -0
  144. data/test/fixtures/dummy_class.cpp.erb +1 -0
  145. data/test/fixtures/dummy_function.cpp.erb +1 -0
  146. data/test/fixtures/group___magic_type.xml +406 -0
  147. data/test/fixtures/namespacecv.xml +12659 -0
  148. data/test/function_group_test.rb +43 -0
  149. data/test/function_test.rb +405 -0
  150. data/test/group_test.rb +241 -0
  151. data/test/helper.rb +34 -0
  152. data/test/klass_test.rb +551 -0
  153. data/test/lua_function_gen_test.rb +242 -0
  154. data/test/namespace_test.rb +220 -0
  155. data/test/parser_test.rb +36 -0
  156. metadata +229 -272
  157. checksums.yaml +0 -7
  158. data/lib/open_api_sdk/analytics.rb +0 -99
  159. data/lib/open_api_sdk/domains.rb +0 -353
  160. data/lib/open_api_sdk/dub.rb +0 -88
  161. data/lib/open_api_sdk/links.rb +0 -766
  162. data/lib/open_api_sdk/metatags.rb +0 -54
  163. data/lib/open_api_sdk/models/operations/bulkcreatelinks_response.rb +0 -60
  164. data/lib/open_api_sdk/models/operations/bulkupdatelinks_requestbody.rb +0 -27
  165. data/lib/open_api_sdk/models/operations/bulkupdatelinks_response.rb +0 -60
  166. data/lib/open_api_sdk/models/operations/color.rb +0 -24
  167. data/lib/open_api_sdk/models/operations/createdomain_requestbody.rb +0 -33
  168. data/lib/open_api_sdk/models/operations/createdomain_response.rb +0 -60
  169. data/lib/open_api_sdk/models/operations/createlink_requestbody.rb +0 -95
  170. data/lib/open_api_sdk/models/operations/createlink_response.rb +0 -60
  171. data/lib/open_api_sdk/models/operations/createtag_requestbody.rb +0 -32
  172. data/lib/open_api_sdk/models/operations/createtag_response.rb +0 -60
  173. data/lib/open_api_sdk/models/operations/data.rb +0 -83
  174. data/lib/open_api_sdk/models/operations/deletedomain_request.rb +0 -24
  175. data/lib/open_api_sdk/models/operations/deletedomain_response.rb +0 -60
  176. data/lib/open_api_sdk/models/operations/deletedomain_responsebody.rb +0 -24
  177. data/lib/open_api_sdk/models/operations/deletelink_request.rb +0 -24
  178. data/lib/open_api_sdk/models/operations/deletelink_response.rb +0 -60
  179. data/lib/open_api_sdk/models/operations/deletelink_responsebody.rb +0 -24
  180. data/lib/open_api_sdk/models/operations/event.rb +0 -21
  181. data/lib/open_api_sdk/models/operations/getlinkinfo_request.rb +0 -33
  182. data/lib/open_api_sdk/models/operations/getlinkinfo_response.rb +0 -60
  183. data/lib/open_api_sdk/models/operations/getlinks_request.rb +0 -51
  184. data/lib/open_api_sdk/models/operations/getlinks_response.rb +0 -60
  185. data/lib/open_api_sdk/models/operations/getlinkscount_request.rb +0 -48
  186. data/lib/open_api_sdk/models/operations/getlinkscount_response.rb +0 -60
  187. data/lib/open_api_sdk/models/operations/getmetatags_request.rb +0 -24
  188. data/lib/open_api_sdk/models/operations/getmetatags_response.rb +0 -33
  189. data/lib/open_api_sdk/models/operations/getmetatags_responsebody.rb +0 -30
  190. data/lib/open_api_sdk/models/operations/getqrcode_request.rb +0 -39
  191. data/lib/open_api_sdk/models/operations/getqrcode_response.rb +0 -60
  192. data/lib/open_api_sdk/models/operations/gettags_response.rb +0 -60
  193. data/lib/open_api_sdk/models/operations/getworkspace_request.rb +0 -24
  194. data/lib/open_api_sdk/models/operations/getworkspace_response.rb +0 -60
  195. data/lib/open_api_sdk/models/operations/groupby.rb +0 -28
  196. data/lib/open_api_sdk/models/operations/interval.rb +0 -25
  197. data/lib/open_api_sdk/models/operations/level.rb +0 -21
  198. data/lib/open_api_sdk/models/operations/listdomains_response.rb +0 -60
  199. data/lib/open_api_sdk/models/operations/paymentprocessor.rb +0 -20
  200. data/lib/open_api_sdk/models/operations/requestbody.rb +0 -95
  201. data/lib/open_api_sdk/models/operations/retrieveanalytics_request.rb +0 -81
  202. data/lib/open_api_sdk/models/operations/retrieveanalytics_response.rb +0 -60
  203. data/lib/open_api_sdk/models/operations/sort.rb +0 -20
  204. data/lib/open_api_sdk/models/operations/trackcustomer_requestbody.rb +0 -33
  205. data/lib/open_api_sdk/models/operations/trackcustomer_response.rb +0 -60
  206. data/lib/open_api_sdk/models/operations/trackcustomer_responsebody.rb +0 -33
  207. data/lib/open_api_sdk/models/operations/tracklead_requestbody.rb +0 -42
  208. data/lib/open_api_sdk/models/operations/tracklead_response.rb +0 -60
  209. data/lib/open_api_sdk/models/operations/tracklead_responsebody.rb +0 -42
  210. data/lib/open_api_sdk/models/operations/tracksale_requestbody.rb +0 -42
  211. data/lib/open_api_sdk/models/operations/tracksale_response.rb +0 -60
  212. data/lib/open_api_sdk/models/operations/tracksale_responsebody.rb +0 -42
  213. data/lib/open_api_sdk/models/operations/updatedomain_request.rb +0 -27
  214. data/lib/open_api_sdk/models/operations/updatedomain_requestbody.rb +0 -33
  215. data/lib/open_api_sdk/models/operations/updatedomain_response.rb +0 -60
  216. data/lib/open_api_sdk/models/operations/updatelink_request.rb +0 -27
  217. data/lib/open_api_sdk/models/operations/updatelink_requestbody.rb +0 -95
  218. data/lib/open_api_sdk/models/operations/updatelink_response.rb +0 -60
  219. data/lib/open_api_sdk/models/operations/updatetag_color.rb +0 -24
  220. data/lib/open_api_sdk/models/operations/updatetag_request.rb +0 -27
  221. data/lib/open_api_sdk/models/operations/updatetag_requestbody.rb +0 -32
  222. data/lib/open_api_sdk/models/operations/updatetag_response.rb +0 -60
  223. data/lib/open_api_sdk/models/operations/updateworkspace_request.rb +0 -27
  224. data/lib/open_api_sdk/models/operations/updateworkspace_requestbody.rb +0 -27
  225. data/lib/open_api_sdk/models/operations/updateworkspace_response.rb +0 -60
  226. data/lib/open_api_sdk/models/operations/upsertlink_requestbody.rb +0 -95
  227. data/lib/open_api_sdk/models/operations/upsertlink_response.rb +0 -60
  228. data/lib/open_api_sdk/models/operations.rb +0 -74
  229. data/lib/open_api_sdk/models/shared/badrequest.rb +0 -24
  230. data/lib/open_api_sdk/models/shared/code.rb +0 -18
  231. data/lib/open_api_sdk/models/shared/color.rb +0 -24
  232. data/lib/open_api_sdk/models/shared/conflict.rb +0 -24
  233. data/lib/open_api_sdk/models/shared/conflict_code.rb +0 -18
  234. data/lib/open_api_sdk/models/shared/conflict_error.rb +0 -30
  235. data/lib/open_api_sdk/models/shared/countrycode.rb +0 -267
  236. data/lib/open_api_sdk/models/shared/domains.rb +0 -27
  237. data/lib/open_api_sdk/models/shared/domainschema.rb +0 -48
  238. data/lib/open_api_sdk/models/shared/error.rb +0 -30
  239. data/lib/open_api_sdk/models/shared/forbidden.rb +0 -24
  240. data/lib/open_api_sdk/models/shared/forbidden_code.rb +0 -18
  241. data/lib/open_api_sdk/models/shared/forbidden_error.rb +0 -30
  242. data/lib/open_api_sdk/models/shared/geo.rb +0 -771
  243. data/lib/open_api_sdk/models/shared/internalservererror.rb +0 -24
  244. data/lib/open_api_sdk/models/shared/internalservererror_code.rb +0 -18
  245. data/lib/open_api_sdk/models/shared/internalservererror_error.rb +0 -30
  246. data/lib/open_api_sdk/models/shared/inviteexpired.rb +0 -24
  247. data/lib/open_api_sdk/models/shared/inviteexpired_code.rb +0 -18
  248. data/lib/open_api_sdk/models/shared/inviteexpired_error.rb +0 -30
  249. data/lib/open_api_sdk/models/shared/linkgeotargeting.rb +0 -771
  250. data/lib/open_api_sdk/models/shared/linkschema.rb +0 -142
  251. data/lib/open_api_sdk/models/shared/notfound.rb +0 -24
  252. data/lib/open_api_sdk/models/shared/notfound_code.rb +0 -18
  253. data/lib/open_api_sdk/models/shared/notfound_error.rb +0 -30
  254. data/lib/open_api_sdk/models/shared/plan.rb +0 -24
  255. data/lib/open_api_sdk/models/shared/ratelimitexceeded.rb +0 -24
  256. data/lib/open_api_sdk/models/shared/ratelimitexceeded_code.rb +0 -18
  257. data/lib/open_api_sdk/models/shared/ratelimitexceeded_error.rb +0 -30
  258. data/lib/open_api_sdk/models/shared/role.rb +0 -19
  259. data/lib/open_api_sdk/models/shared/security.rb +0 -24
  260. data/lib/open_api_sdk/models/shared/tagschema.rb +0 -30
  261. data/lib/open_api_sdk/models/shared/unauthorized.rb +0 -24
  262. data/lib/open_api_sdk/models/shared/unauthorized_code.rb +0 -18
  263. data/lib/open_api_sdk/models/shared/unauthorized_error.rb +0 -30
  264. data/lib/open_api_sdk/models/shared/unprocessableentity.rb +0 -24
  265. data/lib/open_api_sdk/models/shared/unprocessableentity_code.rb +0 -18
  266. data/lib/open_api_sdk/models/shared/unprocessableentity_error.rb +0 -30
  267. data/lib/open_api_sdk/models/shared/users.rb +0 -24
  268. data/lib/open_api_sdk/models/shared/workspaceschema.rb +0 -81
  269. data/lib/open_api_sdk/models/shared.rb +0 -49
  270. data/lib/open_api_sdk/qr_codes.rb +0 -97
  271. data/lib/open_api_sdk/sdkconfiguration.rb +0 -52
  272. data/lib/open_api_sdk/tags.rb +0 -272
  273. data/lib/open_api_sdk/track.rb +0 -276
  274. data/lib/open_api_sdk/utils/metadata_fields.rb +0 -150
  275. data/lib/open_api_sdk/utils/t.rb +0 -59
  276. data/lib/open_api_sdk/utils/utils.rb +0 -772
  277. data/lib/open_api_sdk/workspaces.rb +0 -192
@@ -0,0 +1,111 @@
1
+ -- life.lua
2
+ -- original by Dave Bollinger <DBollinger@compuserve.com> posted to lua-l
3
+ -- modified to use ANSI terminal escape sequences
4
+ -- modified to use for instead of while
5
+
6
+ local write=io.write
7
+
8
+ ALIVE="�" DEAD="�"
9
+ ALIVE="O" DEAD="-"
10
+
11
+ function delay() -- NOTE: SYSTEM-DEPENDENT, adjust as necessary
12
+ for i=1,10000 do end
13
+ -- local i=os.clock()+1 while(os.clock()<i) do end
14
+ end
15
+
16
+ function ARRAY2D(w,h)
17
+ local t = {w=w,h=h}
18
+ for y=1,h do
19
+ t[y] = {}
20
+ for x=1,w do
21
+ t[y][x]=0
22
+ end
23
+ end
24
+ return t
25
+ end
26
+
27
+ _CELLS = {}
28
+
29
+ -- give birth to a "shape" within the cell array
30
+ function _CELLS:spawn(shape,left,top)
31
+ for y=0,shape.h-1 do
32
+ for x=0,shape.w-1 do
33
+ self[top+y][left+x] = shape[y*shape.w+x+1]
34
+ end
35
+ end
36
+ end
37
+
38
+ -- run the CA and produce the next generation
39
+ function _CELLS:evolve(next)
40
+ local ym1,y,yp1,yi=self.h-1,self.h,1,self.h
41
+ while yi > 0 do
42
+ local xm1,x,xp1,xi=self.w-1,self.w,1,self.w
43
+ while xi > 0 do
44
+ local sum = self[ym1][xm1] + self[ym1][x] + self[ym1][xp1] +
45
+ self[y][xm1] + self[y][xp1] +
46
+ self[yp1][xm1] + self[yp1][x] + self[yp1][xp1]
47
+ next[y][x] = ((sum==2) and self[y][x]) or ((sum==3) and 1) or 0
48
+ xm1,x,xp1,xi = x,xp1,xp1+1,xi-1
49
+ end
50
+ ym1,y,yp1,yi = y,yp1,yp1+1,yi-1
51
+ end
52
+ end
53
+
54
+ -- output the array to screen
55
+ function _CELLS:draw()
56
+ local out="" -- accumulate to reduce flicker
57
+ for y=1,self.h do
58
+ for x=1,self.w do
59
+ out=out..(((self[y][x]>0) and ALIVE) or DEAD)
60
+ end
61
+ out=out.."\n"
62
+ end
63
+ write(out)
64
+ end
65
+
66
+ -- constructor
67
+ function CELLS(w,h)
68
+ local c = ARRAY2D(w,h)
69
+ c.spawn = _CELLS.spawn
70
+ c.evolve = _CELLS.evolve
71
+ c.draw = _CELLS.draw
72
+ return c
73
+ end
74
+
75
+ --
76
+ -- shapes suitable for use with spawn() above
77
+ --
78
+ HEART = { 1,0,1,1,0,1,1,1,1; w=3,h=3 }
79
+ GLIDER = { 0,0,1,1,0,1,0,1,1; w=3,h=3 }
80
+ EXPLODE = { 0,1,0,1,1,1,1,0,1,0,1,0; w=3,h=4 }
81
+ FISH = { 0,1,1,1,1,1,0,0,0,1,0,0,0,0,1,1,0,0,1,0; w=5,h=4 }
82
+ BUTTERFLY = { 1,0,0,0,1,0,1,1,1,0,1,0,0,0,1,1,0,1,0,1,1,0,0,0,1; w=5,h=5 }
83
+
84
+ -- the main routine
85
+ function LIFE(w,h)
86
+ -- create two arrays
87
+ local thisgen = CELLS(w,h)
88
+ local nextgen = CELLS(w,h)
89
+
90
+ -- create some life
91
+ -- about 1000 generations of fun, then a glider steady-state
92
+ thisgen:spawn(GLIDER,5,4)
93
+ thisgen:spawn(EXPLODE,25,10)
94
+ thisgen:spawn(FISH,4,12)
95
+
96
+ -- run until break
97
+ local gen=1
98
+ write("\027[2J") -- ANSI clear screen
99
+ while 1 do
100
+ thisgen:evolve(nextgen)
101
+ thisgen,nextgen = nextgen,thisgen
102
+ write("\027[H") -- ANSI home cursor
103
+ thisgen:draw()
104
+ write("Life - generation ",gen,"\n")
105
+ gen=gen+1
106
+ if gen>2000 then break end
107
+ --delay() -- no delay
108
+ end
109
+ end
110
+
111
+ LIFE(40,20)
@@ -0,0 +1,7 @@
1
+ -- bare-bones luac in Lua
2
+ -- usage: lua luac.lua file.lua
3
+
4
+ assert(arg[1]~=nil and arg[2]==nil,"usage: lua luac.lua file.lua")
5
+ f=assert(io.open("luac.out","wb"))
6
+ assert(f:write(string.dump(assert(loadfile(arg[1])))))
7
+ assert(f:close())
@@ -0,0 +1,7 @@
1
+ -- an implementation of printf
2
+
3
+ function printf(...)
4
+ io.write(string.format(...))
5
+ end
6
+
7
+ printf("Hello %s from %s on %s\n",os.getenv"USER" or "there",_VERSION,os.date())
@@ -0,0 +1,12 @@
1
+ -- make global variables readonly
2
+
3
+ local f=function (t,i) error("cannot redefine global variable `"..i.."'",2) end
4
+ local g={}
5
+ local G=getfenv()
6
+ setmetatable(g,{__index=G,__newindex=f})
7
+ setfenv(1,g)
8
+
9
+ -- an example
10
+ rawset(g,"x",3)
11
+ x=2
12
+ y=1 -- cannot redefine `y'
@@ -0,0 +1,29 @@
1
+ -- the sieve of of Eratosthenes programmed with coroutines
2
+ -- typical usage: lua -e N=1000 sieve.lua | column
3
+
4
+ -- generate all the numbers from 2 to n
5
+ function gen (n)
6
+ return coroutine.wrap(function ()
7
+ for i=2,n do coroutine.yield(i) end
8
+ end)
9
+ end
10
+
11
+ -- filter the numbers generated by `g', removing multiples of `p'
12
+ function filter (p, g)
13
+ return coroutine.wrap(function ()
14
+ while 1 do
15
+ local n = g()
16
+ if n == nil then return end
17
+ if math.mod(n, p) ~= 0 then coroutine.yield(n) end
18
+ end
19
+ end)
20
+ end
21
+
22
+ N=N or 1000 -- from command line
23
+ x = gen(N) -- generate primes up to N
24
+ while 1 do
25
+ local n = x() -- pick a number until done
26
+ if n == nil then break end
27
+ print(n) -- must be a prime number
28
+ x = filter(n, x) -- now remove its multiples
29
+ end
@@ -0,0 +1,66 @@
1
+ -- two implementations of a sort function
2
+ -- this is an example only. Lua has now a built-in function "sort"
3
+
4
+ -- extracted from Programming Pearls, page 110
5
+ function qsort(x,l,u,f)
6
+ if l<u then
7
+ local m=math.random(u-(l-1))+l-1 -- choose a random pivot in range l..u
8
+ x[l],x[m]=x[m],x[l] -- swap pivot to first position
9
+ local t=x[l] -- pivot value
10
+ m=l
11
+ local i=l+1
12
+ while i<=u do
13
+ -- invariant: x[l+1..m] < t <= x[m+1..i-1]
14
+ if f(x[i],t) then
15
+ m=m+1
16
+ x[m],x[i]=x[i],x[m] -- swap x[i] and x[m]
17
+ end
18
+ i=i+1
19
+ end
20
+ x[l],x[m]=x[m],x[l] -- swap pivot to a valid place
21
+ -- x[l+1..m-1] < x[m] <= x[m+1..u]
22
+ qsort(x,l,m-1,f)
23
+ qsort(x,m+1,u,f)
24
+ end
25
+ end
26
+
27
+ function selectionsort(x,n,f)
28
+ local i=1
29
+ while i<=n do
30
+ local m,j=i,i+1
31
+ while j<=n do
32
+ if f(x[j],x[m]) then m=j end
33
+ j=j+1
34
+ end
35
+ x[i],x[m]=x[m],x[i] -- swap x[i] and x[m]
36
+ i=i+1
37
+ end
38
+ end
39
+
40
+ function show(m,x)
41
+ io.write(m,"\n\t")
42
+ local i=1
43
+ while x[i] do
44
+ io.write(x[i])
45
+ i=i+1
46
+ if x[i] then io.write(",") end
47
+ end
48
+ io.write("\n")
49
+ end
50
+
51
+ function testsorts(x)
52
+ local n=1
53
+ while x[n] do n=n+1 end; n=n-1 -- count elements
54
+ show("original",x)
55
+ qsort(x,1,n,function (x,y) return x<y end)
56
+ show("after quicksort",x)
57
+ selectionsort(x,n,function (x,y) return x>y end)
58
+ show("after reverse selection sort",x)
59
+ qsort(x,1,n,function (x,y) return x<y end)
60
+ show("after quicksort again",x)
61
+ end
62
+
63
+ -- array to be sorted
64
+ x={"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"}
65
+
66
+ testsorts(x)
@@ -0,0 +1,12 @@
1
+ -- make table, grouping all data for the same item
2
+ -- input is 2 columns (item, data)
3
+
4
+ local A
5
+ while 1 do
6
+ local l=io.read()
7
+ if l==nil then break end
8
+ local _,_,a,b=string.find(l,'"?([_%w]+)"?%s*(.*)$')
9
+ if a~=A then A=a io.write("\n",a,":") end
10
+ io.write(" ",b)
11
+ end
12
+ io.write("\n")
@@ -0,0 +1,32 @@
1
+ -- trace calls
2
+ -- example: lua -ltrace-calls bisect.lua
3
+
4
+ local level=0
5
+
6
+ local function hook(event)
7
+ local t=debug.getinfo(3)
8
+ io.write(level," >>> ",string.rep(" ",level))
9
+ if t~=nil and t.currentline>=0 then io.write(t.short_src,":",t.currentline," ") end
10
+ t=debug.getinfo(2)
11
+ if event=="call" then
12
+ level=level+1
13
+ else
14
+ level=level-1 if level<0 then level=0 end
15
+ end
16
+ if t.what=="main" then
17
+ if event=="call" then
18
+ io.write("begin ",t.short_src)
19
+ else
20
+ io.write("end ",t.short_src)
21
+ end
22
+ elseif t.what=="Lua" then
23
+ -- table.foreach(t,print)
24
+ io.write(event," ",t.name or "(Lua)"," <",t.linedefined,":",t.short_src,">")
25
+ else
26
+ io.write(event," ",t.name or "(C)"," [",t.what,"] ")
27
+ end
28
+ io.write("\n")
29
+ end
30
+
31
+ debug.sethook(hook,"cr")
32
+ level=0
@@ -0,0 +1,38 @@
1
+ -- trace assigments to global variables
2
+
3
+ do
4
+ -- a tostring that quotes strings. note the use of the original tostring.
5
+ local _tostring=tostring
6
+ local tostring=function(a)
7
+ if type(a)=="string" then
8
+ return string.format("%q",a)
9
+ else
10
+ return _tostring(a)
11
+ end
12
+ end
13
+
14
+ local log=function (name,old,new)
15
+ local t=debug.getinfo(3,"Sl")
16
+ local line=t.currentline
17
+ io.write(t.short_src)
18
+ if line>=0 then io.write(":",line) end
19
+ io.write(": ",name," is now ",tostring(new)," (was ",tostring(old),")","\n")
20
+ end
21
+
22
+ local g={}
23
+ local set=function (t,name,value)
24
+ log(name,g[name],value)
25
+ g[name]=value
26
+ end
27
+ setmetatable(getfenv(),{__index=g,__newindex=set})
28
+ end
29
+
30
+ -- an example
31
+
32
+ a=1
33
+ b=2
34
+ a=10
35
+ b=20
36
+ b=nil
37
+ b=200
38
+ print(a,b,c)
@@ -0,0 +1,14 @@
1
+ -- hex dump
2
+ -- usage: lua xd.lua < file
3
+
4
+ local offset=0
5
+ while true do
6
+ local s=io.read(16)
7
+ if s==nil then return end
8
+ io.write(string.format("%08X ",offset))
9
+ string.gsub(s,"(.)",
10
+ function (c) io.write(string.format("%02X ",string.byte(c))) end)
11
+ io.write(string.rep(" ",3*(16-string.len(s))))
12
+ io.write(" ",string.gsub(s,"%c","."),"\n")
13
+ offset=offset+16
14
+ end
@@ -0,0 +1,85 @@
1
+ <?xml version='1.0' encoding='UTF-8' standalone='no'?>
2
+ <doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.6.3">
3
+ <compounddef id="classdub_1_1_base" kind="class" prot="public">
4
+ <compoundname>dub::Base</compoundname>
5
+ <derivedcompoundref refid="classdub_1_1_priv_sub_base" prot="private" virt="non-virtual">dub::PrivSubBase</derivedcompoundref>
6
+ <derivedcompoundref refid="classdub_1_1_sub_base" prot="public" virt="non-virtual">dub::SubBase</derivedcompoundref>
7
+ <sectiondef kind="public-func">
8
+ <memberdef kind="function" id="classdub_1_1_base_1ac906f7b7c2dadda8277be3f7dff4d0fe" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
9
+ <type></type>
10
+ <definition>dub::Base::Base</definition>
11
+ <argsstring>()</argsstring>
12
+ <name>Base</name>
13
+ <briefdescription>
14
+ </briefdescription>
15
+ <detaileddescription>
16
+ </detaileddescription>
17
+ <inbodydescription>
18
+ </inbodydescription>
19
+ <location file="/Users/gaspard/git/dub/test/fixtures/app/include/matrix.h" line="191" bodyfile="/Users/gaspard/git/dub/test/fixtures/app/include/matrix.h" bodystart="191" bodyend="191"/>
20
+ </memberdef>
21
+ <memberdef kind="function" id="classdub_1_1_base_1ad7382fcee9fc5a93dbdd94375e4bf512" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
22
+ <type></type>
23
+ <definition>dub::Base::~Base</definition>
24
+ <argsstring>()</argsstring>
25
+ <name>~Base</name>
26
+ <briefdescription>
27
+ </briefdescription>
28
+ <detaileddescription>
29
+ </detaileddescription>
30
+ <inbodydescription>
31
+ </inbodydescription>
32
+ <location file="/Users/gaspard/git/dub/test/fixtures/app/include/matrix.h" line="192" bodyfile="/Users/gaspard/git/dub/test/fixtures/app/include/matrix.h" bodystart="192" bodyend="192"/>
33
+ </memberdef>
34
+ <memberdef kind="function" id="classdub_1_1_base_1a000aeea60faa72eb694f636125cadbc2" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
35
+ <type>const char *</type>
36
+ <definition>const char* dub::Base::method_in_base</definition>
37
+ <argsstring>(int x, float y)</argsstring>
38
+ <name>method_in_base</name>
39
+ <param>
40
+ <type>int</type>
41
+ <declname>x</declname>
42
+ </param>
43
+ <param>
44
+ <type>float</type>
45
+ <declname>y</declname>
46
+ </param>
47
+ <briefdescription>
48
+ </briefdescription>
49
+ <detaileddescription>
50
+ </detaileddescription>
51
+ <inbodydescription>
52
+ </inbodydescription>
53
+ <location file="/Users/gaspard/git/dub/test/fixtures/app/include/matrix.h" line="194" bodyfile="/Users/gaspard/git/dub/test/fixtures/app/include/matrix.h" bodystart="194" bodyend="196"/>
54
+ </memberdef>
55
+ </sectiondef>
56
+ <briefdescription>
57
+ </briefdescription>
58
+ <detaileddescription>
59
+ </detaileddescription>
60
+ <inheritancegraph>
61
+ <node id="1">
62
+ <label>dub::PrivSubBase</label>
63
+ <link refid="classdub_1_1_priv_sub_base"/>
64
+ <childnode refid="0" relation="private-inheritance">
65
+ </childnode>
66
+ </node>
67
+ <node id="2">
68
+ <label>dub::SubBase</label>
69
+ <link refid="classdub_1_1_sub_base"/>
70
+ <childnode refid="0" relation="public-inheritance">
71
+ </childnode>
72
+ </node>
73
+ <node id="0">
74
+ <label>dub::Base</label>
75
+ <link refid="classdub_1_1_base"/>
76
+ </node>
77
+ </inheritancegraph>
78
+ <location file="/Users/gaspard/git/dub/test/fixtures/app/include/matrix.h" line="189" bodyfile="/Users/gaspard/git/dub/test/fixtures/app/include/matrix.h" bodystart="189" bodyend="197"/>
79
+ <listofallmembers>
80
+ <member refid="classdub_1_1_base_1ac906f7b7c2dadda8277be3f7dff4d0fe" prot="public" virt="non-virtual"><scope>dub::Base</scope><name>Base</name></member>
81
+ <member refid="classdub_1_1_base_1a000aeea60faa72eb694f636125cadbc2" prot="public" virt="non-virtual"><scope>dub::Base</scope><name>method_in_base</name></member>
82
+ <member refid="classdub_1_1_base_1ad7382fcee9fc5a93dbdd94375e4bf512" prot="public" virt="non-virtual"><scope>dub::Base</scope><name>~Base</name></member>
83
+ </listofallmembers>
84
+ </compounddef>
85
+ </doxygen>
@@ -0,0 +1,67 @@
1
+ <?xml version='1.0' encoding='UTF-8' standalone='no'?>
2
+ <doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.6.3">
3
+ <compounddef id="classdub_1_1_custom_destructor" kind="class" prot="public">
4
+ <compoundname>dub::CustomDestructor</compoundname>
5
+ <includes refid="matrix_8h" local="no">matrix.h</includes>
6
+ <sectiondef kind="public-func">
7
+ <memberdef kind="function" id="classdub_1_1_custom_destructor_1a3d7ad33377ffbaabc015e9edf817cbef" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
8
+ <type></type>
9
+ <definition>dub::CustomDestructor::CustomDestructor</definition>
10
+ <argsstring>(int x)</argsstring>
11
+ <name>CustomDestructor</name>
12
+ <param>
13
+ <type>int</type>
14
+ <declname>x</declname>
15
+ </param>
16
+ <briefdescription>
17
+ </briefdescription>
18
+ <detaileddescription>
19
+ </detaileddescription>
20
+ <inbodydescription>
21
+ </inbodydescription>
22
+ <location file="/Users/gaspard/git/dub/test/fixtures/app/include/matrix.h" line="150" bodyfile="/Users/gaspard/git/dub/test/fixtures/app/include/matrix.h" bodystart="150" bodyend="150"/>
23
+ </memberdef>
24
+ <memberdef kind="function" id="classdub_1_1_custom_destructor_1acf4d9fd787b873c8eef16b824bd4cff1" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
25
+ <type></type>
26
+ <definition>dub::CustomDestructor::~CustomDestructor</definition>
27
+ <argsstring>()</argsstring>
28
+ <name>~CustomDestructor</name>
29
+ <briefdescription>
30
+ </briefdescription>
31
+ <detaileddescription>
32
+ </detaileddescription>
33
+ <inbodydescription>
34
+ </inbodydescription>
35
+ <location file="/Users/gaspard/git/dub/test/fixtures/app/include/matrix.h" line="152" bodyfile="/Users/gaspard/git/dub/test/fixtures/app/include/matrix.h" bodystart="152" bodyend="152"/>
36
+ </memberdef>
37
+ <memberdef kind="function" id="classdub_1_1_custom_destructor_1aa47a1ea428fb9cde34d726d06f32ffc0" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
38
+ <type>void</type>
39
+ <definition>void dub::CustomDestructor::do_this</definition>
40
+ <argsstring>(int x)</argsstring>
41
+ <name>do_this</name>
42
+ <param>
43
+ <type>int</type>
44
+ <declname>x</declname>
45
+ </param>
46
+ <briefdescription>
47
+ </briefdescription>
48
+ <detaileddescription>
49
+ </detaileddescription>
50
+ <inbodydescription>
51
+ </inbodydescription>
52
+ <location file="/Users/gaspard/git/dub/test/fixtures/app/include/matrix.h" line="154" bodyfile="/Users/gaspard/git/dub/test/fixtures/app/include/matrix.h" bodystart="154" bodyend="156"/>
53
+ </memberdef>
54
+ </sectiondef>
55
+ <briefdescription>
56
+ </briefdescription>
57
+ <detaileddescription>
58
+ <para>Test that custom destructors are used. <simplesect kind="par"><title>Bindings info:</title><para>destructor: &apos;dub_destroy&apos; </para></simplesect>
59
+ </para> </detaileddescription>
60
+ <location file="/Users/gaspard/git/dub/test/fixtures/app/include/matrix.h" line="147" bodyfile="/Users/gaspard/git/dub/test/fixtures/app/include/matrix.h" bodystart="146" bodyend="157"/>
61
+ <listofallmembers>
62
+ <member refid="classdub_1_1_custom_destructor_1a3d7ad33377ffbaabc015e9edf817cbef" prot="public" virt="non-virtual"><scope>dub::CustomDestructor</scope><name>CustomDestructor</name></member>
63
+ <member refid="classdub_1_1_custom_destructor_1aa47a1ea428fb9cde34d726d06f32ffc0" prot="public" virt="non-virtual"><scope>dub::CustomDestructor</scope><name>do_this</name></member>
64
+ <member refid="classdub_1_1_custom_destructor_1acf4d9fd787b873c8eef16b824bd4cff1" prot="public" virt="non-virtual"><scope>dub::CustomDestructor</scope><name>~CustomDestructor</name></member>
65
+ </listofallmembers>
66
+ </compounddef>
67
+ </doxygen>
@@ -0,0 +1,43 @@
1
+ <?xml version='1.0' encoding='UTF-8' standalone='no'?>
2
+ <doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.6.3">
3
+ <compounddef id="classdub_1_1_deletable_out_of_lua" kind="class" prot="public">
4
+ <compoundname>dub::DeletableOutOfLua</compoundname>
5
+ <derivedcompoundref refid="classdub_1_1_custom_destructor" prot="public" virt="non-virtual">dub::CustomDestructor</derivedcompoundref>
6
+ <includes refid="matrix_8h" local="no">matrix.h</includes>
7
+ <sectiondef kind="public-func">
8
+ <memberdef kind="function" id="classdub_1_1_deletable_out_of_lua_1a7cb374a67f9590d817f9606134818f17" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
9
+ <type></type>
10
+ <definition>dub::DeletableOutOfLua::DeletableOutOfLua</definition>
11
+ <argsstring>()</argsstring>
12
+ <name>DeletableOutOfLua</name>
13
+ <briefdescription>
14
+ </briefdescription>
15
+ <detaileddescription>
16
+ </detaileddescription>
17
+ <inbodydescription>
18
+ </inbodydescription>
19
+ <location file="/Users/gaspard/git/dub/test/fixtures/app/include/matrix.h" line="147"/>
20
+ </memberdef>
21
+ </sectiondef>
22
+ <briefdescription>
23
+ </briefdescription>
24
+ <detaileddescription>
25
+ <para>Class used this and that. </para> </detaileddescription>
26
+ <inheritancegraph>
27
+ <node id="5">
28
+ <label>dub::CustomDestructor</label>
29
+ <link refid="classdub_1_1_custom_destructor"/>
30
+ <childnode refid="4" relation="public-inheritance">
31
+ </childnode>
32
+ </node>
33
+ <node id="4">
34
+ <label>dub::DeletableOutOfLua</label>
35
+ <link refid="classdub_1_1_deletable_out_of_lua"/>
36
+ </node>
37
+ </inheritancegraph>
38
+ <location file="/Users/gaspard/git/dub/test/fixtures/app/include/matrix.h" line="145" bodyfile="/Users/gaspard/git/dub/test/fixtures/app/include/matrix.h" bodystart="145" bodyend="148"/>
39
+ <listofallmembers>
40
+ <member refid="classdub_1_1_deletable_out_of_lua_1a7cb374a67f9590d817f9606134818f17" prot="public" virt="non-virtual"><scope>dub::DeletableOutOfLua</scope><name>DeletableOutOfLua</name></member>
41
+ </listofallmembers>
42
+ </compounddef>
43
+ </doxygen>