zstd-native-ruby 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/LICENSE +4 -2
- data/README.md +50 -23
- data/ext/zstd_native/Makefile +269 -0
- data/ext/zstd_native/extconf.rb +37 -0
- data/{vendor → ext/zstd_native}/zstd/CONTRIBUTING.md +1 -6
- data/{vendor → ext/zstd_native}/zstd/Makefile +6 -5
- data/{vendor → ext/zstd_native}/zstd/README.md +35 -42
- data/ext/zstd_native/zstd/build/cmake/CMakeLists.txt +228 -0
- data/{vendor → ext/zstd_native}/zstd/build/cmake/CMakeModules/AddZstdCompilationFlags.cmake +19 -21
- data/{vendor → ext/zstd_native}/zstd/build/cmake/README.md +0 -9
- data/{vendor → ext/zstd_native}/zstd/build/cmake/lib/CMakeLists.txt +6 -9
- data/{vendor → ext/zstd_native}/zstd/build/meson/lib/meson.build +0 -4
- data/{vendor → ext/zstd_native}/zstd/build/meson/meson.build +2 -1
- data/{vendor → ext/zstd_native}/zstd/contrib/externalSequenceProducer/main.c +2 -3
- data/{vendor → ext/zstd_native}/zstd/contrib/largeNbDicts/largeNbDicts.c +0 -2
- data/{vendor → ext/zstd_native}/zstd/contrib/linux-kernel/linux_zstd.h +0 -166
- data/{vendor → ext/zstd_native}/zstd/contrib/linux-kernel/zstd_compress_module.c +0 -49
- data/{vendor → ext/zstd_native}/zstd/contrib/linux-kernel/zstd_decompress_module.c +0 -36
- data/{vendor → ext/zstd_native}/zstd/contrib/premake/zstd.lua +0 -1
- data/{vendor → ext/zstd_native}/zstd/contrib/pzstd/Logging.h +0 -1
- data/{vendor → ext/zstd_native}/zstd/contrib/seekable_format/examples/Makefile +1 -3
- data/{vendor → ext/zstd_native}/zstd/contrib/seekable_format/examples/parallel_compression.c +84 -124
- data/{vendor → ext/zstd_native}/zstd/contrib/seekable_format/examples/parallel_processing.c +5 -2
- data/{vendor → ext/zstd_native}/zstd/contrib/seekable_format/tests/Makefile +2 -22
- data/{vendor → ext/zstd_native}/zstd/contrib/seekable_format/tests/seekable_tests.c +0 -12
- data/{vendor → ext/zstd_native}/zstd/doc/zstd_compression_format.md +2 -3
- data/{vendor → ext/zstd_native}/zstd/doc/zstd_manual.html +24 -31
- data/{vendor → ext/zstd_native}/zstd/lib/Makefile +9 -9
- data/{vendor → ext/zstd_native}/zstd/lib/README.md +4 -23
- data/{vendor → ext/zstd_native}/zstd/lib/common/bits.h +1 -1
- data/{vendor → ext/zstd_native}/zstd/lib/common/compiler.h +6 -24
- data/ext/zstd_native/zstd/lib/common/debug.o +0 -0
- data/{vendor → ext/zstd_native}/zstd/lib/common/entropy_common.o +0 -0
- data/{vendor → ext/zstd_native}/zstd/lib/common/error_private.o +0 -0
- data/{vendor → ext/zstd_native}/zstd/lib/common/fse_decompress.o +0 -0
- data/ext/zstd_native/zstd/lib/common/pool.o +0 -0
- data/{vendor → ext/zstd_native}/zstd/lib/common/portability_macros.h +0 -19
- data/{vendor → ext/zstd_native}/zstd/lib/common/threading.c +2 -16
- data/ext/zstd_native/zstd/lib/common/threading.o +0 -0
- data/{vendor → ext/zstd_native}/zstd/lib/common/xxhash.o +0 -0
- data/{vendor → ext/zstd_native}/zstd/lib/common/zstd_common.c +0 -9
- data/ext/zstd_native/zstd/lib/common/zstd_common.o +0 -0
- data/{vendor → ext/zstd_native}/zstd/lib/common/zstd_internal.h +2 -4
- data/{vendor → ext/zstd_native}/zstd/lib/compress/fse_compress.o +0 -0
- data/ext/zstd_native/zstd/lib/compress/hist.c +191 -0
- data/{vendor → ext/zstd_native}/zstd/lib/compress/hist.h +0 -4
- data/ext/zstd_native/zstd/lib/compress/hist.o +0 -0
- data/{vendor → ext/zstd_native}/zstd/lib/compress/huf_compress.c +0 -1
- data/{vendor → ext/zstd_native}/zstd/lib/compress/huf_compress.o +0 -0
- data/{vendor → ext/zstd_native}/zstd/lib/compress/zstd_compress.c +16 -535
- data/ext/zstd_native/zstd/lib/compress/zstd_compress.o +0 -0
- data/{vendor → ext/zstd_native}/zstd/lib/compress/zstd_compress_internal.h +3 -3
- data/{vendor → ext/zstd_native}/zstd/lib/compress/zstd_compress_literals.o +0 -0
- data/{vendor → ext/zstd_native}/zstd/lib/compress/zstd_compress_sequences.o +0 -0
- data/ext/zstd_native/zstd/lib/compress/zstd_compress_superblock.o +0 -0
- data/ext/zstd_native/zstd/lib/compress/zstd_double_fast.o +0 -0
- data/ext/zstd_native/zstd/lib/compress/zstd_fast.o +0 -0
- data/{vendor → ext/zstd_native}/zstd/lib/compress/zstd_lazy.c +3 -47
- data/ext/zstd_native/zstd/lib/compress/zstd_lazy.o +0 -0
- data/ext/zstd_native/zstd/lib/compress/zstd_ldm.o +0 -0
- data/{vendor → ext/zstd_native}/zstd/lib/compress/zstd_opt.c +10 -2
- data/ext/zstd_native/zstd/lib/compress/zstd_opt.o +0 -0
- data/{vendor → ext/zstd_native}/zstd/lib/compress/zstd_preSplit.o +0 -0
- data/{vendor → ext/zstd_native}/zstd/lib/compress/zstdmt_compress.c +14 -15
- data/ext/zstd_native/zstd/lib/compress/zstdmt_compress.o +0 -0
- data/{vendor → ext/zstd_native}/zstd/lib/decompress/huf_decompress.c +48 -57
- data/ext/zstd_native/zstd/lib/decompress/huf_decompress.o +0 -0
- data/{vendor → ext/zstd_native}/zstd/lib/decompress/huf_decompress_amd64.S +18 -182
- data/{vendor → ext/zstd_native}/zstd/lib/decompress/zstd_ddict.o +0 -0
- data/{vendor → ext/zstd_native}/zstd/lib/decompress/zstd_decompress.o +0 -0
- data/{vendor → ext/zstd_native}/zstd/lib/decompress/zstd_decompress_block.c +65 -167
- data/ext/zstd_native/zstd/lib/decompress/zstd_decompress_block.o +0 -0
- data/{vendor → ext/zstd_native}/zstd/lib/dictBuilder/cover.c +67 -98
- data/ext/zstd_native/zstd/lib/dictBuilder/cover.o +0 -0
- data/{vendor → ext/zstd_native}/zstd/lib/dictBuilder/divsufsort.c +4 -4
- data/ext/zstd_native/zstd/lib/dictBuilder/divsufsort.o +0 -0
- data/{vendor → ext/zstd_native}/zstd/lib/dictBuilder/fastcover.c +40 -39
- data/ext/zstd_native/zstd/lib/dictBuilder/fastcover.o +0 -0
- data/{vendor → ext/zstd_native}/zstd/lib/dictBuilder/zdict.c +14 -18
- data/ext/zstd_native/zstd/lib/dictBuilder/zdict.o +0 -0
- data/ext/zstd_native/zstd/lib/dll/example/build_package.bat +20 -0
- data/{vendor → ext/zstd_native}/zstd/lib/legacy/zstd_v01.c +5 -6
- data/{vendor → ext/zstd_native}/zstd/lib/legacy/zstd_v03.c +1 -1
- data/{vendor → ext/zstd_native}/zstd/lib/legacy/zstd_v04.c +1 -1
- data/{vendor → ext/zstd_native}/zstd/lib/legacy/zstd_v05.c +1 -1
- data/{vendor → ext/zstd_native}/zstd/lib/legacy/zstd_v06.c +1 -1
- data/{vendor → ext/zstd_native}/zstd/lib/libzstd.mk +1 -4
- data/{vendor → ext/zstd_native}/zstd/lib/libzstd.pc.in +0 -1
- data/{vendor → ext/zstd_native}/zstd/lib/zstd.h +30 -41
- data/{vendor → ext/zstd_native}/zstd/programs/Makefile +8 -8
- data/{vendor → ext/zstd_native}/zstd/programs/README.md +1 -1
- data/{vendor → ext/zstd_native}/zstd/programs/benchzstd.c +62 -51
- data/{vendor → ext/zstd_native}/zstd/programs/benchzstd.h +2 -2
- data/{vendor → ext/zstd_native}/zstd/programs/dibio.c +5 -12
- data/{vendor → ext/zstd_native}/zstd/programs/fileio.c +152 -405
- data/{vendor → ext/zstd_native}/zstd/programs/fileio.h +1 -1
- data/{vendor → ext/zstd_native}/zstd/programs/fileio_types.h +1 -1
- data/{vendor → ext/zstd_native}/zstd/programs/timefn.c +1 -3
- data/{vendor → ext/zstd_native}/zstd/programs/util.c +65 -153
- data/{vendor → ext/zstd_native}/zstd/programs/util.h +2 -4
- data/{vendor → ext/zstd_native}/zstd/programs/zstd.1 +37 -225
- data/{vendor → ext/zstd_native}/zstd/programs/zstd.1.md +14 -14
- data/{vendor → ext/zstd_native}/zstd/programs/zstdcli.c +65 -82
- data/{vendor → ext/zstd_native}/zstd/programs/zstdcli_trace.c +1 -2
- data/{vendor → ext/zstd_native}/zstd/programs/zstdgrep.1 +1 -1
- data/{vendor → ext/zstd_native}/zstd/programs/zstdless.1 +1 -1
- data/{vendor → ext/zstd_native}/zstd/tests/Makefile +4 -8
- data/{vendor → ext/zstd_native}/zstd/tests/automated_benchmarking.py +2 -2
- data/{vendor/zstd/tests/largeDictionary.c → ext/zstd_native/zstd/tests/bigdict.c} +18 -16
- data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/basic/help.sh.stdout.glob +1 -1
- data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/common/platform.sh +0 -11
- data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/compression/multi-threaded.sh +0 -7
- data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/compression/multi-threaded.sh.stderr.exact +0 -10
- data/ext/zstd_native/zstd/tests/cli-tests/dict-builder/no-inputs.sh.stderr.exact +5 -0
- data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/file-stat/compress-file-to-dir-without-write-perm.sh.stderr.exact +0 -4
- data/{vendor/zstd/tests/cli-tests/file-stat/compress-file-to-file.sh.stderr.glob → ext/zstd_native/zstd/tests/cli-tests/file-stat/compress-file-to-file.sh.stderr.exact} +0 -4
- data/{vendor/zstd/tests/cli-tests/file-stat/compress-stdin-to-file.sh.stderr.glob → ext/zstd_native/zstd/tests/cli-tests/file-stat/compress-stdin-to-file.sh.stderr.exact} +0 -4
- data/{vendor/zstd/tests/cli-tests/file-stat/decompress-file-to-file.sh.stderr.glob → ext/zstd_native/zstd/tests/cli-tests/file-stat/decompress-file-to-file.sh.stderr.exact} +0 -4
- data/{vendor/zstd/tests/cli-tests/file-stat/decompress-stdin-to-file.sh.stderr.glob → ext/zstd_native/zstd/tests/cli-tests/file-stat/decompress-stdin-to-file.sh.stderr.exact} +0 -4
- data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/run.py +1 -2
- data/{vendor → ext/zstd_native}/zstd/tests/fullbench.c +0 -1
- data/{vendor → ext/zstd_native}/zstd/tests/fuzz/fuzz_helpers.c +3 -2
- data/{vendor → ext/zstd_native}/zstd/tests/fuzz/fuzz_helpers.h +0 -1
- data/{vendor → ext/zstd_native}/zstd/tests/fuzzer.c +0 -335
- data/ext/zstd_native/zstd/tests/largeDictionary.c +128 -0
- data/{vendor → ext/zstd_native}/zstd/tests/legacy.c +0 -2
- data/{vendor → ext/zstd_native}/zstd/tests/longmatch.c +17 -38
- data/{vendor → ext/zstd_native}/zstd/tests/paramgrill.c +3 -3
- data/{vendor → ext/zstd_native}/zstd/tests/playTests.sh +34 -35
- data/{vendor → ext/zstd_native}/zstd/tests/regression/method.c +3 -3
- data/{vendor → ext/zstd_native}/zstd/tests/zstreamtest.c +1 -1
- data/ext/zstd_native/zstd_native.c +852 -0
- data/ext/zstd_native/zstd_native.o +0 -0
- data/ext/zstd_native/zstd_native.so +0 -0
- data/lib/zstd_native/version.rb +3 -0
- data/lib/zstd_native/zstd_native.so +0 -0
- data/lib/zstd_native.rb +6 -0
- metadata +647 -657
- data/CLAUDE.md +0 -101
- data/ext/zstd_ruby/extconf.rb +0 -35
- data/ext/zstd_ruby/zstd_ruby.c +0 -221
- data/lib/zstd_ruby.rb +0 -68
- data/vendor/zstd/CMakeLists.txt +0 -11
- data/vendor/zstd/build/cmake/CMakeLists.txt +0 -81
- data/vendor/zstd/build/cmake/CMakeModules/ZstdBuild.cmake +0 -42
- data/vendor/zstd/build/cmake/CMakeModules/ZstdDependencies.cmake +0 -30
- data/vendor/zstd/build/cmake/CMakeModules/ZstdOptions.cmake +0 -68
- data/vendor/zstd/build/cmake/CMakeModules/ZstdPackage.cmake +0 -42
- data/vendor/zstd/build/cmake/CMakeModules/ZstdVersion.cmake +0 -31
- data/vendor/zstd/lib/common/debug.o +0 -0
- data/vendor/zstd/lib/common/pool.o +0 -0
- data/vendor/zstd/lib/common/threading.o +0 -0
- data/vendor/zstd/lib/common/zstd_common.o +0 -0
- data/vendor/zstd/lib/compress/hist.c +0 -446
- data/vendor/zstd/lib/compress/hist.o +0 -0
- data/vendor/zstd/lib/compress/zstd_compress.o +0 -0
- data/vendor/zstd/lib/compress/zstd_compress_superblock.o +0 -0
- data/vendor/zstd/lib/compress/zstd_double_fast.o +0 -0
- data/vendor/zstd/lib/compress/zstd_fast.o +0 -0
- data/vendor/zstd/lib/compress/zstd_lazy.o +0 -0
- data/vendor/zstd/lib/compress/zstd_ldm.o +0 -0
- data/vendor/zstd/lib/compress/zstd_opt.o +0 -0
- data/vendor/zstd/lib/compress/zstdmt_compress.o +0 -0
- data/vendor/zstd/lib/decompress/huf_decompress.o +0 -0
- data/vendor/zstd/lib/decompress/zstd_decompress_block.o +0 -0
- data/vendor/zstd/lib/dll/example/build_package.bat +0 -55
- data/vendor/zstd/lib/install_oses.mk +0 -17
- data/vendor/zstd/tests/cli-tests/bin/unzstd +0 -1
- data/vendor/zstd/tests/cli-tests/bin/zstdcat +0 -1
- data/vendor/zstd/tests/cli-tests/determinism/basic.sh +0 -36
- data/vendor/zstd/tests/cli-tests/determinism/basic.sh.stderr.exact +0 -0
- data/vendor/zstd/tests/cli-tests/determinism/basic.sh.stdout.exact +0 -880
- data/vendor/zstd/tests/cli-tests/determinism/multithread.sh +0 -45
- data/vendor/zstd/tests/cli-tests/determinism/multithread.sh.stderr.exact +0 -0
- data/vendor/zstd/tests/cli-tests/determinism/multithread.sh.stdout.exact +0 -260
- data/vendor/zstd/tests/cli-tests/determinism/reuse.sh +0 -44
- data/vendor/zstd/tests/cli-tests/determinism/reuse.sh.stderr.exact +0 -0
- data/vendor/zstd/tests/cli-tests/determinism/reuse.sh.stdout.exact +0 -19
- data/vendor/zstd/tests/cli-tests/determinism/setup +0 -5
- data/vendor/zstd/tests/cli-tests/determinism/setup_once +0 -30
- data/vendor/zstd/tests/cli-tests/dict-builder/no-inputs.sh.stderr.exact +0 -5
- data/vendor/zstd/tests/test_process_substitution.bash +0 -92
- /data/{vendor → ext/zstd_native}/zstd/CHANGELOG +0 -0
- /data/{vendor → ext/zstd_native}/zstd/CODE_OF_CONDUCT.md +0 -0
- /data/{vendor → ext/zstd_native}/zstd/COPYING +0 -0
- /data/{vendor → ext/zstd_native}/zstd/LICENSE +0 -0
- /data/{vendor → ext/zstd_native}/zstd/Package.swift +0 -0
- /data/{vendor → ext/zstd_native}/zstd/SECURITY.md +0 -0
- /data/{vendor → ext/zstd_native}/zstd/TESTING.md +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/LICENSE +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/README.md +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/VS2008/fullbench/fullbench.vcproj +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/VS2008/fuzzer/fuzzer.vcproj +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/VS2008/zstd/zstd.vcproj +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/VS2008/zstd.sln +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/VS2008/zstdlib/zstdlib.vcproj +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/VS2010/CompileAsCpp.props +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/VS2010/datagen/datagen.vcxproj +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/VS2010/fullbench/fullbench.vcxproj +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/VS2010/fuzzer/fuzzer.vcxproj +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/VS2010/libzstd/libzstd.vcxproj +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/VS2010/libzstd-dll/libzstd-dll.rc +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/VS2010/libzstd-dll/libzstd-dll.vcxproj +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/VS2010/zstd/zstd.rc +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/VS2010/zstd/zstd.vcxproj +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/VS2010/zstd.sln +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/VS_scripts/README.md +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/VS_scripts/build.VS2010.cmd +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/VS_scripts/build.VS2012.cmd +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/VS_scripts/build.VS2013.cmd +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/VS_scripts/build.VS2015.cmd +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/VS_scripts/build.VS2017.cmd +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/VS_scripts/build.VS2017Community.cmd +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/VS_scripts/build.VS2017Enterprise.cmd +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/VS_scripts/build.VS2017Professional.cmd +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/VS_scripts/build.VSPreview.cmd +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/VS_scripts/build.generic.cmd +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/cmake/CMakeModules/FindLibLZ4.cmake +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/cmake/CMakeModules/GetZstdLibraryVersion.cmake +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/cmake/CMakeModules/JoinPaths.cmake +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/cmake/contrib/CMakeLists.txt +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/cmake/contrib/gen_html/CMakeLists.txt +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/cmake/contrib/pzstd/CMakeLists.txt +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/cmake/lib/cmake_uninstall.cmake.in +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/cmake/programs/CMakeLists.txt +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/cmake/tests/CMakeLists.txt +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/cmake/zstdConfig.cmake.in +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/meson/GetZstdLibraryVersion.py +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/meson/InstallSymlink.py +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/meson/README.md +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/meson/contrib/gen_html/meson.build +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/meson/contrib/meson.build +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/meson/contrib/pzstd/meson.build +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/meson/meson_options.txt +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/meson/programs/meson.build +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/meson/tests/meson.build +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/meson/tests/valgrindTest.py +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/single_file_libs/README.md +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/single_file_libs/build_decoder_test.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/single_file_libs/build_library_test.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/single_file_libs/combine.py +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/single_file_libs/combine.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/single_file_libs/create_single_file_decoder.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/single_file_libs/create_single_file_library.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/single_file_libs/examples/README.md +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/single_file_libs/examples/emscripten.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/single_file_libs/examples/roundtrip.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/single_file_libs/examples/shell.html +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/single_file_libs/examples/simple.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/single_file_libs/examples/testcard-dxt1.inl +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/single_file_libs/examples/testcard-zstd.inl +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/single_file_libs/examples/testcard.png +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/single_file_libs/zstd-in.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/build/single_file_libs/zstddeclib-in.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/VS2005/README.md +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/VS2005/fullbench/fullbench.vcproj +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/VS2005/fuzzer/fuzzer.vcproj +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/VS2005/zstd/zstd.vcproj +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/VS2005/zstd.sln +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/VS2005/zstdlib/zstdlib.vcproj +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/cleanTabs +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/diagnose_corruption/Makefile +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/diagnose_corruption/check_flipped_bits.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/docker/Dockerfile +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/docker/README.md +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/externalSequenceProducer/Makefile +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/externalSequenceProducer/README.md +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/externalSequenceProducer/sequence_producer.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/externalSequenceProducer/sequence_producer.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/freestanding_lib/freestanding.py +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/gen_html/Makefile +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/gen_html/README.md +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/gen_html/gen-zstd-manual.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/gen_html/gen_html.cpp +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/largeNbDicts/Makefile +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/largeNbDicts/README.md +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/linux-kernel/Makefile +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/linux-kernel/README.md +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/linux-kernel/btrfs-benchmark.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/linux-kernel/btrfs-extract-benchmark.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/linux-kernel/decompress_sources.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/linux-kernel/linux.mk +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/linux-kernel/mem.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/linux-kernel/squashfs-benchmark.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/linux-kernel/test/Makefile +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/linux-kernel/test/include/linux/compiler.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/linux-kernel/test/include/linux/errno.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/linux-kernel/test/include/linux/kernel.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/linux-kernel/test/include/linux/limits.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/linux-kernel/test/include/linux/math64.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/linux-kernel/test/include/linux/module.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/linux-kernel/test/include/linux/printk.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/linux-kernel/test/include/linux/stddef.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/linux-kernel/test/include/linux/swab.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/linux-kernel/test/include/linux/types.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/linux-kernel/test/include/linux/unaligned.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/linux-kernel/test/include/linux/xxhash.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/linux-kernel/test/macro-test.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/linux-kernel/test/static_test.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/linux-kernel/test/test.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/linux-kernel/zstd_common_module.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/linux-kernel/zstd_deps.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/match_finders/README.md +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/match_finders/zstd_edist.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/match_finders/zstd_edist.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/premake/premake4.lua +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/pzstd/BUCK +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/pzstd/ErrorHolder.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/pzstd/Makefile +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/pzstd/Options.cpp +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/pzstd/Options.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/pzstd/Pzstd.cpp +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/pzstd/Pzstd.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/pzstd/README.md +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/pzstd/SkippableFrame.cpp +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/pzstd/SkippableFrame.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/pzstd/images/Cspeed.png +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/pzstd/images/Dspeed.png +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/pzstd/main.cpp +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/pzstd/test/BUCK +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/pzstd/test/OptionsTest.cpp +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/pzstd/test/PzstdTest.cpp +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/pzstd/test/RoundTrip.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/pzstd/test/RoundTripTest.cpp +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/pzstd/utils/BUCK +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/pzstd/utils/Buffer.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/pzstd/utils/FileSystem.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/pzstd/utils/Likely.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/pzstd/utils/Portability.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/pzstd/utils/Range.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/pzstd/utils/ResourcePool.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/pzstd/utils/ScopeGuard.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/pzstd/utils/ThreadPool.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/pzstd/utils/WorkQueue.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/pzstd/utils/test/BUCK +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/pzstd/utils/test/BufferTest.cpp +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/pzstd/utils/test/RangeTest.cpp +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/pzstd/utils/test/ResourcePoolTest.cpp +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/pzstd/utils/test/ScopeGuardTest.cpp +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/pzstd/utils/test/ThreadPoolTest.cpp +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/pzstd/utils/test/WorkQueueTest.cpp +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/recovery/Makefile +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/recovery/recover_directory.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/seekable_format/README.md +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/seekable_format/examples/seekable_compression.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/seekable_format/examples/seekable_decompression.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/seekable_format/examples/seekable_decompression_mem.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/seekable_format/zstd_seekable.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/seekable_format/zstd_seekable_compression_format.md +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/seekable_format/zstdseek_compress.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/seekable_format/zstdseek_decompress.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/seqBench/Makefile +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/seqBench/seqBench.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/contrib/snap/snapcraft.yaml +0 -0
- /data/{vendor → ext/zstd_native}/zstd/doc/README.md +0 -0
- /data/{vendor → ext/zstd_native}/zstd/doc/decompressor_errata.md +0 -0
- /data/{vendor → ext/zstd_native}/zstd/doc/decompressor_permissive.md +0 -0
- /data/{vendor → ext/zstd_native}/zstd/doc/educational_decoder/Makefile +0 -0
- /data/{vendor → ext/zstd_native}/zstd/doc/educational_decoder/README.md +0 -0
- /data/{vendor → ext/zstd_native}/zstd/doc/educational_decoder/harness.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/doc/educational_decoder/zstd_decompress.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/doc/educational_decoder/zstd_decompress.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/doc/images/CSpeed2.png +0 -0
- /data/{vendor → ext/zstd_native}/zstd/doc/images/DCspeed5.png +0 -0
- /data/{vendor → ext/zstd_native}/zstd/doc/images/DSpeed3.png +0 -0
- /data/{vendor → ext/zstd_native}/zstd/doc/images/cdict_v136.png +0 -0
- /data/{vendor → ext/zstd_native}/zstd/doc/images/dict-cr.png +0 -0
- /data/{vendor → ext/zstd_native}/zstd/doc/images/dict-cs.png +0 -0
- /data/{vendor → ext/zstd_native}/zstd/doc/images/dict-ds.png +0 -0
- /data/{vendor → ext/zstd_native}/zstd/doc/images/zstd_cdict_v1_3_5.png +0 -0
- /data/{vendor → ext/zstd_native}/zstd/doc/images/zstd_logo86.png +0 -0
- /data/{vendor → ext/zstd_native}/zstd/examples/Makefile +0 -0
- /data/{vendor → ext/zstd_native}/zstd/examples/README.md +0 -0
- /data/{vendor → ext/zstd_native}/zstd/examples/common.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/examples/dictionary_compression.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/examples/dictionary_decompression.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/examples/multiple_simple_compression.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/examples/multiple_streaming_compression.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/examples/simple_compression.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/examples/simple_decompression.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/examples/streaming_compression.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/examples/streaming_compression_thread_pool.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/examples/streaming_decompression.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/examples/streaming_memory_usage.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/BUCK +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/common/allocations.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/common/bitstream.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/common/cpu.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/common/debug.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/common/debug.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/common/entropy_common.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/common/error_private.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/common/error_private.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/common/fse.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/common/fse_decompress.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/common/huf.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/common/mem.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/common/pool.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/common/pool.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/common/threading.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/common/xxhash.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/common/xxhash.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/common/zstd_deps.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/common/zstd_trace.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/compress/clevels.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/compress/fse_compress.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/compress/zstd_compress_literals.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/compress/zstd_compress_literals.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/compress/zstd_compress_sequences.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/compress/zstd_compress_sequences.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/compress/zstd_compress_superblock.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/compress/zstd_compress_superblock.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/compress/zstd_cwksp.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/compress/zstd_double_fast.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/compress/zstd_double_fast.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/compress/zstd_fast.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/compress/zstd_fast.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/compress/zstd_lazy.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/compress/zstd_ldm.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/compress/zstd_ldm.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/compress/zstd_ldm_geartab.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/compress/zstd_opt.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/compress/zstd_preSplit.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/compress/zstd_preSplit.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/compress/zstdmt_compress.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/decompress/zstd_ddict.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/decompress/zstd_ddict.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/decompress/zstd_decompress.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/decompress/zstd_decompress_block.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/decompress/zstd_decompress_internal.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/deprecated/zbuff.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/deprecated/zbuff_common.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/deprecated/zbuff_compress.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/deprecated/zbuff_decompress.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/dictBuilder/cover.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/dictBuilder/divsufsort.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/dll/example/Makefile +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/dll/example/README.md +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/dll/example/fullbench-dll.sln +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/dll/example/fullbench-dll.vcxproj +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/legacy/zstd_legacy.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/legacy/zstd_v01.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/legacy/zstd_v02.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/legacy/zstd_v02.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/legacy/zstd_v03.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/legacy/zstd_v04.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/legacy/zstd_v05.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/legacy/zstd_v06.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/legacy/zstd_v07.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/legacy/zstd_v07.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/module.modulemap +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/zdict.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/lib/zstd_errors.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/programs/BUCK +0 -0
- /data/{vendor → ext/zstd_native}/zstd/programs/benchfn.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/programs/benchfn.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/programs/datagen.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/programs/datagen.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/programs/dibio.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/programs/fileio_asyncio.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/programs/fileio_asyncio.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/programs/fileio_common.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/programs/lorem.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/programs/lorem.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/programs/platform.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/programs/timefn.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/programs/windres/verrsrc.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/programs/windres/zstd.rc +0 -0
- /data/{vendor → ext/zstd_native}/zstd/programs/windres/zstd32.res +0 -0
- /data/{vendor → ext/zstd_native}/zstd/programs/windres/zstd64.res +0 -0
- /data/{vendor → ext/zstd_native}/zstd/programs/zstdcli_trace.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/programs/zstdgrep +0 -0
- /data/{vendor → ext/zstd_native}/zstd/programs/zstdgrep.1.md +0 -0
- /data/{vendor → ext/zstd_native}/zstd/programs/zstdless +0 -0
- /data/{vendor → ext/zstd_native}/zstd/programs/zstdless.1.md +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/DEPRECATED-test-zstd-speed.py +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/README.md +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/checkTag.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/check_size.py +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/README.md +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/basic/args.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/basic/args.sh.exit +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/basic/args.sh.stderr.glob +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/basic/help.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/basic/memlimit.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/basic/memlimit.sh.stderr.exact +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/basic/memlimit.sh.stdout.exact +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/basic/output_dir.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/basic/output_dir.sh.stderr.exact +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/basic/output_dir.sh.stdout.exact +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/basic/version.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/basic/version.sh.stdout.glob +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/bin/cmp_size +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/bin/datagen +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/bin/die +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/bin/println +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/bin/zstd +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/bin/zstdgrep +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/bin/zstdless +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/cltools/setup +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/cltools/zstdgrep.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/cltools/zstdgrep.sh.exit +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/cltools/zstdgrep.sh.stderr.exact +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/cltools/zstdgrep.sh.stdout.glob +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/cltools/zstdless.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/cltools/zstdless.sh.stderr.exact +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/cltools/zstdless.sh.stdout.glob +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/common/format.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/common/mtime.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/common/permissions.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/compression/adapt.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/compression/basic.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/compression/compress-literals.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/compression/format.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/compression/golden.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/compression/gzip-compat.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/compression/levels.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/compression/levels.sh.stderr.exact +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/compression/long-distance-matcher.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/compression/multiple-files.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/compression/multiple-files.sh.stdout.exact +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/compression/row-match-finder.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/compression/setup +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/compression/stream-size.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/compression/verbose-wlog.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/compression/verbose-wlog.sh.stderr.glob +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/compression/verbose-wlog.sh.stdout.glob +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/compression/window-resize.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/compression/window-resize.sh.stderr.ignore +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/compression/window-resize.sh.stdout.glob +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/decompression/detectErrors.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/decompression/golden.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/decompression/pass-through.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/decompression/pass-through.sh.stderr.exact +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/decompression/pass-through.sh.stdout.exact +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/dict-builder/empty-input.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/dict-builder/empty-input.sh.stderr.exact +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/dict-builder/no-inputs.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/dict-builder/no-inputs.sh.exit +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/dictionaries/dictionary-mismatch.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/dictionaries/dictionary-mismatch.sh.stderr.exact +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/dictionaries/golden.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/dictionaries/setup +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/dictionaries/setup_once +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/file-handling/directory-mirror.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/file-handling/directory-mirror.sh.stderr.exact +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/file-handling/directory-mirror.sh.stdout.exact +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/file-stat/compress-file-to-dir-without-write-perm.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/file-stat/compress-file-to-file.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/file-stat/compress-file-to-stdout.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/file-stat/compress-file-to-stdout.sh.stderr.exact +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/file-stat/compress-stdin-to-file.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/file-stat/compress-stdin-to-stdout.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/file-stat/compress-stdin-to-stdout.sh.stderr.exact +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/file-stat/decompress-file-to-file.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/file-stat/decompress-file-to-stdout.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/file-stat/decompress-file-to-stdout.sh.stderr.exact +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/file-stat/decompress-stdin-to-file.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/file-stat/decompress-stdin-to-stdout.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/file-stat/decompress-stdin-to-stdout.sh.stderr.exact +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/progress/no-progress.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/progress/no-progress.sh.stderr.glob +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/progress/progress.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/progress/progress.sh.stderr.glob +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/zstd-symlinks/setup +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/zstd-symlinks/zstdcat.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/cli-tests/zstd-symlinks/zstdcat.sh.stdout.exact +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/datagencli.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/decodecorpus.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/dict-files/zero-weight-dict +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/external_matchfinder.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/external_matchfinder.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/fuzz/Makefile +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/fuzz/README.md +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/fuzz/block_decompress.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/fuzz/block_round_trip.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/fuzz/decompress_cross_format.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/fuzz/decompress_dstSize_tooSmall.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/fuzz/dictionary_decompress.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/fuzz/dictionary_loader.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/fuzz/dictionary_round_trip.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/fuzz/dictionary_stream_round_trip.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/fuzz/fse_read_ncount.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/fuzz/fuzz.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/fuzz/fuzz.py +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/fuzz/fuzz_data_producer.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/fuzz/fuzz_data_producer.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/fuzz/fuzz_third_party_seq_prod.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/fuzz/generate_sequences.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/fuzz/huf_decompress.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/fuzz/huf_round_trip.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/fuzz/raw_dictionary_round_trip.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/fuzz/regression_driver.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/fuzz/seekable_roundtrip.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/fuzz/seq_prod_fuzz_example/Makefile +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/fuzz/seq_prod_fuzz_example/README.md +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/fuzz/seq_prod_fuzz_example/example_seq_prod.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/fuzz/sequence_compression_api.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/fuzz/simple_compress.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/fuzz/simple_decompress.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/fuzz/simple_round_trip.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/fuzz/stream_decompress.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/fuzz/stream_round_trip.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/fuzz/zstd_frame_info.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/fuzz/zstd_helpers.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/fuzz/zstd_helpers.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/golden-compression/PR-3517-block-splitter-corruption-test +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/golden-compression/http +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/golden-compression/huffman-compressed-larger +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/golden-compression/large-literal-and-match-lengths +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/golden-decompression/block-128k.zst +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/golden-decompression/empty-block.zst +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/golden-decompression/rle-first-block.zst +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/golden-decompression/zeroSeq_2B.zst +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/golden-decompression-errors/off0.bin.zst +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/golden-decompression-errors/truncated_huff_state.zst +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/golden-decompression-errors/zeroSeq_extraneous.zst +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/golden-dictionaries/http-dict-missing-symbols +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/gzip/Makefile +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/gzip/gzip-env.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/gzip/helin-segv.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/gzip/help-version.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/gzip/hufts-segv.gz +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/gzip/hufts.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/gzip/init.cfg +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/gzip/init.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/gzip/keep.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/gzip/list.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/gzip/memcpy-abuse.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/gzip/mixed.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/gzip/null-suffix-clobber.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/gzip/stdin.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/gzip/test-driver.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/gzip/trailing-nul.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/gzip/unpack-invalid.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/gzip/z-suffix.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/gzip/zdiff.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/gzip/zgrep-context.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/gzip/zgrep-f.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/gzip/zgrep-signal.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/gzip/znew-k.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/invalidDictionaries.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/libzstd_builds.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/loremOut.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/loremOut.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/poolTests.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/rateLimiter.py +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/regression/Makefile +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/regression/README.md +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/regression/config.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/regression/config.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/regression/data.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/regression/data.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/regression/levels.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/regression/method.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/regression/result.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/regression/result.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/regression/results.csv +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/regression/test.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/roundTripCrash.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/seqgen.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/seqgen.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/test-license.py +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/test-variants.sh +0 -0
- /data/{vendor → ext/zstd_native}/zstd/tests/test-zstd-versions.py +0 -0
- /data/{vendor → ext/zstd_native}/zstd/zlibWrapper/BUCK +0 -0
- /data/{vendor → ext/zstd_native}/zstd/zlibWrapper/Makefile +0 -0
- /data/{vendor → ext/zstd_native}/zstd/zlibWrapper/README.md +0 -0
- /data/{vendor → ext/zstd_native}/zstd/zlibWrapper/examples/example.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/zlibWrapper/examples/example_original.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/zlibWrapper/examples/fitblk.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/zlibWrapper/examples/fitblk_original.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/zlibWrapper/examples/minigzip.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/zlibWrapper/examples/zwrapbench.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/zlibWrapper/gzclose.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/zlibWrapper/gzcompatibility.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/zlibWrapper/gzguts.h +0 -0
- /data/{vendor → ext/zstd_native}/zstd/zlibWrapper/gzlib.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/zlibWrapper/gzread.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/zlibWrapper/gzwrite.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/zlibWrapper/zstd_zlibwrapper.c +0 -0
- /data/{vendor → ext/zstd_native}/zstd/zlibWrapper/zstd_zlibwrapper.h +0 -0
|
@@ -0,0 +1,852 @@
|
|
|
1
|
+
#include <ruby.h>
|
|
2
|
+
#include "zstd.h"
|
|
3
|
+
|
|
4
|
+
static VALUE mZstdNative;
|
|
5
|
+
static VALUE eZstdError;
|
|
6
|
+
static VALUE cCCtx;
|
|
7
|
+
static VALUE cDCtx;
|
|
8
|
+
static VALUE cCStream;
|
|
9
|
+
static VALUE cDStream;
|
|
10
|
+
static VALUE cCDict;
|
|
11
|
+
static VALUE cDDict;
|
|
12
|
+
|
|
13
|
+
/* Forward declarations of data types */
|
|
14
|
+
static const rb_data_type_t cctx_type;
|
|
15
|
+
static const rb_data_type_t dctx_type;
|
|
16
|
+
static const rb_data_type_t cstream_type;
|
|
17
|
+
static const rb_data_type_t dstream_type;
|
|
18
|
+
static const rb_data_type_t cdict_type;
|
|
19
|
+
static const rb_data_type_t ddict_type;
|
|
20
|
+
|
|
21
|
+
/* Helper function to check for errors */
|
|
22
|
+
static void check_zstd_error(size_t code, const char *msg) {
|
|
23
|
+
if (ZSTD_isError(code)) {
|
|
24
|
+
rb_raise(eZstdError, "%s: %s", msg, ZSTD_getErrorName(code));
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/* Module methods */
|
|
29
|
+
|
|
30
|
+
static VALUE zstd_version_number(VALUE self) {
|
|
31
|
+
return UINT2NUM(ZSTD_versionNumber());
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
static VALUE zstd_version_string(VALUE self) {
|
|
35
|
+
return rb_str_new_cstr(ZSTD_versionString());
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
static VALUE zstd_compress(int argc, VALUE *argv, VALUE self) {
|
|
39
|
+
VALUE data, level_val;
|
|
40
|
+
rb_scan_args(argc, argv, "11", &data, &level_val);
|
|
41
|
+
|
|
42
|
+
Check_Type(data, T_STRING);
|
|
43
|
+
int level = NIL_P(level_val) ? ZSTD_CLEVEL_DEFAULT : NUM2INT(level_val);
|
|
44
|
+
|
|
45
|
+
const char *src = RSTRING_PTR(data);
|
|
46
|
+
size_t src_size = RSTRING_LEN(data);
|
|
47
|
+
|
|
48
|
+
size_t dst_capacity = ZSTD_compressBound(src_size);
|
|
49
|
+
VALUE result = rb_str_buf_new(dst_capacity);
|
|
50
|
+
char *dst = RSTRING_PTR(result);
|
|
51
|
+
|
|
52
|
+
size_t compressed_size = ZSTD_compress(dst, dst_capacity, src, src_size, level);
|
|
53
|
+
check_zstd_error(compressed_size, "Compression failed");
|
|
54
|
+
|
|
55
|
+
rb_str_set_len(result, compressed_size);
|
|
56
|
+
return result;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
static VALUE zstd_decompress(VALUE self, VALUE data) {
|
|
60
|
+
Check_Type(data, T_STRING);
|
|
61
|
+
|
|
62
|
+
const char *src = RSTRING_PTR(data);
|
|
63
|
+
size_t src_size = RSTRING_LEN(data);
|
|
64
|
+
|
|
65
|
+
unsigned long long const dst_capacity = ZSTD_getFrameContentSize(src, src_size);
|
|
66
|
+
|
|
67
|
+
if (dst_capacity == ZSTD_CONTENTSIZE_ERROR) {
|
|
68
|
+
rb_raise(eZstdError, "Invalid compressed data");
|
|
69
|
+
}
|
|
70
|
+
if (dst_capacity == ZSTD_CONTENTSIZE_UNKNOWN) {
|
|
71
|
+
rb_raise(eZstdError, "Content size unknown");
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
VALUE result = rb_str_buf_new(dst_capacity);
|
|
75
|
+
char *dst = RSTRING_PTR(result);
|
|
76
|
+
|
|
77
|
+
size_t decompressed_size = ZSTD_decompress(dst, dst_capacity, src, src_size);
|
|
78
|
+
check_zstd_error(decompressed_size, "Decompression failed");
|
|
79
|
+
|
|
80
|
+
rb_str_set_len(result, decompressed_size);
|
|
81
|
+
return result;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
static VALUE zstd_compress_bound(VALUE self, VALUE size_val) {
|
|
85
|
+
size_t src_size = NUM2SIZET(size_val);
|
|
86
|
+
return SIZET2NUM(ZSTD_compressBound(src_size));
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
static VALUE zstd_frame_content_size(VALUE self, VALUE data) {
|
|
90
|
+
Check_Type(data, T_STRING);
|
|
91
|
+
const char *src = RSTRING_PTR(data);
|
|
92
|
+
size_t src_size = RSTRING_LEN(data);
|
|
93
|
+
|
|
94
|
+
unsigned long long size = ZSTD_getFrameContentSize(src, src_size);
|
|
95
|
+
if (size == ZSTD_CONTENTSIZE_ERROR) {
|
|
96
|
+
rb_raise(eZstdError, "Invalid frame");
|
|
97
|
+
}
|
|
98
|
+
if (size == ZSTD_CONTENTSIZE_UNKNOWN) {
|
|
99
|
+
return Qnil;
|
|
100
|
+
}
|
|
101
|
+
return ULL2NUM(size);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
static VALUE zstd_find_frame_compressed_size(VALUE self, VALUE data) {
|
|
105
|
+
Check_Type(data, T_STRING);
|
|
106
|
+
const char *src = RSTRING_PTR(data);
|
|
107
|
+
size_t src_size = RSTRING_LEN(data);
|
|
108
|
+
|
|
109
|
+
size_t size = ZSTD_findFrameCompressedSize(src, src_size);
|
|
110
|
+
check_zstd_error(size, "Failed to find frame size");
|
|
111
|
+
return SIZET2NUM(size);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
static VALUE zstd_min_clevel(VALUE self) {
|
|
115
|
+
return INT2NUM(ZSTD_minCLevel());
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
static VALUE zstd_max_clevel(VALUE self) {
|
|
119
|
+
return INT2NUM(ZSTD_maxCLevel());
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
static VALUE zstd_default_clevel(VALUE self) {
|
|
123
|
+
return INT2NUM(ZSTD_defaultCLevel());
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/* CCtx class */
|
|
127
|
+
|
|
128
|
+
static void cctx_free(void *ptr) {
|
|
129
|
+
if (ptr) {
|
|
130
|
+
ZSTD_freeCCtx((ZSTD_CCtx*)ptr);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
static const rb_data_type_t cctx_type = {
|
|
135
|
+
"ZstdNative::CCtx",
|
|
136
|
+
{NULL, cctx_free, NULL},
|
|
137
|
+
0, 0, RUBY_TYPED_FREE_IMMEDIATELY
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
static VALUE cctx_alloc(VALUE klass) {
|
|
141
|
+
ZSTD_CCtx *ctx = ZSTD_createCCtx();
|
|
142
|
+
if (!ctx) {
|
|
143
|
+
rb_raise(eZstdError, "Failed to create compression context");
|
|
144
|
+
}
|
|
145
|
+
return TypedData_Wrap_Struct(klass, &cctx_type, ctx);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
static VALUE cctx_compress(VALUE self, VALUE data, VALUE level_val) {
|
|
149
|
+
Check_Type(data, T_STRING);
|
|
150
|
+
int level = NUM2INT(level_val);
|
|
151
|
+
|
|
152
|
+
ZSTD_CCtx *ctx;
|
|
153
|
+
TypedData_Get_Struct(self, ZSTD_CCtx, &cctx_type, ctx);
|
|
154
|
+
|
|
155
|
+
const char *src = RSTRING_PTR(data);
|
|
156
|
+
size_t src_size = RSTRING_LEN(data);
|
|
157
|
+
|
|
158
|
+
size_t dst_capacity = ZSTD_compressBound(src_size);
|
|
159
|
+
VALUE result = rb_str_buf_new(dst_capacity);
|
|
160
|
+
char *dst = RSTRING_PTR(result);
|
|
161
|
+
|
|
162
|
+
size_t compressed_size = ZSTD_compressCCtx(ctx, dst, dst_capacity, src, src_size, level);
|
|
163
|
+
check_zstd_error(compressed_size, "CCtx compression failed");
|
|
164
|
+
|
|
165
|
+
rb_str_set_len(result, compressed_size);
|
|
166
|
+
return result;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
static VALUE cctx_reset(VALUE self) {
|
|
170
|
+
ZSTD_CCtx *ctx;
|
|
171
|
+
TypedData_Get_Struct(self, ZSTD_CCtx, &cctx_type, ctx);
|
|
172
|
+
|
|
173
|
+
size_t result = ZSTD_CCtx_reset(ctx, ZSTD_reset_session_only);
|
|
174
|
+
check_zstd_error(result, "CCtx reset failed");
|
|
175
|
+
return Qnil;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
static VALUE cctx_load_dictionary(VALUE self, VALUE dict) {
|
|
179
|
+
Check_Type(dict, T_STRING);
|
|
180
|
+
|
|
181
|
+
ZSTD_CCtx *ctx;
|
|
182
|
+
TypedData_Get_Struct(self, ZSTD_CCtx, &cctx_type, ctx);
|
|
183
|
+
|
|
184
|
+
const char *dict_data = RSTRING_PTR(dict);
|
|
185
|
+
size_t dict_size = RSTRING_LEN(dict);
|
|
186
|
+
|
|
187
|
+
size_t result = ZSTD_CCtx_loadDictionary(ctx, dict_data, dict_size);
|
|
188
|
+
check_zstd_error(result, "Failed to load dictionary");
|
|
189
|
+
return Qnil;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
static VALUE cctx_ref_cdict(VALUE self, VALUE cdict_val) {
|
|
193
|
+
ZSTD_CCtx *ctx;
|
|
194
|
+
TypedData_Get_Struct(self, ZSTD_CCtx, &cctx_type, ctx);
|
|
195
|
+
|
|
196
|
+
ZSTD_CDict *cdict;
|
|
197
|
+
TypedData_Get_Struct(cdict_val, ZSTD_CDict, &cdict_type, cdict);
|
|
198
|
+
|
|
199
|
+
size_t result = ZSTD_CCtx_refCDict(ctx, cdict);
|
|
200
|
+
check_zstd_error(result, "Failed to reference CDict");
|
|
201
|
+
return Qnil;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
static VALUE cctx_ref_prefix(VALUE self, VALUE prefix) {
|
|
205
|
+
Check_Type(prefix, T_STRING);
|
|
206
|
+
|
|
207
|
+
ZSTD_CCtx *ctx;
|
|
208
|
+
TypedData_Get_Struct(self, ZSTD_CCtx, &cctx_type, ctx);
|
|
209
|
+
|
|
210
|
+
const char *prefix_data = RSTRING_PTR(prefix);
|
|
211
|
+
size_t prefix_size = RSTRING_LEN(prefix);
|
|
212
|
+
|
|
213
|
+
size_t result = ZSTD_CCtx_refPrefix(ctx, prefix_data, prefix_size);
|
|
214
|
+
check_zstd_error(result, "Failed to reference prefix");
|
|
215
|
+
return Qnil;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
static VALUE cctx_sizeof(VALUE self) {
|
|
219
|
+
ZSTD_CCtx *ctx;
|
|
220
|
+
TypedData_Get_Struct(self, ZSTD_CCtx, &cctx_type, ctx);
|
|
221
|
+
return SIZET2NUM(ZSTD_sizeof_CCtx(ctx));
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/* DCtx class */
|
|
225
|
+
|
|
226
|
+
static void dctx_free(void *ptr) {
|
|
227
|
+
if (ptr) {
|
|
228
|
+
ZSTD_freeDCtx((ZSTD_DCtx*)ptr);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
static const rb_data_type_t dctx_type = {
|
|
233
|
+
"ZstdNative::DCtx",
|
|
234
|
+
{NULL, dctx_free, NULL},
|
|
235
|
+
0, 0, RUBY_TYPED_FREE_IMMEDIATELY
|
|
236
|
+
};
|
|
237
|
+
|
|
238
|
+
static VALUE dctx_alloc(VALUE klass) {
|
|
239
|
+
ZSTD_DCtx *ctx = ZSTD_createDCtx();
|
|
240
|
+
if (!ctx) {
|
|
241
|
+
rb_raise(eZstdError, "Failed to create decompression context");
|
|
242
|
+
}
|
|
243
|
+
return TypedData_Wrap_Struct(klass, &dctx_type, ctx);
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
static VALUE dctx_decompress(VALUE self, VALUE data) {
|
|
247
|
+
Check_Type(data, T_STRING);
|
|
248
|
+
|
|
249
|
+
ZSTD_DCtx *ctx;
|
|
250
|
+
TypedData_Get_Struct(self, ZSTD_DCtx, &dctx_type, ctx);
|
|
251
|
+
|
|
252
|
+
const char *src = RSTRING_PTR(data);
|
|
253
|
+
size_t src_size = RSTRING_LEN(data);
|
|
254
|
+
|
|
255
|
+
unsigned long long const dst_capacity = ZSTD_getFrameContentSize(src, src_size);
|
|
256
|
+
|
|
257
|
+
if (dst_capacity == ZSTD_CONTENTSIZE_ERROR) {
|
|
258
|
+
rb_raise(eZstdError, "Invalid compressed data");
|
|
259
|
+
}
|
|
260
|
+
if (dst_capacity == ZSTD_CONTENTSIZE_UNKNOWN) {
|
|
261
|
+
rb_raise(eZstdError, "Content size unknown");
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
VALUE result = rb_str_buf_new(dst_capacity);
|
|
265
|
+
char *dst = RSTRING_PTR(result);
|
|
266
|
+
|
|
267
|
+
size_t decompressed_size = ZSTD_decompressDCtx(ctx, dst, dst_capacity, src, src_size);
|
|
268
|
+
check_zstd_error(decompressed_size, "DCtx decompression failed");
|
|
269
|
+
|
|
270
|
+
rb_str_set_len(result, decompressed_size);
|
|
271
|
+
return result;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
static VALUE dctx_reset(VALUE self) {
|
|
275
|
+
ZSTD_DCtx *ctx;
|
|
276
|
+
TypedData_Get_Struct(self, ZSTD_DCtx, &dctx_type, ctx);
|
|
277
|
+
|
|
278
|
+
size_t result = ZSTD_DCtx_reset(ctx, ZSTD_reset_session_only);
|
|
279
|
+
check_zstd_error(result, "DCtx reset failed");
|
|
280
|
+
return Qnil;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
static VALUE dctx_load_dictionary(VALUE self, VALUE dict) {
|
|
284
|
+
Check_Type(dict, T_STRING);
|
|
285
|
+
|
|
286
|
+
ZSTD_DCtx *ctx;
|
|
287
|
+
TypedData_Get_Struct(self, ZSTD_DCtx, &dctx_type, ctx);
|
|
288
|
+
|
|
289
|
+
const char *dict_data = RSTRING_PTR(dict);
|
|
290
|
+
size_t dict_size = RSTRING_LEN(dict);
|
|
291
|
+
|
|
292
|
+
size_t result = ZSTD_DCtx_loadDictionary(ctx, dict_data, dict_size);
|
|
293
|
+
check_zstd_error(result, "Failed to load dictionary");
|
|
294
|
+
return Qnil;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
static VALUE dctx_ref_ddict(VALUE self, VALUE ddict_val) {
|
|
298
|
+
ZSTD_DCtx *ctx;
|
|
299
|
+
TypedData_Get_Struct(self, ZSTD_DCtx, &dctx_type, ctx);
|
|
300
|
+
|
|
301
|
+
ZSTD_DDict *ddict;
|
|
302
|
+
TypedData_Get_Struct(ddict_val, ZSTD_DDict, &ddict_type, ddict);
|
|
303
|
+
|
|
304
|
+
size_t result = ZSTD_DCtx_refDDict(ctx, ddict);
|
|
305
|
+
check_zstd_error(result, "Failed to reference DDict");
|
|
306
|
+
return Qnil;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
static VALUE dctx_ref_prefix(VALUE self, VALUE prefix) {
|
|
310
|
+
Check_Type(prefix, T_STRING);
|
|
311
|
+
|
|
312
|
+
ZSTD_DCtx *ctx;
|
|
313
|
+
TypedData_Get_Struct(self, ZSTD_DCtx, &dctx_type, ctx);
|
|
314
|
+
|
|
315
|
+
const char *prefix_data = RSTRING_PTR(prefix);
|
|
316
|
+
size_t prefix_size = RSTRING_LEN(prefix);
|
|
317
|
+
|
|
318
|
+
size_t result = ZSTD_DCtx_refPrefix(ctx, prefix_data, prefix_size);
|
|
319
|
+
check_zstd_error(result, "Failed to reference prefix");
|
|
320
|
+
return Qnil;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
static VALUE dctx_sizeof(VALUE self) {
|
|
324
|
+
ZSTD_DCtx *ctx;
|
|
325
|
+
TypedData_Get_Struct(self, ZSTD_DCtx, &dctx_type, ctx);
|
|
326
|
+
return SIZET2NUM(ZSTD_sizeof_DCtx(ctx));
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
/* CStream class */
|
|
330
|
+
|
|
331
|
+
static void cstream_free(void *ptr) {
|
|
332
|
+
if (ptr) {
|
|
333
|
+
ZSTD_freeCStream((ZSTD_CStream*)ptr);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
static const rb_data_type_t cstream_type = {
|
|
338
|
+
"ZstdNative::CStream",
|
|
339
|
+
{NULL, cstream_free, NULL},
|
|
340
|
+
0, 0, RUBY_TYPED_FREE_IMMEDIATELY
|
|
341
|
+
};
|
|
342
|
+
|
|
343
|
+
static VALUE cstream_initialize(int argc, VALUE *argv, VALUE self) {
|
|
344
|
+
VALUE opts;
|
|
345
|
+
rb_scan_args(argc, argv, "01", &opts);
|
|
346
|
+
|
|
347
|
+
int level = ZSTD_CLEVEL_DEFAULT;
|
|
348
|
+
if (!NIL_P(opts)) {
|
|
349
|
+
Check_Type(opts, T_HASH);
|
|
350
|
+
VALUE level_val = rb_hash_aref(opts, ID2SYM(rb_intern("level")));
|
|
351
|
+
if (!NIL_P(level_val)) {
|
|
352
|
+
level = NUM2INT(level_val);
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
ZSTD_CStream *stream = ZSTD_createCStream();
|
|
357
|
+
if (!stream) {
|
|
358
|
+
rb_raise(eZstdError, "Failed to create compression stream");
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
size_t result = ZSTD_initCStream(stream, level);
|
|
362
|
+
if (ZSTD_isError(result)) {
|
|
363
|
+
ZSTD_freeCStream(stream);
|
|
364
|
+
rb_raise(eZstdError, "Failed to initialize compression stream: %s", ZSTD_getErrorName(result));
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
DATA_PTR(self) = stream;
|
|
368
|
+
return self;
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
static VALUE cstream_alloc(VALUE klass) {
|
|
372
|
+
return TypedData_Wrap_Struct(klass, &cstream_type, NULL);
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
static VALUE cstream_compress(VALUE self, VALUE data) {
|
|
376
|
+
Check_Type(data, T_STRING);
|
|
377
|
+
|
|
378
|
+
ZSTD_CStream *stream;
|
|
379
|
+
TypedData_Get_Struct(self, ZSTD_CStream, &cstream_type, stream);
|
|
380
|
+
|
|
381
|
+
const char *src = RSTRING_PTR(data);
|
|
382
|
+
size_t src_size = RSTRING_LEN(data);
|
|
383
|
+
|
|
384
|
+
ZSTD_inBuffer input = {src, src_size, 0};
|
|
385
|
+
|
|
386
|
+
size_t out_capacity = ZSTD_CStreamOutSize();
|
|
387
|
+
VALUE result = rb_str_buf_new(out_capacity);
|
|
388
|
+
char *dst = RSTRING_PTR(result);
|
|
389
|
+
size_t total_written = 0;
|
|
390
|
+
|
|
391
|
+
while (input.pos < input.size) {
|
|
392
|
+
ZSTD_outBuffer output = {dst + total_written, out_capacity - total_written, 0};
|
|
393
|
+
size_t remaining = ZSTD_compressStream(stream, &output, &input);
|
|
394
|
+
check_zstd_error(remaining, "Stream compression failed");
|
|
395
|
+
total_written += output.pos;
|
|
396
|
+
|
|
397
|
+
if (total_written >= out_capacity) {
|
|
398
|
+
out_capacity *= 2;
|
|
399
|
+
rb_str_resize(result, out_capacity);
|
|
400
|
+
dst = RSTRING_PTR(result);
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
rb_str_set_len(result, total_written);
|
|
405
|
+
return result;
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
static VALUE cstream_flush(VALUE self) {
|
|
409
|
+
ZSTD_CStream *stream;
|
|
410
|
+
TypedData_Get_Struct(self, ZSTD_CStream, &cstream_type, stream);
|
|
411
|
+
|
|
412
|
+
size_t out_capacity = ZSTD_CStreamOutSize();
|
|
413
|
+
VALUE result = rb_str_buf_new(out_capacity);
|
|
414
|
+
char *dst = RSTRING_PTR(result);
|
|
415
|
+
size_t total_written = 0;
|
|
416
|
+
|
|
417
|
+
size_t remaining;
|
|
418
|
+
do {
|
|
419
|
+
ZSTD_outBuffer output = {dst + total_written, out_capacity - total_written, 0};
|
|
420
|
+
remaining = ZSTD_flushStream(stream, &output);
|
|
421
|
+
check_zstd_error(remaining, "Stream flush failed");
|
|
422
|
+
total_written += output.pos;
|
|
423
|
+
|
|
424
|
+
if (remaining > 0 && total_written >= out_capacity) {
|
|
425
|
+
out_capacity *= 2;
|
|
426
|
+
rb_str_resize(result, out_capacity);
|
|
427
|
+
dst = RSTRING_PTR(result);
|
|
428
|
+
}
|
|
429
|
+
} while (remaining > 0);
|
|
430
|
+
|
|
431
|
+
rb_str_set_len(result, total_written);
|
|
432
|
+
return result;
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
static VALUE cstream_finish(VALUE self) {
|
|
436
|
+
ZSTD_CStream *stream;
|
|
437
|
+
TypedData_Get_Struct(self, ZSTD_CStream, &cstream_type, stream);
|
|
438
|
+
|
|
439
|
+
size_t out_capacity = ZSTD_CStreamOutSize();
|
|
440
|
+
VALUE result = rb_str_buf_new(out_capacity);
|
|
441
|
+
char *dst = RSTRING_PTR(result);
|
|
442
|
+
size_t total_written = 0;
|
|
443
|
+
|
|
444
|
+
size_t remaining;
|
|
445
|
+
do {
|
|
446
|
+
ZSTD_outBuffer output = {dst + total_written, out_capacity - total_written, 0};
|
|
447
|
+
remaining = ZSTD_endStream(stream, &output);
|
|
448
|
+
check_zstd_error(remaining, "Stream end failed");
|
|
449
|
+
total_written += output.pos;
|
|
450
|
+
|
|
451
|
+
if (remaining > 0 && total_written >= out_capacity) {
|
|
452
|
+
out_capacity *= 2;
|
|
453
|
+
rb_str_resize(result, out_capacity);
|
|
454
|
+
dst = RSTRING_PTR(result);
|
|
455
|
+
}
|
|
456
|
+
} while (remaining > 0);
|
|
457
|
+
|
|
458
|
+
rb_str_set_len(result, total_written);
|
|
459
|
+
return result;
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
static VALUE cstream_in_size(VALUE self) {
|
|
463
|
+
return SIZET2NUM(ZSTD_CStreamInSize());
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
static VALUE cstream_out_size(VALUE self) {
|
|
467
|
+
return SIZET2NUM(ZSTD_CStreamOutSize());
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
/* DStream class */
|
|
471
|
+
|
|
472
|
+
static void dstream_free(void *ptr) {
|
|
473
|
+
if (ptr) {
|
|
474
|
+
ZSTD_freeDStream((ZSTD_DStream*)ptr);
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
static const rb_data_type_t dstream_type = {
|
|
479
|
+
"ZstdNative::DStream",
|
|
480
|
+
{NULL, dstream_free, NULL},
|
|
481
|
+
0, 0, RUBY_TYPED_FREE_IMMEDIATELY
|
|
482
|
+
};
|
|
483
|
+
|
|
484
|
+
static VALUE dstream_initialize(VALUE self) {
|
|
485
|
+
ZSTD_DStream *stream = ZSTD_createDStream();
|
|
486
|
+
if (!stream) {
|
|
487
|
+
rb_raise(eZstdError, "Failed to create decompression stream");
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
size_t result = ZSTD_initDStream(stream);
|
|
491
|
+
if (ZSTD_isError(result)) {
|
|
492
|
+
ZSTD_freeDStream(stream);
|
|
493
|
+
rb_raise(eZstdError, "Failed to initialize decompression stream: %s", ZSTD_getErrorName(result));
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
DATA_PTR(self) = stream;
|
|
497
|
+
return self;
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
static VALUE dstream_alloc(VALUE klass) {
|
|
501
|
+
return TypedData_Wrap_Struct(klass, &dstream_type, NULL);
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
static VALUE dstream_decompress(VALUE self, VALUE data) {
|
|
505
|
+
Check_Type(data, T_STRING);
|
|
506
|
+
|
|
507
|
+
ZSTD_DStream *stream;
|
|
508
|
+
TypedData_Get_Struct(self, ZSTD_DStream, &dstream_type, stream);
|
|
509
|
+
|
|
510
|
+
const char *src = RSTRING_PTR(data);
|
|
511
|
+
size_t src_size = RSTRING_LEN(data);
|
|
512
|
+
|
|
513
|
+
ZSTD_inBuffer input = {src, src_size, 0};
|
|
514
|
+
|
|
515
|
+
size_t out_capacity = ZSTD_DStreamOutSize();
|
|
516
|
+
VALUE result = rb_str_buf_new(out_capacity);
|
|
517
|
+
char *dst = RSTRING_PTR(result);
|
|
518
|
+
size_t total_written = 0;
|
|
519
|
+
|
|
520
|
+
while (input.pos < input.size) {
|
|
521
|
+
ZSTD_outBuffer output = {dst + total_written, out_capacity - total_written, 0};
|
|
522
|
+
size_t remaining = ZSTD_decompressStream(stream, &output, &input);
|
|
523
|
+
check_zstd_error(remaining, "Stream decompression failed");
|
|
524
|
+
total_written += output.pos;
|
|
525
|
+
|
|
526
|
+
if (total_written >= out_capacity && input.pos < input.size) {
|
|
527
|
+
out_capacity *= 2;
|
|
528
|
+
rb_str_resize(result, out_capacity);
|
|
529
|
+
dst = RSTRING_PTR(result);
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
rb_str_set_len(result, total_written);
|
|
534
|
+
return result;
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
static VALUE dstream_in_size(VALUE self) {
|
|
538
|
+
return SIZET2NUM(ZSTD_DStreamInSize());
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
static VALUE dstream_out_size(VALUE self) {
|
|
542
|
+
return SIZET2NUM(ZSTD_DStreamOutSize());
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
/* CDict class */
|
|
546
|
+
|
|
547
|
+
static void cdict_free(void *ptr) {
|
|
548
|
+
if (ptr) {
|
|
549
|
+
ZSTD_freeCDict((ZSTD_CDict*)ptr);
|
|
550
|
+
}
|
|
551
|
+
}
|
|
552
|
+
|
|
553
|
+
static const rb_data_type_t cdict_type = {
|
|
554
|
+
"ZstdNative::CDict",
|
|
555
|
+
{NULL, cdict_free, NULL},
|
|
556
|
+
0, 0, RUBY_TYPED_FREE_IMMEDIATELY
|
|
557
|
+
};
|
|
558
|
+
|
|
559
|
+
static VALUE cdict_initialize(int argc, VALUE *argv, VALUE self) {
|
|
560
|
+
VALUE dict, level_val;
|
|
561
|
+
rb_scan_args(argc, argv, "11", &dict, &level_val);
|
|
562
|
+
|
|
563
|
+
Check_Type(dict, T_STRING);
|
|
564
|
+
int level = NIL_P(level_val) ? ZSTD_CLEVEL_DEFAULT : NUM2INT(level_val);
|
|
565
|
+
|
|
566
|
+
const char *dict_data = RSTRING_PTR(dict);
|
|
567
|
+
size_t dict_size = RSTRING_LEN(dict);
|
|
568
|
+
|
|
569
|
+
ZSTD_CDict *cdict = ZSTD_createCDict(dict_data, dict_size, level);
|
|
570
|
+
if (!cdict) {
|
|
571
|
+
rb_raise(eZstdError, "Failed to create compression dictionary");
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
DATA_PTR(self) = cdict;
|
|
575
|
+
return self;
|
|
576
|
+
}
|
|
577
|
+
|
|
578
|
+
static VALUE cdict_alloc(VALUE klass) {
|
|
579
|
+
return TypedData_Wrap_Struct(klass, &cdict_type, NULL);
|
|
580
|
+
}
|
|
581
|
+
|
|
582
|
+
static VALUE cdict_sizeof(VALUE self) {
|
|
583
|
+
ZSTD_CDict *cdict;
|
|
584
|
+
TypedData_Get_Struct(self, ZSTD_CDict, &cdict_type, cdict);
|
|
585
|
+
return SIZET2NUM(ZSTD_sizeof_CDict(cdict));
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
/* DDict class */
|
|
589
|
+
|
|
590
|
+
static void ddict_free(void *ptr) {
|
|
591
|
+
if (ptr) {
|
|
592
|
+
ZSTD_freeDDict((ZSTD_DDict*)ptr);
|
|
593
|
+
}
|
|
594
|
+
}
|
|
595
|
+
|
|
596
|
+
static const rb_data_type_t ddict_type = {
|
|
597
|
+
"ZstdNative::DDict",
|
|
598
|
+
{NULL, ddict_free, NULL},
|
|
599
|
+
0, 0, RUBY_TYPED_FREE_IMMEDIATELY
|
|
600
|
+
};
|
|
601
|
+
|
|
602
|
+
static VALUE ddict_initialize(VALUE self, VALUE dict) {
|
|
603
|
+
Check_Type(dict, T_STRING);
|
|
604
|
+
|
|
605
|
+
const char *dict_data = RSTRING_PTR(dict);
|
|
606
|
+
size_t dict_size = RSTRING_LEN(dict);
|
|
607
|
+
|
|
608
|
+
ZSTD_DDict *ddict = ZSTD_createDDict(dict_data, dict_size);
|
|
609
|
+
if (!ddict) {
|
|
610
|
+
rb_raise(eZstdError, "Failed to create decompression dictionary");
|
|
611
|
+
}
|
|
612
|
+
|
|
613
|
+
DATA_PTR(self) = ddict;
|
|
614
|
+
return self;
|
|
615
|
+
}
|
|
616
|
+
|
|
617
|
+
static VALUE ddict_alloc(VALUE klass) {
|
|
618
|
+
return TypedData_Wrap_Struct(klass, &ddict_type, NULL);
|
|
619
|
+
}
|
|
620
|
+
|
|
621
|
+
static VALUE ddict_sizeof(VALUE self) {
|
|
622
|
+
ZSTD_DDict *ddict;
|
|
623
|
+
TypedData_Get_Struct(self, ZSTD_DDict, &ddict_type, ddict);
|
|
624
|
+
return SIZET2NUM(ZSTD_sizeof_DDict(ddict));
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
/* Dictionary helper functions */
|
|
628
|
+
|
|
629
|
+
static VALUE zstd_compress_using_dict(int argc, VALUE *argv, VALUE self) {
|
|
630
|
+
VALUE data, dict, level_val;
|
|
631
|
+
rb_scan_args(argc, argv, "21", &data, &dict, &level_val);
|
|
632
|
+
|
|
633
|
+
Check_Type(data, T_STRING);
|
|
634
|
+
Check_Type(dict, T_STRING);
|
|
635
|
+
int level = NIL_P(level_val) ? ZSTD_CLEVEL_DEFAULT : NUM2INT(level_val);
|
|
636
|
+
|
|
637
|
+
ZSTD_CCtx *ctx = ZSTD_createCCtx();
|
|
638
|
+
if (!ctx) {
|
|
639
|
+
rb_raise(eZstdError, "Failed to create compression context");
|
|
640
|
+
}
|
|
641
|
+
|
|
642
|
+
const char *src = RSTRING_PTR(data);
|
|
643
|
+
size_t src_size = RSTRING_LEN(data);
|
|
644
|
+
const char *dict_data = RSTRING_PTR(dict);
|
|
645
|
+
size_t dict_size = RSTRING_LEN(dict);
|
|
646
|
+
|
|
647
|
+
size_t dst_capacity = ZSTD_compressBound(src_size);
|
|
648
|
+
VALUE result = rb_str_buf_new(dst_capacity);
|
|
649
|
+
char *dst = RSTRING_PTR(result);
|
|
650
|
+
|
|
651
|
+
size_t compressed_size = ZSTD_compress_usingDict(ctx, dst, dst_capacity, src, src_size, dict_data, dict_size, level);
|
|
652
|
+
ZSTD_freeCCtx(ctx);
|
|
653
|
+
check_zstd_error(compressed_size, "Dictionary compression failed");
|
|
654
|
+
|
|
655
|
+
rb_str_set_len(result, compressed_size);
|
|
656
|
+
return result;
|
|
657
|
+
}
|
|
658
|
+
|
|
659
|
+
static VALUE zstd_decompress_using_dict(VALUE self, VALUE data, VALUE dict) {
|
|
660
|
+
Check_Type(data, T_STRING);
|
|
661
|
+
Check_Type(dict, T_STRING);
|
|
662
|
+
|
|
663
|
+
ZSTD_DCtx *ctx = ZSTD_createDCtx();
|
|
664
|
+
if (!ctx) {
|
|
665
|
+
rb_raise(eZstdError, "Failed to create decompression context");
|
|
666
|
+
}
|
|
667
|
+
|
|
668
|
+
const char *src = RSTRING_PTR(data);
|
|
669
|
+
size_t src_size = RSTRING_LEN(data);
|
|
670
|
+
const char *dict_data = RSTRING_PTR(dict);
|
|
671
|
+
size_t dict_size = RSTRING_LEN(dict);
|
|
672
|
+
|
|
673
|
+
unsigned long long const dst_capacity = ZSTD_getFrameContentSize(src, src_size);
|
|
674
|
+
|
|
675
|
+
if (dst_capacity == ZSTD_CONTENTSIZE_ERROR) {
|
|
676
|
+
ZSTD_freeDCtx(ctx);
|
|
677
|
+
rb_raise(eZstdError, "Invalid compressed data");
|
|
678
|
+
}
|
|
679
|
+
if (dst_capacity == ZSTD_CONTENTSIZE_UNKNOWN) {
|
|
680
|
+
ZSTD_freeDCtx(ctx);
|
|
681
|
+
rb_raise(eZstdError, "Content size unknown");
|
|
682
|
+
}
|
|
683
|
+
|
|
684
|
+
VALUE result = rb_str_buf_new(dst_capacity);
|
|
685
|
+
char *dst = RSTRING_PTR(result);
|
|
686
|
+
|
|
687
|
+
size_t decompressed_size = ZSTD_decompress_usingDict(ctx, dst, dst_capacity, src, src_size, dict_data, dict_size);
|
|
688
|
+
ZSTD_freeDCtx(ctx);
|
|
689
|
+
check_zstd_error(decompressed_size, "Dictionary decompression failed");
|
|
690
|
+
|
|
691
|
+
rb_str_set_len(result, decompressed_size);
|
|
692
|
+
return result;
|
|
693
|
+
}
|
|
694
|
+
|
|
695
|
+
static VALUE zstd_compress_using_cdict(VALUE self, VALUE data, VALUE cdict_val) {
|
|
696
|
+
Check_Type(data, T_STRING);
|
|
697
|
+
|
|
698
|
+
ZSTD_CDict *cdict;
|
|
699
|
+
TypedData_Get_Struct(cdict_val, ZSTD_CDict, &cdict_type, cdict);
|
|
700
|
+
|
|
701
|
+
ZSTD_CCtx *ctx = ZSTD_createCCtx();
|
|
702
|
+
if (!ctx) {
|
|
703
|
+
rb_raise(eZstdError, "Failed to create compression context");
|
|
704
|
+
}
|
|
705
|
+
|
|
706
|
+
const char *src = RSTRING_PTR(data);
|
|
707
|
+
size_t src_size = RSTRING_LEN(data);
|
|
708
|
+
|
|
709
|
+
size_t dst_capacity = ZSTD_compressBound(src_size);
|
|
710
|
+
VALUE result = rb_str_buf_new(dst_capacity);
|
|
711
|
+
char *dst = RSTRING_PTR(result);
|
|
712
|
+
|
|
713
|
+
size_t compressed_size = ZSTD_compress_usingCDict(ctx, dst, dst_capacity, src, src_size, cdict);
|
|
714
|
+
ZSTD_freeCCtx(ctx);
|
|
715
|
+
check_zstd_error(compressed_size, "CDict compression failed");
|
|
716
|
+
|
|
717
|
+
rb_str_set_len(result, compressed_size);
|
|
718
|
+
return result;
|
|
719
|
+
}
|
|
720
|
+
|
|
721
|
+
static VALUE zstd_decompress_using_ddict(VALUE self, VALUE data, VALUE ddict_val) {
|
|
722
|
+
Check_Type(data, T_STRING);
|
|
723
|
+
|
|
724
|
+
ZSTD_DDict *ddict;
|
|
725
|
+
TypedData_Get_Struct(ddict_val, ZSTD_DDict, &ddict_type, ddict);
|
|
726
|
+
|
|
727
|
+
ZSTD_DCtx *ctx = ZSTD_createDCtx();
|
|
728
|
+
if (!ctx) {
|
|
729
|
+
rb_raise(eZstdError, "Failed to create decompression context");
|
|
730
|
+
}
|
|
731
|
+
|
|
732
|
+
const char *src = RSTRING_PTR(data);
|
|
733
|
+
size_t src_size = RSTRING_LEN(data);
|
|
734
|
+
|
|
735
|
+
unsigned long long const dst_capacity = ZSTD_getFrameContentSize(src, src_size);
|
|
736
|
+
|
|
737
|
+
if (dst_capacity == ZSTD_CONTENTSIZE_ERROR) {
|
|
738
|
+
ZSTD_freeDCtx(ctx);
|
|
739
|
+
rb_raise(eZstdError, "Invalid compressed data");
|
|
740
|
+
}
|
|
741
|
+
if (dst_capacity == ZSTD_CONTENTSIZE_UNKNOWN) {
|
|
742
|
+
ZSTD_freeDCtx(ctx);
|
|
743
|
+
rb_raise(eZstdError, "Content size unknown");
|
|
744
|
+
}
|
|
745
|
+
|
|
746
|
+
VALUE result = rb_str_buf_new(dst_capacity);
|
|
747
|
+
char *dst = RSTRING_PTR(result);
|
|
748
|
+
|
|
749
|
+
size_t decompressed_size = ZSTD_decompress_usingDDict(ctx, dst, dst_capacity, src, src_size, ddict);
|
|
750
|
+
ZSTD_freeDCtx(ctx);
|
|
751
|
+
check_zstd_error(decompressed_size, "DDict decompression failed");
|
|
752
|
+
|
|
753
|
+
rb_str_set_len(result, decompressed_size);
|
|
754
|
+
return result;
|
|
755
|
+
}
|
|
756
|
+
|
|
757
|
+
static VALUE zstd_dict_id_from_cdict(VALUE self, VALUE cdict_val) {
|
|
758
|
+
ZSTD_CDict *cdict;
|
|
759
|
+
TypedData_Get_Struct(cdict_val, ZSTD_CDict, &cdict_type, cdict);
|
|
760
|
+
return UINT2NUM(ZSTD_getDictID_fromCDict(cdict));
|
|
761
|
+
}
|
|
762
|
+
|
|
763
|
+
static VALUE zstd_dict_id_from_ddict(VALUE self, VALUE ddict_val) {
|
|
764
|
+
ZSTD_DDict *ddict;
|
|
765
|
+
TypedData_Get_Struct(ddict_val, ZSTD_DDict, &ddict_type, ddict);
|
|
766
|
+
return UINT2NUM(ZSTD_getDictID_fromDDict(ddict));
|
|
767
|
+
}
|
|
768
|
+
|
|
769
|
+
static VALUE zstd_dict_id_from_frame(VALUE self, VALUE data) {
|
|
770
|
+
Check_Type(data, T_STRING);
|
|
771
|
+
const char *src = RSTRING_PTR(data);
|
|
772
|
+
size_t src_size = RSTRING_LEN(data);
|
|
773
|
+
return UINT2NUM(ZSTD_getDictID_fromFrame(src, src_size));
|
|
774
|
+
}
|
|
775
|
+
|
|
776
|
+
/* Module initialization */
|
|
777
|
+
|
|
778
|
+
void Init_zstd_native(void) {
|
|
779
|
+
mZstdNative = rb_define_module("ZstdNative");
|
|
780
|
+
eZstdError = rb_define_class_under(mZstdNative, "Error", rb_eStandardError);
|
|
781
|
+
|
|
782
|
+
/* Module methods */
|
|
783
|
+
rb_define_module_function(mZstdNative, "version_number", zstd_version_number, 0);
|
|
784
|
+
rb_define_module_function(mZstdNative, "version_string", zstd_version_string, 0);
|
|
785
|
+
rb_define_module_function(mZstdNative, "compress", zstd_compress, -1);
|
|
786
|
+
rb_define_module_function(mZstdNative, "decompress", zstd_decompress, 1);
|
|
787
|
+
rb_define_module_function(mZstdNative, "compress_bound", zstd_compress_bound, 1);
|
|
788
|
+
rb_define_module_function(mZstdNative, "frame_content_size", zstd_frame_content_size, 1);
|
|
789
|
+
rb_define_module_function(mZstdNative, "find_frame_compressed_size", zstd_find_frame_compressed_size, 1);
|
|
790
|
+
rb_define_module_function(mZstdNative, "min_clevel", zstd_min_clevel, 0);
|
|
791
|
+
rb_define_module_function(mZstdNative, "max_clevel", zstd_max_clevel, 0);
|
|
792
|
+
rb_define_module_function(mZstdNative, "default_clevel", zstd_default_clevel, 0);
|
|
793
|
+
|
|
794
|
+
/* Dictionary functions */
|
|
795
|
+
rb_define_module_function(mZstdNative, "compress_using_dict", zstd_compress_using_dict, -1);
|
|
796
|
+
rb_define_module_function(mZstdNative, "decompress_using_dict", zstd_decompress_using_dict, 2);
|
|
797
|
+
rb_define_module_function(mZstdNative, "compress_using_cdict", zstd_compress_using_cdict, 2);
|
|
798
|
+
rb_define_module_function(mZstdNative, "decompress_using_ddict", zstd_decompress_using_ddict, 2);
|
|
799
|
+
rb_define_module_function(mZstdNative, "dict_id_from_cdict", zstd_dict_id_from_cdict, 1);
|
|
800
|
+
rb_define_module_function(mZstdNative, "dict_id_from_ddict", zstd_dict_id_from_ddict, 1);
|
|
801
|
+
rb_define_module_function(mZstdNative, "dict_id_from_frame", zstd_dict_id_from_frame, 1);
|
|
802
|
+
|
|
803
|
+
/* CCtx class */
|
|
804
|
+
cCCtx = rb_define_class_under(mZstdNative, "CCtx", rb_cObject);
|
|
805
|
+
rb_define_alloc_func(cCCtx, cctx_alloc);
|
|
806
|
+
rb_define_method(cCCtx, "compress", cctx_compress, 2);
|
|
807
|
+
rb_define_method(cCCtx, "reset", cctx_reset, 0);
|
|
808
|
+
rb_define_method(cCCtx, "load_dictionary", cctx_load_dictionary, 1);
|
|
809
|
+
rb_define_method(cCCtx, "ref_cdict", cctx_ref_cdict, 1);
|
|
810
|
+
rb_define_method(cCCtx, "ref_prefix", cctx_ref_prefix, 1);
|
|
811
|
+
rb_define_method(cCCtx, "sizeof", cctx_sizeof, 0);
|
|
812
|
+
|
|
813
|
+
/* DCtx class */
|
|
814
|
+
cDCtx = rb_define_class_under(mZstdNative, "DCtx", rb_cObject);
|
|
815
|
+
rb_define_alloc_func(cDCtx, dctx_alloc);
|
|
816
|
+
rb_define_method(cDCtx, "decompress", dctx_decompress, 1);
|
|
817
|
+
rb_define_method(cDCtx, "reset", dctx_reset, 0);
|
|
818
|
+
rb_define_method(cDCtx, "load_dictionary", dctx_load_dictionary, 1);
|
|
819
|
+
rb_define_method(cDCtx, "ref_ddict", dctx_ref_ddict, 1);
|
|
820
|
+
rb_define_method(cDCtx, "ref_prefix", dctx_ref_prefix, 1);
|
|
821
|
+
rb_define_method(cDCtx, "sizeof", dctx_sizeof, 0);
|
|
822
|
+
|
|
823
|
+
/* CStream class */
|
|
824
|
+
cCStream = rb_define_class_under(mZstdNative, "CStream", rb_cObject);
|
|
825
|
+
rb_define_alloc_func(cCStream, cstream_alloc);
|
|
826
|
+
rb_define_method(cCStream, "initialize", cstream_initialize, -1);
|
|
827
|
+
rb_define_method(cCStream, "compress", cstream_compress, 1);
|
|
828
|
+
rb_define_method(cCStream, "flush", cstream_flush, 0);
|
|
829
|
+
rb_define_method(cCStream, "finish", cstream_finish, 0);
|
|
830
|
+
rb_define_singleton_method(cCStream, "in_size", cstream_in_size, 0);
|
|
831
|
+
rb_define_singleton_method(cCStream, "out_size", cstream_out_size, 0);
|
|
832
|
+
|
|
833
|
+
/* DStream class */
|
|
834
|
+
cDStream = rb_define_class_under(mZstdNative, "DStream", rb_cObject);
|
|
835
|
+
rb_define_alloc_func(cDStream, dstream_alloc);
|
|
836
|
+
rb_define_method(cDStream, "initialize", dstream_initialize, 0);
|
|
837
|
+
rb_define_method(cDStream, "decompress", dstream_decompress, 1);
|
|
838
|
+
rb_define_singleton_method(cDStream, "in_size", dstream_in_size, 0);
|
|
839
|
+
rb_define_singleton_method(cDStream, "out_size", dstream_out_size, 0);
|
|
840
|
+
|
|
841
|
+
/* CDict class */
|
|
842
|
+
cCDict = rb_define_class_under(mZstdNative, "CDict", rb_cObject);
|
|
843
|
+
rb_define_alloc_func(cCDict, cdict_alloc);
|
|
844
|
+
rb_define_method(cCDict, "initialize", cdict_initialize, -1);
|
|
845
|
+
rb_define_method(cCDict, "sizeof", cdict_sizeof, 0);
|
|
846
|
+
|
|
847
|
+
/* DDict class */
|
|
848
|
+
cDDict = rb_define_class_under(mZstdNative, "DDict", rb_cObject);
|
|
849
|
+
rb_define_alloc_func(cDDict, ddict_alloc);
|
|
850
|
+
rb_define_method(cDDict, "initialize", ddict_initialize, 1);
|
|
851
|
+
rb_define_method(cDDict, "sizeof", ddict_sizeof, 0);
|
|
852
|
+
}
|