koffi 2.1.3 → 2.1.4
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.
- package/package.json +44 -68
- package/{LICENSE.txt → src/cnoke/LICENSE.txt} +0 -0
- package/src/cnoke/README.md +97 -0
- package/src/cnoke/assets/FindCNoke.cmake +71 -0
- package/src/cnoke/assets/win_delay_hook.c +34 -0
- package/src/cnoke/cnoke.js +968 -0
- package/src/cnoke/package.json +25 -0
- package/{vendor → src/core}/libcc/libcc.cc +38 -11
- package/{vendor → src/core}/libcc/libcc.hh +4 -2
- package/{CMakeLists.txt → src/koffi/CMakeLists.txt} +3 -3
- package/{ChangeLog.md → src/koffi/ChangeLog.md} +11 -0
- package/src/koffi/LICENSE.txt +661 -0
- package/{README.md → src/koffi/README.md} +0 -0
- package/{benchmark → src/koffi/benchmark}/CMakeLists.txt +9 -6
- package/{benchmark → src/koffi/benchmark}/atoi_koffi.js +0 -0
- package/{benchmark → src/koffi/benchmark}/atoi_napi.cc +1 -1
- package/{benchmark → src/koffi/benchmark}/atoi_napi.js +0 -0
- package/{benchmark → src/koffi/benchmark}/atoi_node_ffi.js +0 -0
- package/src/koffi/benchmark/benchmark.js +118 -0
- package/src/koffi/benchmark/rand_koffi.js +52 -0
- package/src/koffi/benchmark/rand_napi.cc +69 -0
- package/src/koffi/benchmark/rand_napi.js +47 -0
- package/src/koffi/benchmark/rand_node_ffi.js +55 -0
- package/{benchmark → src/koffi/benchmark}/raylib_cc.cc +2 -2
- package/{benchmark → src/koffi/benchmark}/raylib_cc.js +0 -0
- package/{benchmark → src/koffi/benchmark}/raylib_koffi.js +0 -0
- package/{benchmark → src/koffi/benchmark}/raylib_node_ffi.js +0 -0
- package/{benchmark → src/koffi/benchmark}/raylib_node_raylib.js +0 -0
- package/src/koffi/build/2.1.4/koffi_darwin_arm64.tar.gz +0 -0
- package/src/koffi/build/2.1.4/koffi_darwin_x64.tar.gz +0 -0
- package/src/koffi/build/2.1.4/koffi_freebsd_arm64.tar.gz +0 -0
- package/src/koffi/build/2.1.4/koffi_freebsd_ia32.tar.gz +0 -0
- package/src/koffi/build/2.1.4/koffi_freebsd_x64.tar.gz +0 -0
- package/src/koffi/build/2.1.4/koffi_linux_arm32hf.tar.gz +0 -0
- package/src/koffi/build/2.1.4/koffi_linux_arm64.tar.gz +0 -0
- package/src/koffi/build/2.1.4/koffi_linux_ia32.tar.gz +0 -0
- package/src/koffi/build/2.1.4/koffi_linux_riscv64hf64.tar.gz +0 -0
- package/src/koffi/build/2.1.4/koffi_linux_x64.tar.gz +0 -0
- package/src/koffi/build/2.1.4/koffi_openbsd_ia32.tar.gz +0 -0
- package/src/koffi/build/2.1.4/koffi_openbsd_x64.tar.gz +0 -0
- package/src/koffi/build/2.1.4/koffi_win32_arm64.tar.gz +0 -0
- package/src/koffi/build/2.1.4/koffi_win32_ia32.tar.gz +0 -0
- package/src/koffi/build/2.1.4/koffi_win32_x64.tar.gz +0 -0
- package/{doc → src/koffi/doc}/Makefile +0 -0
- package/{doc → src/koffi/doc}/benchmarks.md +0 -0
- package/{doc → src/koffi/doc}/benchmarks.xlsx +0 -0
- package/{doc → src/koffi/doc}/changes.md +0 -0
- package/{doc → src/koffi/doc}/conf.py +0 -0
- package/{doc → src/koffi/doc}/contribute.md +5 -5
- package/{doc → src/koffi/doc}/functions.md +0 -0
- package/{doc → src/koffi/doc}/index.rst +1 -1
- package/{doc → src/koffi/doc}/make.bat +0 -0
- package/{doc → src/koffi/doc}/memory.md +1 -0
- package/{doc → src/koffi/doc}/platforms.md +0 -0
- package/{doc → src/koffi/doc}/poetry.lock +0 -0
- package/{doc → src/koffi/doc}/pyproject.toml +0 -0
- package/{doc → src/koffi/doc}/start.md +0 -0
- package/{doc → src/koffi/doc}/static/bench_linux.png +0 -0
- package/{doc → src/koffi/doc}/static/bench_windows.png +0 -0
- package/{doc → src/koffi/doc}/static/custom.css +0 -0
- package/{doc → src/koffi/doc}/static/perf_linux_20220623.png +0 -0
- package/{doc → src/koffi/doc}/static/perf_linux_20220623_2.png +0 -0
- package/{doc → src/koffi/doc}/static/perf_linux_20220627.png +0 -0
- package/{doc → src/koffi/doc}/static/perf_linux_20220628.png +0 -0
- package/{doc → src/koffi/doc}/static/perf_linux_20220812.png +0 -0
- package/{doc → src/koffi/doc}/static/perf_windows_20220623.png +0 -0
- package/{doc → src/koffi/doc}/static/perf_windows_20220623_2.png +0 -0
- package/{doc → src/koffi/doc}/static/perf_windows_20220627.png +0 -0
- package/{doc → src/koffi/doc}/static/perf_windows_20220628.png +0 -0
- package/{doc → src/koffi/doc}/static/perf_windows_20220812.png +0 -0
- package/{doc → src/koffi/doc}/templates/badges.html +1 -1
- package/{doc → src/koffi/doc}/types.md +0 -0
- package/src/koffi/qemu/qemu/.gitkeep +0 -0
- package/{qemu → src/koffi/qemu}/qemu.js +217 -131
- package/{qemu → src/koffi/qemu}/registry/machines.json +24 -0
- package/{qemu → src/koffi/qemu}/registry/sha256sum.txt +0 -0
- package/src/{abi_arm32.cc → koffi/src/abi_arm32.cc} +1 -1
- package/src/{abi_arm32_fwd.S → koffi/src/abi_arm32_fwd.S} +0 -0
- package/src/{abi_arm64.cc → koffi/src/abi_arm64.cc} +1 -1
- package/src/{abi_arm64_fwd.S → koffi/src/abi_arm64_fwd.S} +0 -0
- package/src/{abi_arm64_fwd.asm → koffi/src/abi_arm64_fwd.asm} +0 -0
- package/src/{abi_riscv64.cc → koffi/src/abi_riscv64.cc} +1 -1
- package/src/{abi_riscv64_fwd.S → koffi/src/abi_riscv64_fwd.S} +0 -0
- package/src/{abi_x64_sysv.cc → koffi/src/abi_x64_sysv.cc} +1 -1
- package/src/{abi_x64_sysv_fwd.S → koffi/src/abi_x64_sysv_fwd.S} +0 -0
- package/src/{abi_x64_win.cc → koffi/src/abi_x64_win.cc} +1 -1
- package/src/{abi_x64_win_fwd.asm → koffi/src/abi_x64_win_fwd.asm} +0 -0
- package/src/{abi_x86.cc → koffi/src/abi_x86.cc} +1 -1
- package/src/{abi_x86_fwd.S → koffi/src/abi_x86_fwd.S} +0 -0
- package/src/{abi_x86_fwd.asm → koffi/src/abi_x86_fwd.asm} +0 -0
- package/src/{call.cc → koffi/src/call.cc} +1 -1
- package/src/{call.hh → koffi/src/call.hh} +2 -2
- package/src/{ffi.cc → koffi/src/ffi.cc} +34 -18
- package/src/{ffi.hh → koffi/src/ffi.hh} +5 -3
- package/src/{index.js → koffi/src/index.js} +0 -0
- package/src/{parser.cc → koffi/src/parser.cc} +1 -1
- package/src/{parser.hh → koffi/src/parser.hh} +1 -1
- package/src/{util.cc → koffi/src/util.cc} +1 -1
- package/src/{util.hh → koffi/src/util.hh} +1 -1
- package/{test → src/koffi/test}/CMakeLists.txt +14 -15
- package/{test → src/koffi/test}/async.js +0 -0
- package/{test → src/koffi/test}/callbacks.js +0 -0
- package/{test → src/koffi/test}/misc.c +13 -0
- package/{test → src/koffi/test}/misc.def +0 -0
- package/{test → src/koffi/test}/raylib.js +0 -0
- package/{test → src/koffi/test}/sqlite.js +1 -1
- package/{test → src/koffi/test}/sync.js +17 -0
- package/vendor/brotli/BUILD +144 -0
- package/vendor/brotli/CMakeLists.txt +421 -0
- package/vendor/brotli/CONTRIBUTING.md +27 -0
- package/vendor/brotli/LICENSE +19 -0
- package/vendor/brotli/MANIFEST.in +17 -0
- package/vendor/brotli/Makefile +55 -0
- package/vendor/brotli/Makefile.am +38 -0
- package/vendor/brotli/README +15 -0
- package/vendor/brotli/README.md +104 -0
- package/vendor/brotli/WORKSPACE +21 -0
- package/vendor/brotli/bootstrap +35 -0
- package/vendor/brotli/c/common/constants.c +15 -0
- package/vendor/brotli/c/common/constants.h +200 -0
- package/vendor/brotli/c/common/context.c +156 -0
- package/vendor/brotli/c/common/context.h +113 -0
- package/vendor/brotli/c/common/dictionary.c +5914 -0
- package/vendor/brotli/c/common/dictionary.h +64 -0
- package/vendor/brotli/c/common/platform.c +22 -0
- package/vendor/brotli/c/common/platform.h +594 -0
- package/vendor/brotli/c/common/transform.c +291 -0
- package/vendor/brotli/c/common/transform.h +85 -0
- package/vendor/brotli/c/common/version.h +26 -0
- package/vendor/brotli/c/dec/bit_reader.c +76 -0
- package/vendor/brotli/c/dec/bit_reader.h +351 -0
- package/vendor/brotli/c/dec/decode.c +2608 -0
- package/vendor/brotli/c/dec/huffman.c +339 -0
- package/vendor/brotli/c/dec/huffman.h +121 -0
- package/vendor/brotli/c/dec/prefix.h +732 -0
- package/vendor/brotli/c/dec/state.c +159 -0
- package/vendor/brotli/c/dec/state.h +365 -0
- package/vendor/brotli/c/enc/backward_references.c +145 -0
- package/vendor/brotli/c/enc/backward_references.h +39 -0
- package/vendor/brotli/c/enc/backward_references_hq.c +843 -0
- package/vendor/brotli/c/enc/backward_references_hq.h +95 -0
- package/vendor/brotli/c/enc/backward_references_inc.h +163 -0
- package/vendor/brotli/c/enc/bit_cost.c +35 -0
- package/vendor/brotli/c/enc/bit_cost.h +63 -0
- package/vendor/brotli/c/enc/bit_cost_inc.h +127 -0
- package/vendor/brotli/c/enc/block_encoder_inc.h +34 -0
- package/vendor/brotli/c/enc/block_splitter.c +194 -0
- package/vendor/brotli/c/enc/block_splitter.h +51 -0
- package/vendor/brotli/c/enc/block_splitter_inc.h +440 -0
- package/vendor/brotli/c/enc/brotli_bit_stream.c +1314 -0
- package/vendor/brotli/c/enc/brotli_bit_stream.h +84 -0
- package/vendor/brotli/c/enc/cluster.c +56 -0
- package/vendor/brotli/c/enc/cluster.h +48 -0
- package/vendor/brotli/c/enc/cluster_inc.h +320 -0
- package/vendor/brotli/c/enc/command.c +28 -0
- package/vendor/brotli/c/enc/command.h +190 -0
- package/vendor/brotli/c/enc/compress_fragment.c +790 -0
- package/vendor/brotli/c/enc/compress_fragment.h +61 -0
- package/vendor/brotli/c/enc/compress_fragment_two_pass.c +645 -0
- package/vendor/brotli/c/enc/compress_fragment_two_pass.h +54 -0
- package/vendor/brotli/c/enc/dictionary_hash.c +1846 -0
- package/vendor/brotli/c/enc/dictionary_hash.h +25 -0
- package/vendor/brotli/c/enc/encode.c +1927 -0
- package/vendor/brotli/c/enc/encoder_dict.c +33 -0
- package/vendor/brotli/c/enc/encoder_dict.h +43 -0
- package/vendor/brotli/c/enc/entropy_encode.c +503 -0
- package/vendor/brotli/c/enc/entropy_encode.h +122 -0
- package/vendor/brotli/c/enc/entropy_encode_static.h +539 -0
- package/vendor/brotli/c/enc/fast_log.c +105 -0
- package/vendor/brotli/c/enc/fast_log.h +66 -0
- package/vendor/brotli/c/enc/find_match_length.h +79 -0
- package/vendor/brotli/c/enc/hash.h +488 -0
- package/vendor/brotli/c/enc/hash_composite_inc.h +125 -0
- package/vendor/brotli/c/enc/hash_forgetful_chain_inc.h +293 -0
- package/vendor/brotli/c/enc/hash_longest_match64_inc.h +267 -0
- package/vendor/brotli/c/enc/hash_longest_match_inc.h +262 -0
- package/vendor/brotli/c/enc/hash_longest_match_quickly_inc.h +266 -0
- package/vendor/brotli/c/enc/hash_rolling_inc.h +212 -0
- package/vendor/brotli/c/enc/hash_to_binary_tree_inc.h +329 -0
- package/vendor/brotli/c/enc/histogram.c +100 -0
- package/vendor/brotli/c/enc/histogram.h +63 -0
- package/vendor/brotli/c/enc/histogram_inc.h +51 -0
- package/vendor/brotli/c/enc/literal_cost.c +175 -0
- package/vendor/brotli/c/enc/literal_cost.h +30 -0
- package/vendor/brotli/c/enc/memory.c +170 -0
- package/vendor/brotli/c/enc/memory.h +114 -0
- package/vendor/brotli/c/enc/metablock.c +663 -0
- package/vendor/brotli/c/enc/metablock.h +105 -0
- package/vendor/brotli/c/enc/metablock_inc.h +183 -0
- package/vendor/brotli/c/enc/params.h +46 -0
- package/vendor/brotli/c/enc/prefix.h +53 -0
- package/vendor/brotli/c/enc/quality.h +165 -0
- package/vendor/brotli/c/enc/ringbuffer.h +167 -0
- package/vendor/brotli/c/enc/static_dict.c +486 -0
- package/vendor/brotli/c/enc/static_dict.h +40 -0
- package/vendor/brotli/c/enc/static_dict_lut.h +5864 -0
- package/vendor/brotli/c/enc/utf8_util.c +85 -0
- package/vendor/brotli/c/enc/utf8_util.h +32 -0
- package/vendor/brotli/c/enc/write_bits.h +87 -0
- package/vendor/brotli/c/include/brotli/decode.h +344 -0
- package/vendor/brotli/c/include/brotli/encode.h +448 -0
- package/vendor/brotli/c/include/brotli/port.h +288 -0
- package/vendor/brotli/c/include/brotli/types.h +83 -0
- package/vendor/brotli/c/tools/brotli.c +1116 -0
- package/vendor/brotli/c/tools/brotli.md +107 -0
- package/vendor/brotli/compiler_config_setting.bzl +28 -0
- package/vendor/brotli/configure +8 -0
- package/vendor/brotli/configure-cmake +318 -0
- package/vendor/brotli/configure.ac +14 -0
- package/vendor/brotli/docs/brotli.1 +132 -0
- package/vendor/brotli/docs/constants.h.3 +47 -0
- package/vendor/brotli/docs/decode.h.3 +415 -0
- package/vendor/brotli/docs/encode.h.3 +586 -0
- package/vendor/brotli/docs/types.h.3 +117 -0
- package/vendor/brotli/premake5.lua +78 -0
- package/vendor/brotli/python/Makefile +57 -0
- package/vendor/brotli/python/README.md +54 -0
- package/vendor/brotli/python/_brotli.cc +753 -0
- package/vendor/brotli/python/bro.py +160 -0
- package/vendor/brotli/python/brotli.py +56 -0
- package/vendor/brotli/python/tests/__init__.py +0 -0
- package/vendor/brotli/python/tests/_test_utils.py +112 -0
- package/vendor/brotli/python/tests/bro_test.py +102 -0
- package/vendor/brotli/python/tests/compress_test.py +41 -0
- package/vendor/brotli/python/tests/compressor_test.py +94 -0
- package/vendor/brotli/python/tests/decompress_test.py +42 -0
- package/vendor/brotli/python/tests/decompressor_test.py +59 -0
- package/vendor/brotli/scripts/libbrotlicommon.pc.in +11 -0
- package/vendor/brotli/scripts/libbrotlidec.pc.in +12 -0
- package/vendor/brotli/scripts/libbrotlienc.pc.in +12 -0
- package/vendor/brotli/scripts/sources.lst +104 -0
- package/vendor/brotli/setup.cfg +5 -0
- package/vendor/brotli/setup.py +293 -0
- package/vendor/brotli/tests/Makefile +17 -0
- package/vendor/brotli/tests/compatibility_test.sh +25 -0
- package/vendor/brotli/tests/roundtrip_test.sh +36 -0
- package/vendor/brotli/tests/run-compatibility-test.cmake +31 -0
- package/vendor/brotli/tests/run-roundtrip-test.cmake +36 -0
- package/vendor/brotli/tests/testdata/empty +0 -0
- package/vendor/brotli/tests/testdata/empty.compressed +1 -0
- package/vendor/brotli/tests/testdata/ukkonooa +1 -0
- package/vendor/brotli/tests/testdata/ukkonooa.compressed +0 -0
- package/vendor/miniz/ChangeLog.md +235 -0
- package/vendor/miniz/LICENSE +22 -0
- package/vendor/miniz/examples/example1.c +105 -0
- package/vendor/miniz/examples/example2.c +164 -0
- package/vendor/miniz/examples/example3.c +269 -0
- package/vendor/miniz/examples/example4.c +102 -0
- package/vendor/miniz/examples/example5.c +327 -0
- package/vendor/miniz/examples/example6.c +166 -0
- package/vendor/miniz/miniz.c +7835 -0
- package/vendor/miniz/miniz.h +1422 -0
- package/vendor/miniz/readme.md +46 -0
- package/vendor/{sqlite3 → sqlite3mc}/sqlite3ext.h +18 -2
- package/vendor/{sqlite3/sqlite3.c → sqlite3mc/sqlite3mc.c} +60872 -4890
- package/vendor/sqlite3mc/sqlite3mc.def +312 -0
- package/vendor/{sqlite3/sqlite3.h → sqlite3mc/sqlite3mc.h} +480 -36
- package/build/qemu/2.1.3/koffi_darwin_arm64.tar.gz +0 -0
- package/build/qemu/2.1.3/koffi_darwin_x64.tar.gz +0 -0
- package/build/qemu/2.1.3/koffi_freebsd_arm64.tar.gz +0 -0
- package/build/qemu/2.1.3/koffi_freebsd_ia32.tar.gz +0 -0
- package/build/qemu/2.1.3/koffi_freebsd_x64.tar.gz +0 -0
- package/build/qemu/2.1.3/koffi_linux_arm32hf.tar.gz +0 -0
- package/build/qemu/2.1.3/koffi_linux_arm64.tar.gz +0 -0
- package/build/qemu/2.1.3/koffi_linux_ia32.tar.gz +0 -0
- package/build/qemu/2.1.3/koffi_linux_riscv64hf64.tar.gz +0 -0
- package/build/qemu/2.1.3/koffi_linux_x64.tar.gz +0 -0
- package/build/qemu/2.1.3/koffi_openbsd_ia32.tar.gz +0 -0
- package/build/qemu/2.1.3/koffi_openbsd_x64.tar.gz +0 -0
- package/build/qemu/2.1.3/koffi_win32_arm64.tar.gz +0 -0
- package/build/qemu/2.1.3/koffi_win32_ia32.tar.gz +0 -0
- package/build/qemu/2.1.3/koffi_win32_x64.tar.gz +0 -0
- package/vendor/_patches/glfw_001_fix_openbsd_xlib_soname.patch +0 -145
- package/vendor/raylib/projects/VS2019-Android/raylib_android/raylib_android.NativeActivity/raylib_android.NativeActivity.vcxproj +0 -226
- package/vendor/raylib/projects/VS2019-Android/raylib_android/raylib_android.NativeActivity/raylib_android.NativeActivity.vcxproj.filters +0 -10
- package/vendor/raylib/projects/VS2019-Android/raylib_android/raylib_android.NativeActivity/raylib_android.NativeActivity.vcxproj.user +0 -4
- package/vendor/raylib/projects/VS2019-Android/raylib_android.sln +0 -75
- package/vendor/raylib/projects/VS2022/examples/audio_module_playing.vcxproj +0 -390
- package/vendor/raylib/projects/VS2022/examples/audio_multichannel_sound.vcxproj +0 -390
- package/vendor/raylib/projects/VS2022/examples/audio_music_stream.vcxproj +0 -390
- package/vendor/raylib/projects/VS2022/examples/audio_raw_stream.vcxproj +0 -390
- package/vendor/raylib/projects/VS2022/examples/audio_sound_loading.vcxproj +0 -390
- package/vendor/raylib/projects/VS2022/examples/audio_stream_effects.vcxproj +0 -390
- package/vendor/raylib/projects/VS2022/examples/core_2d_camera.vcxproj +0 -390
- package/vendor/raylib/projects/VS2022/examples/core_2d_camera_mouse_zoom.vcxproj +0 -390
- package/vendor/raylib/projects/VS2022/examples/core_2d_camera_platformer.vcxproj +0 -390
- package/vendor/raylib/projects/VS2022/examples/core_3d_camera_first_person.vcxproj +0 -390
- package/vendor/raylib/projects/VS2022/examples/core_3d_camera_free.vcxproj +0 -390
- package/vendor/raylib/projects/VS2022/examples/core_3d_camera_mode.vcxproj +0 -390
- package/vendor/raylib/projects/VS2022/examples/core_3d_picking.vcxproj +0 -390
- package/vendor/raylib/projects/VS2022/examples/core_basic_screen_manager.vcxproj +0 -390
- package/vendor/raylib/projects/VS2022/examples/core_basic_window.vcxproj +0 -390
- package/vendor/raylib/projects/VS2022/examples/core_custom_frame_control.vcxproj +0 -390
- package/vendor/raylib/projects/VS2022/examples/core_custom_logging.vcxproj +0 -390
- package/vendor/raylib/projects/VS2022/examples/core_drop_files.vcxproj +0 -390
- package/vendor/raylib/projects/VS2022/examples/core_input_gamepad.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/core_input_gestures.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/core_input_keys.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/core_input_mouse.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/core_input_mouse_wheel.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/core_input_multitouch.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/core_loading_thread.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/core_random_values.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/core_scissor_test.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/core_split_screen.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/core_storage_values.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/core_vr_simulator.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/core_window_flags.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/core_window_letterbox.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/core_window_should_close.vcxproj +0 -390
- package/vendor/raylib/projects/VS2022/examples/core_world_screen.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/easings_testbed.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/embedded_files_loading.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/models_animation.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/models_billboard.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/models_box_collisions.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/models_cubicmap.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/models_first_person_maze.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/models_geometric_shapes.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/models_heightmap.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/models_loading.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/models_loading_gltf.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/models_loading_vox.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/models_mesh_generation.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/models_mesh_picking.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/models_orthographic_projection.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/models_rlgl_solar_system.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/models_skybox.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/models_waving_cubes.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/models_yaw_pitch_roll.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/rlgl_compute_shaders.vcxproj +0 -391
- package/vendor/raylib/projects/VS2022/examples/rlgl_standalone.vcxproj +0 -391
- package/vendor/raylib/projects/VS2022/examples/shaders_basic_lighting.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/shaders_custom_uniform.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/shaders_eratosthenes.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/shaders_fog.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/shaders_hot_reloading.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/shaders_julia_set.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/shaders_mesh_instancing.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/shaders_model_shader.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/shaders_multi_sample2d.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/shaders_palette_switch.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/shaders_postprocessing.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/shaders_raymarching.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/shaders_shapes_textures.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/shaders_simple_mask.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/shaders_spotlight.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/shaders_texture_drawing.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/shaders_texture_waves.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/shapes_basic_shapes.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/shapes_bouncing_ball.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/shapes_collision_area.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/shapes_colors_palette.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/shapes_draw_circle_sector.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/shapes_draw_rectangle_rounded.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/shapes_draw_ring.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/shapes_easings_ball_anim.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/shapes_easings_box_anim.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/shapes_easings_rectangle_array.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/shapes_following_eyes.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/shapes_lines_bezier.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/shapes_logo_raylib.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/shapes_logo_raylib_anim.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/shapes_rectangle_scaling.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/text_codepoints_loading.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/text_draw_3d.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/text_font_filters.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/text_font_loading.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/text_font_sdf.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/text_font_spritefont.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/text_format_text.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/text_input_box.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/text_raylib_fonts.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/text_rectangle_bounds.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/text_unicode.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/text_writing_anim.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/textures_background_scrolling.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/textures_blend_modes.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/textures_bunnymark.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/textures_draw_tiled.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/textures_fog_of_war.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/textures_gif_player.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/textures_image_drawing.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/textures_image_generation.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/textures_image_loading.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/textures_image_processing.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/textures_image_text.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/textures_logo_raylib.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/textures_mouse_painting.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/textures_npatch_drawing.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/textures_particles_blending.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/textures_polygon.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/textures_raw_data.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/textures_sprite_anim.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/textures_sprite_button.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/textures_sprite_explosion.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/textures_srcrec_dstrec.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/examples/textures_to_image.vcxproj +0 -387
- package/vendor/raylib/projects/VS2022/raylib/raylib.vcxproj +0 -340
- package/vendor/raylib/projects/VS2022/raylib.sln +0 -2347
- package/vendor/sqlite3/shell.c +0 -23496
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
#! /usr/bin/env python
|
|
2
|
+
"""Compression/decompression utility using the Brotli algorithm."""
|
|
3
|
+
|
|
4
|
+
from __future__ import print_function
|
|
5
|
+
import argparse
|
|
6
|
+
import sys
|
|
7
|
+
import os
|
|
8
|
+
import platform
|
|
9
|
+
|
|
10
|
+
import brotli
|
|
11
|
+
|
|
12
|
+
# default values of encoder parameters
|
|
13
|
+
DEFAULT_PARAMS = {
|
|
14
|
+
'mode': brotli.MODE_GENERIC,
|
|
15
|
+
'quality': 11,
|
|
16
|
+
'lgwin': 22,
|
|
17
|
+
'lgblock': 0,
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def get_binary_stdio(stream):
|
|
22
|
+
""" Return the specified standard input, output or errors stream as a
|
|
23
|
+
'raw' buffer object suitable for reading/writing binary data from/to it.
|
|
24
|
+
"""
|
|
25
|
+
assert stream in ['stdin', 'stdout', 'stderr'], 'invalid stream name'
|
|
26
|
+
stdio = getattr(sys, stream)
|
|
27
|
+
if sys.version_info[0] < 3:
|
|
28
|
+
if sys.platform == 'win32':
|
|
29
|
+
# set I/O stream binary flag on python2.x (Windows)
|
|
30
|
+
runtime = platform.python_implementation()
|
|
31
|
+
if runtime == 'PyPy':
|
|
32
|
+
# the msvcrt trick doesn't work in pypy, so I use fdopen
|
|
33
|
+
mode = 'rb' if stream == 'stdin' else 'wb'
|
|
34
|
+
stdio = os.fdopen(stdio.fileno(), mode, 0)
|
|
35
|
+
else:
|
|
36
|
+
# this works with CPython -- untested on other implementations
|
|
37
|
+
import msvcrt
|
|
38
|
+
msvcrt.setmode(stdio.fileno(), os.O_BINARY)
|
|
39
|
+
return stdio
|
|
40
|
+
else:
|
|
41
|
+
# get 'buffer' attribute to read/write binary data on python3.x
|
|
42
|
+
if hasattr(stdio, 'buffer'):
|
|
43
|
+
return stdio.buffer
|
|
44
|
+
else:
|
|
45
|
+
orig_stdio = getattr(sys, '__%s__' % stream)
|
|
46
|
+
return orig_stdio.buffer
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def main(args=None):
|
|
50
|
+
|
|
51
|
+
parser = argparse.ArgumentParser(
|
|
52
|
+
prog=os.path.basename(__file__), description=__doc__)
|
|
53
|
+
parser.add_argument(
|
|
54
|
+
'--version', action='version', version=brotli.__version__)
|
|
55
|
+
parser.add_argument(
|
|
56
|
+
'-i',
|
|
57
|
+
'--input',
|
|
58
|
+
metavar='FILE',
|
|
59
|
+
type=str,
|
|
60
|
+
dest='infile',
|
|
61
|
+
help='Input file',
|
|
62
|
+
default=None)
|
|
63
|
+
parser.add_argument(
|
|
64
|
+
'-o',
|
|
65
|
+
'--output',
|
|
66
|
+
metavar='FILE',
|
|
67
|
+
type=str,
|
|
68
|
+
dest='outfile',
|
|
69
|
+
help='Output file',
|
|
70
|
+
default=None)
|
|
71
|
+
parser.add_argument(
|
|
72
|
+
'-f',
|
|
73
|
+
'--force',
|
|
74
|
+
action='store_true',
|
|
75
|
+
help='Overwrite existing output file',
|
|
76
|
+
default=False)
|
|
77
|
+
parser.add_argument(
|
|
78
|
+
'-d',
|
|
79
|
+
'--decompress',
|
|
80
|
+
action='store_true',
|
|
81
|
+
help='Decompress input file',
|
|
82
|
+
default=False)
|
|
83
|
+
params = parser.add_argument_group('optional encoder parameters')
|
|
84
|
+
params.add_argument(
|
|
85
|
+
'-m',
|
|
86
|
+
'--mode',
|
|
87
|
+
metavar='MODE',
|
|
88
|
+
type=int,
|
|
89
|
+
choices=[0, 1, 2],
|
|
90
|
+
help='The compression mode can be 0 for generic input, '
|
|
91
|
+
'1 for UTF-8 encoded text, or 2 for WOFF 2.0 font data. '
|
|
92
|
+
'Defaults to 0.')
|
|
93
|
+
params.add_argument(
|
|
94
|
+
'-q',
|
|
95
|
+
'--quality',
|
|
96
|
+
metavar='QUALITY',
|
|
97
|
+
type=int,
|
|
98
|
+
choices=list(range(0, 12)),
|
|
99
|
+
help='Controls the compression-speed vs compression-density '
|
|
100
|
+
'tradeoff. The higher the quality, the slower the '
|
|
101
|
+
'compression. Range is 0 to 11. Defaults to 11.')
|
|
102
|
+
params.add_argument(
|
|
103
|
+
'--lgwin',
|
|
104
|
+
metavar='LGWIN',
|
|
105
|
+
type=int,
|
|
106
|
+
choices=list(range(10, 25)),
|
|
107
|
+
help='Base 2 logarithm of the sliding window size. Range is '
|
|
108
|
+
'10 to 24. Defaults to 22.')
|
|
109
|
+
params.add_argument(
|
|
110
|
+
'--lgblock',
|
|
111
|
+
metavar='LGBLOCK',
|
|
112
|
+
type=int,
|
|
113
|
+
choices=[0] + list(range(16, 25)),
|
|
114
|
+
help='Base 2 logarithm of the maximum input block size. '
|
|
115
|
+
'Range is 16 to 24. If set to 0, the value will be set based '
|
|
116
|
+
'on the quality. Defaults to 0.')
|
|
117
|
+
# set default values using global DEFAULT_PARAMS dictionary
|
|
118
|
+
parser.set_defaults(**DEFAULT_PARAMS)
|
|
119
|
+
|
|
120
|
+
options = parser.parse_args(args=args)
|
|
121
|
+
|
|
122
|
+
if options.infile:
|
|
123
|
+
if not os.path.isfile(options.infile):
|
|
124
|
+
parser.error('file "%s" not found' % options.infile)
|
|
125
|
+
with open(options.infile, 'rb') as infile:
|
|
126
|
+
data = infile.read()
|
|
127
|
+
else:
|
|
128
|
+
if sys.stdin.isatty():
|
|
129
|
+
# interactive console, just quit
|
|
130
|
+
parser.error('no input')
|
|
131
|
+
infile = get_binary_stdio('stdin')
|
|
132
|
+
data = infile.read()
|
|
133
|
+
|
|
134
|
+
if options.outfile:
|
|
135
|
+
if os.path.isfile(options.outfile) and not options.force:
|
|
136
|
+
parser.error('output file exists')
|
|
137
|
+
outfile = open(options.outfile, 'wb')
|
|
138
|
+
else:
|
|
139
|
+
outfile = get_binary_stdio('stdout')
|
|
140
|
+
|
|
141
|
+
try:
|
|
142
|
+
if options.decompress:
|
|
143
|
+
data = brotli.decompress(data)
|
|
144
|
+
else:
|
|
145
|
+
data = brotli.compress(
|
|
146
|
+
data,
|
|
147
|
+
mode=options.mode,
|
|
148
|
+
quality=options.quality,
|
|
149
|
+
lgwin=options.lgwin,
|
|
150
|
+
lgblock=options.lgblock)
|
|
151
|
+
except brotli.error as e:
|
|
152
|
+
parser.exit(1,
|
|
153
|
+
'bro: error: %s: %s' % (e, options.infile or 'sys.stdin'))
|
|
154
|
+
|
|
155
|
+
outfile.write(data)
|
|
156
|
+
outfile.close()
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
if __name__ == '__main__':
|
|
160
|
+
main()
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Copyright 2016 The Brotli Authors. All rights reserved.
|
|
2
|
+
#
|
|
3
|
+
# Distributed under MIT license.
|
|
4
|
+
# See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
|
|
5
|
+
|
|
6
|
+
"""Functions to compress and decompress data using the Brotli library."""
|
|
7
|
+
|
|
8
|
+
import _brotli
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
# The library version.
|
|
12
|
+
__version__ = _brotli.__version__
|
|
13
|
+
|
|
14
|
+
# The compression mode.
|
|
15
|
+
MODE_GENERIC = _brotli.MODE_GENERIC
|
|
16
|
+
MODE_TEXT = _brotli.MODE_TEXT
|
|
17
|
+
MODE_FONT = _brotli.MODE_FONT
|
|
18
|
+
|
|
19
|
+
# The Compressor object.
|
|
20
|
+
Compressor = _brotli.Compressor
|
|
21
|
+
|
|
22
|
+
# The Decompressor object.
|
|
23
|
+
Decompressor = _brotli.Decompressor
|
|
24
|
+
|
|
25
|
+
# Compress a byte string.
|
|
26
|
+
def compress(string, mode=MODE_GENERIC, quality=11, lgwin=22, lgblock=0):
|
|
27
|
+
"""Compress a byte string.
|
|
28
|
+
|
|
29
|
+
Args:
|
|
30
|
+
string (bytes): The input data.
|
|
31
|
+
mode (int, optional): The compression mode can be MODE_GENERIC (default),
|
|
32
|
+
MODE_TEXT (for UTF-8 format text input) or MODE_FONT (for WOFF 2.0).
|
|
33
|
+
quality (int, optional): Controls the compression-speed vs compression-
|
|
34
|
+
density tradeoff. The higher the quality, the slower the compression.
|
|
35
|
+
Range is 0 to 11. Defaults to 11.
|
|
36
|
+
lgwin (int, optional): Base 2 logarithm of the sliding window size. Range
|
|
37
|
+
is 10 to 24. Defaults to 22.
|
|
38
|
+
lgblock (int, optional): Base 2 logarithm of the maximum input block size.
|
|
39
|
+
Range is 16 to 24. If set to 0, the value will be set based on the
|
|
40
|
+
quality. Defaults to 0.
|
|
41
|
+
|
|
42
|
+
Returns:
|
|
43
|
+
The compressed byte string.
|
|
44
|
+
|
|
45
|
+
Raises:
|
|
46
|
+
brotli.error: If arguments are invalid, or compressor fails.
|
|
47
|
+
"""
|
|
48
|
+
compressor = Compressor(mode=mode, quality=quality, lgwin=lgwin,
|
|
49
|
+
lgblock=lgblock)
|
|
50
|
+
return compressor.process(string) + compressor.finish()
|
|
51
|
+
|
|
52
|
+
# Decompress a compressed byte string.
|
|
53
|
+
decompress = _brotli.decompress
|
|
54
|
+
|
|
55
|
+
# Raised if compression or decompression fails.
|
|
56
|
+
error = _brotli.error
|
|
File without changes
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
from __future__ import print_function
|
|
2
|
+
import filecmp
|
|
3
|
+
import glob
|
|
4
|
+
import itertools
|
|
5
|
+
import os
|
|
6
|
+
import sys
|
|
7
|
+
import sysconfig
|
|
8
|
+
import tempfile
|
|
9
|
+
import unittest
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
project_dir = os.path.abspath(os.path.join(__file__, '..', '..', '..'))
|
|
13
|
+
src_dir = os.path.join(project_dir, 'python')
|
|
14
|
+
test_dir = os.path.join(project_dir, 'tests')
|
|
15
|
+
|
|
16
|
+
python_exe = sys.executable or 'python'
|
|
17
|
+
bro_path = os.path.join(src_dir, 'bro.py')
|
|
18
|
+
BRO_ARGS = [python_exe, bro_path]
|
|
19
|
+
|
|
20
|
+
# Get the platform/version-specific build folder.
|
|
21
|
+
# By default, the distutils build base is in the same location as setup.py.
|
|
22
|
+
platform_lib_name = 'lib.{platform}-{version[0]}.{version[1]}'.format(
|
|
23
|
+
platform=sysconfig.get_platform(), version=sys.version_info)
|
|
24
|
+
build_dir = os.path.join(project_dir, 'bin', platform_lib_name)
|
|
25
|
+
|
|
26
|
+
# Prepend the build folder to sys.path and the PYTHONPATH environment variable.
|
|
27
|
+
if build_dir not in sys.path:
|
|
28
|
+
sys.path.insert(0, build_dir)
|
|
29
|
+
TEST_ENV = os.environ.copy()
|
|
30
|
+
if 'PYTHONPATH' not in TEST_ENV:
|
|
31
|
+
TEST_ENV['PYTHONPATH'] = build_dir
|
|
32
|
+
else:
|
|
33
|
+
TEST_ENV['PYTHONPATH'] = build_dir + os.pathsep + TEST_ENV['PYTHONPATH']
|
|
34
|
+
|
|
35
|
+
TESTDATA_DIR = os.path.join(test_dir, 'testdata')
|
|
36
|
+
|
|
37
|
+
TESTDATA_FILES = [
|
|
38
|
+
'empty', # Empty file
|
|
39
|
+
'10x10y', # Small text
|
|
40
|
+
'alice29.txt', # Large text
|
|
41
|
+
'random_org_10k.bin', # Small data
|
|
42
|
+
'mapsdatazrh', # Large data
|
|
43
|
+
]
|
|
44
|
+
|
|
45
|
+
TESTDATA_PATHS = [os.path.join(TESTDATA_DIR, f) for f in TESTDATA_FILES]
|
|
46
|
+
|
|
47
|
+
TESTDATA_PATHS_FOR_DECOMPRESSION = glob.glob(
|
|
48
|
+
os.path.join(TESTDATA_DIR, '*.compressed'))
|
|
49
|
+
|
|
50
|
+
TEMP_DIR = tempfile.mkdtemp()
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def get_temp_compressed_name(filename):
|
|
54
|
+
return os.path.join(TEMP_DIR, os.path.basename(filename + '.bro'))
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def get_temp_uncompressed_name(filename):
|
|
58
|
+
return os.path.join(TEMP_DIR, os.path.basename(filename + '.unbro'))
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def bind_method_args(method, *args, **kwargs):
|
|
62
|
+
return lambda self: method(self, *args, **kwargs)
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def generate_test_methods(test_case_class,
|
|
66
|
+
for_decompression=False,
|
|
67
|
+
variants=None):
|
|
68
|
+
# Add test methods for each test data file. This makes identifying problems
|
|
69
|
+
# with specific compression scenarios easier.
|
|
70
|
+
if for_decompression:
|
|
71
|
+
paths = TESTDATA_PATHS_FOR_DECOMPRESSION
|
|
72
|
+
else:
|
|
73
|
+
paths = TESTDATA_PATHS
|
|
74
|
+
opts = []
|
|
75
|
+
if variants:
|
|
76
|
+
opts_list = []
|
|
77
|
+
for k, v in variants.items():
|
|
78
|
+
opts_list.append([r for r in itertools.product([k], v)])
|
|
79
|
+
for o in itertools.product(*opts_list):
|
|
80
|
+
opts_name = '_'.join([str(i) for i in itertools.chain(*o)])
|
|
81
|
+
opts_dict = dict(o)
|
|
82
|
+
opts.append([opts_name, opts_dict])
|
|
83
|
+
else:
|
|
84
|
+
opts.append(['', {}])
|
|
85
|
+
for method in [m for m in dir(test_case_class) if m.startswith('_test')]:
|
|
86
|
+
for testdata in paths:
|
|
87
|
+
for (opts_name, opts_dict) in opts:
|
|
88
|
+
f = os.path.splitext(os.path.basename(testdata))[0]
|
|
89
|
+
name = 'test_{method}_{options}_{file}'.format(
|
|
90
|
+
method=method, options=opts_name, file=f)
|
|
91
|
+
func = bind_method_args(
|
|
92
|
+
getattr(test_case_class, method), testdata, **opts_dict)
|
|
93
|
+
setattr(test_case_class, name, func)
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
class TestCase(unittest.TestCase):
|
|
97
|
+
|
|
98
|
+
def tearDown(self):
|
|
99
|
+
for f in TESTDATA_PATHS:
|
|
100
|
+
try:
|
|
101
|
+
os.unlink(get_temp_compressed_name(f))
|
|
102
|
+
except OSError:
|
|
103
|
+
pass
|
|
104
|
+
try:
|
|
105
|
+
os.unlink(get_temp_uncompressed_name(f))
|
|
106
|
+
except OSError:
|
|
107
|
+
pass
|
|
108
|
+
|
|
109
|
+
def assertFilesMatch(self, first, second):
|
|
110
|
+
self.assertTrue(
|
|
111
|
+
filecmp.cmp(first, second, shallow=False),
|
|
112
|
+
'File {} differs from {}'.format(first, second))
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# Copyright 2016 The Brotli Authors. All rights reserved.
|
|
2
|
+
#
|
|
3
|
+
# Distributed under MIT license.
|
|
4
|
+
# See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
|
|
5
|
+
|
|
6
|
+
import subprocess
|
|
7
|
+
import unittest
|
|
8
|
+
|
|
9
|
+
from . import _test_utils
|
|
10
|
+
import brotli
|
|
11
|
+
|
|
12
|
+
BRO_ARGS = _test_utils.BRO_ARGS
|
|
13
|
+
TEST_ENV = _test_utils.TEST_ENV
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def _get_original_name(test_data):
|
|
17
|
+
return test_data.split('.compressed')[0]
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class TestBroDecompress(_test_utils.TestCase):
|
|
21
|
+
|
|
22
|
+
def _check_decompression(self, test_data):
|
|
23
|
+
# Verify decompression matches the original.
|
|
24
|
+
temp_uncompressed = _test_utils.get_temp_uncompressed_name(test_data)
|
|
25
|
+
original = _get_original_name(test_data)
|
|
26
|
+
self.assertFilesMatch(temp_uncompressed, original)
|
|
27
|
+
|
|
28
|
+
def _decompress_file(self, test_data):
|
|
29
|
+
temp_uncompressed = _test_utils.get_temp_uncompressed_name(test_data)
|
|
30
|
+
args = BRO_ARGS + ['-f', '-d', '-i', test_data, '-o', temp_uncompressed]
|
|
31
|
+
subprocess.check_call(args, env=TEST_ENV)
|
|
32
|
+
|
|
33
|
+
def _decompress_pipe(self, test_data):
|
|
34
|
+
temp_uncompressed = _test_utils.get_temp_uncompressed_name(test_data)
|
|
35
|
+
args = BRO_ARGS + ['-d']
|
|
36
|
+
with open(temp_uncompressed, 'wb') as out_file:
|
|
37
|
+
with open(test_data, 'rb') as in_file:
|
|
38
|
+
subprocess.check_call(
|
|
39
|
+
args, stdin=in_file, stdout=out_file, env=TEST_ENV)
|
|
40
|
+
|
|
41
|
+
def _test_decompress_file(self, test_data):
|
|
42
|
+
self._decompress_file(test_data)
|
|
43
|
+
self._check_decompression(test_data)
|
|
44
|
+
|
|
45
|
+
def _test_decompress_pipe(self, test_data):
|
|
46
|
+
self._decompress_pipe(test_data)
|
|
47
|
+
self._check_decompression(test_data)
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
_test_utils.generate_test_methods(TestBroDecompress, for_decompression=True)
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
class TestBroCompress(_test_utils.TestCase):
|
|
54
|
+
|
|
55
|
+
VARIANTS = {'quality': (1, 6, 9, 11), 'lgwin': (10, 15, 20, 24)}
|
|
56
|
+
|
|
57
|
+
def _check_decompression(self, test_data, **kwargs):
|
|
58
|
+
# Write decompression to temp file and verify it matches the original.
|
|
59
|
+
temp_uncompressed = _test_utils.get_temp_uncompressed_name(test_data)
|
|
60
|
+
temp_compressed = _test_utils.get_temp_compressed_name(test_data)
|
|
61
|
+
original = test_data
|
|
62
|
+
args = BRO_ARGS + ['-f', '-d']
|
|
63
|
+
args.extend(['-i', temp_compressed, '-o', temp_uncompressed])
|
|
64
|
+
subprocess.check_call(args, env=TEST_ENV)
|
|
65
|
+
self.assertFilesMatch(temp_uncompressed, original)
|
|
66
|
+
|
|
67
|
+
def _compress_file(self, test_data, **kwargs):
|
|
68
|
+
temp_compressed = _test_utils.get_temp_compressed_name(test_data)
|
|
69
|
+
args = BRO_ARGS + ['-f']
|
|
70
|
+
if 'quality' in kwargs:
|
|
71
|
+
args.extend(['-q', str(kwargs['quality'])])
|
|
72
|
+
if 'lgwin' in kwargs:
|
|
73
|
+
args.extend(['--lgwin', str(kwargs['lgwin'])])
|
|
74
|
+
args.extend(['-i', test_data, '-o', temp_compressed])
|
|
75
|
+
subprocess.check_call(args, env=TEST_ENV)
|
|
76
|
+
|
|
77
|
+
def _compress_pipe(self, test_data, **kwargs):
|
|
78
|
+
temp_compressed = _test_utils.get_temp_compressed_name(test_data)
|
|
79
|
+
args = BRO_ARGS
|
|
80
|
+
if 'quality' in kwargs:
|
|
81
|
+
args.extend(['-q', str(kwargs['quality'])])
|
|
82
|
+
if 'lgwin' in kwargs:
|
|
83
|
+
args.extend(['--lgwin', str(kwargs['lgwin'])])
|
|
84
|
+
with open(temp_compressed, 'wb') as out_file:
|
|
85
|
+
with open(test_data, 'rb') as in_file:
|
|
86
|
+
subprocess.check_call(
|
|
87
|
+
args, stdin=in_file, stdout=out_file, env=TEST_ENV)
|
|
88
|
+
|
|
89
|
+
def _test_compress_file(self, test_data, **kwargs):
|
|
90
|
+
self._compress_file(test_data, **kwargs)
|
|
91
|
+
self._check_decompression(test_data)
|
|
92
|
+
|
|
93
|
+
def _test_compress_pipe(self, test_data, **kwargs):
|
|
94
|
+
self._compress_pipe(test_data, **kwargs)
|
|
95
|
+
self._check_decompression(test_data)
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
_test_utils.generate_test_methods(
|
|
99
|
+
TestBroCompress, variants=TestBroCompress.VARIANTS)
|
|
100
|
+
|
|
101
|
+
if __name__ == '__main__':
|
|
102
|
+
unittest.main()
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Copyright 2016 The Brotli Authors. All rights reserved.
|
|
2
|
+
#
|
|
3
|
+
# Distributed under MIT license.
|
|
4
|
+
# See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
|
|
5
|
+
|
|
6
|
+
import unittest
|
|
7
|
+
|
|
8
|
+
from . import _test_utils
|
|
9
|
+
import brotli
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class TestCompress(_test_utils.TestCase):
|
|
13
|
+
|
|
14
|
+
VARIANTS = {'quality': (1, 6, 9, 11), 'lgwin': (10, 15, 20, 24)}
|
|
15
|
+
|
|
16
|
+
def _check_decompression(self, test_data, **kwargs):
|
|
17
|
+
kwargs = {}
|
|
18
|
+
# Write decompression to temp file and verify it matches the original.
|
|
19
|
+
temp_uncompressed = _test_utils.get_temp_uncompressed_name(test_data)
|
|
20
|
+
temp_compressed = _test_utils.get_temp_compressed_name(test_data)
|
|
21
|
+
original = test_data
|
|
22
|
+
with open(temp_uncompressed, 'wb') as out_file:
|
|
23
|
+
with open(temp_compressed, 'rb') as in_file:
|
|
24
|
+
out_file.write(brotli.decompress(in_file.read(), **kwargs))
|
|
25
|
+
self.assertFilesMatch(temp_uncompressed, original)
|
|
26
|
+
|
|
27
|
+
def _compress(self, test_data, **kwargs):
|
|
28
|
+
temp_compressed = _test_utils.get_temp_compressed_name(test_data)
|
|
29
|
+
with open(temp_compressed, 'wb') as out_file:
|
|
30
|
+
with open(test_data, 'rb') as in_file:
|
|
31
|
+
out_file.write(brotli.compress(in_file.read(), **kwargs))
|
|
32
|
+
|
|
33
|
+
def _test_compress(self, test_data, **kwargs):
|
|
34
|
+
self._compress(test_data, **kwargs)
|
|
35
|
+
self._check_decompression(test_data, **kwargs)
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
_test_utils.generate_test_methods(TestCompress, variants=TestCompress.VARIANTS)
|
|
39
|
+
|
|
40
|
+
if __name__ == '__main__':
|
|
41
|
+
unittest.main()
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# Copyright 2016 The Brotli Authors. All rights reserved.
|
|
2
|
+
#
|
|
3
|
+
# Distributed under MIT license.
|
|
4
|
+
# See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
|
|
5
|
+
|
|
6
|
+
import functools
|
|
7
|
+
import unittest
|
|
8
|
+
|
|
9
|
+
from . import _test_utils
|
|
10
|
+
import brotli
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
# Do not inherit from TestCase here to ensure that test methods
|
|
14
|
+
# are not run automatically and instead are run as part of a specific
|
|
15
|
+
# configuration below.
|
|
16
|
+
class _TestCompressor(object):
|
|
17
|
+
|
|
18
|
+
CHUNK_SIZE = 2048
|
|
19
|
+
|
|
20
|
+
def tearDown(self):
|
|
21
|
+
self.compressor = None
|
|
22
|
+
|
|
23
|
+
def _check_decompression(self, test_data):
|
|
24
|
+
# Write decompression to temp file and verify it matches the original.
|
|
25
|
+
temp_uncompressed = _test_utils.get_temp_uncompressed_name(test_data)
|
|
26
|
+
temp_compressed = _test_utils.get_temp_compressed_name(test_data)
|
|
27
|
+
original = test_data
|
|
28
|
+
with open(temp_uncompressed, 'wb') as out_file:
|
|
29
|
+
with open(temp_compressed, 'rb') as in_file:
|
|
30
|
+
out_file.write(brotli.decompress(in_file.read()))
|
|
31
|
+
self.assertFilesMatch(temp_uncompressed, original)
|
|
32
|
+
|
|
33
|
+
def _test_single_process(self, test_data):
|
|
34
|
+
# Write single-shot compression to temp file.
|
|
35
|
+
temp_compressed = _test_utils.get_temp_compressed_name(test_data)
|
|
36
|
+
with open(temp_compressed, 'wb') as out_file:
|
|
37
|
+
with open(test_data, 'rb') as in_file:
|
|
38
|
+
out_file.write(self.compressor.process(in_file.read()))
|
|
39
|
+
out_file.write(self.compressor.finish())
|
|
40
|
+
self._check_decompression(test_data)
|
|
41
|
+
|
|
42
|
+
def _test_multiple_process(self, test_data):
|
|
43
|
+
# Write chunked compression to temp file.
|
|
44
|
+
temp_compressed = _test_utils.get_temp_compressed_name(test_data)
|
|
45
|
+
with open(temp_compressed, 'wb') as out_file:
|
|
46
|
+
with open(test_data, 'rb') as in_file:
|
|
47
|
+
read_chunk = functools.partial(in_file.read, self.CHUNK_SIZE)
|
|
48
|
+
for data in iter(read_chunk, b''):
|
|
49
|
+
out_file.write(self.compressor.process(data))
|
|
50
|
+
out_file.write(self.compressor.finish())
|
|
51
|
+
self._check_decompression(test_data)
|
|
52
|
+
|
|
53
|
+
def _test_multiple_process_and_flush(self, test_data):
|
|
54
|
+
# Write chunked and flushed compression to temp file.
|
|
55
|
+
temp_compressed = _test_utils.get_temp_compressed_name(test_data)
|
|
56
|
+
with open(temp_compressed, 'wb') as out_file:
|
|
57
|
+
with open(test_data, 'rb') as in_file:
|
|
58
|
+
read_chunk = functools.partial(in_file.read, self.CHUNK_SIZE)
|
|
59
|
+
for data in iter(read_chunk, b''):
|
|
60
|
+
out_file.write(self.compressor.process(data))
|
|
61
|
+
out_file.write(self.compressor.flush())
|
|
62
|
+
out_file.write(self.compressor.finish())
|
|
63
|
+
self._check_decompression(test_data)
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
_test_utils.generate_test_methods(_TestCompressor)
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
class TestCompressorQuality1(_TestCompressor, _test_utils.TestCase):
|
|
70
|
+
|
|
71
|
+
def setUp(self):
|
|
72
|
+
self.compressor = brotli.Compressor(quality=1)
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
class TestCompressorQuality6(_TestCompressor, _test_utils.TestCase):
|
|
76
|
+
|
|
77
|
+
def setUp(self):
|
|
78
|
+
self.compressor = brotli.Compressor(quality=6)
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
class TestCompressorQuality9(_TestCompressor, _test_utils.TestCase):
|
|
82
|
+
|
|
83
|
+
def setUp(self):
|
|
84
|
+
self.compressor = brotli.Compressor(quality=9)
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
class TestCompressorQuality11(_TestCompressor, _test_utils.TestCase):
|
|
88
|
+
|
|
89
|
+
def setUp(self):
|
|
90
|
+
self.compressor = brotli.Compressor(quality=11)
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
if __name__ == '__main__':
|
|
94
|
+
unittest.main()
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Copyright 2016 The Brotli Authors. All rights reserved.
|
|
2
|
+
#
|
|
3
|
+
# Distributed under MIT license.
|
|
4
|
+
# See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
|
|
5
|
+
|
|
6
|
+
import unittest
|
|
7
|
+
|
|
8
|
+
from . import _test_utils
|
|
9
|
+
import brotli
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def _get_original_name(test_data):
|
|
13
|
+
return test_data.split('.compressed')[0]
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class TestDecompress(_test_utils.TestCase):
|
|
17
|
+
|
|
18
|
+
def _check_decompression(self, test_data):
|
|
19
|
+
# Verify decompression matches the original.
|
|
20
|
+
temp_uncompressed = _test_utils.get_temp_uncompressed_name(test_data)
|
|
21
|
+
original = _get_original_name(test_data)
|
|
22
|
+
self.assertFilesMatch(temp_uncompressed, original)
|
|
23
|
+
|
|
24
|
+
def _decompress(self, test_data):
|
|
25
|
+
temp_uncompressed = _test_utils.get_temp_uncompressed_name(test_data)
|
|
26
|
+
with open(temp_uncompressed, 'wb') as out_file:
|
|
27
|
+
with open(test_data, 'rb') as in_file:
|
|
28
|
+
out_file.write(brotli.decompress(in_file.read()))
|
|
29
|
+
|
|
30
|
+
def _test_decompress(self, test_data):
|
|
31
|
+
self._decompress(test_data)
|
|
32
|
+
self._check_decompression(test_data)
|
|
33
|
+
|
|
34
|
+
def test_garbage_appended(self):
|
|
35
|
+
with self.assertRaises(brotli.error):
|
|
36
|
+
brotli.decompress(brotli.compress(b'a') + b'a')
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
_test_utils.generate_test_methods(TestDecompress, for_decompression=True)
|
|
40
|
+
|
|
41
|
+
if __name__ == '__main__':
|
|
42
|
+
unittest.main()
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Copyright 2016 The Brotli Authors. All rights reserved.
|
|
2
|
+
#
|
|
3
|
+
# Distributed under MIT license.
|
|
4
|
+
# See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
|
|
5
|
+
|
|
6
|
+
import functools
|
|
7
|
+
import unittest
|
|
8
|
+
|
|
9
|
+
from . import _test_utils
|
|
10
|
+
import brotli
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def _get_original_name(test_data):
|
|
14
|
+
return test_data.split('.compressed')[0]
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class TestDecompressor(_test_utils.TestCase):
|
|
18
|
+
|
|
19
|
+
CHUNK_SIZE = 1
|
|
20
|
+
|
|
21
|
+
def setUp(self):
|
|
22
|
+
self.decompressor = brotli.Decompressor()
|
|
23
|
+
|
|
24
|
+
def tearDown(self):
|
|
25
|
+
self.decompressor = None
|
|
26
|
+
|
|
27
|
+
def _check_decompression(self, test_data):
|
|
28
|
+
# Verify decompression matches the original.
|
|
29
|
+
temp_uncompressed = _test_utils.get_temp_uncompressed_name(test_data)
|
|
30
|
+
original = _get_original_name(test_data)
|
|
31
|
+
self.assertFilesMatch(temp_uncompressed, original)
|
|
32
|
+
|
|
33
|
+
def _decompress(self, test_data):
|
|
34
|
+
temp_uncompressed = _test_utils.get_temp_uncompressed_name(test_data)
|
|
35
|
+
with open(temp_uncompressed, 'wb') as out_file:
|
|
36
|
+
with open(test_data, 'rb') as in_file:
|
|
37
|
+
read_chunk = functools.partial(in_file.read, self.CHUNK_SIZE)
|
|
38
|
+
for data in iter(read_chunk, b''):
|
|
39
|
+
out_file.write(self.decompressor.process(data))
|
|
40
|
+
self.assertTrue(self.decompressor.is_finished())
|
|
41
|
+
|
|
42
|
+
def _test_decompress(self, test_data):
|
|
43
|
+
self._decompress(test_data)
|
|
44
|
+
self._check_decompression(test_data)
|
|
45
|
+
|
|
46
|
+
def test_garbage_appended(self):
|
|
47
|
+
with self.assertRaises(brotli.error):
|
|
48
|
+
self.decompressor.process(brotli.compress(b'a') + b'a')
|
|
49
|
+
|
|
50
|
+
def test_already_finished(self):
|
|
51
|
+
self.decompressor.process(brotli.compress(b'a'))
|
|
52
|
+
with self.assertRaises(brotli.error):
|
|
53
|
+
self.decompressor.process(b'a')
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
_test_utils.generate_test_methods(TestDecompressor, for_decompression=True)
|
|
57
|
+
|
|
58
|
+
if __name__ == '__main__':
|
|
59
|
+
unittest.main()
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
prefix=@prefix@
|
|
2
|
+
exec_prefix=@exec_prefix@
|
|
3
|
+
libdir=@libdir@
|
|
4
|
+
includedir=@includedir@
|
|
5
|
+
|
|
6
|
+
Name: libbrotlicommon
|
|
7
|
+
URL: https://github.com/google/brotli
|
|
8
|
+
Description: Brotli common dictionary library
|
|
9
|
+
Version: @PACKAGE_VERSION@
|
|
10
|
+
Libs: -L${libdir} -R${libdir} -lbrotlicommon
|
|
11
|
+
Cflags: -I${includedir}
|