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,84 @@
|
|
|
1
|
+
/* Copyright 2014 Google Inc. 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
|
+
|
|
7
|
+
/* Functions to convert brotli-related data structures into the
|
|
8
|
+
brotli bit stream. The functions here operate under
|
|
9
|
+
assumption that there is enough space in the storage, i.e., there are
|
|
10
|
+
no out-of-range checks anywhere.
|
|
11
|
+
|
|
12
|
+
These functions do bit addressing into a byte array. The byte array
|
|
13
|
+
is called "storage" and the index to the bit is called storage_ix
|
|
14
|
+
in function arguments. */
|
|
15
|
+
|
|
16
|
+
#ifndef BROTLI_ENC_BROTLI_BIT_STREAM_H_
|
|
17
|
+
#define BROTLI_ENC_BROTLI_BIT_STREAM_H_
|
|
18
|
+
|
|
19
|
+
#include "../common/context.h"
|
|
20
|
+
#include "../common/platform.h"
|
|
21
|
+
#include <brotli/types.h>
|
|
22
|
+
#include "./command.h"
|
|
23
|
+
#include "./entropy_encode.h"
|
|
24
|
+
#include "./memory.h"
|
|
25
|
+
#include "./metablock.h"
|
|
26
|
+
|
|
27
|
+
#if defined(__cplusplus) || defined(c_plusplus)
|
|
28
|
+
extern "C" {
|
|
29
|
+
#endif
|
|
30
|
+
|
|
31
|
+
/* All Store functions here will use a storage_ix, which is always the bit
|
|
32
|
+
position for the current storage. */
|
|
33
|
+
|
|
34
|
+
BROTLI_INTERNAL void BrotliStoreHuffmanTree(const uint8_t* depths, size_t num,
|
|
35
|
+
HuffmanTree* tree, size_t* storage_ix, uint8_t* storage);
|
|
36
|
+
|
|
37
|
+
BROTLI_INTERNAL void BrotliBuildAndStoreHuffmanTreeFast(
|
|
38
|
+
MemoryManager* m, const uint32_t* histogram, const size_t histogram_total,
|
|
39
|
+
const size_t max_bits, uint8_t* depth, uint16_t* bits, size_t* storage_ix,
|
|
40
|
+
uint8_t* storage);
|
|
41
|
+
|
|
42
|
+
/* REQUIRES: length > 0 */
|
|
43
|
+
/* REQUIRES: length <= (1 << 24) */
|
|
44
|
+
BROTLI_INTERNAL void BrotliStoreMetaBlock(MemoryManager* m,
|
|
45
|
+
const uint8_t* input, size_t start_pos, size_t length, size_t mask,
|
|
46
|
+
uint8_t prev_byte, uint8_t prev_byte2, BROTLI_BOOL is_last,
|
|
47
|
+
const BrotliEncoderParams* params, ContextType literal_context_mode,
|
|
48
|
+
const Command* commands, size_t n_commands, const MetaBlockSplit* mb,
|
|
49
|
+
size_t* storage_ix, uint8_t* storage);
|
|
50
|
+
|
|
51
|
+
/* Stores the meta-block without doing any block splitting, just collects
|
|
52
|
+
one histogram per block category and uses that for entropy coding.
|
|
53
|
+
REQUIRES: length > 0
|
|
54
|
+
REQUIRES: length <= (1 << 24) */
|
|
55
|
+
BROTLI_INTERNAL void BrotliStoreMetaBlockTrivial(MemoryManager* m,
|
|
56
|
+
const uint8_t* input, size_t start_pos, size_t length, size_t mask,
|
|
57
|
+
BROTLI_BOOL is_last, const BrotliEncoderParams* params,
|
|
58
|
+
const Command* commands, size_t n_commands,
|
|
59
|
+
size_t* storage_ix, uint8_t* storage);
|
|
60
|
+
|
|
61
|
+
/* Same as above, but uses static prefix codes for histograms with a only a few
|
|
62
|
+
symbols, and uses static code length prefix codes for all other histograms.
|
|
63
|
+
REQUIRES: length > 0
|
|
64
|
+
REQUIRES: length <= (1 << 24) */
|
|
65
|
+
BROTLI_INTERNAL void BrotliStoreMetaBlockFast(MemoryManager* m,
|
|
66
|
+
const uint8_t* input, size_t start_pos, size_t length, size_t mask,
|
|
67
|
+
BROTLI_BOOL is_last, const BrotliEncoderParams* params,
|
|
68
|
+
const Command* commands, size_t n_commands,
|
|
69
|
+
size_t* storage_ix, uint8_t* storage);
|
|
70
|
+
|
|
71
|
+
/* This is for storing uncompressed blocks (simple raw storage of
|
|
72
|
+
bytes-as-bytes).
|
|
73
|
+
REQUIRES: length > 0
|
|
74
|
+
REQUIRES: length <= (1 << 24) */
|
|
75
|
+
BROTLI_INTERNAL void BrotliStoreUncompressedMetaBlock(
|
|
76
|
+
BROTLI_BOOL is_final_block, const uint8_t* BROTLI_RESTRICT input,
|
|
77
|
+
size_t position, size_t mask, size_t len,
|
|
78
|
+
size_t* BROTLI_RESTRICT storage_ix, uint8_t* BROTLI_RESTRICT storage);
|
|
79
|
+
|
|
80
|
+
#if defined(__cplusplus) || defined(c_plusplus)
|
|
81
|
+
} /* extern "C" */
|
|
82
|
+
#endif
|
|
83
|
+
|
|
84
|
+
#endif /* BROTLI_ENC_BROTLI_BIT_STREAM_H_ */
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/* Copyright 2013 Google Inc. 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
|
+
|
|
7
|
+
/* Functions for clustering similar histograms together. */
|
|
8
|
+
|
|
9
|
+
#include "./cluster.h"
|
|
10
|
+
|
|
11
|
+
#include "../common/platform.h"
|
|
12
|
+
#include <brotli/types.h>
|
|
13
|
+
#include "./bit_cost.h" /* BrotliPopulationCost */
|
|
14
|
+
#include "./fast_log.h"
|
|
15
|
+
#include "./histogram.h"
|
|
16
|
+
#include "./memory.h"
|
|
17
|
+
|
|
18
|
+
#if defined(__cplusplus) || defined(c_plusplus)
|
|
19
|
+
extern "C" {
|
|
20
|
+
#endif
|
|
21
|
+
|
|
22
|
+
static BROTLI_INLINE BROTLI_BOOL HistogramPairIsLess(
|
|
23
|
+
const HistogramPair* p1, const HistogramPair* p2) {
|
|
24
|
+
if (p1->cost_diff != p2->cost_diff) {
|
|
25
|
+
return TO_BROTLI_BOOL(p1->cost_diff > p2->cost_diff);
|
|
26
|
+
}
|
|
27
|
+
return TO_BROTLI_BOOL((p1->idx2 - p1->idx1) > (p2->idx2 - p2->idx1));
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/* Returns entropy reduction of the context map when we combine two clusters. */
|
|
31
|
+
static BROTLI_INLINE double ClusterCostDiff(size_t size_a, size_t size_b) {
|
|
32
|
+
size_t size_c = size_a + size_b;
|
|
33
|
+
return (double)size_a * FastLog2(size_a) +
|
|
34
|
+
(double)size_b * FastLog2(size_b) -
|
|
35
|
+
(double)size_c * FastLog2(size_c);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
#define CODE(X) X
|
|
39
|
+
|
|
40
|
+
#define FN(X) X ## Literal
|
|
41
|
+
#include "./cluster_inc.h" /* NOLINT(build/include) */
|
|
42
|
+
#undef FN
|
|
43
|
+
|
|
44
|
+
#define FN(X) X ## Command
|
|
45
|
+
#include "./cluster_inc.h" /* NOLINT(build/include) */
|
|
46
|
+
#undef FN
|
|
47
|
+
|
|
48
|
+
#define FN(X) X ## Distance
|
|
49
|
+
#include "./cluster_inc.h" /* NOLINT(build/include) */
|
|
50
|
+
#undef FN
|
|
51
|
+
|
|
52
|
+
#undef CODE
|
|
53
|
+
|
|
54
|
+
#if defined(__cplusplus) || defined(c_plusplus)
|
|
55
|
+
} /* extern "C" */
|
|
56
|
+
#endif
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/* Copyright 2013 Google Inc. 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
|
+
|
|
7
|
+
/* Functions for clustering similar histograms together. */
|
|
8
|
+
|
|
9
|
+
#ifndef BROTLI_ENC_CLUSTER_H_
|
|
10
|
+
#define BROTLI_ENC_CLUSTER_H_
|
|
11
|
+
|
|
12
|
+
#include "../common/platform.h"
|
|
13
|
+
#include <brotli/types.h>
|
|
14
|
+
#include "./histogram.h"
|
|
15
|
+
#include "./memory.h"
|
|
16
|
+
|
|
17
|
+
#if defined(__cplusplus) || defined(c_plusplus)
|
|
18
|
+
extern "C" {
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
typedef struct HistogramPair {
|
|
22
|
+
uint32_t idx1;
|
|
23
|
+
uint32_t idx2;
|
|
24
|
+
double cost_combo;
|
|
25
|
+
double cost_diff;
|
|
26
|
+
} HistogramPair;
|
|
27
|
+
|
|
28
|
+
#define CODE(X) /* Declaration */;
|
|
29
|
+
|
|
30
|
+
#define FN(X) X ## Literal
|
|
31
|
+
#include "./cluster_inc.h" /* NOLINT(build/include) */
|
|
32
|
+
#undef FN
|
|
33
|
+
|
|
34
|
+
#define FN(X) X ## Command
|
|
35
|
+
#include "./cluster_inc.h" /* NOLINT(build/include) */
|
|
36
|
+
#undef FN
|
|
37
|
+
|
|
38
|
+
#define FN(X) X ## Distance
|
|
39
|
+
#include "./cluster_inc.h" /* NOLINT(build/include) */
|
|
40
|
+
#undef FN
|
|
41
|
+
|
|
42
|
+
#undef CODE
|
|
43
|
+
|
|
44
|
+
#if defined(__cplusplus) || defined(c_plusplus)
|
|
45
|
+
} /* extern "C" */
|
|
46
|
+
#endif
|
|
47
|
+
|
|
48
|
+
#endif /* BROTLI_ENC_CLUSTER_H_ */
|
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
/* NOLINT(build/header_guard) */
|
|
2
|
+
/* Copyright 2013 Google Inc. All Rights Reserved.
|
|
3
|
+
|
|
4
|
+
Distributed under MIT license.
|
|
5
|
+
See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/* template parameters: FN, CODE */
|
|
9
|
+
|
|
10
|
+
#define HistogramType FN(Histogram)
|
|
11
|
+
|
|
12
|
+
/* Computes the bit cost reduction by combining out[idx1] and out[idx2] and if
|
|
13
|
+
it is below a threshold, stores the pair (idx1, idx2) in the *pairs queue. */
|
|
14
|
+
BROTLI_INTERNAL void FN(BrotliCompareAndPushToQueue)(
|
|
15
|
+
const HistogramType* out, const uint32_t* cluster_size, uint32_t idx1,
|
|
16
|
+
uint32_t idx2, size_t max_num_pairs, HistogramPair* pairs,
|
|
17
|
+
size_t* num_pairs) CODE({
|
|
18
|
+
BROTLI_BOOL is_good_pair = BROTLI_FALSE;
|
|
19
|
+
HistogramPair p;
|
|
20
|
+
p.idx1 = p.idx2 = 0;
|
|
21
|
+
p.cost_diff = p.cost_combo = 0;
|
|
22
|
+
if (idx1 == idx2) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
if (idx2 < idx1) {
|
|
26
|
+
uint32_t t = idx2;
|
|
27
|
+
idx2 = idx1;
|
|
28
|
+
idx1 = t;
|
|
29
|
+
}
|
|
30
|
+
p.idx1 = idx1;
|
|
31
|
+
p.idx2 = idx2;
|
|
32
|
+
p.cost_diff = 0.5 * ClusterCostDiff(cluster_size[idx1], cluster_size[idx2]);
|
|
33
|
+
p.cost_diff -= out[idx1].bit_cost_;
|
|
34
|
+
p.cost_diff -= out[idx2].bit_cost_;
|
|
35
|
+
|
|
36
|
+
if (out[idx1].total_count_ == 0) {
|
|
37
|
+
p.cost_combo = out[idx2].bit_cost_;
|
|
38
|
+
is_good_pair = BROTLI_TRUE;
|
|
39
|
+
} else if (out[idx2].total_count_ == 0) {
|
|
40
|
+
p.cost_combo = out[idx1].bit_cost_;
|
|
41
|
+
is_good_pair = BROTLI_TRUE;
|
|
42
|
+
} else {
|
|
43
|
+
double threshold = *num_pairs == 0 ? 1e99 :
|
|
44
|
+
BROTLI_MAX(double, 0.0, pairs[0].cost_diff);
|
|
45
|
+
HistogramType combo = out[idx1];
|
|
46
|
+
double cost_combo;
|
|
47
|
+
FN(HistogramAddHistogram)(&combo, &out[idx2]);
|
|
48
|
+
cost_combo = FN(BrotliPopulationCost)(&combo);
|
|
49
|
+
if (cost_combo < threshold - p.cost_diff) {
|
|
50
|
+
p.cost_combo = cost_combo;
|
|
51
|
+
is_good_pair = BROTLI_TRUE;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
if (is_good_pair) {
|
|
55
|
+
p.cost_diff += p.cost_combo;
|
|
56
|
+
if (*num_pairs > 0 && HistogramPairIsLess(&pairs[0], &p)) {
|
|
57
|
+
/* Replace the top of the queue if needed. */
|
|
58
|
+
if (*num_pairs < max_num_pairs) {
|
|
59
|
+
pairs[*num_pairs] = pairs[0];
|
|
60
|
+
++(*num_pairs);
|
|
61
|
+
}
|
|
62
|
+
pairs[0] = p;
|
|
63
|
+
} else if (*num_pairs < max_num_pairs) {
|
|
64
|
+
pairs[*num_pairs] = p;
|
|
65
|
+
++(*num_pairs);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
})
|
|
69
|
+
|
|
70
|
+
BROTLI_INTERNAL size_t FN(BrotliHistogramCombine)(HistogramType* out,
|
|
71
|
+
uint32_t* cluster_size,
|
|
72
|
+
uint32_t* symbols,
|
|
73
|
+
uint32_t* clusters,
|
|
74
|
+
HistogramPair* pairs,
|
|
75
|
+
size_t num_clusters,
|
|
76
|
+
size_t symbols_size,
|
|
77
|
+
size_t max_clusters,
|
|
78
|
+
size_t max_num_pairs) CODE({
|
|
79
|
+
double cost_diff_threshold = 0.0;
|
|
80
|
+
size_t min_cluster_size = 1;
|
|
81
|
+
size_t num_pairs = 0;
|
|
82
|
+
|
|
83
|
+
{
|
|
84
|
+
/* We maintain a vector of histogram pairs, with the property that the pair
|
|
85
|
+
with the maximum bit cost reduction is the first. */
|
|
86
|
+
size_t idx1;
|
|
87
|
+
for (idx1 = 0; idx1 < num_clusters; ++idx1) {
|
|
88
|
+
size_t idx2;
|
|
89
|
+
for (idx2 = idx1 + 1; idx2 < num_clusters; ++idx2) {
|
|
90
|
+
FN(BrotliCompareAndPushToQueue)(out, cluster_size, clusters[idx1],
|
|
91
|
+
clusters[idx2], max_num_pairs, &pairs[0], &num_pairs);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
while (num_clusters > min_cluster_size) {
|
|
97
|
+
uint32_t best_idx1;
|
|
98
|
+
uint32_t best_idx2;
|
|
99
|
+
size_t i;
|
|
100
|
+
if (pairs[0].cost_diff >= cost_diff_threshold) {
|
|
101
|
+
cost_diff_threshold = 1e99;
|
|
102
|
+
min_cluster_size = max_clusters;
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
/* Take the best pair from the top of heap. */
|
|
106
|
+
best_idx1 = pairs[0].idx1;
|
|
107
|
+
best_idx2 = pairs[0].idx2;
|
|
108
|
+
FN(HistogramAddHistogram)(&out[best_idx1], &out[best_idx2]);
|
|
109
|
+
out[best_idx1].bit_cost_ = pairs[0].cost_combo;
|
|
110
|
+
cluster_size[best_idx1] += cluster_size[best_idx2];
|
|
111
|
+
for (i = 0; i < symbols_size; ++i) {
|
|
112
|
+
if (symbols[i] == best_idx2) {
|
|
113
|
+
symbols[i] = best_idx1;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
for (i = 0; i < num_clusters; ++i) {
|
|
117
|
+
if (clusters[i] == best_idx2) {
|
|
118
|
+
memmove(&clusters[i], &clusters[i + 1],
|
|
119
|
+
(num_clusters - i - 1) * sizeof(clusters[0]));
|
|
120
|
+
break;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
--num_clusters;
|
|
124
|
+
{
|
|
125
|
+
/* Remove pairs intersecting the just combined best pair. */
|
|
126
|
+
size_t copy_to_idx = 0;
|
|
127
|
+
for (i = 0; i < num_pairs; ++i) {
|
|
128
|
+
HistogramPair* p = &pairs[i];
|
|
129
|
+
if (p->idx1 == best_idx1 || p->idx2 == best_idx1 ||
|
|
130
|
+
p->idx1 == best_idx2 || p->idx2 == best_idx2) {
|
|
131
|
+
/* Remove invalid pair from the queue. */
|
|
132
|
+
continue;
|
|
133
|
+
}
|
|
134
|
+
if (HistogramPairIsLess(&pairs[0], p)) {
|
|
135
|
+
/* Replace the top of the queue if needed. */
|
|
136
|
+
HistogramPair front = pairs[0];
|
|
137
|
+
pairs[0] = *p;
|
|
138
|
+
pairs[copy_to_idx] = front;
|
|
139
|
+
} else {
|
|
140
|
+
pairs[copy_to_idx] = *p;
|
|
141
|
+
}
|
|
142
|
+
++copy_to_idx;
|
|
143
|
+
}
|
|
144
|
+
num_pairs = copy_to_idx;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/* Push new pairs formed with the combined histogram to the heap. */
|
|
148
|
+
for (i = 0; i < num_clusters; ++i) {
|
|
149
|
+
FN(BrotliCompareAndPushToQueue)(out, cluster_size, best_idx1, clusters[i],
|
|
150
|
+
max_num_pairs, &pairs[0], &num_pairs);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return num_clusters;
|
|
154
|
+
})
|
|
155
|
+
|
|
156
|
+
/* What is the bit cost of moving histogram from cur_symbol to candidate. */
|
|
157
|
+
BROTLI_INTERNAL double FN(BrotliHistogramBitCostDistance)(
|
|
158
|
+
const HistogramType* histogram, const HistogramType* candidate) CODE({
|
|
159
|
+
if (histogram->total_count_ == 0) {
|
|
160
|
+
return 0.0;
|
|
161
|
+
} else {
|
|
162
|
+
HistogramType tmp = *histogram;
|
|
163
|
+
FN(HistogramAddHistogram)(&tmp, candidate);
|
|
164
|
+
return FN(BrotliPopulationCost)(&tmp) - candidate->bit_cost_;
|
|
165
|
+
}
|
|
166
|
+
})
|
|
167
|
+
|
|
168
|
+
/* Find the best 'out' histogram for each of the 'in' histograms.
|
|
169
|
+
When called, clusters[0..num_clusters) contains the unique values from
|
|
170
|
+
symbols[0..in_size), but this property is not preserved in this function.
|
|
171
|
+
Note: we assume that out[]->bit_cost_ is already up-to-date. */
|
|
172
|
+
BROTLI_INTERNAL void FN(BrotliHistogramRemap)(const HistogramType* in,
|
|
173
|
+
size_t in_size, const uint32_t* clusters, size_t num_clusters,
|
|
174
|
+
HistogramType* out, uint32_t* symbols) CODE({
|
|
175
|
+
size_t i;
|
|
176
|
+
for (i = 0; i < in_size; ++i) {
|
|
177
|
+
uint32_t best_out = i == 0 ? symbols[0] : symbols[i - 1];
|
|
178
|
+
double best_bits =
|
|
179
|
+
FN(BrotliHistogramBitCostDistance)(&in[i], &out[best_out]);
|
|
180
|
+
size_t j;
|
|
181
|
+
for (j = 0; j < num_clusters; ++j) {
|
|
182
|
+
const double cur_bits =
|
|
183
|
+
FN(BrotliHistogramBitCostDistance)(&in[i], &out[clusters[j]]);
|
|
184
|
+
if (cur_bits < best_bits) {
|
|
185
|
+
best_bits = cur_bits;
|
|
186
|
+
best_out = clusters[j];
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
symbols[i] = best_out;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/* Recompute each out based on raw and symbols. */
|
|
193
|
+
for (i = 0; i < num_clusters; ++i) {
|
|
194
|
+
FN(HistogramClear)(&out[clusters[i]]);
|
|
195
|
+
}
|
|
196
|
+
for (i = 0; i < in_size; ++i) {
|
|
197
|
+
FN(HistogramAddHistogram)(&out[symbols[i]], &in[i]);
|
|
198
|
+
}
|
|
199
|
+
})
|
|
200
|
+
|
|
201
|
+
/* Reorders elements of the out[0..length) array and changes values in
|
|
202
|
+
symbols[0..length) array in the following way:
|
|
203
|
+
* when called, symbols[] contains indexes into out[], and has N unique
|
|
204
|
+
values (possibly N < length)
|
|
205
|
+
* on return, symbols'[i] = f(symbols[i]) and
|
|
206
|
+
out'[symbols'[i]] = out[symbols[i]], for each 0 <= i < length,
|
|
207
|
+
where f is a bijection between the range of symbols[] and [0..N), and
|
|
208
|
+
the first occurrences of values in symbols'[i] come in consecutive
|
|
209
|
+
increasing order.
|
|
210
|
+
Returns N, the number of unique values in symbols[]. */
|
|
211
|
+
BROTLI_INTERNAL size_t FN(BrotliHistogramReindex)(MemoryManager* m,
|
|
212
|
+
HistogramType* out, uint32_t* symbols, size_t length) CODE({
|
|
213
|
+
static const uint32_t kInvalidIndex = BROTLI_UINT32_MAX;
|
|
214
|
+
uint32_t* new_index = BROTLI_ALLOC(m, uint32_t, length);
|
|
215
|
+
uint32_t next_index;
|
|
216
|
+
HistogramType* tmp;
|
|
217
|
+
size_t i;
|
|
218
|
+
if (BROTLI_IS_OOM(m) || BROTLI_IS_NULL(new_index)) return 0;
|
|
219
|
+
for (i = 0; i < length; ++i) {
|
|
220
|
+
new_index[i] = kInvalidIndex;
|
|
221
|
+
}
|
|
222
|
+
next_index = 0;
|
|
223
|
+
for (i = 0; i < length; ++i) {
|
|
224
|
+
if (new_index[symbols[i]] == kInvalidIndex) {
|
|
225
|
+
new_index[symbols[i]] = next_index;
|
|
226
|
+
++next_index;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
/* TODO: by using idea of "cycle-sort" we can avoid allocation of
|
|
230
|
+
tmp and reduce the number of copying by the factor of 2. */
|
|
231
|
+
tmp = BROTLI_ALLOC(m, HistogramType, next_index);
|
|
232
|
+
if (BROTLI_IS_OOM(m) || BROTLI_IS_NULL(tmp)) return 0;
|
|
233
|
+
next_index = 0;
|
|
234
|
+
for (i = 0; i < length; ++i) {
|
|
235
|
+
if (new_index[symbols[i]] == next_index) {
|
|
236
|
+
tmp[next_index] = out[symbols[i]];
|
|
237
|
+
++next_index;
|
|
238
|
+
}
|
|
239
|
+
symbols[i] = new_index[symbols[i]];
|
|
240
|
+
}
|
|
241
|
+
BROTLI_FREE(m, new_index);
|
|
242
|
+
for (i = 0; i < next_index; ++i) {
|
|
243
|
+
out[i] = tmp[i];
|
|
244
|
+
}
|
|
245
|
+
BROTLI_FREE(m, tmp);
|
|
246
|
+
return next_index;
|
|
247
|
+
})
|
|
248
|
+
|
|
249
|
+
BROTLI_INTERNAL void FN(BrotliClusterHistograms)(
|
|
250
|
+
MemoryManager* m, const HistogramType* in, const size_t in_size,
|
|
251
|
+
size_t max_histograms, HistogramType* out, size_t* out_size,
|
|
252
|
+
uint32_t* histogram_symbols) CODE({
|
|
253
|
+
uint32_t* cluster_size = BROTLI_ALLOC(m, uint32_t, in_size);
|
|
254
|
+
uint32_t* clusters = BROTLI_ALLOC(m, uint32_t, in_size);
|
|
255
|
+
size_t num_clusters = 0;
|
|
256
|
+
const size_t max_input_histograms = 64;
|
|
257
|
+
size_t pairs_capacity = max_input_histograms * max_input_histograms / 2;
|
|
258
|
+
/* For the first pass of clustering, we allow all pairs. */
|
|
259
|
+
HistogramPair* pairs = BROTLI_ALLOC(m, HistogramPair, pairs_capacity + 1);
|
|
260
|
+
size_t i;
|
|
261
|
+
|
|
262
|
+
if (BROTLI_IS_OOM(m) || BROTLI_IS_NULL(cluster_size) ||
|
|
263
|
+
BROTLI_IS_NULL(clusters) || BROTLI_IS_NULL(pairs)) {
|
|
264
|
+
return;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
for (i = 0; i < in_size; ++i) {
|
|
268
|
+
cluster_size[i] = 1;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
for (i = 0; i < in_size; ++i) {
|
|
272
|
+
out[i] = in[i];
|
|
273
|
+
out[i].bit_cost_ = FN(BrotliPopulationCost)(&in[i]);
|
|
274
|
+
histogram_symbols[i] = (uint32_t)i;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
for (i = 0; i < in_size; i += max_input_histograms) {
|
|
278
|
+
size_t num_to_combine =
|
|
279
|
+
BROTLI_MIN(size_t, in_size - i, max_input_histograms);
|
|
280
|
+
size_t num_new_clusters;
|
|
281
|
+
size_t j;
|
|
282
|
+
for (j = 0; j < num_to_combine; ++j) {
|
|
283
|
+
clusters[num_clusters + j] = (uint32_t)(i + j);
|
|
284
|
+
}
|
|
285
|
+
num_new_clusters =
|
|
286
|
+
FN(BrotliHistogramCombine)(out, cluster_size,
|
|
287
|
+
&histogram_symbols[i],
|
|
288
|
+
&clusters[num_clusters], pairs,
|
|
289
|
+
num_to_combine, num_to_combine,
|
|
290
|
+
max_histograms, pairs_capacity);
|
|
291
|
+
num_clusters += num_new_clusters;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
{
|
|
295
|
+
/* For the second pass, we limit the total number of histogram pairs.
|
|
296
|
+
After this limit is reached, we only keep searching for the best pair. */
|
|
297
|
+
size_t max_num_pairs = BROTLI_MIN(size_t,
|
|
298
|
+
64 * num_clusters, (num_clusters / 2) * num_clusters);
|
|
299
|
+
BROTLI_ENSURE_CAPACITY(
|
|
300
|
+
m, HistogramPair, pairs, pairs_capacity, max_num_pairs + 1);
|
|
301
|
+
if (BROTLI_IS_OOM(m)) return;
|
|
302
|
+
|
|
303
|
+
/* Collapse similar histograms. */
|
|
304
|
+
num_clusters = FN(BrotliHistogramCombine)(out, cluster_size,
|
|
305
|
+
histogram_symbols, clusters,
|
|
306
|
+
pairs, num_clusters, in_size,
|
|
307
|
+
max_histograms, max_num_pairs);
|
|
308
|
+
}
|
|
309
|
+
BROTLI_FREE(m, pairs);
|
|
310
|
+
BROTLI_FREE(m, cluster_size);
|
|
311
|
+
/* Find the optimal map from original histograms to the final ones. */
|
|
312
|
+
FN(BrotliHistogramRemap)(in, in_size, clusters, num_clusters,
|
|
313
|
+
out, histogram_symbols);
|
|
314
|
+
BROTLI_FREE(m, clusters);
|
|
315
|
+
/* Convert the context map to a canonical form. */
|
|
316
|
+
*out_size = FN(BrotliHistogramReindex)(m, out, histogram_symbols, in_size);
|
|
317
|
+
if (BROTLI_IS_OOM(m)) return;
|
|
318
|
+
})
|
|
319
|
+
|
|
320
|
+
#undef HistogramType
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/* Copyright 2013 Google Inc. 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
|
+
|
|
7
|
+
#include "./command.h"
|
|
8
|
+
|
|
9
|
+
#include <brotli/types.h>
|
|
10
|
+
|
|
11
|
+
#if defined(__cplusplus) || defined(c_plusplus)
|
|
12
|
+
extern "C" {
|
|
13
|
+
#endif
|
|
14
|
+
|
|
15
|
+
const uint32_t kBrotliInsBase[BROTLI_NUM_INS_COPY_CODES] = {
|
|
16
|
+
0, 1, 2, 3, 4, 5, 6, 8, 10, 14, 18, 26,
|
|
17
|
+
34, 50, 66, 98, 130, 194, 322, 578, 1090, 2114, 6210, 22594};
|
|
18
|
+
const uint32_t kBrotliInsExtra[BROTLI_NUM_INS_COPY_CODES] = {
|
|
19
|
+
0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 8, 9, 10, 12, 14, 24};
|
|
20
|
+
const uint32_t kBrotliCopyBase[BROTLI_NUM_INS_COPY_CODES] = {
|
|
21
|
+
2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 18,
|
|
22
|
+
22, 30, 38, 54, 70, 102, 134, 198, 326, 582, 1094, 2118};
|
|
23
|
+
const uint32_t kBrotliCopyExtra[BROTLI_NUM_INS_COPY_CODES] = {
|
|
24
|
+
0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 8, 9, 10, 24};
|
|
25
|
+
|
|
26
|
+
#if defined(__cplusplus) || defined(c_plusplus)
|
|
27
|
+
} /* extern "C" */
|
|
28
|
+
#endif
|