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,589 @@
1
+ --------------------------------------------------------------------------------
2
+ ------------------------------ ##### ## ------------------------------
3
+ ------------------------------ ## ## # ## ------------------------------
4
+ ------------------------------ ## ## ## ## ------------------------------
5
+ ------------------------------ ## ## # ## ------------------------------
6
+ ------------------------------ ##### ### ###### ------------------------------
7
+ -------------------------------- --------------------------------
8
+ ----------------------- An Object Request Broker in Lua ------------------------
9
+ --------------------------------------------------------------------------------
10
+ -- Project: OiL - ORB in Lua: An Object Request Broker in Lua --
11
+ -- Release: 0.5 --
12
+ -- Title : Mapping of Lua values into CDR using dynamic generated code --
13
+ -- Authors: Renato Maia <maia@inf.puc-rio.br> --
14
+ --------------------------------------------------------------------------------
15
+ -- codec:Facet
16
+ -- encoder:object encoder()
17
+ -- decoder:object decoder(stream:string)
18
+ --
19
+ -- proxies:Receptacle
20
+ -- proxy:object proxyto(ior:table, iface:table|string)
21
+ --
22
+ -- objects:Receptacle
23
+ -- proxy:object register(implementation:object, iface:table|string)
24
+ --------------------------------------------------------------------------------
25
+
26
+ local ipairs = ipairs
27
+ local loadstring = loadstring
28
+ local select = select
29
+ local unpack = unpack
30
+
31
+ local string = require "string"
32
+ local table = require "table"
33
+
34
+ local oo = require "oil.oo"
35
+ local assert = require "oil.assert"
36
+ local idl = require "oil.corba.idl"
37
+ local Codec = require "oil.corba.giop.Codec" --[[VERBOSE]] local verbose = require "oil.verbose"
38
+
39
+ module "oil.corba.giop.CodecGen"
40
+
41
+ oo.class(_M, Codec)
42
+
43
+ --------------------------------------------------------------------------------
44
+ --------------------------------------------------------------------------------
45
+
46
+ CodeGenerator = oo.class{
47
+ stacksize = 0,
48
+ stacktop = 0,
49
+ source = table.concat,
50
+ }
51
+
52
+ local upvaluefmt = "_up%d_"
53
+ local stackposfmt = "_%d_"
54
+
55
+ function CodeGenerator:__init(...)
56
+ self = oo.rawnew(self, ...)
57
+ if self.upvalues == nil then self.upvalues = {n=0} end
58
+ return self
59
+ end
60
+
61
+ function CodeGenerator:add(...)
62
+ for i = 1, select("#", ...) do
63
+ self[#self+1] = select(i, ...)
64
+ end
65
+ end
66
+
67
+ function CodeGenerator:push(...)
68
+ self.stacktop = self.stacktop + 1
69
+ if self.stacktop > self.stacksize then
70
+ self.stacksize = self.stacktop
71
+ end
72
+ self:add(self:top(),' = ',...)
73
+ self:add("\n")
74
+ end
75
+
76
+ function CodeGenerator:pop()
77
+ self.stacktop = self.stacktop - 1
78
+ end
79
+
80
+ function CodeGenerator:top(shift)
81
+ return stackposfmt:format(self.stacktop+(shift or 0))
82
+ end
83
+
84
+ function CodeGenerator:upvalue(value)
85
+ local upvalues = self.upvalues
86
+ if value == nil then value = upvalues end -- special value to represent 'nil'
87
+ if upvalues[value] == nil then
88
+ upvalues.n = upvalues.n + 1
89
+ upvalues[value] = upvaluefmt:format(upvalues.n)
90
+ if value ~= upvalues then
91
+ upvalues[upvalues.n] = value
92
+ end
93
+ end
94
+ return upvalues[value]
95
+ end
96
+
97
+ function CodeGenerator:compile(idltype)
98
+ local source = self:source()
99
+
100
+ local positions = {"self"}
101
+ for i = 1, self.stacksize do
102
+ positions[i+1] = stackposfmt:format(i)
103
+ end
104
+
105
+ source = string.format([=[
106
+ local assert = require "oil.assert" --[[VERBOSE]] local verbose = require "oil.verbose"
107
+ return function(%s) %s end
108
+ ]=], table.concat(positions, ","), source)
109
+
110
+ local upvalues = self.upvalues
111
+ if upvalues.n > 0 then
112
+ local names = {}
113
+ for i = 1, upvalues.n do
114
+ names[i] = upvaluefmt:format(i)
115
+ end
116
+ source = string.format("local %s = ...\n%s", table.concat(names, ","), source)
117
+ end
118
+
119
+ local codename = string.format("(un)marshaller for %s %s",
120
+ idltype._type,
121
+ idltype.repID or idltype.name or "anonymous")
122
+ return assert.results(loadstring(source, codename))(
123
+ unpack(upvalues, 1, upvalues.n))
124
+ end
125
+
126
+ function CodeGenerator:illegal(description, sysex)
127
+ self:add([[ assert.exception{ ']],(sysex or "illegal value"),[[',
128
+ reason = 'value',
129
+ message = 'illegal ]],description,[[',
130
+ valuename = ']],description,[['
131
+ }
132
+ ]])
133
+ end
134
+
135
+ --------------------------------------------------------------------------------
136
+ --------------------------------------------------------------------------------
137
+
138
+ DecoderGenerator = oo.class({}, CodeGenerator)
139
+
140
+ function DecoderGenerator:__init(...)
141
+ self = CodeGenerator.__init(self, ...)
142
+ if #self == 0 then self[1] = "return " end
143
+ return self
144
+ end
145
+
146
+ local code = "self.unpack('%s',self.data,nil,nil,self:alignedjump(%d))"
147
+ local function numberunmarshaller(size, format)
148
+ local code = code:format(format, size)
149
+ return function(self) self:add(code) end
150
+ end
151
+ DecoderGenerator.null = function(self) self:add(" nil") end
152
+ DecoderGenerator.void = DecoderGenerator.null
153
+ DecoderGenerator.short = numberunmarshaller( 2, "s")
154
+ DecoderGenerator.long = numberunmarshaller( 4, "l")
155
+ DecoderGenerator.longlong = numberunmarshaller( 8, "g")
156
+ DecoderGenerator.ushort = numberunmarshaller( 2, "S")
157
+ DecoderGenerator.ulong = numberunmarshaller( 4, "L")
158
+ DecoderGenerator.ulonglong = numberunmarshaller( 8, "G")
159
+ DecoderGenerator.float = numberunmarshaller( 4, "f")
160
+ DecoderGenerator.double = numberunmarshaller( 8, "d")
161
+ DecoderGenerator.longdouble = numberunmarshaller(16, "D")
162
+
163
+ function DecoderGenerator:boolean()
164
+ self:add "("
165
+ self:octet()
166
+ self:add "~=0)"
167
+ end
168
+
169
+ function DecoderGenerator:char()
170
+ self:add "self.data:sub(self.cursor,self:jump(1))"
171
+ end
172
+
173
+ function DecoderGenerator:octet()
174
+ self:add "self.unpack('B',self.data,nil,nil,self:jump(1))"
175
+ end
176
+
177
+ function DecoderGenerator:struct(idltype)
178
+ self:add "setmetatable({\n"
179
+ for _, field in ipairs(idltype.fields) do
180
+ self:add(field.name,'=')
181
+ self:generate(field.type)
182
+ self:add(',\n')
183
+ end
184
+ self:add("},",self:upvalue(idltype),")\n")
185
+ end
186
+
187
+ function DecoderGenerator:union(idltype)
188
+ local gen = DecoderGenerator{""}
189
+ local default = idltype.options[idltype.default+1]
190
+ gen:add([[
191
+ local switch
192
+ local function default(self)
193
+ return {
194
+ _switch = switch,
195
+ ]]) if default then gen:add([[
196
+ _field = ]],default.name,[[,
197
+ _value = ]]) gen:generate(default.type) gen:add([[,
198
+ ]]) end gen:add([[
199
+ }
200
+ end
201
+ ]])
202
+
203
+ gen:add 'return setmetatable({\n'
204
+ for _, option in ipairs(idltype.options) do
205
+ --[<option.label>] = function()
206
+ -- return {
207
+ -- _switch = <option.label>,
208
+ -- _field = <option.name>,
209
+ -- _value = <unmarhsall(option.type)>,
210
+ -- }
211
+ --end,
212
+ local switch = gen:upvalue(option.label)
213
+ gen:add([[
214
+ []],switch,[[] = function(self)
215
+ return {
216
+ _switch = ]],switch,[[,
217
+ _field = ']],option.name,[[',
218
+ _value = ]]) gen:generate(option.type) gen:add[[,
219
+ }
220
+ end,
221
+ ]]
222
+ end
223
+ gen:add[[
224
+ },{
225
+ __index=function(_,value)
226
+ switch=value
227
+ return default
228
+ end,
229
+ })
230
+ ]]
231
+ local selector = gen:compile(idltype)
232
+ -- setmetatable(__selector__[<unmarshal(idltype.switch)>](self), __idltype__)
233
+ self:add("setmetatable(",self:upvalue(selector()),"[")
234
+ self:generate(idltype.switch)
235
+ self:add("](self),",self:upvalue(idltype),")")
236
+ end
237
+
238
+ function DecoderGenerator:enum(idltype)
239
+ -- <idltype.enumvalues>[unmarhsal(ulong)+1] or illegal("enumeration value")
240
+ self:add(self:upvalue(idltype.enumvalues),"[")
241
+ self:ulong()
242
+ self:add("+1] or ")
243
+ self:illegal("enumeration value", "MARSHAL")
244
+ end
245
+
246
+ function DecoderGenerator:string()
247
+ self:add "self.data:sub(self:jump("
248
+ self:ulong()
249
+ self:add "),self.cursor-2)"
250
+ end
251
+
252
+ function DecoderGenerator:sequence(idltype)
253
+ local elementtype = idltype.elementtype
254
+ while elementtype._type == "typecode" do elementtype = elementtype.type end
255
+ if elementtype == idl.octet or elementtype == idl.char then
256
+ self:add "self.data:sub(self:jump("
257
+ self:ulong()
258
+ self:add "),self.cursor-1)"
259
+ else
260
+ local gen = DecoderGenerator()
261
+ gen:generate(elementtype)
262
+ self:add("setmetatable(self:sequenceof(",self:upvalue(gen:compile(elementtype)),",")
263
+ self:ulong()
264
+ self:add("),",self:upvalue(idltype),")")
265
+ end
266
+ end
267
+
268
+ function DecoderGenerator:array(idltype)
269
+ local length = idltype.length
270
+ local elementtype = idltype.elementtype
271
+ while elementtype._type == "typecode" do elementtype = elementtype.type end
272
+ if elementtype == idl.octet or elementtype == idl.char then
273
+ self:add("self.data:sub(self:jump(",length,"),self.cursor-1)")
274
+ else
275
+ self:add "setmetatable({\n"
276
+ for i = 1, length do
277
+ self:generate(elementtype)
278
+ self:add ",\n"
279
+ end
280
+ self:add("},",self:upvalue(elementtype),")")
281
+ end
282
+ end
283
+
284
+ function DecoderGenerator:typedef(idltype)
285
+ return self:generate(idltype.type)
286
+ end
287
+
288
+ function DecoderGenerator:except(idltype)
289
+ self:add "setmetatable({\n"
290
+ for _, member in ipairs(idltype.members) do
291
+ self:add(member.name,"=")
292
+ self:generate(member.type)
293
+ self:add(",\n")
294
+ end
295
+ self:add("},",self:upvalue(idltype),")")
296
+ end
297
+
298
+ function DecoderGenerator:generate(idltype)
299
+ local generator = self[idltype._type]
300
+ if generator then --[[VERBOSE]] self:add("verbose:gen_marshal(self,",self:upvalue(idltype),",")
301
+ generator(self, idltype) --[[VERBOSE]] self:add(")")
302
+ else
303
+ self:add("self:",idltype._type,"(",self:upvalue(idltype),")")
304
+ end
305
+ end
306
+
307
+ --------------------------------------------------------------------------------
308
+
309
+ Decoder = oo.class({}, Decoder)
310
+
311
+ function Decoder:alignedjump(value)
312
+ local shift = value - (self.cursor - 2) % value - 1
313
+ local pos = self.cursor + shift
314
+ self:jump(shift + value)
315
+ return pos
316
+ end
317
+
318
+ function Decoder:sequenceof(decoder, length)
319
+ local sequence = { n = length }
320
+ for i = 1, length do
321
+ sequence[i] = decoder(self)
322
+ end
323
+ return sequence
324
+ end
325
+
326
+ function Decoder:get(idltype)
327
+ local unmarshall = idltype.unmarshall
328
+ if unmarshall == nil then
329
+ local type = idltype._type
330
+ if DecoderGenerator[type] then
331
+ local gen = DecoderGenerator()
332
+ gen:generate(idltype) --[[VERBOSE]] verbose:marshal("generating new unmarshaller for type ",idltype._type)
333
+ unmarshall = gen:compile(idltype)
334
+ idltype.unmarshall = unmarshall
335
+ else --[[VERBOSE]] verbose:marshal("using dynamic unmarshaller for type ",idltype._type)
336
+ unmarshall = self[type] or
337
+ assert.illegal(type, "supported type", "MARSHAL")
338
+ end --[[VERBOSE]] else verbose:marshal("generated unmarshaller found for type ",idltype._type)
339
+ end
340
+ return unmarshall(self, idltype)
341
+ end
342
+
343
+ -- generate string decoder because 'Decoder:string()' does not get an argument.
344
+ local gen = DecoderGenerator()
345
+ gen:generate(idl.string)
346
+ idl.string.unmarshall = gen:compile(idl.string)
347
+ Decoder.string = idl.string.unmarshall
348
+
349
+ Decoder.struct = Decoder.get
350
+ Decoder.union = Decoder.get
351
+ Decoder.enum = Decoder.get
352
+ Decoder.sequence = Decoder.get
353
+ Decoder.array = Decoder.get
354
+ Decoder.typedef = Decoder.get
355
+ Decoder.except = Decoder.get
356
+
357
+ --------------------------------------------------------------------------------
358
+ --------------------------------------------------------------------------------
359
+
360
+ EncoderGenerator = oo.class({
361
+ stacksize = 1,
362
+ stacktop = 1,
363
+ }, CodeGenerator)
364
+
365
+ function EncoderGenerator:__init(...)
366
+ self = CodeGenerator.__init(self, ...)
367
+ if #self == 0 then
368
+ self[1] = [[
369
+ local format = self.format
370
+ local aux
371
+ ]]
372
+ end
373
+ return self
374
+ end
375
+
376
+ function EncoderGenerator:rawput(format, size, value)
377
+ self:add("local index = self.index")
378
+ self:add("\nformat[index],self[index] = '",format,"',",value or self:top())
379
+ self:add("\nself.index,self.cursor = index+1,self.cursor+",size,"\n")
380
+ end
381
+
382
+ local function numbermarshaller(size, format)
383
+ return function(self)
384
+ self:add('aux = ',size-1,'-(self.cursor-2)%',size,'\n')
385
+ self:rawput('"', 'aux', '("\\255"):rep(aux)')
386
+ self:rawput(format, size)
387
+ end
388
+ end
389
+ EncoderGenerator.null = function() end
390
+ EncoderGenerator.void = DecoderGenerator.null
391
+ EncoderGenerator.short = numbermarshaller( 2, "s")
392
+ EncoderGenerator.long = numbermarshaller( 4, "l")
393
+ EncoderGenerator.longlong = numbermarshaller( 8, "g")
394
+ EncoderGenerator.ushort = numbermarshaller( 2, "S")
395
+ EncoderGenerator.ulong = numbermarshaller( 4, "L")
396
+ EncoderGenerator.ulonglong = numbermarshaller( 8, "G")
397
+ EncoderGenerator.float = numbermarshaller( 4, "f")
398
+ EncoderGenerator.double = numbermarshaller( 8, "d")
399
+ EncoderGenerator.longdouble = numbermarshaller(16, "D")
400
+
401
+ function EncoderGenerator:boolean()
402
+ self:add(self:top(),' = ',self:top(),' and 1 or 0\n')
403
+ self:octet()
404
+ end
405
+
406
+ function EncoderGenerator:char()
407
+ self:add('if #',self:top(),' ~= 1 then assert.illegal(',self:top(),', "character", "MARSHAL") end\n')
408
+ self:rawput('"', 1)
409
+ end
410
+
411
+ function EncoderGenerator:octet()
412
+ self:rawput("B", 1)
413
+ end
414
+
415
+ function EncoderGenerator:struct(idltype)
416
+ for _, field in ipairs(idltype.fields) do
417
+ self:push(self:top(),".",field.name)
418
+ self:generate(field.type)
419
+ self:pop()
420
+ end
421
+ end
422
+
423
+ function EncoderGenerator:union(idltype)
424
+ self:push(self:top(),"._switch")
425
+ self:add('if ',self:top(),' == nil then\n')
426
+ self:pop() -- nil
427
+ self:push(self:upvalue(idltype.selector),'[',self:top(),'._field]')
428
+ self:add('if ',self:top(),' == nil then\n')
429
+ for index, option in ipairs(idltype.options) do
430
+ self:pop() -- nil
431
+ self:add('if ',self:top(),'.',option.name,' ~= nil then ')
432
+ self:push(self:upvalue(option.label))
433
+ self:add('else')
434
+ end
435
+ self:add '\n'
436
+ local default = idltype.options[idltype.default+1]
437
+ if default then
438
+ self:pop() -- nil
439
+ self:push(self:upvalue(default))
440
+ else
441
+ self:illegal("union value (no discriminator)", "MARSHAL")
442
+ end
443
+ self:add 'end\nend\nend\n'
444
+ self:generate(idltype.switch)
445
+
446
+ for index, option in ipairs(idltype.options) do
447
+ self:add('if ',self:top(),' == ',self:upvalue(option.label),' then\n')
448
+ self:pop() -- switch
449
+ self:push(self:top(),'._value')
450
+ self:add('if ',self:top(),' == nil then\n')
451
+ self:pop() -- nil
452
+ self:push(self:top(),".",option.name)
453
+ self:add('if ',self:top(),' == nil then\n')
454
+ self:illegal("union value (none contents)", "MARSHAL")
455
+ self:add "end\nend\n"
456
+ self:generate(option.type)
457
+ if index == #idltype.options
458
+ then self:add 'end\n'
459
+ else self:add 'else'
460
+ end
461
+ end
462
+ self:pop() -- switch or value
463
+ end
464
+
465
+ function EncoderGenerator:enum(idltype)
466
+ self:push(self:upvalue(idltype.labelvalue),'[',self:top(),'] or tonumber(',self:top(),')')
467
+ self:ulong()
468
+ self:pop()
469
+ end
470
+
471
+ function EncoderGenerator:string()
472
+ self:push('#',self:top(),'+1')
473
+ self:ulong()
474
+ self:pop()
475
+ self:rawput('"', self:top(1))
476
+ self:rawput('"', 0, "'\\0'")
477
+ end
478
+
479
+ function EncoderGenerator:sequence(idltype)
480
+ local elementtype = idltype.elementtype
481
+ while elementtype._type == "typecode" do elementtype = elementtype.type end
482
+ local dostring = elementtype == idl.octet or elementtype == idl.char
483
+ if dostring then
484
+ self:add('if type(',self:top(),') == "string" then\n')
485
+ self:push('#',self:top())
486
+ self:ulong()
487
+ self:pop()
488
+ self:rawput('"', self:top(1))
489
+ self:add 'else\n'
490
+ end
491
+ self:push(self:top(),'.n or #',self:top())
492
+ self:ulong()
493
+ self:pop()
494
+ self:add('for i = 1, ',self:top(1),' do\n')
495
+ self:push(self:top(),'[i]')
496
+ self:generate(elementtype)
497
+ self:pop()
498
+ self:add 'end\n'
499
+ if dostring then
500
+ self:add 'end\n'
501
+ end
502
+ end
503
+
504
+ function EncoderGenerator:array(idltype)
505
+ local elementtype = idltype.elementtype
506
+ while elementtype._type == "typecode" do elementtype = elementtype.type end
507
+ local dostring = elementtype == idl.octet or elementtype == idl.char
508
+ if dostring then
509
+ self:add('if type(',self:top(),') == "string" then\n')
510
+ self:rawput('"', idltype.length)
511
+ self:add('else\n')
512
+ end
513
+ self:add('for i = 1,',idltype.length,' do\n')
514
+ self:generate(elementtype)
515
+ self:add 'end\n'
516
+ if dostring then self:add 'end\n' end
517
+ end
518
+
519
+ function EncoderGenerator:typedef(idltype)
520
+ return self:generate(idltype.type)
521
+ end
522
+
523
+ function EncoderGenerator:except(idltype)
524
+ for _, member in ipairs(idltype.members) do
525
+ self:push(self:top(),'.',member.name)
526
+ self:generate(member.type)
527
+ self:pop()
528
+ end
529
+ end
530
+
531
+ function EncoderGenerator:generate(idltype)
532
+ local generator = self[idltype._type]
533
+ if generator then --[[VERBOSE]] self:add('verbose:marshal(true,self,',self:upvalue(idltype),',',self:top(),')\n')
534
+ generator(self, idltype) --[[VERBOSE]] self:add('verbose:marshal(false)\n')
535
+ else
536
+ self:add('self:',idltype._type,'(',self:top(),',',self:upvalue(idltype),')\n')
537
+ end
538
+ end
539
+
540
+ --------------------------------------------------------------------------------
541
+
542
+ Encoder = oo.class({}, Encoder)
543
+
544
+ function Encoder:alignedjump(value)
545
+ local pos = self.cursor - 2
546
+ self:jump(value - pos % value - 1)
547
+ return self.cursor
548
+ end
549
+
550
+ function Encoder:put(value, idltype)
551
+ local marshall = idltype.marshall
552
+ if marshall == nil then
553
+ local type = idltype._type
554
+ if EncoderGenerator[type] then
555
+ local gen = EncoderGenerator()
556
+ gen:generate(idltype) --[[VERBOSE]] verbose:marshal("generating new marshaller for type ",idltype._type)
557
+ marshall = gen:compile(idltype)
558
+ idltype.marshall = marshall
559
+ else --[[VERBOSE]] verbose:marshal("using dynamic marshaller for type ",idltype._type)
560
+ marshall = self[type] or
561
+ assert.illegal(type, "supported type", "MARSHAL")
562
+ end --[[VERBOSE]] else verbose:marshal("generated marshaller found for type ",idltype._type)
563
+ end
564
+ return marshall(self, value, idltype)
565
+ end
566
+
567
+ -- generate string encoder because 'Decoder:string()' does not get an argument.
568
+ local gen = EncoderGenerator()
569
+ gen:generate(idl.string)
570
+ idl.string.marshall = gen:compile(idl.string)
571
+ Encoder.string = idl.string.marshall
572
+
573
+ Encoder.struct = Encoder.put
574
+ Encoder.union = Encoder.put
575
+ Encoder.enum = Encoder.put
576
+ Encoder.sequence = Encoder.put
577
+ Encoder.array = Encoder.put
578
+ Encoder.typedef = Encoder.put
579
+ Encoder.except = Encoder.put
580
+
581
+ --------------------------------------------------------------------------------
582
+ --------------------------------------------------------------------------------
583
+
584
+ --[[VERBOSE]] verbose.codecop[Encoder] = verbose.codecop[Codec.Encoder]
585
+ --[[VERBOSE]] verbose.codecop[Decoder] = verbose.codecop[Codec.Decoder]
586
+ --[[VERBOSE]] function verbose:gen_marshal(codec, type, value)
587
+ --[[VERBOSE]] self:marshal(codec, type, value)
588
+ --[[VERBOSE]] return value
589
+ --[[VERBOSE]] end