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,597 @@
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 : Interface Definition Language (IDL) specifications in Lua --
13
+ -- Authors: Renato Maia <maia@inf.puc-rio.br> --
14
+ --------------------------------------------------------------------------------
15
+ -- Interface: --
16
+ -- istype(object) Checks whether object is an IDL type --
17
+ -- isspec(object) Checks whether object is an IDL specification --
18
+ -- --
19
+ -- null IDL null type --
20
+ -- void IDL void type --
21
+ -- short IDL integer type short --
22
+ -- long IDL integer type long --
23
+ -- ushort IDL integer type unsigned short --
24
+ -- ulong IDL integer type unsigned long --
25
+ -- float IDL floating-point numeric type --
26
+ -- double IDL double-precision floating-point numeric type --
27
+ -- boolean IDL boolean type --
28
+ -- char IDL character type --
29
+ -- octet IDL raw byte type --
30
+ -- any IDL generic type --
31
+ -- TypeCode IDL meta-type --
32
+ -- string IDL string type --
33
+ -- --
34
+ -- Object(definition) IDL Object type construtor --
35
+ -- struct(definition) IDL struct type construtor --
36
+ -- union(definition) IDL union type construtor --
37
+ -- enum(definition) IDL enumeration type construtor --
38
+ -- sequence(definition) IDL sequence type construtor --
39
+ -- array(definition) IDL array type construtor --
40
+ -- valuetype(definition) IDL value type construtor --
41
+ -- typedef(definition) IDL type definition construtor --
42
+ -- except(definition) IDL expection construtor --
43
+ -- --
44
+ -- attribute(definition) IDL attribute construtor --
45
+ -- operation(definition) IDL operation construtor --
46
+ -- module(definition) IDL module structure constructor --
47
+ -- interface(definition) IDL object interface structure constructor --
48
+ -- --
49
+ -- OctetSequence IDL type used in OiL implementation --
50
+ -- Version IDL type used in OiL implementation --
51
+ -- --
52
+ -- ScopeMemberList Class that defines behavior of interface member list-
53
+ --------------------------------------------------------------------------------
54
+ -- Notes: --
55
+ -- The syntax used for description of IDL specifications is strongly based --
56
+ -- on the work provided by Let�cia Nogeira (i.e. LuaRep), which was mainly --
57
+ -- inteded to provide an user-friendly syntax. This approach may change to --
58
+ -- allow better fitting into CORBA model, since the use of LuaIDL parsing --
59
+ -- facilities already provides an user-friendly way to define IDL --
60
+ -- specifications. However backward compatibility may be provided whenever --
61
+ -- possible. --
62
+ --------------------------------------------------------------------------------
63
+
64
+ local type = type
65
+ local newproxy = newproxy
66
+ local pairs = pairs
67
+ local ipairs = ipairs
68
+ local rawset = rawset
69
+ local require = require
70
+ local rawget = rawget
71
+
72
+ -- backup of string package functions to avoid name crash with string IDL type
73
+ local match = require("string").match
74
+ local format = require("string").format
75
+ local table = require "table"
76
+
77
+ local OrderedSet = require "loop.collection.OrderedSet"
78
+ local UnorderedArraySet = require "loop.collection.UnorderedArraySet"
79
+
80
+ local oo = require "oil.oo"
81
+ local assert = require "oil.assert"
82
+
83
+ module "oil.corba.idl" --[[VERBOSE]] local verbose = require "oil.verbose"
84
+
85
+ --------------------------------------------------------------------------------
86
+ -- IDL element types -----------------------------------------------------------
87
+
88
+ BasicTypes = {
89
+ null = true,
90
+ void = true,
91
+ short = true,
92
+ long = true,
93
+ longlong = true,
94
+ ushort = true,
95
+ ulong = true,
96
+ ulonglong = true,
97
+ float = true,
98
+ double = true,
99
+ longdouble = true,
100
+ boolean = true,
101
+ char = true,
102
+ octet = true,
103
+ any = true,
104
+ TypeCode = true,
105
+ }
106
+
107
+ UserTypes = {
108
+ string = true,
109
+ Object = true,
110
+ struct = true,
111
+ union = true,
112
+ enum = true,
113
+ sequence = true,
114
+ array = true,
115
+ valuetype = true,
116
+ valuebox = true,
117
+ typedef = true,
118
+ except = true,
119
+ interface = true,
120
+ abstract_interface = true,
121
+ local_interface = true,
122
+ }
123
+
124
+ InterfaceElements = {
125
+ attribute = true,
126
+ operation = true,
127
+ module = true,
128
+ }
129
+
130
+ --------------------------------------------------------------------------------
131
+ -- Auxilary module functions ---------------------------------------------------
132
+
133
+ function istype(object)
134
+ return type(object) == "table" and (
135
+ BasicTypes[object._type] == object or
136
+ UserTypes[object._type]
137
+ )
138
+ end
139
+
140
+ function isspec(object)
141
+ return type(object) == "table" and (
142
+ BasicTypes[object._type] == object or
143
+ UserTypes[object._type] or
144
+ InterfaceElements[object._type]
145
+ )
146
+ end
147
+
148
+ assert.TypeCheckers["idl type"] = istype
149
+ assert.TypeCheckers["idl def."] = isspec
150
+ assert.TypeCheckers["^idl (%l+)$"] = function(value, name)
151
+ if istype(value)
152
+ then return (value._type == name), ("idl "..name.." type")
153
+ else return false, name
154
+ end
155
+ end
156
+
157
+ --------------------------------------------------------------------------------
158
+ --------------------------------------------------------------------------------
159
+
160
+ local function checkfield(field)
161
+ assert.type(field.name, "string", "field name")
162
+ assert.type(field.type, "idl type", "field type")
163
+ end
164
+
165
+ local function checkfields(fields)
166
+ for _, field in ipairs(fields) do checkfield(field) end
167
+ end
168
+
169
+ --------------------------------------------------------------------------------
170
+ -- Basic types -----------------------------------------------------------------
171
+
172
+ for name in pairs(BasicTypes) do
173
+ local basictype = {_type = name}
174
+ _M[name] = basictype
175
+ BasicTypes[name] = basictype
176
+ end
177
+
178
+ --------------------------------------------------------------------------------
179
+ -- Scoped definitions management -----------------------------------------------
180
+
181
+ function setnameof(contained, name)
182
+ contained.name = name
183
+ local container = contained.defined_in
184
+ if container then
185
+ local start, default = match(container.repID, "^(IDL:.*):(%d+%.%d+)$")
186
+ if not start then
187
+ assert.illegal(container.repID, "parent scope repository ID")
188
+ end
189
+ contained.repID = format("%s/%s:%s", start, contained.name,
190
+ contained.version or default)
191
+ else
192
+ contained.repID = format("IDL:%s:%s", contained.name,
193
+ contained.version or "1.0")
194
+ end
195
+ if contained.definitions then
196
+ for _, contained in ipairs(contained.definitions) do
197
+ setnameof(contained, contained.name)
198
+ end
199
+ end
200
+ end
201
+
202
+ --------------------------------------------------------------------------------
203
+
204
+ ContainerKey = newproxy()
205
+
206
+ Contents = oo.class()
207
+
208
+ function Contents:__newindex(name, contained)
209
+ if type(name) == "string" then
210
+ contained.defined_in = self[ContainerKey]
211
+ setnameof(contained, name)
212
+ return self:_add(contained)
213
+ end
214
+ rawset(self, name, contained)
215
+ end
216
+
217
+ function Contents:_add(contained)
218
+ UnorderedArraySet.add(self, contained)
219
+ rawset(self, contained.name, contained)
220
+ return contained
221
+ end
222
+
223
+ function Contents:_remove(contained)
224
+ contained = UnorderedArraySet.remove(self, contained)
225
+ if contained then
226
+ self[contained.name] = nil
227
+ return contained
228
+ end
229
+ end
230
+
231
+ function Contents:_removeat(index)
232
+ return self:remove(self[index])
233
+ end
234
+
235
+ Contents._removebyname = Contents._removeat
236
+
237
+ --------------------------------------------------------------------------------
238
+
239
+ function Container(self)
240
+ if not oo.instanceof(self.definitions, Contents) then
241
+ local contents = Contents{ [ContainerKey] = self }
242
+ if self.definitions then
243
+ for _, value in ipairs(self.definitions) do
244
+ assert.type(value.name, "string", "IDL definition name")
245
+ contents:__newindex(value.name, value)
246
+ end
247
+ for field, value in pairs(self.definitions) do
248
+ if type(field) == "string" then
249
+ contents:__newindex(field, value)
250
+ end
251
+ end
252
+ end
253
+ self.definitions = contents
254
+ end
255
+ return self
256
+ end
257
+
258
+ --------------------------------------------------------------------------------
259
+
260
+ function Contained(self)
261
+ assert.type(self, "table", "IDL definition")
262
+ if self.name == nil then self.name = "" end
263
+ if self.repID == nil then setnameof(self, self.name) end
264
+ assert.type(self.name, "string", "IDL definition name")
265
+ assert.type(self.repID, "string", "repository ID")
266
+ return self
267
+ end
268
+
269
+ --------------------------------------------------------------------------------
270
+ -- User-defined type constructors ----------------------------------------------
271
+
272
+ -- Note: internal structure is optimized for un/marshalling.
273
+
274
+ string = { _type = "string", maxlength = 0 }
275
+
276
+ function Object(self)
277
+ assert.type(self, "table", "Object type definition")
278
+ if self.name == nil then self.name = "" end
279
+ if self.repID == nil then setnameof(self, self.name) end
280
+ assert.type(self.name, "string", "Object type name")
281
+ assert.type(self.repID, "string", "Object type repository ID")
282
+ if self.repID == "IDL:omg.org/CORBA/Object:1.0"
283
+ then self = object
284
+ else self._type = "Object"
285
+ end
286
+ return self
287
+ end
288
+
289
+ function struct(self)
290
+ self = Container(Contained(self))
291
+ self._type = "struct"
292
+ if self.fields == nil then self.fields = self end
293
+ checkfields(self.fields)
294
+ return self
295
+ end
296
+
297
+ function union(self)
298
+ self = Container(Contained(self))
299
+ self._type = "union"
300
+ if self.options == nil then self.options = self end
301
+ if self.default == nil then self.default = -1 end -- indicates no default in CDR
302
+
303
+ assert.type(self.switch, "idl type", "union type discriminant")
304
+ assert.type(self.options, "table", "union options definition")
305
+ assert.type(self.default, "number", "union default option definition")
306
+
307
+ self.selector = {} -- maps field names to labels (option selector)
308
+ self.selection = {} -- maps labels (option selector) to options
309
+ for index, option in ipairs(self.options) do
310
+ checkfield(option)
311
+ if option.label == nil then assert.illegal(nil, "option label value") end
312
+ self.selector[option.name] = option.label
313
+ if index ~= self.default + 1 then
314
+ self.selection[option.label] = option
315
+ end
316
+ end
317
+
318
+ function self.__index(union, field)
319
+ if rawget(union, "_switch") == self.selector[field] then
320
+ return rawget(union, "_value")
321
+ end
322
+ end
323
+ function self.__newindex(union, field, value)
324
+ local label = self.selector[field]
325
+ if label then
326
+ rawset(union, "_switch", label)
327
+ rawset(union, "_value", value)
328
+ rawset(union, "_field", field)
329
+ end
330
+ end
331
+
332
+ return self
333
+ end
334
+
335
+ function enum(self)
336
+ self = Contained(self)
337
+ self._type = "enum"
338
+ if self.enumvalues == nil then self.enumvalues = self end
339
+ assert.type(self.enumvalues, "table", "enumeration values definition")
340
+
341
+ self.labelvalue = {}
342
+ for index, label in ipairs(self.enumvalues) do
343
+ assert.type(label, "string", "enumeration value label")
344
+ self.labelvalue[label] = index - 1
345
+ end
346
+
347
+ return self
348
+ end
349
+
350
+ function sequence(self)
351
+ self._type = "sequence"
352
+ if self.maxlength == nil then self.maxlength = 0 end
353
+ if self.elementtype == nil then self.elementtype = self[1] end
354
+ assert.type(self.maxlength, "number", "sequence type maximum length ")
355
+ assert.type(self.elementtype, "idl type", "sequence element type")
356
+ return self
357
+ end
358
+
359
+ function array(self)
360
+ self._type = "array"
361
+ assert.type(self.length, "number", "array type length")
362
+ if self.elementtype == nil then self.elementtype = self[1] end
363
+ assert.type(self.elementtype, "idl type", "array element type")
364
+ return self
365
+ end
366
+
367
+ ValueKind = {
368
+ none = 0,
369
+ custom = 1,
370
+ abstract = 2,
371
+ truncatable = 3,
372
+ }
373
+ ValueMemberAccess = {
374
+ private = 0,
375
+ public = 1,
376
+ }
377
+ for list in pairs{[ValueKind]=true, [ValueMemberAccess]=true} do
378
+ local values = {}
379
+ for _,value in pairs(list) do values[value] = true end
380
+ for value in pairs(values) do list[value] = value end
381
+ end
382
+
383
+ function valuemember(self)
384
+ self = Contained(self)
385
+ self._type = "valuemember"
386
+ checkfield(self)
387
+ local access = ValueMemberAccess[self.access]
388
+ if access == nil then
389
+ assert.illegal(self.access, "value member access")
390
+ end
391
+ self.access = access
392
+ return self
393
+ end
394
+
395
+ function valuetype(self)
396
+ self = Container(Contained(self))
397
+ self._type = "valuetype"
398
+ local kind = self.kind or (self.truncatable and ValueKind.truncatable)
399
+ or (self.abstract and ValueKind.abstract)
400
+ or ValueKind.none
401
+ kind = ValueKind[kind]
402
+ if kind == nil then
403
+ assert.illegal(self.kind, "value kind")
404
+ end
405
+ self.kind = kind
406
+ local base = self.base_value
407
+ if base == nil then
408
+ self.base_value = null
409
+ elseif base ~= null then
410
+ assert.type(base, "idl valuetype", "base in value definition")
411
+ end
412
+ if self.members == nil then self.members = self end
413
+ local members = self.members
414
+ local definitions = self.definitions
415
+ for index, member in ipairs(members) do
416
+ member = valuemember(member)
417
+ members[index] = member
418
+ definitions:__newindex(member.name, member)
419
+ end
420
+ return self
421
+ end
422
+
423
+ function valuebox(self)
424
+ self = Contained(self)
425
+ self._type = "valuebox"
426
+ if self.original_type == nil then self.original_type = self[1] end
427
+ local type = self.original_type
428
+ assert.type(type, "idl type", "type in typedef definition")
429
+ local kind = type._type
430
+ if kind == "valuetype" or kind == "valuebox" then
431
+ assert.illegal(type, "type of value box")
432
+ end
433
+ return self
434
+ end
435
+
436
+ function typedef(self)
437
+ self = Contained(self)
438
+ self._type = "typedef"
439
+ if self.original_type == nil then self.original_type = self[1] end
440
+ assert.type(self.original_type, "idl type", "type in typedef definition")
441
+ return self
442
+ end
443
+
444
+ function except(self)
445
+ self = Container(Contained(self))
446
+ self._type = "except"
447
+ if self.members == nil then self.members = self end
448
+ checkfields(self.members)
449
+ return self
450
+ end
451
+
452
+ --------------------------------------------------------------------------------
453
+ -- IDL interface definitions ---------------------------------------------------
454
+
455
+ -- Note: construtor syntax is optimized for use with Interface Repository
456
+
457
+ function attribute(self)
458
+ self = Contained(self)
459
+ self._type = "attribute"
460
+ if self.type == nil then self.type = self[1] end
461
+ assert.type(self.type, "idl type", "attribute type")
462
+
463
+ local mode = self.mode
464
+ if mode == "ATTR_READONLY" then
465
+ self.readonly = true
466
+ elseif mode ~= nil and mode ~= "ATTR_NORMAL" then
467
+ assert.illegal(self.mode, "attribute mode")
468
+ end
469
+
470
+ return self
471
+ end
472
+
473
+ function operation(self)
474
+ self = Contained(self)
475
+ self._type = "operation"
476
+
477
+ local mode = self.mode
478
+ if mode == "OP_ONEWAY" then
479
+ self.oneway = true
480
+ elseif mode ~= nil and mode ~= "OP_NORMAL" then
481
+ assert.illegal(self.mode, "operation mode")
482
+ end
483
+
484
+ self.inputs = {}
485
+ self.outputs = {}
486
+ if self.result and self.result ~= void then
487
+ self.outputs[#self.outputs+1] = self.result
488
+ end
489
+ if self.parameters then
490
+ for _, param in ipairs(self.parameters) do
491
+ checkfield(param)
492
+ if param.mode then
493
+ assert.type(param.mode, "string", "operation parameter mode")
494
+ if param.mode == "PARAM_IN" then
495
+ self.inputs[#self.inputs+1] = param.type
496
+ elseif param.mode == "PARAM_OUT" then
497
+ self.outputs[#self.outputs+1] = param.type
498
+ elseif param.mode == "PARAM_INOUT" then
499
+ self.inputs[#self.inputs+1] = param.type
500
+ self.outputs[#self.outputs+1] = param.type
501
+ else
502
+ assert.illegal(param.mode, "operation parameter mode")
503
+ end
504
+ else
505
+ self.inputs[#self.inputs+1] = param.type
506
+ end
507
+ end
508
+ end
509
+
510
+ if self.exceptions then
511
+ for _, except in ipairs(self.exceptions) do
512
+ assert.type(except, "idl except", "raised exception")
513
+ if self.exceptions[except.repID] ~= nil then
514
+ assert.illegal(except.repID,
515
+ "exception raise defintion, got duplicated repository ID")
516
+ end
517
+ self.exceptions[except.repID] = except
518
+ end
519
+ else
520
+ self.exceptions = {}
521
+ end
522
+
523
+ return self
524
+ end
525
+
526
+ function module(self)
527
+ self = Container(Contained(self))
528
+ self._type = "module"
529
+ return self
530
+ end
531
+
532
+ --------------------------------------------------------------------------------
533
+
534
+ local function ibases(queue, interface)
535
+ interface = queue[interface]
536
+ if interface then
537
+ for _, base in ipairs(interface.base_interfaces) do
538
+ queue:enqueue(base)
539
+ end
540
+ return interface
541
+ end
542
+ end
543
+ function basesof(self)
544
+ local queue = OrderedSet()
545
+ queue:enqueue(self)
546
+ return ibases, queue, OrderedSet.firstkey
547
+ end
548
+
549
+ function interface(self)
550
+ self = Container(Contained(self))
551
+ self._type = "interface"
552
+ if self.base_interfaces == nil then self.base_interfaces = self end
553
+ assert.type(self.base_interfaces, "table", "interface base list")
554
+ for _, base in ipairs(self.base_interfaces) do
555
+ if base._type ~= "abstract_interface" then
556
+ assert.type(base, "idl interface", "interface base")
557
+ end
558
+ end
559
+ self.hierarchy = basesof
560
+ return self
561
+ end
562
+
563
+ function abstract_interface(self)
564
+ self = interface(self)
565
+ for _, base in ipairs(self.base_interfaces) do
566
+ assert.type(base, "idl abstract_interface", "abstract interface base")
567
+ end
568
+ self._type = "abstract_interface"
569
+ return self
570
+ end
571
+
572
+ function local_interface(self)
573
+ self = interface(self)
574
+ for _, base in ipairs(self.base_interfaces) do
575
+ if base._type ~= "local_interface" then
576
+ assert.type(base, "idl interface", "local interface base")
577
+ end
578
+ end
579
+ self._type = "local_interface"
580
+ return self
581
+ end
582
+
583
+ --------------------------------------------------------------------------------
584
+ -- IDL types used in the implementation of OiL ---------------------------------
585
+
586
+ object = interface{
587
+ repID = "IDL:omg.org/CORBA/Object:1.0",
588
+ name = "Object",
589
+ }
590
+ ValueBase = valuetype{
591
+ repID = "IDL:omg.org/CORBA/ValueBase:1.0",
592
+ name = "ValueBase",
593
+ abstract = true,
594
+ }
595
+ OctetSeq = sequence{octet}
596
+ Version = struct{{ type = octet, name = "major" },
597
+ { type = octet, name = "minor" }}