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.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +69 -0
- data/Rakefile +1 -0
- data/lib/rufus/lua/win.rb +18 -0
- data/lib/rufus/lua/win/version.rb +7 -0
- data/rufus-lua-win.gemspec +23 -0
- data/vendor/lua/bin/liblua.dll +0 -0
- data/vendor/lua/lib/lua/LuaXml.lua +119 -0
- data/vendor/lua/lib/lua/alien.lua +250 -0
- data/vendor/lua/lib/lua/alien/core.dll +0 -0
- data/vendor/lua/lib/lua/alien/struct.dll +0 -0
- data/vendor/lua/lib/lua/base.lua +536 -0
- data/vendor/lua/lib/lua/bin.lua +20 -0
- data/vendor/lua/lib/lua/bit.dll +0 -0
- data/vendor/lua/lib/lua/cdlua.dll +0 -0
- data/vendor/lua/lib/lua/cdluacontextplus.dll +0 -0
- data/vendor/lua/lib/lua/cdluagl.dll +0 -0
- data/vendor/lua/lib/lua/cdluaim.dll +0 -0
- data/vendor/lua/lib/lua/cdluapdf.dll +0 -0
- data/vendor/lua/lib/lua/copas.lua +543 -0
- data/vendor/lua/lib/lua/coxpcall.lua +57 -0
- data/vendor/lua/lib/lua/date.lua +745 -0
- data/vendor/lua/lib/lua/debug_ext.lua +84 -0
- data/vendor/lua/lib/lua/debug_init.lua +2 -0
- data/vendor/lua/lib/lua/des56.dll +0 -0
- data/vendor/lua/lib/lua/dist/config.lua +109 -0
- data/vendor/lua/lib/lua/dist/constraints.lua +271 -0
- data/vendor/lua/lib/lua/dist/depends.lua +601 -0
- data/vendor/lua/lib/lua/dist/git.lua +307 -0
- data/vendor/lua/lib/lua/dist/init.lua +278 -0
- data/vendor/lua/lib/lua/dist/manifest.lua +225 -0
- data/vendor/lua/lib/lua/dist/package.lua +583 -0
- data/vendor/lua/lib/lua/dist/sys.lua +367 -0
- data/vendor/lua/lib/lua/dist/utils.lua +130 -0
- data/vendor/lua/lib/lua/ex.dll +0 -0
- data/vendor/lua/lib/lua/fstable.lua +116 -0
- data/vendor/lua/lib/lua/getopt.lua +273 -0
- data/vendor/lua/lib/lua/git.lua +5 -0
- data/vendor/lua/lib/lua/git/core.dll +0 -0
- data/vendor/lua/lib/lua/git/objects.lua +121 -0
- data/vendor/lua/lib/lua/git/pack.lua +316 -0
- data/vendor/lua/lib/lua/git/protocol.lua +188 -0
- data/vendor/lua/lib/lua/git/repo.lua +283 -0
- data/vendor/lua/lib/lua/git/util.lua +233 -0
- data/vendor/lua/lib/lua/gzio.dll +0 -0
- data/vendor/lua/lib/lua/gzip.lua +81 -0
- data/vendor/lua/lib/lua/iconv.dll +0 -0
- data/vendor/lua/lib/lua/imlua.dll +0 -0
- data/vendor/lua/lib/lua/imlua_fftw.dll +0 -0
- data/vendor/lua/lib/lua/imlua_jp2.dll +0 -0
- data/vendor/lua/lib/lua/imlua_process.dll +0 -0
- data/vendor/lua/lib/lua/imlua_process_omp.dll +0 -0
- data/vendor/lua/lib/lua/io_ext.lua +115 -0
- data/vendor/lua/lib/lua/iuplua.dll +0 -0
- data/vendor/lua/lib/lua/iuplua_mglplot.dll +0 -0
- data/vendor/lua/lib/lua/iuplua_pplot.dll +0 -0
- data/vendor/lua/lib/lua/iupluacd.dll +0 -0
- data/vendor/lua/lib/lua/iupluacontrols.dll +0 -0
- data/vendor/lua/lib/lua/iupluagl.dll +0 -0
- data/vendor/lua/lib/lua/iupluaim.dll +0 -0
- data/vendor/lua/lib/lua/iupluaimglib.dll +0 -0
- data/vendor/lua/lib/lua/iupluatuio.dll +0 -0
- data/vendor/lua/lib/lua/lanes-keeper.lua +302 -0
- data/vendor/lua/lib/lua/lanes.lua +591 -0
- data/vendor/lua/lib/lua/lanes/core.dll +0 -0
- data/vendor/lua/lib/lua/lcs.lua +55 -0
- data/vendor/lua/lib/lua/lemock.lua +659 -0
- data/vendor/lua/lib/lua/lfs.dll +0 -0
- data/vendor/lua/lib/lua/list.lua +375 -0
- data/vendor/lua/lib/lua/logging.lua +189 -0
- data/vendor/lua/lib/lua/logging/console.lua +22 -0
- data/vendor/lua/lib/lua/logging/email.lua +44 -0
- data/vendor/lua/lib/lua/logging/file.lua +55 -0
- data/vendor/lua/lib/lua/logging/rolling_file.lua +81 -0
- data/vendor/lua/lib/lua/logging/socket.lua +35 -0
- data/vendor/lua/lib/lua/logging/sql.lua +64 -0
- data/vendor/lua/lib/lua/loop/base.lua +68 -0
- data/vendor/lua/lib/lua/loop/cached.lua +312 -0
- data/vendor/lua/lib/lua/loop/collection/MapWithArrayOfKeys.lua +64 -0
- data/vendor/lua/lib/lua/loop/collection/ObjectCache.lua +39 -0
- data/vendor/lua/lib/lua/loop/collection/OrderedSet.lua +164 -0
- data/vendor/lua/lib/lua/loop/collection/PriorityQueue.lua +86 -0
- data/vendor/lua/lib/lua/loop/collection/UnorderedArray.lua +32 -0
- data/vendor/lua/lib/lua/loop/collection/UnorderedArraySet.lua +56 -0
- data/vendor/lua/lib/lua/loop/compiler/Arguments.lua +108 -0
- data/vendor/lua/lib/lua/loop/compiler/Conditional.lua +50 -0
- data/vendor/lua/lib/lua/loop/compiler/Expression.lua +215 -0
- data/vendor/lua/lib/lua/loop/component/base.lua +221 -0
- data/vendor/lua/lib/lua/loop/component/contained.lua +71 -0
- data/vendor/lua/lib/lua/loop/component/dynamic.lua +223 -0
- data/vendor/lua/lib/lua/loop/component/intercepted.lua +354 -0
- data/vendor/lua/lib/lua/loop/component/wrapped.lua +195 -0
- data/vendor/lua/lib/lua/loop/debug/Inspector.lua +521 -0
- data/vendor/lua/lib/lua/loop/debug/Matcher.lua +192 -0
- data/vendor/lua/lib/lua/loop/debug/Verbose.lua +266 -0
- data/vendor/lua/lib/lua/loop/debug/Viewer.lua +200 -0
- data/vendor/lua/lib/lua/loop/multiple.lua +105 -0
- data/vendor/lua/lib/lua/loop/object/Exception.lua +57 -0
- data/vendor/lua/lib/lua/loop/object/Publisher.lua +43 -0
- data/vendor/lua/lib/lua/loop/object/Wrapper.lua +39 -0
- data/vendor/lua/lib/lua/loop/scoped.lua +585 -0
- data/vendor/lua/lib/lua/loop/serial/FileStream.lua +48 -0
- data/vendor/lua/lib/lua/loop/serial/Serializer.lua +291 -0
- data/vendor/lua/lib/lua/loop/serial/SocketStream.lua +51 -0
- data/vendor/lua/lib/lua/loop/serial/StringStream.lua +47 -0
- data/vendor/lua/lib/lua/loop/simple.lua +75 -0
- data/vendor/lua/lib/lua/loop/table.lua +71 -0
- data/vendor/lua/lib/lua/loop/thread/CoSocket.lua +416 -0
- data/vendor/lua/lib/lua/loop/thread/IOScheduler.lua +170 -0
- data/vendor/lua/lib/lua/loop/thread/Scheduler.lua +327 -0
- data/vendor/lua/lib/lua/loop/thread/SocketScheduler.lua +88 -0
- data/vendor/lua/lib/lua/loop/thread/Timer.lua +54 -0
- data/vendor/lua/lib/lua/lpeg.dll +0 -0
- data/vendor/lua/lib/lua/ltn12.lua +292 -0
- data/vendor/lua/lib/lua/luaXML_lib.dll +0 -0
- data/vendor/lua/lib/lua/luacurl.dll +0 -0
- data/vendor/lua/lib/lua/luadoc/config.lua +34 -0
- data/vendor/lua/lib/lua/luadoc/doclet/debug.lua +46 -0
- data/vendor/lua/lib/lua/luadoc/doclet/formatter.lua +84 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html.lua +289 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html/file.lp +113 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html/function.lp +64 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html/index.lp +70 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html/luadoc.css +286 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html/menu.lp +55 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html/module.lp +109 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html/table.lp +15 -0
- data/vendor/lua/lib/lua/luadoc/doclet/raw.lua +12 -0
- data/vendor/lua/lib/lua/luadoc/init.lua +58 -0
- data/vendor/lua/lib/lua/luadoc/lp.lua +130 -0
- data/vendor/lua/lib/lua/luadoc/taglet/standard.lua +495 -0
- data/vendor/lua/lib/lua/luadoc/taglet/standard/tags.lua +171 -0
- data/vendor/lua/lib/lua/luadoc/util.lua +233 -0
- data/vendor/lua/lib/lua/luagl.dll +0 -0
- data/vendor/lua/lib/lua/luaglu.dll +0 -0
- data/vendor/lua/lib/lua/luaidl.lua +113 -0
- data/vendor/lua/lib/lua/luaidl/lex.lua +793 -0
- data/vendor/lua/lib/lua/luaidl/pre.lua +149 -0
- data/vendor/lua/lib/lua/luaidl/sin.lua +3631 -0
- data/vendor/lua/lib/lua/luarocks/add.lua +108 -0
- data/vendor/lua/lib/lua/luarocks/admin_remove.lua +87 -0
- data/vendor/lua/lib/lua/luarocks/build.lua +330 -0
- data/vendor/lua/lib/lua/luarocks/build/builtin.lua +253 -0
- data/vendor/lua/lib/lua/luarocks/build/cmake.lua +54 -0
- data/vendor/lua/lib/lua/luarocks/build/command.lua +32 -0
- data/vendor/lua/lib/lua/luarocks/build/make.lua +92 -0
- data/vendor/lua/lib/lua/luarocks/cache.lua +85 -0
- data/vendor/lua/lib/lua/luarocks/cfg.lua +449 -0
- data/vendor/lua/lib/lua/luarocks/command_line.lua +163 -0
- data/vendor/lua/lib/lua/luarocks/deps.lua +654 -0
- data/vendor/lua/lib/lua/luarocks/dir.lua +69 -0
- data/vendor/lua/lib/lua/luarocks/download.lua +90 -0
- data/vendor/lua/lib/lua/luarocks/fetch.lua +321 -0
- data/vendor/lua/lib/lua/luarocks/fetch/cvs.lua +44 -0
- data/vendor/lua/lib/lua/luarocks/fetch/git.lua +81 -0
- data/vendor/lua/lib/lua/luarocks/fetch/git_file.lua +17 -0
- data/vendor/lua/lib/lua/luarocks/fetch/hg.lua +54 -0
- data/vendor/lua/lib/lua/luarocks/fetch/sscm.lua +42 -0
- data/vendor/lua/lib/lua/luarocks/fetch/svn.lua +53 -0
- data/vendor/lua/lib/lua/luarocks/fs.lua +40 -0
- data/vendor/lua/lib/lua/luarocks/fs/lua.lua +676 -0
- data/vendor/lua/lib/lua/luarocks/fs/unix.lua +88 -0
- data/vendor/lua/lib/lua/luarocks/fs/unix/tools.lua +325 -0
- data/vendor/lua/lib/lua/luarocks/fs/win32.lua +107 -0
- data/vendor/lua/lib/lua/luarocks/fs/win32/tools.lua +334 -0
- data/vendor/lua/lib/lua/luarocks/help.lua +101 -0
- data/vendor/lua/lib/lua/luarocks/index.lua +172 -0
- data/vendor/lua/lib/lua/luarocks/install.lua +151 -0
- data/vendor/lua/lib/lua/luarocks/list.lua +35 -0
- data/vendor/lua/lib/lua/luarocks/loader.lua +228 -0
- data/vendor/lua/lib/lua/luarocks/make.lua +71 -0
- data/vendor/lua/lib/lua/luarocks/make_manifest.lua +34 -0
- data/vendor/lua/lib/lua/luarocks/manif.lua +360 -0
- data/vendor/lua/lib/lua/luarocks/manif_core.lua +75 -0
- data/vendor/lua/lib/lua/luarocks/new_version.lua +141 -0
- data/vendor/lua/lib/lua/luarocks/pack.lua +205 -0
- data/vendor/lua/lib/lua/luarocks/path.lua +315 -0
- data/vendor/lua/lib/lua/luarocks/persist.lua +173 -0
- data/vendor/lua/lib/lua/luarocks/refresh_cache.lua +30 -0
- data/vendor/lua/lib/lua/luarocks/remove.lua +135 -0
- data/vendor/lua/lib/lua/luarocks/rep.lua +313 -0
- data/vendor/lua/lib/lua/luarocks/require.lua +6 -0
- data/vendor/lua/lib/lua/luarocks/search.lua +399 -0
- data/vendor/lua/lib/lua/luarocks/show.lua +138 -0
- data/vendor/lua/lib/lua/luarocks/site_config.lua +23 -0
- data/vendor/lua/lib/lua/luarocks/tools/patch.lua +712 -0
- data/vendor/lua/lib/lua/luarocks/tools/tar.lua +144 -0
- data/vendor/lua/lib/lua/luarocks/tools/zip.lua +245 -0
- data/vendor/lua/lib/lua/luarocks/type_check.lua +267 -0
- data/vendor/lua/lib/lua/luarocks/unpack.lua +151 -0
- data/vendor/lua/lib/lua/luarocks/util.lua +420 -0
- data/vendor/lua/lib/lua/luarocks/validate.lua +164 -0
- data/vendor/lua/lib/lua/luars232.dll +0 -0
- data/vendor/lua/lib/lua/luasql/mysql.dll +0 -0
- data/vendor/lua/lib/lua/luasql/postgres.dll +0 -0
- data/vendor/lua/lib/lua/luasql/sqlite3.dll +0 -0
- data/vendor/lua/lib/lua/luaunit.lua +601 -0
- data/vendor/lua/lib/lua/lxp.dll +0 -0
- data/vendor/lua/lib/lua/lxp/lom.lua +60 -0
- data/vendor/lua/lib/lua/math_ext.lua +27 -0
- data/vendor/lua/lib/lua/mbox.lua +53 -0
- data/vendor/lua/lib/lua/md5.lua +19 -0
- data/vendor/lua/lib/lua/md5/core.dll +0 -0
- data/vendor/lua/lib/lua/metalua.lua +0 -0
- data/vendor/lua/lib/lua/metalua/ast_to_string.mlua +553 -0
- data/vendor/lua/lib/lua/metalua/base.lua +104 -0
- data/vendor/lua/lib/lua/metalua/bytecode.lua +0 -0
- data/vendor/lua/lib/lua/metalua/clopts.mlua +204 -0
- data/vendor/lua/lib/lua/metalua/compiler.lua +3 -0
- data/vendor/lua/lib/lua/metalua/dollar.mlua +24 -0
- data/vendor/lua/lib/lua/metalua/extension/H-runtime.mlua +216 -0
- data/vendor/lua/lib/lua/metalua/extension/H.mlua +22 -0
- data/vendor/lua/lib/lua/metalua/extension/anaphoric.mlua +54 -0
- data/vendor/lua/lib/lua/metalua/extension/clist.mlua +149 -0
- data/vendor/lua/lib/lua/metalua/extension/continue.mlua +53 -0
- data/vendor/lua/lib/lua/metalua/extension/localin.mlua +2 -0
- data/vendor/lua/lib/lua/metalua/extension/log.mlua +39 -0
- data/vendor/lua/lib/lua/metalua/extension/match.mlua +374 -0
- data/vendor/lua/lib/lua/metalua/extension/ternary.mlua +10 -0
- data/vendor/lua/lib/lua/metalua/extension/trycatch.mlua +189 -0
- data/vendor/lua/lib/lua/metalua/extension/types-runtime.mlua +159 -0
- data/vendor/lua/lib/lua/metalua/extension/types.mlua +352 -0
- data/vendor/lua/lib/lua/metalua/extension/withdo.mlua +30 -0
- data/vendor/lua/lib/lua/metalua/extension/xglobal-runtime.lua +41 -0
- data/vendor/lua/lib/lua/metalua/extension/xglobal.mlua +20 -0
- data/vendor/lua/lib/lua/metalua/extension/xloop.mlua +100 -0
- data/vendor/lua/lib/lua/metalua/extension/xmatch.mlua +216 -0
- data/vendor/lua/lib/lua/metalua/metaloop.mlua +76 -0
- data/vendor/lua/lib/lua/metalua/mlc.lua +0 -0
- data/vendor/lua/lib/lua/metalua/mlc_xcall.lua +119 -0
- data/vendor/lua/lib/lua/metalua/mlp.lua +0 -0
- data/vendor/lua/lib/lua/metalua/package2.lua +101 -0
- data/vendor/lua/lib/lua/metalua/runtime.lua +3 -0
- data/vendor/lua/lib/lua/metalua/string2.lua +44 -0
- data/vendor/lua/lib/lua/metalua/table2.lua +372 -0
- data/vendor/lua/lib/lua/metalua/walk.mlua +304 -0
- data/vendor/lua/lib/lua/metalua/walk/bindings.mlua +41 -0
- data/vendor/lua/lib/lua/metalua/walk/id.mlua +186 -0
- data/vendor/lua/lib/lua/metalua/walk/scope.lua +54 -0
- data/vendor/lua/lib/lua/mime.lua +87 -0
- data/vendor/lua/lib/lua/mime/core.dll +0 -0
- data/vendor/lua/lib/lua/mobdebug.lua +1484 -0
- data/vendor/lua/lib/lua/modules.lua +16 -0
- data/vendor/lua/lib/lua/object.lua +56 -0
- data/vendor/lua/lib/lua/oil/Exception.lua +26 -0
- data/vendor/lua/lib/lua/oil/arch.lua +27 -0
- data/vendor/lua/lib/lua/oil/arch/basic/client.lua +29 -0
- data/vendor/lua/lib/lua/oil/arch/basic/common.lua +13 -0
- data/vendor/lua/lib/lua/oil/arch/basic/server.lua +27 -0
- data/vendor/lua/lib/lua/oil/arch/cooperative/common.lua +10 -0
- data/vendor/lua/lib/lua/oil/arch/cooperative/server.lua +16 -0
- data/vendor/lua/lib/lua/oil/arch/corba/client.lua +39 -0
- data/vendor/lua/lib/lua/oil/arch/corba/common.lua +58 -0
- data/vendor/lua/lib/lua/oil/arch/corba/intercepted/client.lua +9 -0
- data/vendor/lua/lib/lua/oil/arch/corba/intercepted/server.lua +9 -0
- data/vendor/lua/lib/lua/oil/arch/corba/server.lua +35 -0
- data/vendor/lua/lib/lua/oil/arch/ludo/byref.lua +18 -0
- data/vendor/lua/lib/lua/oil/arch/ludo/client.lua +19 -0
- data/vendor/lua/lib/lua/oil/arch/ludo/common.lua +18 -0
- data/vendor/lua/lib/lua/oil/arch/ludo/server.lua +19 -0
- data/vendor/lua/lib/lua/oil/arch/typed/client.lua +27 -0
- data/vendor/lua/lib/lua/oil/arch/typed/common.lua +9 -0
- data/vendor/lua/lib/lua/oil/arch/typed/server.lua +18 -0
- data/vendor/lua/lib/lua/oil/assert.lua +87 -0
- data/vendor/lua/lib/lua/oil/builder.lua +45 -0
- data/vendor/lua/lib/lua/oil/builder/basic/client.lua +31 -0
- data/vendor/lua/lib/lua/oil/builder/basic/common.lua +11 -0
- data/vendor/lua/lib/lua/oil/builder/basic/server.lua +13 -0
- data/vendor/lua/lib/lua/oil/builder/cooperative/common.lua +11 -0
- data/vendor/lua/lib/lua/oil/builder/cooperative/server.lua +11 -0
- data/vendor/lua/lib/lua/oil/builder/corba/client.lua +13 -0
- data/vendor/lua/lib/lua/oil/builder/corba/common.lua +24 -0
- data/vendor/lua/lib/lua/oil/builder/corba/gencode.lua +13 -0
- data/vendor/lua/lib/lua/oil/builder/corba/intercepted/client.lua +11 -0
- data/vendor/lua/lib/lua/oil/builder/corba/intercepted/server.lua +11 -0
- data/vendor/lua/lib/lua/oil/builder/corba/server.lua +13 -0
- data/vendor/lua/lib/lua/oil/builder/lua/client.lua +11 -0
- data/vendor/lua/lib/lua/oil/builder/lua/server.lua +12 -0
- data/vendor/lua/lib/lua/oil/builder/ludo/byref.lua +13 -0
- data/vendor/lua/lib/lua/oil/builder/ludo/client.lua +13 -0
- data/vendor/lua/lib/lua/oil/builder/ludo/common.lua +14 -0
- data/vendor/lua/lib/lua/oil/builder/ludo/server.lua +13 -0
- data/vendor/lua/lib/lua/oil/builder/typed/client.lua +16 -0
- data/vendor/lua/lib/lua/oil/builder/typed/server.lua +12 -0
- data/vendor/lua/lib/lua/oil/compat.lua +846 -0
- data/vendor/lua/lib/lua/oil/component.lua +1 -0
- data/vendor/lua/lib/lua/oil/corba/giop.lua +301 -0
- data/vendor/lua/lib/lua/oil/corba/giop/Codec.lua +1568 -0
- data/vendor/lua/lib/lua/oil/corba/giop/CodecGen.lua +589 -0
- data/vendor/lua/lib/lua/oil/corba/giop/Exception.lua +25 -0
- data/vendor/lua/lib/lua/oil/corba/giop/Indexer.lua +63 -0
- data/vendor/lua/lib/lua/oil/corba/giop/Listener.lua +343 -0
- data/vendor/lua/lib/lua/oil/corba/giop/Messenger.lua +228 -0
- data/vendor/lua/lib/lua/oil/corba/giop/Referrer.lua +180 -0
- data/vendor/lua/lib/lua/oil/corba/giop/Requester.lua +462 -0
- data/vendor/lua/lib/lua/oil/corba/idl.lua +597 -0
- data/vendor/lua/lib/lua/oil/corba/idl/Compiler.lua +133 -0
- data/vendor/lua/lib/lua/oil/corba/idl/Importer.lua +235 -0
- data/vendor/lua/lib/lua/oil/corba/idl/Indexer.lua +95 -0
- data/vendor/lua/lib/lua/oil/corba/idl/Registry.lua +1821 -0
- data/vendor/lua/lib/lua/oil/corba/idl/ir.lua +847 -0
- data/vendor/lua/lib/lua/oil/corba/idl/sysex.lua +21 -0
- data/vendor/lua/lib/lua/oil/corba/iiop/Profiler.lua +200 -0
- data/vendor/lua/lib/lua/oil/corba/intercepted/Listener.lua +158 -0
- data/vendor/lua/lib/lua/oil/corba/intercepted/Requester.lua +181 -0
- data/vendor/lua/lib/lua/oil/corba/services/event.lua +126 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/ConsumerAdmin.lua +50 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/EventFactory.lua +15 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/EventQueue.lua +37 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/ProxyPushConsumer.lua +75 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/ProxyPushSupplier.lua +62 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/SingleDeferredDispatcher.lua +60 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/SingleSynchronousDispatcher.lua +39 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/SupplierAdmin.lua +50 -0
- data/vendor/lua/lib/lua/oil/corba/services/naming.lua +436 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Acceptor.lua +268 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Channels.lua +121 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Connector.lua +147 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Dispatcher.lua +99 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Proxies.lua +86 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Proxies/asynchronous.lua +56 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Proxies/protected.lua +17 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Proxies/synchronous.lua +17 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Proxies/utils.lua +29 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Receiver.lua +110 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Servants.lua +207 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Sockets.lua +44 -0
- data/vendor/lua/lib/lua/oil/kernel/cooperative/Receiver.lua +139 -0
- data/vendor/lua/lib/lua/oil/kernel/intercepted/Listener.lua +47 -0
- data/vendor/lua/lib/lua/oil/kernel/intercepted/Requester.lua +58 -0
- data/vendor/lua/lib/lua/oil/kernel/lua/Dispatcher.lua +76 -0
- data/vendor/lua/lib/lua/oil/kernel/lua/Proxies.lua +69 -0
- data/vendor/lua/lib/lua/oil/kernel/typed/Dispatcher.lua +91 -0
- data/vendor/lua/lib/lua/oil/kernel/typed/Proxies.lua +153 -0
- data/vendor/lua/lib/lua/oil/kernel/typed/Servants.lua +137 -0
- data/vendor/lua/lib/lua/oil/ludo/Codec.lua +66 -0
- data/vendor/lua/lib/lua/oil/ludo/CodecByRef.lua +103 -0
- data/vendor/lua/lib/lua/oil/ludo/Listener.lua +151 -0
- data/vendor/lua/lib/lua/oil/ludo/Referrer.lua +72 -0
- data/vendor/lua/lib/lua/oil/ludo/Requester.lua +107 -0
- data/vendor/lua/lib/lua/oil/oo.lua +1 -0
- data/vendor/lua/lib/lua/oil/port.lua +1 -0
- data/vendor/lua/lib/lua/oil/properties.lua +57 -0
- data/vendor/lua/lib/lua/oil/verbose.lua +133 -0
- data/vendor/lua/lib/lua/package_ext.lua +15 -0
- data/vendor/lua/lib/lua/parser.lua +268 -0
- data/vendor/lua/lib/lua/pl/Date.lua +555 -0
- data/vendor/lua/lib/lua/pl/List.lua +613 -0
- data/vendor/lua/lib/lua/pl/Map.lua +113 -0
- data/vendor/lua/lib/lua/pl/MultiMap.lua +62 -0
- data/vendor/lua/lib/lua/pl/OrderedMap.lua +151 -0
- data/vendor/lua/lib/lua/pl/Set.lua +153 -0
- data/vendor/lua/lib/lua/pl/app.lua +165 -0
- data/vendor/lua/lib/lua/pl/array2d.lua +501 -0
- data/vendor/lua/lib/lua/pl/class.lua +180 -0
- data/vendor/lua/lib/lua/pl/comprehension.lua +286 -0
- data/vendor/lua/lib/lua/pl/config.lua +176 -0
- data/vendor/lua/lib/lua/pl/data.lua +606 -0
- data/vendor/lua/lib/lua/pl/dir.lua +475 -0
- data/vendor/lua/lib/lua/pl/file.lua +70 -0
- data/vendor/lua/lib/lua/pl/func.lua +376 -0
- data/vendor/lua/lib/lua/pl/init.lua +68 -0
- data/vendor/lua/lib/lua/pl/input.lua +173 -0
- data/vendor/lua/lib/lua/pl/lapp.lua +407 -0
- data/vendor/lua/lib/lua/pl/lexer.lua +456 -0
- data/vendor/lua/lib/lua/pl/luabalanced.lua +264 -0
- data/vendor/lua/lib/lua/pl/operator.lua +201 -0
- data/vendor/lua/lib/lua/pl/path.lua +398 -0
- data/vendor/lua/lib/lua/pl/permute.lua +63 -0
- data/vendor/lua/lib/lua/pl/platf/luajava.lua +101 -0
- data/vendor/lua/lib/lua/pl/pretty.lua +285 -0
- data/vendor/lua/lib/lua/pl/seq.lua +551 -0
- data/vendor/lua/lib/lua/pl/sip.lua +344 -0
- data/vendor/lua/lib/lua/pl/strict.lua +70 -0
- data/vendor/lua/lib/lua/pl/stringio.lua +158 -0
- data/vendor/lua/lib/lua/pl/stringx.lua +440 -0
- data/vendor/lua/lib/lua/pl/tablex.lua +817 -0
- data/vendor/lua/lib/lua/pl/template.lua +103 -0
- data/vendor/lua/lib/lua/pl/test.lua +135 -0
- data/vendor/lua/lib/lua/pl/text.lua +243 -0
- data/vendor/lua/lib/lua/pl/utils.lua +550 -0
- data/vendor/lua/lib/lua/pl/xml.lua +689 -0
- data/vendor/lua/lib/lua/profiler.dll +0 -0
- data/vendor/lua/lib/lua/re.lua +248 -0
- data/vendor/lua/lib/lua/rex_onig.dll +0 -0
- data/vendor/lua/lib/lua/rex_pcre.dll +0 -0
- data/vendor/lua/lib/lua/rex_posix.dll +0 -0
- data/vendor/lua/lib/lua/rings.dll +0 -0
- data/vendor/lua/lib/lua/serialize.lua +193 -0
- data/vendor/lua/lib/lua/set.lua +149 -0
- data/vendor/lua/lib/lua/socket.lua +133 -0
- data/vendor/lua/lib/lua/socket/core.dll +0 -0
- data/vendor/lua/lib/lua/socket/ftp.lua +281 -0
- data/vendor/lua/lib/lua/socket/http.lua +350 -0
- data/vendor/lua/lib/lua/socket/smtp.lua +251 -0
- data/vendor/lua/lib/lua/socket/tp.lua +123 -0
- data/vendor/lua/lib/lua/socket/url.lua +297 -0
- data/vendor/lua/lib/lua/ssl.dll +0 -0
- data/vendor/lua/lib/lua/ssl.lua +93 -0
- data/vendor/lua/lib/lua/ssl/https.lua +138 -0
- data/vendor/lua/lib/lua/stable.lua +28 -0
- data/vendor/lua/lib/lua/std.lua +16 -0
- data/vendor/lua/lib/lua/strbuf.lua +32 -0
- data/vendor/lua/lib/lua/strict.lua +45 -0
- data/vendor/lua/lib/lua/string_ext.lua +274 -0
- data/vendor/lua/lib/lua/table_ext.lua +117 -0
- data/vendor/lua/lib/lua/tar.lua +262 -0
- data/vendor/lua/lib/lua/task.dll +0 -0
- data/vendor/lua/lib/lua/tree.lua +81 -0
- data/vendor/lua/lib/lua/unicode.dll +0 -0
- data/vendor/lua/lib/lua/verbose_require.lua +11 -0
- data/vendor/lua/lib/lua/vstruct.lua +86 -0
- data/vendor/lua/lib/lua/vstruct/ast.lua +192 -0
- data/vendor/lua/lib/lua/vstruct/ast/Bitpack.lua +33 -0
- data/vendor/lua/lib/lua/vstruct/ast/Generator.lua +174 -0
- data/vendor/lua/lib/lua/vstruct/ast/IO.lua +45 -0
- data/vendor/lua/lib/lua/vstruct/ast/List.lua +56 -0
- data/vendor/lua/lib/lua/vstruct/ast/Name.lua +20 -0
- data/vendor/lua/lib/lua/vstruct/ast/Repeat.lua +23 -0
- data/vendor/lua/lib/lua/vstruct/ast/Root.lua +19 -0
- data/vendor/lua/lib/lua/vstruct/ast/Table.lua +65 -0
- data/vendor/lua/lib/lua/vstruct/cursor.lua +81 -0
- data/vendor/lua/lib/lua/vstruct/io.lua +45 -0
- data/vendor/lua/lib/lua/vstruct/io/a.lua +24 -0
- data/vendor/lua/lib/lua/vstruct/io/b.lua +28 -0
- data/vendor/lua/lib/lua/vstruct/io/bigendian.lua +21 -0
- data/vendor/lua/lib/lua/vstruct/io/c.lua +25 -0
- data/vendor/lua/lib/lua/vstruct/io/defaults.lua +24 -0
- data/vendor/lua/lib/lua/vstruct/io/endianness.lua +41 -0
- data/vendor/lua/lib/lua/vstruct/io/f.lua +129 -0
- data/vendor/lua/lib/lua/vstruct/io/hostendian.lua +21 -0
- data/vendor/lua/lib/lua/vstruct/io/i.lua +42 -0
- data/vendor/lua/lib/lua/vstruct/io/littleendian.lua +21 -0
- data/vendor/lua/lib/lua/vstruct/io/m.lua +62 -0
- data/vendor/lua/lib/lua/vstruct/io/p.lua +23 -0
- data/vendor/lua/lib/lua/vstruct/io/s.lua +27 -0
- data/vendor/lua/lib/lua/vstruct/io/seekb.lua +18 -0
- data/vendor/lua/lib/lua/vstruct/io/seekf.lua +18 -0
- data/vendor/lua/lib/lua/vstruct/io/seekto.lua +18 -0
- data/vendor/lua/lib/lua/vstruct/io/u.lua +54 -0
- data/vendor/lua/lib/lua/vstruct/io/x.lua +34 -0
- data/vendor/lua/lib/lua/vstruct/io/z.lua +63 -0
- data/vendor/lua/lib/lua/vstruct/lexer.lua +100 -0
- data/vendor/lua/lib/lua/vstruct/pack.lua +142 -0
- data/vendor/lua/lib/lua/vstruct/test.lua +47 -0
- data/vendor/lua/lib/lua/vstruct/test/basic.lua +73 -0
- data/vendor/lua/lib/lua/vstruct/test/common.lua +100 -0
- data/vendor/lua/lib/lua/vstruct/test/fp-bigendian.lua +56 -0
- data/vendor/lua/lib/lua/vstruct/test/fp-littleendian.lua +56 -0
- data/vendor/lua/lib/lua/vstruct/test/struct-test-gen.lua +1230 -0
- data/vendor/lua/lib/lua/vstruct/unpack.lua +126 -0
- data/vendor/lua/lib/lua/wx.dll +0 -0
- data/vendor/lua/lib/lua/xml.lua +75 -0
- data/vendor/lua/lib/lua/zip.dll +0 -0
- data/vendor/lua/lib/lua/zlib.dll +0 -0
- metadata +529 -0
|
Binary file
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
-- vstruct, the versatile struct library
|
|
2
|
+
|
|
3
|
+
-- Copyright (C) 2011 Ben "ToxicFrog" Kelly; see COPYING
|
|
4
|
+
|
|
5
|
+
local table,math,type,require,assert,_unpack = table,math,type,require,assert,unpack
|
|
6
|
+
local debug = debug
|
|
7
|
+
local print = print
|
|
8
|
+
|
|
9
|
+
module "vstruct"
|
|
10
|
+
|
|
11
|
+
_VERSION = "1.1"
|
|
12
|
+
|
|
13
|
+
cursor = require "vstruct.cursor"
|
|
14
|
+
|
|
15
|
+
local ast = require "vstruct.ast"
|
|
16
|
+
|
|
17
|
+
-- cache control for the parser
|
|
18
|
+
-- true: cache is read/write (new formats will be cached, old ones retrieved)
|
|
19
|
+
-- false: cache is read-only
|
|
20
|
+
-- nil: cache is disabled
|
|
21
|
+
cache = true
|
|
22
|
+
|
|
23
|
+
-- this is needed by some IO formats as well as init itself
|
|
24
|
+
-- FIXME: should it perhaps be a vstruct internal function rather than
|
|
25
|
+
-- installing it in math?
|
|
26
|
+
if not math.trunc then
|
|
27
|
+
function math.trunc(n)
|
|
28
|
+
if n < 0 then
|
|
29
|
+
return math.ceil(n)
|
|
30
|
+
else
|
|
31
|
+
return math.floor(n)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
-- turn an int into a list of booleans
|
|
37
|
+
-- the length of the list will be the smallest number of bits needed to
|
|
38
|
+
-- represent the int
|
|
39
|
+
function explode(int, size)
|
|
40
|
+
assert(int, "vstruct.explode: missing argument")
|
|
41
|
+
size = size or 0
|
|
42
|
+
|
|
43
|
+
local mask = {}
|
|
44
|
+
while int ~= 0 or #mask < size do
|
|
45
|
+
table.insert(mask, int % 2 ~= 0)
|
|
46
|
+
int = math.trunc(int/2)
|
|
47
|
+
end
|
|
48
|
+
return mask
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
-- turn a list of booleans into an int
|
|
52
|
+
-- the converse of explode
|
|
53
|
+
function implode(mask, size)
|
|
54
|
+
size = size or #mask
|
|
55
|
+
|
|
56
|
+
local int = 0
|
|
57
|
+
for i=size,1,-1 do
|
|
58
|
+
int = int*2 + ((mask[i] and 1) or 0)
|
|
59
|
+
end
|
|
60
|
+
return int
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
-- Given a format string, a buffer or file, and an optional third argument,
|
|
64
|
+
-- unpack data from the buffer or file according to the format string
|
|
65
|
+
function unpack(fmt, ...)
|
|
66
|
+
assert(type(fmt) == "string", "invalid first argument to vstruct.unpack")
|
|
67
|
+
|
|
68
|
+
local t = ast.parse(fmt)
|
|
69
|
+
return t.unpack(...)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
-- Given a format string, an optional file-like, and a table of data,
|
|
73
|
+
-- pack data into the file-like (or create and return a string of packed data)
|
|
74
|
+
-- according to the format string
|
|
75
|
+
function pack(fmt, ...)
|
|
76
|
+
local t = ast.parse(fmt)
|
|
77
|
+
return t.pack(...)
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
-- Given a format string, compile it and return a table containing the original
|
|
81
|
+
-- source and the pack/unpack functions derived from it.
|
|
82
|
+
function compile(fmt)
|
|
83
|
+
return ast.parse(fmt)
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
return _M
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
-- Abstract Syntax Tree module for vstruct
|
|
2
|
+
-- This module implements the parser for vstruct format definitions. It is a
|
|
3
|
+
-- fairly simple recursive-descent parser that constructs an AST using Lua
|
|
4
|
+
-- tables, and then generates lua source from it.
|
|
5
|
+
|
|
6
|
+
-- See ast/*.lua for the implementations of various node types in the AST,
|
|
7
|
+
-- and see lexer.lua for the implementation of the lexer.
|
|
8
|
+
|
|
9
|
+
-- Copyright (c) 2011 Ben "ToxicFrog" Kelly
|
|
10
|
+
|
|
11
|
+
local struct = require "vstruct"
|
|
12
|
+
local lexer = require "vstruct.lexer"
|
|
13
|
+
|
|
14
|
+
local ast = {}
|
|
15
|
+
local cache = {}
|
|
16
|
+
|
|
17
|
+
-- load the implementations of the various AST node types
|
|
18
|
+
for _,node in ipairs { "IO", "List", "Name", "Table", "Repeat", "Generator", "Root", "Bitpack" } do
|
|
19
|
+
ast[node] = require ((...).."."..node)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
-- given a source string, compile it
|
|
23
|
+
-- returns a table containing pack and unpack functions and the original
|
|
24
|
+
-- source - see README#vstruct.compile for a description.
|
|
25
|
+
--
|
|
26
|
+
-- if (struct.cache) is non-nil, will return the cached version, if present
|
|
27
|
+
-- if (struct.cache) is true, will create a new cache entry, if needed
|
|
28
|
+
function ast.parse(source)
|
|
29
|
+
if struct.cache ~= nil and cache[source] then
|
|
30
|
+
return cache[source]
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
local lex = lexer(source)
|
|
34
|
+
local root = ast.Root(ast.List())
|
|
35
|
+
|
|
36
|
+
for node in (function() return ast.next(lex) end) do
|
|
37
|
+
root:append(node)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
root = root:gen(ast.Generator())
|
|
41
|
+
|
|
42
|
+
if struct.cache == true then
|
|
43
|
+
cache[source] = root
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
return root
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
-- used by the rest of the parser to report syntax errors
|
|
50
|
+
function ast.error(lex, expected)
|
|
51
|
+
error("vstruct: parsing format string at "..lex.where()..": expected "..expected..", got "..lex.peek().type)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
-- Everything below this line is internal to the recursive descent parser
|
|
55
|
+
|
|
56
|
+
function ast.name(lex)
|
|
57
|
+
local name = lex.next().text
|
|
58
|
+
local next = lex.peek()
|
|
59
|
+
|
|
60
|
+
if next and next.type == "number" and not lex.whitespace() then
|
|
61
|
+
return ast.IO(name, lex.next().text)
|
|
62
|
+
else
|
|
63
|
+
return ast.IO(name, nil)
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
function ast.key(lex)
|
|
68
|
+
local name = lex.next().text
|
|
69
|
+
local next = lex.peek()
|
|
70
|
+
|
|
71
|
+
next = ast.next(lex)
|
|
72
|
+
if next.tag == "io" or next.tag == "table" then
|
|
73
|
+
return ast.Name(name, next)
|
|
74
|
+
else
|
|
75
|
+
ast.error(lex, "value (field or table)")
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
function ast.next(lex)
|
|
80
|
+
local tok = lex.peek()
|
|
81
|
+
|
|
82
|
+
if not tok then
|
|
83
|
+
return nil
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
if tok.type == '(' then
|
|
87
|
+
return ast.group(lex)
|
|
88
|
+
|
|
89
|
+
elseif tok.type == '{' then
|
|
90
|
+
return ast.table(lex)
|
|
91
|
+
|
|
92
|
+
elseif tok.type == '[' then
|
|
93
|
+
return ast.bitpack(lex)
|
|
94
|
+
|
|
95
|
+
elseif tok.type == "name" then
|
|
96
|
+
return ast.name(lex)
|
|
97
|
+
|
|
98
|
+
elseif tok.type == "key" then
|
|
99
|
+
return ast.key(lex)
|
|
100
|
+
|
|
101
|
+
elseif tok.type == "number" then
|
|
102
|
+
return ast.repetition(lex)
|
|
103
|
+
|
|
104
|
+
elseif tok.type == "control" then
|
|
105
|
+
return ast.control(lex)
|
|
106
|
+
|
|
107
|
+
else
|
|
108
|
+
ast.error(lex, "'(', '{', '[', name, number, control, or io specifier")
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
function ast.repetition(lex)
|
|
113
|
+
local count = tonumber(lex.next().text)
|
|
114
|
+
ast.require(lex, "*");
|
|
115
|
+
|
|
116
|
+
return ast.Repeat(count, ast.next(lex))
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
function ast.group(lex)
|
|
120
|
+
ast.require(lex, '(')
|
|
121
|
+
|
|
122
|
+
local group = ast.List()
|
|
123
|
+
group.tag = "group"
|
|
124
|
+
|
|
125
|
+
while lex.peek().type ~= ')' do
|
|
126
|
+
group:append(ast.next(lex))
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
ast.require(lex, ')')
|
|
130
|
+
return group
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
function ast.table(lex)
|
|
134
|
+
ast.require(lex, '{')
|
|
135
|
+
|
|
136
|
+
local group = ast.Table()
|
|
137
|
+
|
|
138
|
+
while lex.peek().type ~= '}' do
|
|
139
|
+
group:append(ast.next(lex))
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
ast.require(lex, '}')
|
|
143
|
+
return group
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
function ast.bitpack(lex)
|
|
147
|
+
ast.require(lex, "[")
|
|
148
|
+
|
|
149
|
+
local bitpack = ast.Bitpack(tonumber(ast.require(lex, "number").text))
|
|
150
|
+
|
|
151
|
+
ast.require(lex, "|")
|
|
152
|
+
|
|
153
|
+
while lex.peek().type ~= "]" do
|
|
154
|
+
bitpack:append(ast.next(lex))
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
ast.require(lex, "]")
|
|
158
|
+
bitpack:finalize()
|
|
159
|
+
return bitpack
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
function ast.require(lex, type)
|
|
163
|
+
local t = lex.next()
|
|
164
|
+
|
|
165
|
+
if t.type ~= type then
|
|
166
|
+
ast.error(lex, type)
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
return t
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
return ast
|
|
173
|
+
|
|
174
|
+
--[[
|
|
175
|
+
|
|
176
|
+
format -> commands
|
|
177
|
+
|
|
178
|
+
command -> repeat | bitpack | group | named | value | control
|
|
179
|
+
|
|
180
|
+
repeat -> NUMBER '*' command | command '*' NUMBER
|
|
181
|
+
bitpack -> NUMBER '|' commands '|'
|
|
182
|
+
group -> '(' commands ')'
|
|
183
|
+
|
|
184
|
+
named -> NAME ':' value
|
|
185
|
+
value -> table | primitive
|
|
186
|
+
table -> '{' commands '}'
|
|
187
|
+
|
|
188
|
+
primitive -> ATOM NUMBERS
|
|
189
|
+
|
|
190
|
+
control -> SEEK NUMBER | ENDIANNESS
|
|
191
|
+
|
|
192
|
+
--]]
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
local List = require "vstruct.ast.List"
|
|
2
|
+
|
|
3
|
+
return function(size)
|
|
4
|
+
local Bitpack = {
|
|
5
|
+
tag = "bitpack";
|
|
6
|
+
width = size;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
local children = List();
|
|
10
|
+
|
|
11
|
+
function Bitpack:show()
|
|
12
|
+
print("bitpack", size)
|
|
13
|
+
children:show()
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
function Bitpack:append(node)
|
|
17
|
+
children:append(node)
|
|
18
|
+
assert(children.width, "bitpacks cannot contain variable-width fields")
|
|
19
|
+
assert(children.width <= size*8, "bitpack contents are larger than containing bitpack")
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
function Bitpack:finalize()
|
|
23
|
+
assert(children.width == size*8, "bitpack contents are smaller than containing bitpack")
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
function Bitpack:gen(generator)
|
|
27
|
+
generator:bitpack(size)
|
|
28
|
+
children:gen(generator)
|
|
29
|
+
generator:bitpack()
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
return Bitpack
|
|
33
|
+
end
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
local unpackenv = require "vstruct.unpack"
|
|
2
|
+
local packenv = require "vstruct.pack"
|
|
3
|
+
local cursor = require "vstruct.cursor"
|
|
4
|
+
|
|
5
|
+
return function()
|
|
6
|
+
local Generator = {}
|
|
7
|
+
|
|
8
|
+
local source = {}
|
|
9
|
+
local data = {}
|
|
10
|
+
local readahead = nil
|
|
11
|
+
local ra_left = nil
|
|
12
|
+
local indent = 0
|
|
13
|
+
local bitpack = false
|
|
14
|
+
local loopmul = 1
|
|
15
|
+
|
|
16
|
+
local function append(...)
|
|
17
|
+
source[#source+1] = string.rep(" ", indent)..string.format(...)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
local function ref(v)
|
|
21
|
+
data[#data+1] = v
|
|
22
|
+
return #data
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
function Generator:init()
|
|
26
|
+
append('initialize(...)')
|
|
27
|
+
append('')
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
function Generator:finalize()
|
|
31
|
+
append('')
|
|
32
|
+
append('return finalize()')
|
|
33
|
+
|
|
34
|
+
local s = table.concat(source, "\n")
|
|
35
|
+
local f,err = loadstring(s)
|
|
36
|
+
|
|
37
|
+
if not f then
|
|
38
|
+
error(err.."\n--- internal error in code generator ---\n--- report this as a bug in vstruct ---\n"..s.."\n--- internal error in code generator ---\n")
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
local u_env = unpackenv(data)
|
|
42
|
+
local p_env = packenv(data)
|
|
43
|
+
|
|
44
|
+
local _unpack = unpack
|
|
45
|
+
|
|
46
|
+
local function unpack(fd, data)
|
|
47
|
+
-- autobox strings
|
|
48
|
+
if type(fd) == "string" then
|
|
49
|
+
fd = cursor(fd)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
-- fd must have file duck type
|
|
53
|
+
assert(fd.read, "invalid fd argument to vstruct.unpack: must be a string or file-like object")
|
|
54
|
+
|
|
55
|
+
-- data must be true ('return unpacked results')
|
|
56
|
+
-- or false/absent ('create new table')
|
|
57
|
+
-- or a table to fill in
|
|
58
|
+
assert(data == nil or type(data) == "boolean" or type(data) == "table"
|
|
59
|
+
, "invalid data argument to vstruct.unpack: if present, must be table or boolean")
|
|
60
|
+
|
|
61
|
+
setfenv(f, u_env)
|
|
62
|
+
|
|
63
|
+
if data == true then
|
|
64
|
+
return _unpack(f(fd, {}))
|
|
65
|
+
else
|
|
66
|
+
return f(fd, data or {})
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
local function pack(fd, data)
|
|
71
|
+
if fd and not data then
|
|
72
|
+
data,fd = fd,nil
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
assert(type(data) == "table", "invalid data argument to vstruct.pack: must be a table")
|
|
76
|
+
|
|
77
|
+
local realfd
|
|
78
|
+
|
|
79
|
+
if not fd or type(fd) == "string" then
|
|
80
|
+
realfd = cursor(fd or "")
|
|
81
|
+
else
|
|
82
|
+
realfd = fd
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
setfenv(f, p_env)
|
|
86
|
+
local result = f(realfd, data)
|
|
87
|
+
if realfd == fd then
|
|
88
|
+
return result
|
|
89
|
+
else
|
|
90
|
+
return result.str
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
return { pack=pack, unpack=unpack, source=s }
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
function Generator:io(name, hasvalue, width, args)
|
|
98
|
+
append('%sio(%q, %s, %s%s%s)'
|
|
99
|
+
, bitpack and "bp" or ""
|
|
100
|
+
, name
|
|
101
|
+
, tostring(hasvalue)
|
|
102
|
+
, tostring(width)
|
|
103
|
+
, args and ", " or ""
|
|
104
|
+
, args or "")
|
|
105
|
+
|
|
106
|
+
if readahead then
|
|
107
|
+
ra_left = ra_left - width * loopmul
|
|
108
|
+
assert(ra_left >= 0
|
|
109
|
+
, string.format("code generation consistency failure: readahead=%d, left=%f"
|
|
110
|
+
, readahead
|
|
111
|
+
, ra_left))
|
|
112
|
+
if ra_left == 0 then
|
|
113
|
+
readahead = nil
|
|
114
|
+
ra_left = nil
|
|
115
|
+
append('-- end readahead')
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
function Generator:readahead(n)
|
|
121
|
+
if n and n > 0 and not readahead then
|
|
122
|
+
readahead = n
|
|
123
|
+
ra_left = n * loopmul
|
|
124
|
+
append('readahead(%d)', n)
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
function Generator:startloop(n)
|
|
129
|
+
append('for _=1,%d do', n)
|
|
130
|
+
indent = indent + 2
|
|
131
|
+
loopmul = loopmul * n
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
function Generator:endloop(n)
|
|
135
|
+
loopmul = loopmul / n
|
|
136
|
+
indent = indent - 2
|
|
137
|
+
append('end')
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
function Generator:starttable()
|
|
141
|
+
append('push()')
|
|
142
|
+
indent = indent + 2
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
function Generator:endtable()
|
|
146
|
+
indent = indent - 2
|
|
147
|
+
append('pop()')
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
function Generator:name(name)
|
|
151
|
+
append('name %q', name)
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
function Generator:bitpack(size)
|
|
155
|
+
if size then
|
|
156
|
+
if bitpack then
|
|
157
|
+
error("nested bitpacks are not permitted")
|
|
158
|
+
end
|
|
159
|
+
append('bitpack(%d)', size)
|
|
160
|
+
bitpack = size
|
|
161
|
+
if readahead then
|
|
162
|
+
ra_left = ra_left * 8
|
|
163
|
+
end
|
|
164
|
+
else
|
|
165
|
+
append('bitpack(nil)')
|
|
166
|
+
bitpack = false
|
|
167
|
+
if readahead then
|
|
168
|
+
ra_left = ra_left / 8
|
|
169
|
+
end
|
|
170
|
+
end
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
return Generator
|
|
174
|
+
end
|