rufus-lua-win 5.1.5

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.
Files changed (459) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +69 -0
  6. data/Rakefile +1 -0
  7. data/lib/rufus/lua/win.rb +18 -0
  8. data/lib/rufus/lua/win/version.rb +7 -0
  9. data/rufus-lua-win.gemspec +23 -0
  10. data/vendor/lua/bin/liblua.dll +0 -0
  11. data/vendor/lua/lib/lua/LuaXml.lua +119 -0
  12. data/vendor/lua/lib/lua/alien.lua +250 -0
  13. data/vendor/lua/lib/lua/alien/core.dll +0 -0
  14. data/vendor/lua/lib/lua/alien/struct.dll +0 -0
  15. data/vendor/lua/lib/lua/base.lua +536 -0
  16. data/vendor/lua/lib/lua/bin.lua +20 -0
  17. data/vendor/lua/lib/lua/bit.dll +0 -0
  18. data/vendor/lua/lib/lua/cdlua.dll +0 -0
  19. data/vendor/lua/lib/lua/cdluacontextplus.dll +0 -0
  20. data/vendor/lua/lib/lua/cdluagl.dll +0 -0
  21. data/vendor/lua/lib/lua/cdluaim.dll +0 -0
  22. data/vendor/lua/lib/lua/cdluapdf.dll +0 -0
  23. data/vendor/lua/lib/lua/copas.lua +543 -0
  24. data/vendor/lua/lib/lua/coxpcall.lua +57 -0
  25. data/vendor/lua/lib/lua/date.lua +745 -0
  26. data/vendor/lua/lib/lua/debug_ext.lua +84 -0
  27. data/vendor/lua/lib/lua/debug_init.lua +2 -0
  28. data/vendor/lua/lib/lua/des56.dll +0 -0
  29. data/vendor/lua/lib/lua/dist/config.lua +109 -0
  30. data/vendor/lua/lib/lua/dist/constraints.lua +271 -0
  31. data/vendor/lua/lib/lua/dist/depends.lua +601 -0
  32. data/vendor/lua/lib/lua/dist/git.lua +307 -0
  33. data/vendor/lua/lib/lua/dist/init.lua +278 -0
  34. data/vendor/lua/lib/lua/dist/manifest.lua +225 -0
  35. data/vendor/lua/lib/lua/dist/package.lua +583 -0
  36. data/vendor/lua/lib/lua/dist/sys.lua +367 -0
  37. data/vendor/lua/lib/lua/dist/utils.lua +130 -0
  38. data/vendor/lua/lib/lua/ex.dll +0 -0
  39. data/vendor/lua/lib/lua/fstable.lua +116 -0
  40. data/vendor/lua/lib/lua/getopt.lua +273 -0
  41. data/vendor/lua/lib/lua/git.lua +5 -0
  42. data/vendor/lua/lib/lua/git/core.dll +0 -0
  43. data/vendor/lua/lib/lua/git/objects.lua +121 -0
  44. data/vendor/lua/lib/lua/git/pack.lua +316 -0
  45. data/vendor/lua/lib/lua/git/protocol.lua +188 -0
  46. data/vendor/lua/lib/lua/git/repo.lua +283 -0
  47. data/vendor/lua/lib/lua/git/util.lua +233 -0
  48. data/vendor/lua/lib/lua/gzio.dll +0 -0
  49. data/vendor/lua/lib/lua/gzip.lua +81 -0
  50. data/vendor/lua/lib/lua/iconv.dll +0 -0
  51. data/vendor/lua/lib/lua/imlua.dll +0 -0
  52. data/vendor/lua/lib/lua/imlua_fftw.dll +0 -0
  53. data/vendor/lua/lib/lua/imlua_jp2.dll +0 -0
  54. data/vendor/lua/lib/lua/imlua_process.dll +0 -0
  55. data/vendor/lua/lib/lua/imlua_process_omp.dll +0 -0
  56. data/vendor/lua/lib/lua/io_ext.lua +115 -0
  57. data/vendor/lua/lib/lua/iuplua.dll +0 -0
  58. data/vendor/lua/lib/lua/iuplua_mglplot.dll +0 -0
  59. data/vendor/lua/lib/lua/iuplua_pplot.dll +0 -0
  60. data/vendor/lua/lib/lua/iupluacd.dll +0 -0
  61. data/vendor/lua/lib/lua/iupluacontrols.dll +0 -0
  62. data/vendor/lua/lib/lua/iupluagl.dll +0 -0
  63. data/vendor/lua/lib/lua/iupluaim.dll +0 -0
  64. data/vendor/lua/lib/lua/iupluaimglib.dll +0 -0
  65. data/vendor/lua/lib/lua/iupluatuio.dll +0 -0
  66. data/vendor/lua/lib/lua/lanes-keeper.lua +302 -0
  67. data/vendor/lua/lib/lua/lanes.lua +591 -0
  68. data/vendor/lua/lib/lua/lanes/core.dll +0 -0
  69. data/vendor/lua/lib/lua/lcs.lua +55 -0
  70. data/vendor/lua/lib/lua/lemock.lua +659 -0
  71. data/vendor/lua/lib/lua/lfs.dll +0 -0
  72. data/vendor/lua/lib/lua/list.lua +375 -0
  73. data/vendor/lua/lib/lua/logging.lua +189 -0
  74. data/vendor/lua/lib/lua/logging/console.lua +22 -0
  75. data/vendor/lua/lib/lua/logging/email.lua +44 -0
  76. data/vendor/lua/lib/lua/logging/file.lua +55 -0
  77. data/vendor/lua/lib/lua/logging/rolling_file.lua +81 -0
  78. data/vendor/lua/lib/lua/logging/socket.lua +35 -0
  79. data/vendor/lua/lib/lua/logging/sql.lua +64 -0
  80. data/vendor/lua/lib/lua/loop/base.lua +68 -0
  81. data/vendor/lua/lib/lua/loop/cached.lua +312 -0
  82. data/vendor/lua/lib/lua/loop/collection/MapWithArrayOfKeys.lua +64 -0
  83. data/vendor/lua/lib/lua/loop/collection/ObjectCache.lua +39 -0
  84. data/vendor/lua/lib/lua/loop/collection/OrderedSet.lua +164 -0
  85. data/vendor/lua/lib/lua/loop/collection/PriorityQueue.lua +86 -0
  86. data/vendor/lua/lib/lua/loop/collection/UnorderedArray.lua +32 -0
  87. data/vendor/lua/lib/lua/loop/collection/UnorderedArraySet.lua +56 -0
  88. data/vendor/lua/lib/lua/loop/compiler/Arguments.lua +108 -0
  89. data/vendor/lua/lib/lua/loop/compiler/Conditional.lua +50 -0
  90. data/vendor/lua/lib/lua/loop/compiler/Expression.lua +215 -0
  91. data/vendor/lua/lib/lua/loop/component/base.lua +221 -0
  92. data/vendor/lua/lib/lua/loop/component/contained.lua +71 -0
  93. data/vendor/lua/lib/lua/loop/component/dynamic.lua +223 -0
  94. data/vendor/lua/lib/lua/loop/component/intercepted.lua +354 -0
  95. data/vendor/lua/lib/lua/loop/component/wrapped.lua +195 -0
  96. data/vendor/lua/lib/lua/loop/debug/Inspector.lua +521 -0
  97. data/vendor/lua/lib/lua/loop/debug/Matcher.lua +192 -0
  98. data/vendor/lua/lib/lua/loop/debug/Verbose.lua +266 -0
  99. data/vendor/lua/lib/lua/loop/debug/Viewer.lua +200 -0
  100. data/vendor/lua/lib/lua/loop/multiple.lua +105 -0
  101. data/vendor/lua/lib/lua/loop/object/Exception.lua +57 -0
  102. data/vendor/lua/lib/lua/loop/object/Publisher.lua +43 -0
  103. data/vendor/lua/lib/lua/loop/object/Wrapper.lua +39 -0
  104. data/vendor/lua/lib/lua/loop/scoped.lua +585 -0
  105. data/vendor/lua/lib/lua/loop/serial/FileStream.lua +48 -0
  106. data/vendor/lua/lib/lua/loop/serial/Serializer.lua +291 -0
  107. data/vendor/lua/lib/lua/loop/serial/SocketStream.lua +51 -0
  108. data/vendor/lua/lib/lua/loop/serial/StringStream.lua +47 -0
  109. data/vendor/lua/lib/lua/loop/simple.lua +75 -0
  110. data/vendor/lua/lib/lua/loop/table.lua +71 -0
  111. data/vendor/lua/lib/lua/loop/thread/CoSocket.lua +416 -0
  112. data/vendor/lua/lib/lua/loop/thread/IOScheduler.lua +170 -0
  113. data/vendor/lua/lib/lua/loop/thread/Scheduler.lua +327 -0
  114. data/vendor/lua/lib/lua/loop/thread/SocketScheduler.lua +88 -0
  115. data/vendor/lua/lib/lua/loop/thread/Timer.lua +54 -0
  116. data/vendor/lua/lib/lua/lpeg.dll +0 -0
  117. data/vendor/lua/lib/lua/ltn12.lua +292 -0
  118. data/vendor/lua/lib/lua/luaXML_lib.dll +0 -0
  119. data/vendor/lua/lib/lua/luacurl.dll +0 -0
  120. data/vendor/lua/lib/lua/luadoc/config.lua +34 -0
  121. data/vendor/lua/lib/lua/luadoc/doclet/debug.lua +46 -0
  122. data/vendor/lua/lib/lua/luadoc/doclet/formatter.lua +84 -0
  123. data/vendor/lua/lib/lua/luadoc/doclet/html.lua +289 -0
  124. data/vendor/lua/lib/lua/luadoc/doclet/html/file.lp +113 -0
  125. data/vendor/lua/lib/lua/luadoc/doclet/html/function.lp +64 -0
  126. data/vendor/lua/lib/lua/luadoc/doclet/html/index.lp +70 -0
  127. data/vendor/lua/lib/lua/luadoc/doclet/html/luadoc.css +286 -0
  128. data/vendor/lua/lib/lua/luadoc/doclet/html/menu.lp +55 -0
  129. data/vendor/lua/lib/lua/luadoc/doclet/html/module.lp +109 -0
  130. data/vendor/lua/lib/lua/luadoc/doclet/html/table.lp +15 -0
  131. data/vendor/lua/lib/lua/luadoc/doclet/raw.lua +12 -0
  132. data/vendor/lua/lib/lua/luadoc/init.lua +58 -0
  133. data/vendor/lua/lib/lua/luadoc/lp.lua +130 -0
  134. data/vendor/lua/lib/lua/luadoc/taglet/standard.lua +495 -0
  135. data/vendor/lua/lib/lua/luadoc/taglet/standard/tags.lua +171 -0
  136. data/vendor/lua/lib/lua/luadoc/util.lua +233 -0
  137. data/vendor/lua/lib/lua/luagl.dll +0 -0
  138. data/vendor/lua/lib/lua/luaglu.dll +0 -0
  139. data/vendor/lua/lib/lua/luaidl.lua +113 -0
  140. data/vendor/lua/lib/lua/luaidl/lex.lua +793 -0
  141. data/vendor/lua/lib/lua/luaidl/pre.lua +149 -0
  142. data/vendor/lua/lib/lua/luaidl/sin.lua +3631 -0
  143. data/vendor/lua/lib/lua/luarocks/add.lua +108 -0
  144. data/vendor/lua/lib/lua/luarocks/admin_remove.lua +87 -0
  145. data/vendor/lua/lib/lua/luarocks/build.lua +330 -0
  146. data/vendor/lua/lib/lua/luarocks/build/builtin.lua +253 -0
  147. data/vendor/lua/lib/lua/luarocks/build/cmake.lua +54 -0
  148. data/vendor/lua/lib/lua/luarocks/build/command.lua +32 -0
  149. data/vendor/lua/lib/lua/luarocks/build/make.lua +92 -0
  150. data/vendor/lua/lib/lua/luarocks/cache.lua +85 -0
  151. data/vendor/lua/lib/lua/luarocks/cfg.lua +449 -0
  152. data/vendor/lua/lib/lua/luarocks/command_line.lua +163 -0
  153. data/vendor/lua/lib/lua/luarocks/deps.lua +654 -0
  154. data/vendor/lua/lib/lua/luarocks/dir.lua +69 -0
  155. data/vendor/lua/lib/lua/luarocks/download.lua +90 -0
  156. data/vendor/lua/lib/lua/luarocks/fetch.lua +321 -0
  157. data/vendor/lua/lib/lua/luarocks/fetch/cvs.lua +44 -0
  158. data/vendor/lua/lib/lua/luarocks/fetch/git.lua +81 -0
  159. data/vendor/lua/lib/lua/luarocks/fetch/git_file.lua +17 -0
  160. data/vendor/lua/lib/lua/luarocks/fetch/hg.lua +54 -0
  161. data/vendor/lua/lib/lua/luarocks/fetch/sscm.lua +42 -0
  162. data/vendor/lua/lib/lua/luarocks/fetch/svn.lua +53 -0
  163. data/vendor/lua/lib/lua/luarocks/fs.lua +40 -0
  164. data/vendor/lua/lib/lua/luarocks/fs/lua.lua +676 -0
  165. data/vendor/lua/lib/lua/luarocks/fs/unix.lua +88 -0
  166. data/vendor/lua/lib/lua/luarocks/fs/unix/tools.lua +325 -0
  167. data/vendor/lua/lib/lua/luarocks/fs/win32.lua +107 -0
  168. data/vendor/lua/lib/lua/luarocks/fs/win32/tools.lua +334 -0
  169. data/vendor/lua/lib/lua/luarocks/help.lua +101 -0
  170. data/vendor/lua/lib/lua/luarocks/index.lua +172 -0
  171. data/vendor/lua/lib/lua/luarocks/install.lua +151 -0
  172. data/vendor/lua/lib/lua/luarocks/list.lua +35 -0
  173. data/vendor/lua/lib/lua/luarocks/loader.lua +228 -0
  174. data/vendor/lua/lib/lua/luarocks/make.lua +71 -0
  175. data/vendor/lua/lib/lua/luarocks/make_manifest.lua +34 -0
  176. data/vendor/lua/lib/lua/luarocks/manif.lua +360 -0
  177. data/vendor/lua/lib/lua/luarocks/manif_core.lua +75 -0
  178. data/vendor/lua/lib/lua/luarocks/new_version.lua +141 -0
  179. data/vendor/lua/lib/lua/luarocks/pack.lua +205 -0
  180. data/vendor/lua/lib/lua/luarocks/path.lua +315 -0
  181. data/vendor/lua/lib/lua/luarocks/persist.lua +173 -0
  182. data/vendor/lua/lib/lua/luarocks/refresh_cache.lua +30 -0
  183. data/vendor/lua/lib/lua/luarocks/remove.lua +135 -0
  184. data/vendor/lua/lib/lua/luarocks/rep.lua +313 -0
  185. data/vendor/lua/lib/lua/luarocks/require.lua +6 -0
  186. data/vendor/lua/lib/lua/luarocks/search.lua +399 -0
  187. data/vendor/lua/lib/lua/luarocks/show.lua +138 -0
  188. data/vendor/lua/lib/lua/luarocks/site_config.lua +23 -0
  189. data/vendor/lua/lib/lua/luarocks/tools/patch.lua +712 -0
  190. data/vendor/lua/lib/lua/luarocks/tools/tar.lua +144 -0
  191. data/vendor/lua/lib/lua/luarocks/tools/zip.lua +245 -0
  192. data/vendor/lua/lib/lua/luarocks/type_check.lua +267 -0
  193. data/vendor/lua/lib/lua/luarocks/unpack.lua +151 -0
  194. data/vendor/lua/lib/lua/luarocks/util.lua +420 -0
  195. data/vendor/lua/lib/lua/luarocks/validate.lua +164 -0
  196. data/vendor/lua/lib/lua/luars232.dll +0 -0
  197. data/vendor/lua/lib/lua/luasql/mysql.dll +0 -0
  198. data/vendor/lua/lib/lua/luasql/postgres.dll +0 -0
  199. data/vendor/lua/lib/lua/luasql/sqlite3.dll +0 -0
  200. data/vendor/lua/lib/lua/luaunit.lua +601 -0
  201. data/vendor/lua/lib/lua/lxp.dll +0 -0
  202. data/vendor/lua/lib/lua/lxp/lom.lua +60 -0
  203. data/vendor/lua/lib/lua/math_ext.lua +27 -0
  204. data/vendor/lua/lib/lua/mbox.lua +53 -0
  205. data/vendor/lua/lib/lua/md5.lua +19 -0
  206. data/vendor/lua/lib/lua/md5/core.dll +0 -0
  207. data/vendor/lua/lib/lua/metalua.lua +0 -0
  208. data/vendor/lua/lib/lua/metalua/ast_to_string.mlua +553 -0
  209. data/vendor/lua/lib/lua/metalua/base.lua +104 -0
  210. data/vendor/lua/lib/lua/metalua/bytecode.lua +0 -0
  211. data/vendor/lua/lib/lua/metalua/clopts.mlua +204 -0
  212. data/vendor/lua/lib/lua/metalua/compiler.lua +3 -0
  213. data/vendor/lua/lib/lua/metalua/dollar.mlua +24 -0
  214. data/vendor/lua/lib/lua/metalua/extension/H-runtime.mlua +216 -0
  215. data/vendor/lua/lib/lua/metalua/extension/H.mlua +22 -0
  216. data/vendor/lua/lib/lua/metalua/extension/anaphoric.mlua +54 -0
  217. data/vendor/lua/lib/lua/metalua/extension/clist.mlua +149 -0
  218. data/vendor/lua/lib/lua/metalua/extension/continue.mlua +53 -0
  219. data/vendor/lua/lib/lua/metalua/extension/localin.mlua +2 -0
  220. data/vendor/lua/lib/lua/metalua/extension/log.mlua +39 -0
  221. data/vendor/lua/lib/lua/metalua/extension/match.mlua +374 -0
  222. data/vendor/lua/lib/lua/metalua/extension/ternary.mlua +10 -0
  223. data/vendor/lua/lib/lua/metalua/extension/trycatch.mlua +189 -0
  224. data/vendor/lua/lib/lua/metalua/extension/types-runtime.mlua +159 -0
  225. data/vendor/lua/lib/lua/metalua/extension/types.mlua +352 -0
  226. data/vendor/lua/lib/lua/metalua/extension/withdo.mlua +30 -0
  227. data/vendor/lua/lib/lua/metalua/extension/xglobal-runtime.lua +41 -0
  228. data/vendor/lua/lib/lua/metalua/extension/xglobal.mlua +20 -0
  229. data/vendor/lua/lib/lua/metalua/extension/xloop.mlua +100 -0
  230. data/vendor/lua/lib/lua/metalua/extension/xmatch.mlua +216 -0
  231. data/vendor/lua/lib/lua/metalua/metaloop.mlua +76 -0
  232. data/vendor/lua/lib/lua/metalua/mlc.lua +0 -0
  233. data/vendor/lua/lib/lua/metalua/mlc_xcall.lua +119 -0
  234. data/vendor/lua/lib/lua/metalua/mlp.lua +0 -0
  235. data/vendor/lua/lib/lua/metalua/package2.lua +101 -0
  236. data/vendor/lua/lib/lua/metalua/runtime.lua +3 -0
  237. data/vendor/lua/lib/lua/metalua/string2.lua +44 -0
  238. data/vendor/lua/lib/lua/metalua/table2.lua +372 -0
  239. data/vendor/lua/lib/lua/metalua/walk.mlua +304 -0
  240. data/vendor/lua/lib/lua/metalua/walk/bindings.mlua +41 -0
  241. data/vendor/lua/lib/lua/metalua/walk/id.mlua +186 -0
  242. data/vendor/lua/lib/lua/metalua/walk/scope.lua +54 -0
  243. data/vendor/lua/lib/lua/mime.lua +87 -0
  244. data/vendor/lua/lib/lua/mime/core.dll +0 -0
  245. data/vendor/lua/lib/lua/mobdebug.lua +1484 -0
  246. data/vendor/lua/lib/lua/modules.lua +16 -0
  247. data/vendor/lua/lib/lua/object.lua +56 -0
  248. data/vendor/lua/lib/lua/oil/Exception.lua +26 -0
  249. data/vendor/lua/lib/lua/oil/arch.lua +27 -0
  250. data/vendor/lua/lib/lua/oil/arch/basic/client.lua +29 -0
  251. data/vendor/lua/lib/lua/oil/arch/basic/common.lua +13 -0
  252. data/vendor/lua/lib/lua/oil/arch/basic/server.lua +27 -0
  253. data/vendor/lua/lib/lua/oil/arch/cooperative/common.lua +10 -0
  254. data/vendor/lua/lib/lua/oil/arch/cooperative/server.lua +16 -0
  255. data/vendor/lua/lib/lua/oil/arch/corba/client.lua +39 -0
  256. data/vendor/lua/lib/lua/oil/arch/corba/common.lua +58 -0
  257. data/vendor/lua/lib/lua/oil/arch/corba/intercepted/client.lua +9 -0
  258. data/vendor/lua/lib/lua/oil/arch/corba/intercepted/server.lua +9 -0
  259. data/vendor/lua/lib/lua/oil/arch/corba/server.lua +35 -0
  260. data/vendor/lua/lib/lua/oil/arch/ludo/byref.lua +18 -0
  261. data/vendor/lua/lib/lua/oil/arch/ludo/client.lua +19 -0
  262. data/vendor/lua/lib/lua/oil/arch/ludo/common.lua +18 -0
  263. data/vendor/lua/lib/lua/oil/arch/ludo/server.lua +19 -0
  264. data/vendor/lua/lib/lua/oil/arch/typed/client.lua +27 -0
  265. data/vendor/lua/lib/lua/oil/arch/typed/common.lua +9 -0
  266. data/vendor/lua/lib/lua/oil/arch/typed/server.lua +18 -0
  267. data/vendor/lua/lib/lua/oil/assert.lua +87 -0
  268. data/vendor/lua/lib/lua/oil/builder.lua +45 -0
  269. data/vendor/lua/lib/lua/oil/builder/basic/client.lua +31 -0
  270. data/vendor/lua/lib/lua/oil/builder/basic/common.lua +11 -0
  271. data/vendor/lua/lib/lua/oil/builder/basic/server.lua +13 -0
  272. data/vendor/lua/lib/lua/oil/builder/cooperative/common.lua +11 -0
  273. data/vendor/lua/lib/lua/oil/builder/cooperative/server.lua +11 -0
  274. data/vendor/lua/lib/lua/oil/builder/corba/client.lua +13 -0
  275. data/vendor/lua/lib/lua/oil/builder/corba/common.lua +24 -0
  276. data/vendor/lua/lib/lua/oil/builder/corba/gencode.lua +13 -0
  277. data/vendor/lua/lib/lua/oil/builder/corba/intercepted/client.lua +11 -0
  278. data/vendor/lua/lib/lua/oil/builder/corba/intercepted/server.lua +11 -0
  279. data/vendor/lua/lib/lua/oil/builder/corba/server.lua +13 -0
  280. data/vendor/lua/lib/lua/oil/builder/lua/client.lua +11 -0
  281. data/vendor/lua/lib/lua/oil/builder/lua/server.lua +12 -0
  282. data/vendor/lua/lib/lua/oil/builder/ludo/byref.lua +13 -0
  283. data/vendor/lua/lib/lua/oil/builder/ludo/client.lua +13 -0
  284. data/vendor/lua/lib/lua/oil/builder/ludo/common.lua +14 -0
  285. data/vendor/lua/lib/lua/oil/builder/ludo/server.lua +13 -0
  286. data/vendor/lua/lib/lua/oil/builder/typed/client.lua +16 -0
  287. data/vendor/lua/lib/lua/oil/builder/typed/server.lua +12 -0
  288. data/vendor/lua/lib/lua/oil/compat.lua +846 -0
  289. data/vendor/lua/lib/lua/oil/component.lua +1 -0
  290. data/vendor/lua/lib/lua/oil/corba/giop.lua +301 -0
  291. data/vendor/lua/lib/lua/oil/corba/giop/Codec.lua +1568 -0
  292. data/vendor/lua/lib/lua/oil/corba/giop/CodecGen.lua +589 -0
  293. data/vendor/lua/lib/lua/oil/corba/giop/Exception.lua +25 -0
  294. data/vendor/lua/lib/lua/oil/corba/giop/Indexer.lua +63 -0
  295. data/vendor/lua/lib/lua/oil/corba/giop/Listener.lua +343 -0
  296. data/vendor/lua/lib/lua/oil/corba/giop/Messenger.lua +228 -0
  297. data/vendor/lua/lib/lua/oil/corba/giop/Referrer.lua +180 -0
  298. data/vendor/lua/lib/lua/oil/corba/giop/Requester.lua +462 -0
  299. data/vendor/lua/lib/lua/oil/corba/idl.lua +597 -0
  300. data/vendor/lua/lib/lua/oil/corba/idl/Compiler.lua +133 -0
  301. data/vendor/lua/lib/lua/oil/corba/idl/Importer.lua +235 -0
  302. data/vendor/lua/lib/lua/oil/corba/idl/Indexer.lua +95 -0
  303. data/vendor/lua/lib/lua/oil/corba/idl/Registry.lua +1821 -0
  304. data/vendor/lua/lib/lua/oil/corba/idl/ir.lua +847 -0
  305. data/vendor/lua/lib/lua/oil/corba/idl/sysex.lua +21 -0
  306. data/vendor/lua/lib/lua/oil/corba/iiop/Profiler.lua +200 -0
  307. data/vendor/lua/lib/lua/oil/corba/intercepted/Listener.lua +158 -0
  308. data/vendor/lua/lib/lua/oil/corba/intercepted/Requester.lua +181 -0
  309. data/vendor/lua/lib/lua/oil/corba/services/event.lua +126 -0
  310. data/vendor/lua/lib/lua/oil/corba/services/event/ConsumerAdmin.lua +50 -0
  311. data/vendor/lua/lib/lua/oil/corba/services/event/EventFactory.lua +15 -0
  312. data/vendor/lua/lib/lua/oil/corba/services/event/EventQueue.lua +37 -0
  313. data/vendor/lua/lib/lua/oil/corba/services/event/ProxyPushConsumer.lua +75 -0
  314. data/vendor/lua/lib/lua/oil/corba/services/event/ProxyPushSupplier.lua +62 -0
  315. data/vendor/lua/lib/lua/oil/corba/services/event/SingleDeferredDispatcher.lua +60 -0
  316. data/vendor/lua/lib/lua/oil/corba/services/event/SingleSynchronousDispatcher.lua +39 -0
  317. data/vendor/lua/lib/lua/oil/corba/services/event/SupplierAdmin.lua +50 -0
  318. data/vendor/lua/lib/lua/oil/corba/services/naming.lua +436 -0
  319. data/vendor/lua/lib/lua/oil/kernel/base/Acceptor.lua +268 -0
  320. data/vendor/lua/lib/lua/oil/kernel/base/Channels.lua +121 -0
  321. data/vendor/lua/lib/lua/oil/kernel/base/Connector.lua +147 -0
  322. data/vendor/lua/lib/lua/oil/kernel/base/Dispatcher.lua +99 -0
  323. data/vendor/lua/lib/lua/oil/kernel/base/Proxies.lua +86 -0
  324. data/vendor/lua/lib/lua/oil/kernel/base/Proxies/asynchronous.lua +56 -0
  325. data/vendor/lua/lib/lua/oil/kernel/base/Proxies/protected.lua +17 -0
  326. data/vendor/lua/lib/lua/oil/kernel/base/Proxies/synchronous.lua +17 -0
  327. data/vendor/lua/lib/lua/oil/kernel/base/Proxies/utils.lua +29 -0
  328. data/vendor/lua/lib/lua/oil/kernel/base/Receiver.lua +110 -0
  329. data/vendor/lua/lib/lua/oil/kernel/base/Servants.lua +207 -0
  330. data/vendor/lua/lib/lua/oil/kernel/base/Sockets.lua +44 -0
  331. data/vendor/lua/lib/lua/oil/kernel/cooperative/Receiver.lua +139 -0
  332. data/vendor/lua/lib/lua/oil/kernel/intercepted/Listener.lua +47 -0
  333. data/vendor/lua/lib/lua/oil/kernel/intercepted/Requester.lua +58 -0
  334. data/vendor/lua/lib/lua/oil/kernel/lua/Dispatcher.lua +76 -0
  335. data/vendor/lua/lib/lua/oil/kernel/lua/Proxies.lua +69 -0
  336. data/vendor/lua/lib/lua/oil/kernel/typed/Dispatcher.lua +91 -0
  337. data/vendor/lua/lib/lua/oil/kernel/typed/Proxies.lua +153 -0
  338. data/vendor/lua/lib/lua/oil/kernel/typed/Servants.lua +137 -0
  339. data/vendor/lua/lib/lua/oil/ludo/Codec.lua +66 -0
  340. data/vendor/lua/lib/lua/oil/ludo/CodecByRef.lua +103 -0
  341. data/vendor/lua/lib/lua/oil/ludo/Listener.lua +151 -0
  342. data/vendor/lua/lib/lua/oil/ludo/Referrer.lua +72 -0
  343. data/vendor/lua/lib/lua/oil/ludo/Requester.lua +107 -0
  344. data/vendor/lua/lib/lua/oil/oo.lua +1 -0
  345. data/vendor/lua/lib/lua/oil/port.lua +1 -0
  346. data/vendor/lua/lib/lua/oil/properties.lua +57 -0
  347. data/vendor/lua/lib/lua/oil/verbose.lua +133 -0
  348. data/vendor/lua/lib/lua/package_ext.lua +15 -0
  349. data/vendor/lua/lib/lua/parser.lua +268 -0
  350. data/vendor/lua/lib/lua/pl/Date.lua +555 -0
  351. data/vendor/lua/lib/lua/pl/List.lua +613 -0
  352. data/vendor/lua/lib/lua/pl/Map.lua +113 -0
  353. data/vendor/lua/lib/lua/pl/MultiMap.lua +62 -0
  354. data/vendor/lua/lib/lua/pl/OrderedMap.lua +151 -0
  355. data/vendor/lua/lib/lua/pl/Set.lua +153 -0
  356. data/vendor/lua/lib/lua/pl/app.lua +165 -0
  357. data/vendor/lua/lib/lua/pl/array2d.lua +501 -0
  358. data/vendor/lua/lib/lua/pl/class.lua +180 -0
  359. data/vendor/lua/lib/lua/pl/comprehension.lua +286 -0
  360. data/vendor/lua/lib/lua/pl/config.lua +176 -0
  361. data/vendor/lua/lib/lua/pl/data.lua +606 -0
  362. data/vendor/lua/lib/lua/pl/dir.lua +475 -0
  363. data/vendor/lua/lib/lua/pl/file.lua +70 -0
  364. data/vendor/lua/lib/lua/pl/func.lua +376 -0
  365. data/vendor/lua/lib/lua/pl/init.lua +68 -0
  366. data/vendor/lua/lib/lua/pl/input.lua +173 -0
  367. data/vendor/lua/lib/lua/pl/lapp.lua +407 -0
  368. data/vendor/lua/lib/lua/pl/lexer.lua +456 -0
  369. data/vendor/lua/lib/lua/pl/luabalanced.lua +264 -0
  370. data/vendor/lua/lib/lua/pl/operator.lua +201 -0
  371. data/vendor/lua/lib/lua/pl/path.lua +398 -0
  372. data/vendor/lua/lib/lua/pl/permute.lua +63 -0
  373. data/vendor/lua/lib/lua/pl/platf/luajava.lua +101 -0
  374. data/vendor/lua/lib/lua/pl/pretty.lua +285 -0
  375. data/vendor/lua/lib/lua/pl/seq.lua +551 -0
  376. data/vendor/lua/lib/lua/pl/sip.lua +344 -0
  377. data/vendor/lua/lib/lua/pl/strict.lua +70 -0
  378. data/vendor/lua/lib/lua/pl/stringio.lua +158 -0
  379. data/vendor/lua/lib/lua/pl/stringx.lua +440 -0
  380. data/vendor/lua/lib/lua/pl/tablex.lua +817 -0
  381. data/vendor/lua/lib/lua/pl/template.lua +103 -0
  382. data/vendor/lua/lib/lua/pl/test.lua +135 -0
  383. data/vendor/lua/lib/lua/pl/text.lua +243 -0
  384. data/vendor/lua/lib/lua/pl/utils.lua +550 -0
  385. data/vendor/lua/lib/lua/pl/xml.lua +689 -0
  386. data/vendor/lua/lib/lua/profiler.dll +0 -0
  387. data/vendor/lua/lib/lua/re.lua +248 -0
  388. data/vendor/lua/lib/lua/rex_onig.dll +0 -0
  389. data/vendor/lua/lib/lua/rex_pcre.dll +0 -0
  390. data/vendor/lua/lib/lua/rex_posix.dll +0 -0
  391. data/vendor/lua/lib/lua/rings.dll +0 -0
  392. data/vendor/lua/lib/lua/serialize.lua +193 -0
  393. data/vendor/lua/lib/lua/set.lua +149 -0
  394. data/vendor/lua/lib/lua/socket.lua +133 -0
  395. data/vendor/lua/lib/lua/socket/core.dll +0 -0
  396. data/vendor/lua/lib/lua/socket/ftp.lua +281 -0
  397. data/vendor/lua/lib/lua/socket/http.lua +350 -0
  398. data/vendor/lua/lib/lua/socket/smtp.lua +251 -0
  399. data/vendor/lua/lib/lua/socket/tp.lua +123 -0
  400. data/vendor/lua/lib/lua/socket/url.lua +297 -0
  401. data/vendor/lua/lib/lua/ssl.dll +0 -0
  402. data/vendor/lua/lib/lua/ssl.lua +93 -0
  403. data/vendor/lua/lib/lua/ssl/https.lua +138 -0
  404. data/vendor/lua/lib/lua/stable.lua +28 -0
  405. data/vendor/lua/lib/lua/std.lua +16 -0
  406. data/vendor/lua/lib/lua/strbuf.lua +32 -0
  407. data/vendor/lua/lib/lua/strict.lua +45 -0
  408. data/vendor/lua/lib/lua/string_ext.lua +274 -0
  409. data/vendor/lua/lib/lua/table_ext.lua +117 -0
  410. data/vendor/lua/lib/lua/tar.lua +262 -0
  411. data/vendor/lua/lib/lua/task.dll +0 -0
  412. data/vendor/lua/lib/lua/tree.lua +81 -0
  413. data/vendor/lua/lib/lua/unicode.dll +0 -0
  414. data/vendor/lua/lib/lua/verbose_require.lua +11 -0
  415. data/vendor/lua/lib/lua/vstruct.lua +86 -0
  416. data/vendor/lua/lib/lua/vstruct/ast.lua +192 -0
  417. data/vendor/lua/lib/lua/vstruct/ast/Bitpack.lua +33 -0
  418. data/vendor/lua/lib/lua/vstruct/ast/Generator.lua +174 -0
  419. data/vendor/lua/lib/lua/vstruct/ast/IO.lua +45 -0
  420. data/vendor/lua/lib/lua/vstruct/ast/List.lua +56 -0
  421. data/vendor/lua/lib/lua/vstruct/ast/Name.lua +20 -0
  422. data/vendor/lua/lib/lua/vstruct/ast/Repeat.lua +23 -0
  423. data/vendor/lua/lib/lua/vstruct/ast/Root.lua +19 -0
  424. data/vendor/lua/lib/lua/vstruct/ast/Table.lua +65 -0
  425. data/vendor/lua/lib/lua/vstruct/cursor.lua +81 -0
  426. data/vendor/lua/lib/lua/vstruct/io.lua +45 -0
  427. data/vendor/lua/lib/lua/vstruct/io/a.lua +24 -0
  428. data/vendor/lua/lib/lua/vstruct/io/b.lua +28 -0
  429. data/vendor/lua/lib/lua/vstruct/io/bigendian.lua +21 -0
  430. data/vendor/lua/lib/lua/vstruct/io/c.lua +25 -0
  431. data/vendor/lua/lib/lua/vstruct/io/defaults.lua +24 -0
  432. data/vendor/lua/lib/lua/vstruct/io/endianness.lua +41 -0
  433. data/vendor/lua/lib/lua/vstruct/io/f.lua +129 -0
  434. data/vendor/lua/lib/lua/vstruct/io/hostendian.lua +21 -0
  435. data/vendor/lua/lib/lua/vstruct/io/i.lua +42 -0
  436. data/vendor/lua/lib/lua/vstruct/io/littleendian.lua +21 -0
  437. data/vendor/lua/lib/lua/vstruct/io/m.lua +62 -0
  438. data/vendor/lua/lib/lua/vstruct/io/p.lua +23 -0
  439. data/vendor/lua/lib/lua/vstruct/io/s.lua +27 -0
  440. data/vendor/lua/lib/lua/vstruct/io/seekb.lua +18 -0
  441. data/vendor/lua/lib/lua/vstruct/io/seekf.lua +18 -0
  442. data/vendor/lua/lib/lua/vstruct/io/seekto.lua +18 -0
  443. data/vendor/lua/lib/lua/vstruct/io/u.lua +54 -0
  444. data/vendor/lua/lib/lua/vstruct/io/x.lua +34 -0
  445. data/vendor/lua/lib/lua/vstruct/io/z.lua +63 -0
  446. data/vendor/lua/lib/lua/vstruct/lexer.lua +100 -0
  447. data/vendor/lua/lib/lua/vstruct/pack.lua +142 -0
  448. data/vendor/lua/lib/lua/vstruct/test.lua +47 -0
  449. data/vendor/lua/lib/lua/vstruct/test/basic.lua +73 -0
  450. data/vendor/lua/lib/lua/vstruct/test/common.lua +100 -0
  451. data/vendor/lua/lib/lua/vstruct/test/fp-bigendian.lua +56 -0
  452. data/vendor/lua/lib/lua/vstruct/test/fp-littleendian.lua +56 -0
  453. data/vendor/lua/lib/lua/vstruct/test/struct-test-gen.lua +1230 -0
  454. data/vendor/lua/lib/lua/vstruct/unpack.lua +126 -0
  455. data/vendor/lua/lib/lua/wx.dll +0 -0
  456. data/vendor/lua/lib/lua/xml.lua +75 -0
  457. data/vendor/lua/lib/lua/zip.dll +0 -0
  458. data/vendor/lua/lib/lua/zlib.dll +0 -0
  459. metadata +529 -0
@@ -0,0 +1,195 @@
1
+ --------------------------------------------------------------------------------
2
+ ---------------------- ## ##### ##### ###### -----------------------
3
+ ---------------------- ## ## ## ## ## ## ## -----------------------
4
+ ---------------------- ## ## ## ## ## ###### -----------------------
5
+ ---------------------- ## ## ## ## ## ## -----------------------
6
+ ---------------------- ###### ##### ##### ## -----------------------
7
+ ---------------------- -----------------------
8
+ ----------------------- Lua Object-Oriented Programming ------------------------
9
+ --------------------------------------------------------------------------------
10
+ -- Project: LOOP - Lua Object-Oriented Programming --
11
+ -- Release: 2.3 beta --
12
+ -- Title : Component Model with Wrapping Container --
13
+ -- Author : Renato Maia <maia@inf.puc-rio.br> --
14
+ --------------------------------------------------------------------------------
15
+ -- Exported API: --
16
+ -- Template --
17
+ -- factoryof(component) --
18
+ -- templateof(factory|component) --
19
+ -- ports(template) --
20
+ -- segmentof(portname, component) --
21
+ --------------------------------------------------------------------------------
22
+
23
+ local error = error
24
+ local pairs = pairs
25
+ local rawget = rawget
26
+ local select = select
27
+ local type = type
28
+
29
+ local oo = require "loop.cached"
30
+ local base = require "loop.component.base"
31
+
32
+ module "loop.component.wrapped"
33
+
34
+ --------------------------------------------------------------------------------
35
+
36
+ local impl, obj
37
+ local function method(_, ...) return impl(obj, ...) end
38
+ function delegate(value, delegatee)
39
+ if type(value) == "function" then
40
+ impl, obj = value, delegatee
41
+ return method
42
+ end
43
+ return value
44
+ end
45
+
46
+ --------------------------------------------------------------------------------
47
+
48
+ local ExternalState = oo.class()
49
+
50
+ function ExternalState:__index(name)
51
+ self = self.__container
52
+ local state = self.__state
53
+ local port, manager = state[name], self[name]
54
+ if port and manager then
55
+ return rawget(manager, "__external") or manager
56
+ else
57
+ component = state.__component
58
+ return delegate(port or component[name], component)
59
+ end
60
+ end
61
+
62
+ function ExternalState:__newindex(name, value)
63
+ self = self.__container
64
+ local state = self.__state
65
+ local manager = self[name]
66
+ if manager and manager.__bind then
67
+ manager:__bind(value)
68
+ elseif manager ~= nil then
69
+ state[name] = value
70
+ else
71
+ state.__component[name] = value
72
+ end
73
+ end
74
+
75
+ --------------------------------------------------------------------------------
76
+
77
+ BaseTemplate = oo.class({}, base.BaseTemplate)
78
+
79
+ function BaseTemplate:__container(segments)
80
+ local container = {
81
+ __state = segments,
82
+ __internal = segments,
83
+ }
84
+ container.__external = ExternalState{ __container = container }
85
+ return container
86
+ end
87
+
88
+ function BaseTemplate:__build(segments)
89
+ local container = self:__container(segments)
90
+ local state = container.__state
91
+ local context = container.__internal
92
+ for port, class in oo.allmembers(oo.classof(self)) do
93
+ if port:find("^%a[%w_]*$") then
94
+ container[port] = class(state, port, context)
95
+ end
96
+ end
97
+ state.__reference = container.__external
98
+ for port in pairs(self) do
99
+ if port == 1
100
+ then self:__setcontext(segments.__component, context)
101
+ else self:__setcontext(segments[port], context)
102
+ end
103
+ end
104
+ return container.__external
105
+ end
106
+
107
+ function Template(template, ...)
108
+ return oo.class(template, BaseTemplate, ...)
109
+ end
110
+
111
+ --------------------------------------------------------------------------------
112
+
113
+ function factoryof(component)
114
+ local container = component.__container
115
+ return base.factoryof(container and container.__state or component)
116
+ end
117
+
118
+ function templateof(factory)
119
+ if not oo.instanceof(factory, BaseTemplate) then
120
+ factory = factoryof(factory)
121
+ end
122
+ return oo.classof(factory)
123
+ end
124
+
125
+ function ports(template)
126
+ if not oo.subclassof(template, BaseTemplate) then
127
+ template = templateof(template)
128
+ end
129
+ return base.ports(template)
130
+ end
131
+
132
+ function segmentof(comp, port)
133
+ return comp.__container.__state[port]
134
+ end
135
+
136
+ --------------------------------------------------------------------------------
137
+
138
+ function addport(comp, name, port, class)
139
+ local container = comp.__container
140
+ if container then
141
+ local context = container.__internal
142
+ local state = container.__state
143
+ local factory = state.__factory
144
+ if class then
145
+ local comp = state.__component or state
146
+ state[name] = class(comp[name], comp)
147
+ end
148
+ container[name] = port(state, name, context, factory)
149
+ factory:__setcontext(state[name], context)
150
+ else
151
+ error("bad argument #1 to 'addport' (component expected, got "..type(comp)..")")
152
+ end
153
+ end
154
+
155
+ function removeport(comp, name)
156
+ local container = comp.__container
157
+ if container then
158
+ local state = container.__state
159
+ container[name] = nil
160
+ state[name] = nil
161
+ else
162
+ error("bad argument #1 to 'removeport' (component expected, got "..type(comp)..")")
163
+ end
164
+ end
165
+
166
+ --[[----------------------------------------------------------------------------
167
+ MyCompTemplate = comp.Template{
168
+ [<portname>] = <PortClass>,
169
+ [<portname>] = <PortClass>,
170
+ [<portname>] = <PortClass>,
171
+ }
172
+
173
+ MyContainer = Container{
174
+ __external = Handler{ <container> },
175
+ __internal = {
176
+ <componentimpl>,
177
+ [<portname>] = <portimpl>,
178
+ [<portname>] = <portimpl>,
179
+ [<portname>] = <portimpl>,
180
+ },
181
+ [<portname>] = <portmanager>,
182
+ [<portname>] = <portmanager>,
183
+ [<portname>] = <portmanager>,
184
+ }
185
+
186
+ EMPTY Internal Self | EMPTY Internal Self
187
+ Facet nil wrapper | Facet nil false
188
+ Receptacle nil wrapper | Receptacle nil false
189
+ Multiple multiple wrapper | Multiple multiple false
190
+ |
191
+ FILLED Internal Self | FILLED Internal Self
192
+ Facet port wrapper | Facet port false
193
+ Receptacle wrapper wrapper | Receptacle port false
194
+ Multiple multiple wrapper | Multiple multiple false
195
+ ----------------------------------------------------------------------------]]--
@@ -0,0 +1,521 @@
1
+ --------------------------------------------------------------------------------
2
+ ---------------------- ## ##### ##### ###### -----------------------
3
+ ---------------------- ## ## ## ## ## ## ## -----------------------
4
+ ---------------------- ## ## ## ## ## ###### -----------------------
5
+ ---------------------- ## ## ## ## ## ## -----------------------
6
+ ---------------------- ###### ##### ##### ## -----------------------
7
+ ---------------------- -----------------------
8
+ ----------------------- Lua Object-Oriented Programming ------------------------
9
+ --------------------------------------------------------------------------------
10
+ -- Project: LOOP Class Library --
11
+ -- Release: 2.3 beta --
12
+ -- Title : Interactive Inspector of Application State --
13
+ -- Author : Renato Maia <maia@inf.puc-rio.br> --
14
+ --------------------------------------------------------------------------------
15
+
16
+ local _G = _G
17
+ local assert = assert
18
+ local error = error
19
+ local getfenv = getfenv
20
+ local ipairs = ipairs
21
+ local load = load
22
+ local loadstring = loadstring
23
+ local next = next
24
+ local pairs = pairs
25
+ local rawget = rawget
26
+ local rawset = rawset
27
+ local select = select
28
+ local setfenv = setfenv
29
+ local setmetatable = setmetatable
30
+ local type = type
31
+ local xpcall = xpcall
32
+
33
+ local coroutine = require "coroutine"
34
+ local debug = require "debug"
35
+ local io = require "io"
36
+ local table = require "table"
37
+
38
+ local oo = require "loop.base"
39
+ local Viewer = require "loop.debug.Viewer"
40
+
41
+ module("loop.debug.Inspector", oo.class)
42
+
43
+ active = true
44
+ input = io.stdin
45
+ viewer = Viewer
46
+
47
+ local function call(self, op, ...)
48
+ self = self[".thread"]
49
+ if self
50
+ then return op(self, ...)
51
+ else return op(...)
52
+ end
53
+ end
54
+
55
+ local self
56
+ local infoflags = "Slnuf"
57
+ local Command = {}
58
+
59
+ function Command.see(...)
60
+ self.viewer:write(...)
61
+ self.viewer.output:write("\n")
62
+ end
63
+
64
+ function Command.loc(which, ...)
65
+ local level = self[".level"]
66
+ if level then
67
+ local index = 1
68
+ local name, value
69
+ repeat
70
+ name, value = call(self, debug.getlocal, level, index)
71
+ if not which and name then
72
+ local viewer = self.viewer
73
+ local output = viewer.output
74
+ output:write(name)
75
+ output:write(" = ")
76
+ viewer:write(value)
77
+ output:write("\n")
78
+ elseif name == which then
79
+ if select("#", ...) == 0
80
+ then return value
81
+ else return call(self, debug.setlocal, level, index, (...))
82
+ end
83
+ end
84
+ index = index + 1
85
+ until not name
86
+ end
87
+ end
88
+
89
+ function Command.upv(which, ...)
90
+ local func = self[".current"].func
91
+ local index = 1
92
+ local name, value
93
+ repeat
94
+ name, value = debug.getupvalue(func, index)
95
+ if not which and name then
96
+ local viewer = self.viewer
97
+ local output = viewer.output
98
+ output:write(name," = ")
99
+ viewer:write(value)
100
+ output:write("\n")
101
+ elseif name == which then
102
+ if select("#", ...) == 0
103
+ then return value
104
+ else return debug.setupvalue(func, index, (...))
105
+ end
106
+ end
107
+ index = index + 1
108
+ until not name
109
+ end
110
+
111
+ function Command.env(which, ...)
112
+ local env = getfenv(self[".current"].func)
113
+ if which then
114
+ if select("#", ...) == 0
115
+ then return env[which]
116
+ else env[which] = (...)
117
+ end
118
+ else
119
+ self.viewer:print(env)
120
+ end
121
+ end
122
+
123
+ function Command.lua(which, ...)
124
+ if which then
125
+ if select("#", ...) == 0
126
+ then return _G[which]
127
+ else _G[which] = (...)
128
+ end
129
+ else
130
+ self.viewer:print(_G)
131
+ end
132
+ end
133
+
134
+ function Command.goto(where)
135
+ local kind = type(where)
136
+ if kind == "thread" then
137
+ local status = coroutine.status(where)
138
+ if status ~= "running" and status ~= "suspended" then
139
+ error("unable to inspect an inactive thread")
140
+ end
141
+ elseif kind ~= "function" then
142
+ error("invalid inspection value, got `"..kind.."' (`function' or `thread' expected)")
143
+ end
144
+
145
+ if self[".level"] then
146
+ rawset(self, #self+1, self[".level"])
147
+ rawset(self, #self+1, self[".thread"])
148
+ else
149
+ rawset(self, #self+1, self[".current"].func)
150
+ end
151
+ if kind == "thread" then
152
+ self[".level"] = 1
153
+ self[".thread"] = where
154
+ self[".current"] = call(self, debug.getinfo, self[".level"], infoflags)
155
+ else
156
+ self[".level"] = false
157
+ self[".thread"] = false
158
+ self[".current"] = call(self, debug.getinfo, where, infoflags)
159
+ end
160
+ end
161
+
162
+ function Command.goup()
163
+ local level = self[".level"]
164
+ if level then
165
+ local next = call(self, debug.getinfo, level + 1, infoflags)
166
+ if next then
167
+ rawset(self, #self+1, -1)
168
+ self[".level"] = level + 1
169
+ self[".current"] = next
170
+ else
171
+ error("top level reached")
172
+ end
173
+ else
174
+ error("unable to go up in inactive functions")
175
+ end
176
+ end
177
+
178
+ function Command.back()
179
+ if #self > 0 then
180
+ local kind = type(self[#self])
181
+ if kind == "number" then
182
+ self[".level"] = self[".level"] + self[#self]
183
+ self[".current"] = call(self, debug.getinfo, self[".level"], infoflags)
184
+ self[#self] = nil
185
+ elseif kind == "function" then
186
+ self[".level"] = false
187
+ self[".thread"] = false
188
+ self[".current"] = call(self, debug.getinfo, self[#self], infoflags)
189
+ self[#self] = nil
190
+ else
191
+ self[".thread"] = self[#self]
192
+ self[#self] = nil
193
+ self[".level"] = self[#self]
194
+ self[#self] = nil
195
+ self[".current"] = call(self, debug.getinfo, self[".level"], infoflags)
196
+ end
197
+ else
198
+ error("no more backs avaliable")
199
+ end
200
+ end
201
+
202
+ function Command.hist()
203
+ local index = #self
204
+ while self[index] ~= nil do
205
+ local kind = type(self[index])
206
+ if kind == "number" then
207
+ self.viewer:print(" up one level")
208
+ index = index - 1
209
+ elseif kind == "function" then
210
+ self.viewer:print(" left inactive ",self[index])
211
+ index = index - 1
212
+ else
213
+ self.viewer:print(" left ",self[index] or "main thread"," at level ",self[index-1])
214
+ index = index - 2
215
+ end
216
+ end
217
+ end
218
+
219
+ function Command.curr()
220
+ local viewer = self.viewer
221
+ local level = self[".level"]
222
+ if level then
223
+ local thread = self[".thread"]
224
+ if thread
225
+ then viewer:write(thread)
226
+ else viewer.output:write("main thread")
227
+ end
228
+ viewer:print(", level ", call(self, debug.traceback, level, level))
229
+ else
230
+ viewer:print("inactive function ",self[".current"].func)
231
+ end
232
+ end
233
+
234
+ function Command.done()
235
+ while #self > 0 do
236
+ self[#self] = nil
237
+ end
238
+ self[".thread"] = false
239
+ self[".level"] = false
240
+ self[".current"] = false
241
+ end
242
+
243
+ function Command.step(level)
244
+ if level == "in" then level = -1
245
+ elseif level == "out" then level = 1
246
+ else level = 0 end
247
+ rawset(self, ".hook", level)
248
+ Command.done()
249
+ end
250
+
251
+ function Command.lsbp()
252
+ local breaks = {}
253
+ for line, files in pairs(self.breaks) do
254
+ for file in pairs(files) do
255
+ breaks[#breaks+1] = file..":"..line
256
+ end
257
+ end
258
+ table.sort(breaks)
259
+ for _, bp in ipairs(breaks) do
260
+ self.viewer:print(bp)
261
+ end
262
+ end
263
+
264
+ function Command.mkbp(file, line)
265
+ assert(type(file) == "string", "usage: mkbp(<file>, <line>)")
266
+ assert(type(line) == "number", "usage: mkbp(<file>, <line>)")
267
+ self.breaks[line][file] = true
268
+ end
269
+
270
+ function Command.rmbp(file, line)
271
+ assert(type(file) == "string", "usage: rmbp(<file>, <line>)")
272
+ assert(type(line) == "number", "usage: rmbp(<file>, <line>)")
273
+ local files = rawget(self.breaks, line)
274
+ if files then
275
+ files[file] = nil
276
+ if next(files) == nil then
277
+ self.breaks[line] = nil
278
+ end
279
+ end
280
+ end
281
+
282
+ --------------------------------------------------------------------------------
283
+
284
+ local BreaksListMeta = {
285
+ __index = function(self, line)
286
+ local files = {}
287
+ rawset(self, line, files)
288
+ return files
289
+ end,
290
+ }
291
+ function __init(self, object)
292
+ self = oo.rawnew(self, object)
293
+
294
+ self.breaks = setmetatable(self.breaks or {}, BreaksListMeta)
295
+
296
+ function self.breakhook(event, line)
297
+ local level = rawget(self, "break.level")
298
+ if event == "line" then
299
+ -- check for break points
300
+ local files = rawget(self.breaks, line)
301
+ if files then
302
+ local source = debug.getinfo(2, "S").source
303
+ for file in pairs(files) do
304
+ if source:find(file, #source - #file + 1, true) then
305
+ level = 0
306
+ break
307
+ end
308
+ end
309
+ end
310
+ if level == nil or level > 0 then return end
311
+ self:console(2)
312
+ level = rawget(self, ".hook")
313
+ rawset(self, ".hook", nil)
314
+ if level == nil then self:restorehook() end
315
+ elseif level ~= nil then
316
+ if event == "call" then
317
+ level = level + 1
318
+ else
319
+ level = level - 1
320
+ end
321
+ end
322
+ rawset(self, "break.level", level)
323
+
324
+ local hookbak = rawget(self, "hook.bak")
325
+ if hookbak then
326
+ return hookbak(event, line)
327
+ end
328
+ end
329
+
330
+ return self
331
+ end
332
+
333
+ function __index(inspector, field)
334
+ if rawget(_M, field) ~= nil then
335
+ return rawget(_M, field)
336
+ end
337
+
338
+ if Command[field] then
339
+ self = inspector
340
+ return Command[field]
341
+ end
342
+
343
+ local name, value
344
+
345
+ local func = rawget(inspector, ".level")
346
+ if func then
347
+ local index = 1
348
+ repeat
349
+ name, value = call(inspector, debug.getlocal, func, index)
350
+ if name == field
351
+ then return value
352
+ else index = index + 1
353
+ end
354
+ until not name
355
+ end
356
+
357
+ local func = rawget(inspector, ".current")
358
+ if func then
359
+ func = func.func
360
+ local index = 1
361
+ repeat
362
+ name, value = debug.getupvalue(func, index)
363
+ if name == field
364
+ then return value
365
+ else index = index + 1
366
+ end
367
+ until not name
368
+
369
+ value = getfenv(func)[field]
370
+ if value ~= nil then return value end
371
+
372
+ return _G[field]
373
+ end
374
+ end
375
+
376
+ function __newindex(inspector, field, value)
377
+ if rawget(_M, field) == nil then
378
+ local name
379
+ local index
380
+ local func = inspector[".level"]
381
+ if func then
382
+ index = 1
383
+ repeat
384
+ name = call(inspector, debug.getlocal, func, index)
385
+ if name == field
386
+ then return call(inspector, debug.setlocal, func, index, value)
387
+ else index = index + 1
388
+ end
389
+ until not name
390
+ end
391
+
392
+ func = inspector[".current"]
393
+ if func then
394
+ func = func.func
395
+ index = 1
396
+ repeat
397
+ name = debug.getupvalue(func, index)
398
+ if name == field
399
+ then return debug.setupvalue(func, index, value)
400
+ else index = index + 1
401
+ end
402
+ until not name
403
+
404
+ getfenv(func)[field] = value
405
+ return
406
+ end
407
+ end
408
+ rawset(inspector, field, value)
409
+ end
410
+
411
+ local function results(self, success, ...)
412
+ if not success then
413
+ io.stderr:write(..., "\n")
414
+ elseif select("#", ...) > 0 then
415
+ self.viewer:write(...)
416
+ self.viewer.output:write("\n")
417
+ end
418
+ end
419
+ function console(self, level)
420
+ if self.active then
421
+ assert(not rawget(self, ".current"),
422
+ "cannot invoke inspector operation from the console")
423
+ level = level or 1
424
+ rawset(self, ".thread", coroutine.running() or false)
425
+ rawset(self, ".current", call(self, debug.getinfo, level + 2, infoflags)) -- call, stop
426
+ rawset(self, ".level", level + 5) -- call, command, <inspection>, xpcall, stop
427
+ local viewer = self.viewer
428
+ local input = self.input
429
+ local cmd, errmsg
430
+ repeat
431
+ local info = self[".current"]
432
+ viewer.output:write(
433
+ info.short_src or info.what,
434
+ ":",
435
+ (info.currentline ~= -1 and info.currentline) or
436
+ (info.linedefined ~= -1 and info.linedefined) or "?",
437
+ " ",
438
+ info.namewhat,
439
+ info.namewhat == "" and "" or " ",
440
+ info.name or viewer:tostring(info.func),
441
+ "> "
442
+ )
443
+ cmd = assert(input:read())
444
+ local short = cmd:match("^%s*([%a_][%w_]*)%s*$")
445
+ if short and Command[short]
446
+ then cmd = short.."()"
447
+ else cmd = cmd:gsub("^%s*=", "return ")
448
+ end
449
+ cmd, errmsg = loadstring(cmd, "inspection")
450
+ if cmd then
451
+ setfenv(cmd, self)
452
+ results(self, xpcall(cmd, debug.traceback))
453
+ else
454
+ viewer.output:write(errmsg, "\n")
455
+ end
456
+ until not rawget(self, ".current")
457
+ end
458
+ end
459
+
460
+ --------------------------------------------------------------------------------
461
+
462
+ function restorehook(self)
463
+ if next(self.breaks) == nil then
464
+ debug.sethook(
465
+ rawget(self, "hook.bak") or nil,
466
+ rawget(self, "mask.bak"),
467
+ rawget(self, "count.bak")
468
+ )
469
+ rawset(self, "hook.bak", nil)
470
+ rawset(self, "mask.bak", nil)
471
+ rawset(self, "count.bak", nil)
472
+ rawset(self, "break.level", nil)
473
+ end
474
+ end
475
+
476
+ function setuphook(self)
477
+ if rawget(self, "hook.bak") ~= self.breakhook then
478
+ local hook, mask, count = debug.gethook()
479
+ rawset(self, "hook.bak", hook or false)
480
+ rawset(self, "mask.bak", mask)
481
+ rawset(self, "count.bak", count)
482
+ debug.sethook(self.breakhook, "crl", count)
483
+ end
484
+ end
485
+
486
+ function stop(self, level)
487
+ rawset(self, "break.level", level and level+2 or 3)
488
+ self:setuphook()
489
+ end
490
+
491
+ function setbreak(self, file, line)
492
+ self.breaks[line][file] = true
493
+ self:setuphook()
494
+ end
495
+
496
+ function removebreak(self, file, line)
497
+ local files = rawget(self.breaks, line)
498
+ if files then
499
+ files[file] = nil
500
+ if next(files) == nil then
501
+ self.breaks[line] = nil
502
+ if rawget(self, "break.level") == nil then
503
+ self:restorehook()
504
+ end
505
+ end
506
+ end
507
+ end
508
+
509
+ local function ibreaks(self, file, line)
510
+ local files = rawget(self.breaks, line)
511
+ while files do
512
+ file = next(files, file)
513
+ if file then
514
+ return file, line
515
+ end
516
+ line, files = next(self.breaks, line)
517
+ end
518
+ end
519
+ function allbreaks(self)
520
+ return ibreaks, self, nil, next(self.breaks)
521
+ end