koffi 2.3.6 → 2.3.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (276) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/package.json +2 -2
  3. package/src/cnoke/cnoke.js +3 -7
  4. package/src/cnoke/src/builder.js +7 -4
  5. package/src/cnoke/src/index.js +2 -2
  6. package/src/koffi/build/2.3.7/koffi_darwin_arm64/koffi.node +0 -0
  7. package/src/koffi/build/2.3.7/koffi_darwin_x64/koffi.node +0 -0
  8. package/src/koffi/build/2.3.7/koffi_freebsd_arm64/koffi.node +0 -0
  9. package/src/koffi/build/2.3.7/koffi_freebsd_ia32/koffi.node +0 -0
  10. package/src/koffi/build/2.3.7/koffi_freebsd_x64/koffi.node +0 -0
  11. package/src/koffi/build/2.3.7/koffi_linux_arm32hf/koffi.node +0 -0
  12. package/src/koffi/build/2.3.7/koffi_linux_arm64/koffi.node +0 -0
  13. package/src/koffi/build/2.3.7/koffi_linux_ia32/koffi.node +0 -0
  14. package/src/koffi/build/2.3.7/koffi_linux_riscv64hf64/koffi.node +0 -0
  15. package/src/koffi/build/2.3.7/koffi_linux_x64/koffi.node +0 -0
  16. package/src/koffi/build/2.3.7/koffi_openbsd_ia32/koffi.node +0 -0
  17. package/src/koffi/build/2.3.7/koffi_openbsd_x64/koffi.node +0 -0
  18. package/src/koffi/build/2.3.7/koffi_win32_arm64/koffi.node +0 -0
  19. package/src/koffi/build/2.3.7/koffi_win32_ia32/koffi.node +0 -0
  20. package/src/koffi/build/2.3.7/koffi_win32_x64/koffi.node +0 -0
  21. package/src/koffi/src/ffi.cc +2 -2
  22. package/src/koffi/src/index.d.ts +2 -2
  23. package/src/koffi/src/index.js +1 -0
  24. package/src/koffi/build/2.3.6/koffi_darwin_arm64/koffi.node +0 -0
  25. package/src/koffi/build/2.3.6/koffi_darwin_x64/koffi.node +0 -0
  26. package/src/koffi/build/2.3.6/koffi_freebsd_arm64/koffi.node +0 -0
  27. package/src/koffi/build/2.3.6/koffi_freebsd_ia32/koffi.node +0 -0
  28. package/src/koffi/build/2.3.6/koffi_freebsd_x64/koffi.node +0 -0
  29. package/src/koffi/build/2.3.6/koffi_linux_arm32hf/koffi.node +0 -0
  30. package/src/koffi/build/2.3.6/koffi_linux_arm64/koffi.node +0 -0
  31. package/src/koffi/build/2.3.6/koffi_linux_ia32/koffi.node +0 -0
  32. package/src/koffi/build/2.3.6/koffi_linux_riscv64hf64/koffi.node +0 -0
  33. package/src/koffi/build/2.3.6/koffi_linux_x64/koffi.node +0 -0
  34. package/src/koffi/build/2.3.6/koffi_openbsd_ia32/koffi.node +0 -0
  35. package/src/koffi/build/2.3.6/koffi_openbsd_x64/koffi.node +0 -0
  36. package/src/koffi/build/2.3.6/koffi_win32_arm64/koffi.node +0 -0
  37. package/src/koffi/build/2.3.6/koffi_win32_arm64/koffi.pdb +0 -0
  38. package/src/koffi/build/2.3.6/koffi_win32_ia32/koffi.node +0 -0
  39. package/src/koffi/build/2.3.6/koffi_win32_ia32/koffi.pdb +0 -0
  40. package/src/koffi/build/2.3.6/koffi_win32_x64/koffi.node +0 -0
  41. package/src/koffi/build/2.3.6/koffi_win32_x64/koffi.pdb +0 -0
  42. package/vendor/brotli/BUILD +0 -144
  43. package/vendor/brotli/CMakeLists.txt +0 -421
  44. package/vendor/brotli/CONTRIBUTING.md +0 -27
  45. package/vendor/brotli/LICENSE +0 -19
  46. package/vendor/brotli/MANIFEST.in +0 -17
  47. package/vendor/brotli/Makefile +0 -55
  48. package/vendor/brotli/Makefile.am +0 -38
  49. package/vendor/brotli/README +0 -15
  50. package/vendor/brotli/README.md +0 -104
  51. package/vendor/brotli/WORKSPACE +0 -21
  52. package/vendor/brotli/bootstrap +0 -35
  53. package/vendor/brotli/c/common/constants.c +0 -15
  54. package/vendor/brotli/c/common/constants.h +0 -200
  55. package/vendor/brotli/c/common/context.c +0 -156
  56. package/vendor/brotli/c/common/context.h +0 -113
  57. package/vendor/brotli/c/common/dictionary.c +0 -5914
  58. package/vendor/brotli/c/common/dictionary.h +0 -64
  59. package/vendor/brotli/c/common/platform.c +0 -22
  60. package/vendor/brotli/c/common/platform.h +0 -596
  61. package/vendor/brotli/c/common/transform.c +0 -291
  62. package/vendor/brotli/c/common/transform.h +0 -85
  63. package/vendor/brotli/c/common/version.h +0 -26
  64. package/vendor/brotli/c/dec/bit_reader.c +0 -76
  65. package/vendor/brotli/c/dec/bit_reader.h +0 -351
  66. package/vendor/brotli/c/dec/decode.c +0 -2608
  67. package/vendor/brotli/c/dec/huffman.c +0 -339
  68. package/vendor/brotli/c/dec/huffman.h +0 -121
  69. package/vendor/brotli/c/dec/prefix.h +0 -732
  70. package/vendor/brotli/c/dec/state.c +0 -159
  71. package/vendor/brotli/c/dec/state.h +0 -365
  72. package/vendor/brotli/c/enc/backward_references.c +0 -145
  73. package/vendor/brotli/c/enc/backward_references.h +0 -39
  74. package/vendor/brotli/c/enc/backward_references_hq.c +0 -843
  75. package/vendor/brotli/c/enc/backward_references_hq.h +0 -95
  76. package/vendor/brotli/c/enc/backward_references_inc.h +0 -163
  77. package/vendor/brotli/c/enc/bit_cost.c +0 -35
  78. package/vendor/brotli/c/enc/bit_cost.h +0 -63
  79. package/vendor/brotli/c/enc/bit_cost_inc.h +0 -127
  80. package/vendor/brotli/c/enc/block_encoder_inc.h +0 -34
  81. package/vendor/brotli/c/enc/block_splitter.c +0 -194
  82. package/vendor/brotli/c/enc/block_splitter.h +0 -51
  83. package/vendor/brotli/c/enc/block_splitter_inc.h +0 -440
  84. package/vendor/brotli/c/enc/brotli_bit_stream.c +0 -1314
  85. package/vendor/brotli/c/enc/brotli_bit_stream.h +0 -84
  86. package/vendor/brotli/c/enc/cluster.c +0 -56
  87. package/vendor/brotli/c/enc/cluster.h +0 -48
  88. package/vendor/brotli/c/enc/cluster_inc.h +0 -320
  89. package/vendor/brotli/c/enc/command.c +0 -28
  90. package/vendor/brotli/c/enc/command.h +0 -190
  91. package/vendor/brotli/c/enc/compress_fragment.c +0 -790
  92. package/vendor/brotli/c/enc/compress_fragment.h +0 -61
  93. package/vendor/brotli/c/enc/compress_fragment_two_pass.c +0 -645
  94. package/vendor/brotli/c/enc/compress_fragment_two_pass.h +0 -54
  95. package/vendor/brotli/c/enc/dictionary_hash.c +0 -1846
  96. package/vendor/brotli/c/enc/dictionary_hash.h +0 -25
  97. package/vendor/brotli/c/enc/encode.c +0 -1927
  98. package/vendor/brotli/c/enc/encoder_dict.c +0 -33
  99. package/vendor/brotli/c/enc/encoder_dict.h +0 -43
  100. package/vendor/brotli/c/enc/entropy_encode.c +0 -503
  101. package/vendor/brotli/c/enc/entropy_encode.h +0 -122
  102. package/vendor/brotli/c/enc/entropy_encode_static.h +0 -539
  103. package/vendor/brotli/c/enc/fast_log.c +0 -105
  104. package/vendor/brotli/c/enc/fast_log.h +0 -66
  105. package/vendor/brotli/c/enc/find_match_length.h +0 -79
  106. package/vendor/brotli/c/enc/hash.h +0 -488
  107. package/vendor/brotli/c/enc/hash_composite_inc.h +0 -125
  108. package/vendor/brotli/c/enc/hash_forgetful_chain_inc.h +0 -293
  109. package/vendor/brotli/c/enc/hash_longest_match64_inc.h +0 -267
  110. package/vendor/brotli/c/enc/hash_longest_match_inc.h +0 -262
  111. package/vendor/brotli/c/enc/hash_longest_match_quickly_inc.h +0 -266
  112. package/vendor/brotli/c/enc/hash_rolling_inc.h +0 -212
  113. package/vendor/brotli/c/enc/hash_to_binary_tree_inc.h +0 -329
  114. package/vendor/brotli/c/enc/histogram.c +0 -100
  115. package/vendor/brotli/c/enc/histogram.h +0 -63
  116. package/vendor/brotli/c/enc/histogram_inc.h +0 -51
  117. package/vendor/brotli/c/enc/literal_cost.c +0 -175
  118. package/vendor/brotli/c/enc/literal_cost.h +0 -30
  119. package/vendor/brotli/c/enc/memory.c +0 -170
  120. package/vendor/brotli/c/enc/memory.h +0 -114
  121. package/vendor/brotli/c/enc/metablock.c +0 -663
  122. package/vendor/brotli/c/enc/metablock.h +0 -105
  123. package/vendor/brotli/c/enc/metablock_inc.h +0 -183
  124. package/vendor/brotli/c/enc/params.h +0 -46
  125. package/vendor/brotli/c/enc/prefix.h +0 -53
  126. package/vendor/brotli/c/enc/quality.h +0 -165
  127. package/vendor/brotli/c/enc/ringbuffer.h +0 -167
  128. package/vendor/brotli/c/enc/static_dict.c +0 -486
  129. package/vendor/brotli/c/enc/static_dict.h +0 -40
  130. package/vendor/brotli/c/enc/static_dict_lut.h +0 -5864
  131. package/vendor/brotli/c/enc/utf8_util.c +0 -85
  132. package/vendor/brotli/c/enc/utf8_util.h +0 -32
  133. package/vendor/brotli/c/enc/write_bits.h +0 -87
  134. package/vendor/brotli/c/include/brotli/decode.h +0 -344
  135. package/vendor/brotli/c/include/brotli/encode.h +0 -448
  136. package/vendor/brotli/c/include/brotli/port.h +0 -288
  137. package/vendor/brotli/c/include/brotli/types.h +0 -83
  138. package/vendor/brotli/c/tools/brotli.c +0 -1116
  139. package/vendor/brotli/c/tools/brotli.md +0 -107
  140. package/vendor/brotli/compiler_config_setting.bzl +0 -28
  141. package/vendor/brotli/configure +0 -8
  142. package/vendor/brotli/configure-cmake +0 -318
  143. package/vendor/brotli/configure.ac +0 -14
  144. package/vendor/brotli/docs/brotli.1 +0 -132
  145. package/vendor/brotli/docs/constants.h.3 +0 -47
  146. package/vendor/brotli/docs/decode.h.3 +0 -415
  147. package/vendor/brotli/docs/encode.h.3 +0 -586
  148. package/vendor/brotli/docs/types.h.3 +0 -117
  149. package/vendor/brotli/premake5.lua +0 -78
  150. package/vendor/brotli/python/Makefile +0 -57
  151. package/vendor/brotli/python/README.md +0 -54
  152. package/vendor/brotli/python/_brotli.cc +0 -753
  153. package/vendor/brotli/python/bro.py +0 -160
  154. package/vendor/brotli/python/brotli.py +0 -56
  155. package/vendor/brotli/python/tests/__init__.py +0 -0
  156. package/vendor/brotli/python/tests/_test_utils.py +0 -112
  157. package/vendor/brotli/python/tests/bro_test.py +0 -102
  158. package/vendor/brotli/python/tests/compress_test.py +0 -41
  159. package/vendor/brotli/python/tests/compressor_test.py +0 -94
  160. package/vendor/brotli/python/tests/decompress_test.py +0 -42
  161. package/vendor/brotli/python/tests/decompressor_test.py +0 -59
  162. package/vendor/brotli/scripts/libbrotlicommon.pc.in +0 -11
  163. package/vendor/brotli/scripts/libbrotlidec.pc.in +0 -12
  164. package/vendor/brotli/scripts/libbrotlienc.pc.in +0 -12
  165. package/vendor/brotli/scripts/sources.lst +0 -104
  166. package/vendor/brotli/setup.cfg +0 -5
  167. package/vendor/brotli/setup.py +0 -293
  168. package/vendor/brotli/tests/Makefile +0 -17
  169. package/vendor/brotli/tests/compatibility_test.sh +0 -25
  170. package/vendor/brotli/tests/roundtrip_test.sh +0 -36
  171. package/vendor/brotli/tests/run-compatibility-test.cmake +0 -31
  172. package/vendor/brotli/tests/run-roundtrip-test.cmake +0 -36
  173. package/vendor/brotli/tests/testdata/empty +0 -0
  174. package/vendor/brotli/tests/testdata/empty.compressed +0 -1
  175. package/vendor/brotli/tests/testdata/ukkonooa +0 -1
  176. package/vendor/brotli/tests/testdata/ukkonooa.compressed +0 -0
  177. package/vendor/dragonbox/CMakeLists.txt +0 -123
  178. package/vendor/dragonbox/LICENSE-Apache2-LLVM +0 -218
  179. package/vendor/dragonbox/LICENSE-Boost +0 -23
  180. package/vendor/dragonbox/README.md +0 -277
  181. package/vendor/dragonbox/cmake/dragonboxConfig.cmake +0 -1
  182. package/vendor/dragonbox/include/dragonbox/dragonbox.h +0 -2674
  183. package/vendor/dragonbox/include/dragonbox/dragonbox_to_chars.h +0 -108
  184. package/vendor/dragonbox/other_files/Dragonbox.pdf +0 -0
  185. package/vendor/dragonbox/other_files/Dragonbox_old.pdf +0 -0
  186. package/vendor/dragonbox/other_files/milo_benchmark.png +0 -0
  187. package/vendor/dragonbox/other_files/unknown_win64_vc2019.html +0 -540
  188. package/vendor/dragonbox/other_files/unknown_win64_vc2019_randomdigit_time.png +0 -0
  189. package/vendor/dragonbox/source/dragonbox_to_chars.cpp +0 -303
  190. package/vendor/dragonbox/subproject/3rdparty/grisu_exact/CMakeLists.txt +0 -24
  191. package/vendor/dragonbox/subproject/3rdparty/grisu_exact/fp_to_chars.cpp +0 -238
  192. package/vendor/dragonbox/subproject/3rdparty/grisu_exact/fp_to_chars.h +0 -95
  193. package/vendor/dragonbox/subproject/3rdparty/grisu_exact/grisu_exact.h +0 -2666
  194. package/vendor/dragonbox/subproject/3rdparty/ryu/CMakeLists.txt +0 -16
  195. package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/common.h +0 -114
  196. package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/d2s.c +0 -509
  197. package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/d2s_full_table.h +0 -367
  198. package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/d2s_intrinsics.h +0 -357
  199. package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/digit_table.h +0 -35
  200. package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/f2s.c +0 -345
  201. package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/f2s_full_table.h +0 -55
  202. package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/f2s_intrinsics.h +0 -128
  203. package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/ryu.h +0 -46
  204. package/vendor/dragonbox/subproject/3rdparty/schubfach/CMakeLists.txt +0 -22
  205. package/vendor/dragonbox/subproject/3rdparty/schubfach/schubfach_32.cc +0 -699
  206. package/vendor/dragonbox/subproject/3rdparty/schubfach/schubfach_32.h +0 -31
  207. package/vendor/dragonbox/subproject/3rdparty/schubfach/schubfach_64.cc +0 -1354
  208. package/vendor/dragonbox/subproject/3rdparty/schubfach/schubfach_64.h +0 -31
  209. package/vendor/dragonbox/subproject/3rdparty/shaded_plots/example_shaded_plots.m +0 -68
  210. package/vendor/dragonbox/subproject/3rdparty/shaded_plots/license.txt +0 -25
  211. package/vendor/dragonbox/subproject/3rdparty/shaded_plots/plot_distribution.m +0 -92
  212. package/vendor/dragonbox/subproject/3rdparty/shaded_plots/plot_distribution_prctile.m +0 -121
  213. package/vendor/dragonbox/subproject/3rdparty/shaded_plots/plot_histogram_shaded.m +0 -99
  214. package/vendor/dragonbox/subproject/3rdparty/shaded_plots/plot_shaded.m +0 -93
  215. package/vendor/dragonbox/subproject/benchmark/CMakeLists.txt +0 -65
  216. package/vendor/dragonbox/subproject/benchmark/include/benchmark.h +0 -40
  217. package/vendor/dragonbox/subproject/benchmark/matlab/plot_benchmarks.m +0 -22
  218. package/vendor/dragonbox/subproject/benchmark/matlab/plot_digit_benchmark.m +0 -78
  219. package/vendor/dragonbox/subproject/benchmark/matlab/plot_uniform_benchmark.m +0 -95
  220. package/vendor/dragonbox/subproject/benchmark/results/digits_benchmark_binary32_clang.png +0 -0
  221. package/vendor/dragonbox/subproject/benchmark/results/digits_benchmark_binary32_msvc.png +0 -0
  222. package/vendor/dragonbox/subproject/benchmark/results/digits_benchmark_binary64_clang.png +0 -0
  223. package/vendor/dragonbox/subproject/benchmark/results/digits_benchmark_binary64_msvc.png +0 -0
  224. package/vendor/dragonbox/subproject/benchmark/results/uniform_benchmark_binary32_clang.png +0 -0
  225. package/vendor/dragonbox/subproject/benchmark/results/uniform_benchmark_binary32_msvc.png +0 -0
  226. package/vendor/dragonbox/subproject/benchmark/results/uniform_benchmark_binary64_clang.png +0 -0
  227. package/vendor/dragonbox/subproject/benchmark/results/uniform_benchmark_binary64_msvc.png +0 -0
  228. package/vendor/dragonbox/subproject/benchmark/source/benchmark.cpp +0 -238
  229. package/vendor/dragonbox/subproject/benchmark/source/dragonbox.cpp +0 -30
  230. package/vendor/dragonbox/subproject/benchmark/source/grisu_exact.cpp +0 -36
  231. package/vendor/dragonbox/subproject/benchmark/source/ryu.cpp +0 -27
  232. package/vendor/dragonbox/subproject/benchmark/source/schubfach.cpp +0 -31
  233. package/vendor/dragonbox/subproject/common/CMakeLists.txt +0 -42
  234. package/vendor/dragonbox/subproject/common/include/best_rational_approx.h +0 -97
  235. package/vendor/dragonbox/subproject/common/include/big_uint.h +0 -218
  236. package/vendor/dragonbox/subproject/common/include/continued_fractions.h +0 -174
  237. package/vendor/dragonbox/subproject/common/include/good_rational_approx.h +0 -267
  238. package/vendor/dragonbox/subproject/common/include/random_float.h +0 -182
  239. package/vendor/dragonbox/subproject/common/include/rational_continued_fractions.h +0 -57
  240. package/vendor/dragonbox/subproject/common/source/big_uint.cpp +0 -602
  241. package/vendor/dragonbox/subproject/meta/CMakeLists.txt +0 -41
  242. package/vendor/dragonbox/subproject/meta/results/binary32_generated_cache.txt +0 -82
  243. package/vendor/dragonbox/subproject/meta/results/binary64_compressed_cache_error_table.txt +0 -10
  244. package/vendor/dragonbox/subproject/meta/results/binary64_generated_cache.txt +0 -623
  245. package/vendor/dragonbox/subproject/meta/source/generate_cache.cpp +0 -126
  246. package/vendor/dragonbox/subproject/meta/source/live_test.cpp +0 -81
  247. package/vendor/dragonbox/subproject/meta/source/perf_test.cpp +0 -104
  248. package/vendor/dragonbox/subproject/meta/source/sandbox.cpp +0 -20
  249. package/vendor/dragonbox/subproject/test/CMakeLists.txt +0 -70
  250. package/vendor/dragonbox/subproject/test/results/binary32.csv +0 -255
  251. package/vendor/dragonbox/subproject/test/results/binary64.csv +0 -2047
  252. package/vendor/dragonbox/subproject/test/results/plot_required_bits.m +0 -18
  253. package/vendor/dragonbox/subproject/test/source/test_all_shorter_interval_cases.cpp +0 -88
  254. package/vendor/dragonbox/subproject/test/source/uniform_random_test.cpp +0 -95
  255. package/vendor/dragonbox/subproject/test/source/verify_cache_precision.cpp +0 -338
  256. package/vendor/dragonbox/subproject/test/source/verify_compressed_cache.cpp +0 -154
  257. package/vendor/dragonbox/subproject/test/source/verify_fast_multiplication.cpp +0 -168
  258. package/vendor/dragonbox/subproject/test/source/verify_log_computation.cpp +0 -251
  259. package/vendor/dragonbox/subproject/test/source/verify_magic_division.cpp +0 -113
  260. package/vendor/miniz/ChangeLog.md +0 -239
  261. package/vendor/miniz/LICENSE +0 -22
  262. package/vendor/miniz/examples/example1.c +0 -105
  263. package/vendor/miniz/examples/example2.c +0 -164
  264. package/vendor/miniz/examples/example3.c +0 -269
  265. package/vendor/miniz/examples/example4.c +0 -102
  266. package/vendor/miniz/examples/example5.c +0 -327
  267. package/vendor/miniz/examples/example6.c +0 -166
  268. package/vendor/miniz/miniz.c +0 -7835
  269. package/vendor/miniz/miniz.h +0 -1422
  270. package/vendor/miniz/readme.md +0 -46
  271. /package/src/koffi/build/{2.3.6 → 2.3.7}/koffi_win32_arm64/koffi.exp +0 -0
  272. /package/src/koffi/build/{2.3.6 → 2.3.7}/koffi_win32_arm64/koffi.lib +0 -0
  273. /package/src/koffi/build/{2.3.6 → 2.3.7}/koffi_win32_ia32/koffi.exp +0 -0
  274. /package/src/koffi/build/{2.3.6 → 2.3.7}/koffi_win32_ia32/koffi.lib +0 -0
  275. /package/src/koffi/build/{2.3.6 → 2.3.7}/koffi_win32_x64/koffi.exp +0 -0
  276. /package/src/koffi/build/{2.3.6 → 2.3.7}/koffi_win32_x64/koffi.lib +0 -0
@@ -1,291 +0,0 @@
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 "./transform.h"
8
-
9
- #if defined(__cplusplus) || defined(c_plusplus)
10
- extern "C" {
11
- #endif
12
-
13
- /* RFC 7932 transforms string data */
14
- static const char kPrefixSuffix[217] =
15
- "\1 \2, \10 of the \4 of \2s \1.\5 and \4 "
16
- /* 0x _0 _2 __5 _E _3 _6 _8 _E */
17
- "in \1\"\4 to \2\">\1\n\2. \1]\5 for \3 a \6 "
18
- /* 2x _3_ _5 _A_ _D_ _F _2 _4 _A _E */
19
- "that \1\'\6 with \6 from \4 by \1(\6. T"
20
- /* 4x _5_ _7 _E _5 _A _C */
21
- "he \4 on \4 as \4 is \4ing \2\n\t\1:\3ed "
22
- /* 6x _3 _8 _D _2 _7_ _ _A _C */
23
- "\2=\"\4 at \3ly \1,\2=\'\5.com/\7. This \5"
24
- /* 8x _0 _ _3 _8 _C _E _ _1 _7 _F */
25
- " not \3er \3al \4ful \4ive \5less \4es"
26
- /* Ax _5 _9 _D _2 _7 _D */
27
- "t \4ize \2\xc2\xa0\4ous \5 the \2e "; /* \0 - implicit trailing zero. */
28
- /* Cx _2 _7___ ___ _A _F _5 _8 */
29
-
30
- static const uint16_t kPrefixSuffixMap[50] = {
31
- 0x00, 0x02, 0x05, 0x0E, 0x13, 0x16, 0x18, 0x1E, 0x23, 0x25,
32
- 0x2A, 0x2D, 0x2F, 0x32, 0x34, 0x3A, 0x3E, 0x45, 0x47, 0x4E,
33
- 0x55, 0x5A, 0x5C, 0x63, 0x68, 0x6D, 0x72, 0x77, 0x7A, 0x7C,
34
- 0x80, 0x83, 0x88, 0x8C, 0x8E, 0x91, 0x97, 0x9F, 0xA5, 0xA9,
35
- 0xAD, 0xB2, 0xB7, 0xBD, 0xC2, 0xC7, 0xCA, 0xCF, 0xD5, 0xD8
36
- };
37
-
38
- /* RFC 7932 transforms */
39
- static const uint8_t kTransformsData[] = {
40
- 49, BROTLI_TRANSFORM_IDENTITY, 49,
41
- 49, BROTLI_TRANSFORM_IDENTITY, 0,
42
- 0, BROTLI_TRANSFORM_IDENTITY, 0,
43
- 49, BROTLI_TRANSFORM_OMIT_FIRST_1, 49,
44
- 49, BROTLI_TRANSFORM_UPPERCASE_FIRST, 0,
45
- 49, BROTLI_TRANSFORM_IDENTITY, 47,
46
- 0, BROTLI_TRANSFORM_IDENTITY, 49,
47
- 4, BROTLI_TRANSFORM_IDENTITY, 0,
48
- 49, BROTLI_TRANSFORM_IDENTITY, 3,
49
- 49, BROTLI_TRANSFORM_UPPERCASE_FIRST, 49,
50
- 49, BROTLI_TRANSFORM_IDENTITY, 6,
51
- 49, BROTLI_TRANSFORM_OMIT_FIRST_2, 49,
52
- 49, BROTLI_TRANSFORM_OMIT_LAST_1, 49,
53
- 1, BROTLI_TRANSFORM_IDENTITY, 0,
54
- 49, BROTLI_TRANSFORM_IDENTITY, 1,
55
- 0, BROTLI_TRANSFORM_UPPERCASE_FIRST, 0,
56
- 49, BROTLI_TRANSFORM_IDENTITY, 7,
57
- 49, BROTLI_TRANSFORM_IDENTITY, 9,
58
- 48, BROTLI_TRANSFORM_IDENTITY, 0,
59
- 49, BROTLI_TRANSFORM_IDENTITY, 8,
60
- 49, BROTLI_TRANSFORM_IDENTITY, 5,
61
- 49, BROTLI_TRANSFORM_IDENTITY, 10,
62
- 49, BROTLI_TRANSFORM_IDENTITY, 11,
63
- 49, BROTLI_TRANSFORM_OMIT_LAST_3, 49,
64
- 49, BROTLI_TRANSFORM_IDENTITY, 13,
65
- 49, BROTLI_TRANSFORM_IDENTITY, 14,
66
- 49, BROTLI_TRANSFORM_OMIT_FIRST_3, 49,
67
- 49, BROTLI_TRANSFORM_OMIT_LAST_2, 49,
68
- 49, BROTLI_TRANSFORM_IDENTITY, 15,
69
- 49, BROTLI_TRANSFORM_IDENTITY, 16,
70
- 0, BROTLI_TRANSFORM_UPPERCASE_FIRST, 49,
71
- 49, BROTLI_TRANSFORM_IDENTITY, 12,
72
- 5, BROTLI_TRANSFORM_IDENTITY, 49,
73
- 0, BROTLI_TRANSFORM_IDENTITY, 1,
74
- 49, BROTLI_TRANSFORM_OMIT_FIRST_4, 49,
75
- 49, BROTLI_TRANSFORM_IDENTITY, 18,
76
- 49, BROTLI_TRANSFORM_IDENTITY, 17,
77
- 49, BROTLI_TRANSFORM_IDENTITY, 19,
78
- 49, BROTLI_TRANSFORM_IDENTITY, 20,
79
- 49, BROTLI_TRANSFORM_OMIT_FIRST_5, 49,
80
- 49, BROTLI_TRANSFORM_OMIT_FIRST_6, 49,
81
- 47, BROTLI_TRANSFORM_IDENTITY, 49,
82
- 49, BROTLI_TRANSFORM_OMIT_LAST_4, 49,
83
- 49, BROTLI_TRANSFORM_IDENTITY, 22,
84
- 49, BROTLI_TRANSFORM_UPPERCASE_ALL, 49,
85
- 49, BROTLI_TRANSFORM_IDENTITY, 23,
86
- 49, BROTLI_TRANSFORM_IDENTITY, 24,
87
- 49, BROTLI_TRANSFORM_IDENTITY, 25,
88
- 49, BROTLI_TRANSFORM_OMIT_LAST_7, 49,
89
- 49, BROTLI_TRANSFORM_OMIT_LAST_1, 26,
90
- 49, BROTLI_TRANSFORM_IDENTITY, 27,
91
- 49, BROTLI_TRANSFORM_IDENTITY, 28,
92
- 0, BROTLI_TRANSFORM_IDENTITY, 12,
93
- 49, BROTLI_TRANSFORM_IDENTITY, 29,
94
- 49, BROTLI_TRANSFORM_OMIT_FIRST_9, 49,
95
- 49, BROTLI_TRANSFORM_OMIT_FIRST_7, 49,
96
- 49, BROTLI_TRANSFORM_OMIT_LAST_6, 49,
97
- 49, BROTLI_TRANSFORM_IDENTITY, 21,
98
- 49, BROTLI_TRANSFORM_UPPERCASE_FIRST, 1,
99
- 49, BROTLI_TRANSFORM_OMIT_LAST_8, 49,
100
- 49, BROTLI_TRANSFORM_IDENTITY, 31,
101
- 49, BROTLI_TRANSFORM_IDENTITY, 32,
102
- 47, BROTLI_TRANSFORM_IDENTITY, 3,
103
- 49, BROTLI_TRANSFORM_OMIT_LAST_5, 49,
104
- 49, BROTLI_TRANSFORM_OMIT_LAST_9, 49,
105
- 0, BROTLI_TRANSFORM_UPPERCASE_FIRST, 1,
106
- 49, BROTLI_TRANSFORM_UPPERCASE_FIRST, 8,
107
- 5, BROTLI_TRANSFORM_IDENTITY, 21,
108
- 49, BROTLI_TRANSFORM_UPPERCASE_ALL, 0,
109
- 49, BROTLI_TRANSFORM_UPPERCASE_FIRST, 10,
110
- 49, BROTLI_TRANSFORM_IDENTITY, 30,
111
- 0, BROTLI_TRANSFORM_IDENTITY, 5,
112
- 35, BROTLI_TRANSFORM_IDENTITY, 49,
113
- 47, BROTLI_TRANSFORM_IDENTITY, 2,
114
- 49, BROTLI_TRANSFORM_UPPERCASE_FIRST, 17,
115
- 49, BROTLI_TRANSFORM_IDENTITY, 36,
116
- 49, BROTLI_TRANSFORM_IDENTITY, 33,
117
- 5, BROTLI_TRANSFORM_IDENTITY, 0,
118
- 49, BROTLI_TRANSFORM_UPPERCASE_FIRST, 21,
119
- 49, BROTLI_TRANSFORM_UPPERCASE_FIRST, 5,
120
- 49, BROTLI_TRANSFORM_IDENTITY, 37,
121
- 0, BROTLI_TRANSFORM_IDENTITY, 30,
122
- 49, BROTLI_TRANSFORM_IDENTITY, 38,
123
- 0, BROTLI_TRANSFORM_UPPERCASE_ALL, 0,
124
- 49, BROTLI_TRANSFORM_IDENTITY, 39,
125
- 0, BROTLI_TRANSFORM_UPPERCASE_ALL, 49,
126
- 49, BROTLI_TRANSFORM_IDENTITY, 34,
127
- 49, BROTLI_TRANSFORM_UPPERCASE_ALL, 8,
128
- 49, BROTLI_TRANSFORM_UPPERCASE_FIRST, 12,
129
- 0, BROTLI_TRANSFORM_IDENTITY, 21,
130
- 49, BROTLI_TRANSFORM_IDENTITY, 40,
131
- 0, BROTLI_TRANSFORM_UPPERCASE_FIRST, 12,
132
- 49, BROTLI_TRANSFORM_IDENTITY, 41,
133
- 49, BROTLI_TRANSFORM_IDENTITY, 42,
134
- 49, BROTLI_TRANSFORM_UPPERCASE_ALL, 17,
135
- 49, BROTLI_TRANSFORM_IDENTITY, 43,
136
- 0, BROTLI_TRANSFORM_UPPERCASE_FIRST, 5,
137
- 49, BROTLI_TRANSFORM_UPPERCASE_ALL, 10,
138
- 0, BROTLI_TRANSFORM_IDENTITY, 34,
139
- 49, BROTLI_TRANSFORM_UPPERCASE_FIRST, 33,
140
- 49, BROTLI_TRANSFORM_IDENTITY, 44,
141
- 49, BROTLI_TRANSFORM_UPPERCASE_ALL, 5,
142
- 45, BROTLI_TRANSFORM_IDENTITY, 49,
143
- 0, BROTLI_TRANSFORM_IDENTITY, 33,
144
- 49, BROTLI_TRANSFORM_UPPERCASE_FIRST, 30,
145
- 49, BROTLI_TRANSFORM_UPPERCASE_ALL, 30,
146
- 49, BROTLI_TRANSFORM_IDENTITY, 46,
147
- 49, BROTLI_TRANSFORM_UPPERCASE_ALL, 1,
148
- 49, BROTLI_TRANSFORM_UPPERCASE_FIRST, 34,
149
- 0, BROTLI_TRANSFORM_UPPERCASE_FIRST, 33,
150
- 0, BROTLI_TRANSFORM_UPPERCASE_ALL, 30,
151
- 0, BROTLI_TRANSFORM_UPPERCASE_ALL, 1,
152
- 49, BROTLI_TRANSFORM_UPPERCASE_ALL, 33,
153
- 49, BROTLI_TRANSFORM_UPPERCASE_ALL, 21,
154
- 49, BROTLI_TRANSFORM_UPPERCASE_ALL, 12,
155
- 0, BROTLI_TRANSFORM_UPPERCASE_ALL, 5,
156
- 49, BROTLI_TRANSFORM_UPPERCASE_ALL, 34,
157
- 0, BROTLI_TRANSFORM_UPPERCASE_ALL, 12,
158
- 0, BROTLI_TRANSFORM_UPPERCASE_FIRST, 30,
159
- 0, BROTLI_TRANSFORM_UPPERCASE_ALL, 34,
160
- 0, BROTLI_TRANSFORM_UPPERCASE_FIRST, 34,
161
- };
162
-
163
- static const BrotliTransforms kBrotliTransforms = {
164
- sizeof(kPrefixSuffix),
165
- (const uint8_t*)kPrefixSuffix,
166
- kPrefixSuffixMap,
167
- sizeof(kTransformsData) / (3 * sizeof(kTransformsData[0])),
168
- kTransformsData,
169
- NULL, /* no extra parameters */
170
- {0, 12, 27, 23, 42, 63, 56, 48, 59, 64}
171
- };
172
-
173
- const BrotliTransforms* BrotliGetTransforms(void) {
174
- return &kBrotliTransforms;
175
- }
176
-
177
- static int ToUpperCase(uint8_t* p) {
178
- if (p[0] < 0xC0) {
179
- if (p[0] >= 'a' && p[0] <= 'z') {
180
- p[0] ^= 32;
181
- }
182
- return 1;
183
- }
184
- /* An overly simplified uppercasing model for UTF-8. */
185
- if (p[0] < 0xE0) {
186
- p[1] ^= 32;
187
- return 2;
188
- }
189
- /* An arbitrary transform for three byte characters. */
190
- p[2] ^= 5;
191
- return 3;
192
- }
193
-
194
- static int Shift(uint8_t* word, int word_len, uint16_t parameter) {
195
- /* Limited sign extension: scalar < (1 << 24). */
196
- uint32_t scalar =
197
- (parameter & 0x7FFFu) + (0x1000000u - (parameter & 0x8000u));
198
- if (word[0] < 0x80) {
199
- /* 1-byte rune / 0sssssss / 7 bit scalar (ASCII). */
200
- scalar += (uint32_t)word[0];
201
- word[0] = (uint8_t)(scalar & 0x7Fu);
202
- return 1;
203
- } else if (word[0] < 0xC0) {
204
- /* Continuation / 10AAAAAA. */
205
- return 1;
206
- } else if (word[0] < 0xE0) {
207
- /* 2-byte rune / 110sssss AAssssss / 11 bit scalar. */
208
- if (word_len < 2) return 1;
209
- scalar += (uint32_t)((word[1] & 0x3Fu) | ((word[0] & 0x1Fu) << 6u));
210
- word[0] = (uint8_t)(0xC0 | ((scalar >> 6u) & 0x1F));
211
- word[1] = (uint8_t)((word[1] & 0xC0) | (scalar & 0x3F));
212
- return 2;
213
- } else if (word[0] < 0xF0) {
214
- /* 3-byte rune / 1110ssss AAssssss BBssssss / 16 bit scalar. */
215
- if (word_len < 3) return word_len;
216
- scalar += (uint32_t)((word[2] & 0x3Fu) | ((word[1] & 0x3Fu) << 6u) |
217
- ((word[0] & 0x0Fu) << 12u));
218
- word[0] = (uint8_t)(0xE0 | ((scalar >> 12u) & 0x0F));
219
- word[1] = (uint8_t)((word[1] & 0xC0) | ((scalar >> 6u) & 0x3F));
220
- word[2] = (uint8_t)((word[2] & 0xC0) | (scalar & 0x3F));
221
- return 3;
222
- } else if (word[0] < 0xF8) {
223
- /* 4-byte rune / 11110sss AAssssss BBssssss CCssssss / 21 bit scalar. */
224
- if (word_len < 4) return word_len;
225
- scalar += (uint32_t)((word[3] & 0x3Fu) | ((word[2] & 0x3Fu) << 6u) |
226
- ((word[1] & 0x3Fu) << 12u) | ((word[0] & 0x07u) << 18u));
227
- word[0] = (uint8_t)(0xF0 | ((scalar >> 18u) & 0x07));
228
- word[1] = (uint8_t)((word[1] & 0xC0) | ((scalar >> 12u) & 0x3F));
229
- word[2] = (uint8_t)((word[2] & 0xC0) | ((scalar >> 6u) & 0x3F));
230
- word[3] = (uint8_t)((word[3] & 0xC0) | (scalar & 0x3F));
231
- return 4;
232
- }
233
- return 1;
234
- }
235
-
236
- int BrotliTransformDictionaryWord(uint8_t* dst, const uint8_t* word, int len,
237
- const BrotliTransforms* transforms, int transform_idx) {
238
- int idx = 0;
239
- const uint8_t* prefix = BROTLI_TRANSFORM_PREFIX(transforms, transform_idx);
240
- uint8_t type = BROTLI_TRANSFORM_TYPE(transforms, transform_idx);
241
- const uint8_t* suffix = BROTLI_TRANSFORM_SUFFIX(transforms, transform_idx);
242
- {
243
- int prefix_len = *prefix++;
244
- while (prefix_len--) { dst[idx++] = *prefix++; }
245
- }
246
- {
247
- const int t = type;
248
- int i = 0;
249
- if (t <= BROTLI_TRANSFORM_OMIT_LAST_9) {
250
- len -= t;
251
- } else if (t >= BROTLI_TRANSFORM_OMIT_FIRST_1
252
- && t <= BROTLI_TRANSFORM_OMIT_FIRST_9) {
253
- int skip = t - (BROTLI_TRANSFORM_OMIT_FIRST_1 - 1);
254
- word += skip;
255
- len -= skip;
256
- }
257
- while (i < len) { dst[idx++] = word[i++]; }
258
- if (t == BROTLI_TRANSFORM_UPPERCASE_FIRST) {
259
- ToUpperCase(&dst[idx - len]);
260
- } else if (t == BROTLI_TRANSFORM_UPPERCASE_ALL) {
261
- uint8_t* uppercase = &dst[idx - len];
262
- while (len > 0) {
263
- int step = ToUpperCase(uppercase);
264
- uppercase += step;
265
- len -= step;
266
- }
267
- } else if (t == BROTLI_TRANSFORM_SHIFT_FIRST) {
268
- uint16_t param = (uint16_t)(transforms->params[transform_idx * 2]
269
- + (transforms->params[transform_idx * 2 + 1] << 8u));
270
- Shift(&dst[idx - len], len, param);
271
- } else if (t == BROTLI_TRANSFORM_SHIFT_ALL) {
272
- uint16_t param = (uint16_t)(transforms->params[transform_idx * 2]
273
- + (transforms->params[transform_idx * 2 + 1] << 8u));
274
- uint8_t* shift = &dst[idx - len];
275
- while (len > 0) {
276
- int step = Shift(shift, len, param);
277
- shift += step;
278
- len -= step;
279
- }
280
- }
281
- }
282
- {
283
- int suffix_len = *suffix++;
284
- while (suffix_len--) { dst[idx++] = *suffix++; }
285
- return idx;
286
- }
287
- }
288
-
289
- #if defined(__cplusplus) || defined(c_plusplus)
290
- } /* extern "C" */
291
- #endif
@@ -1,85 +0,0 @@
1
- /* transforms is a part of ABI, but not API.
2
-
3
- It means that there are some functions that are supposed to be in "common"
4
- library, but header itself is not placed into include/brotli. This way,
5
- aforementioned functions will be available only to brotli internals.
6
- */
7
-
8
- #ifndef BROTLI_COMMON_TRANSFORM_H_
9
- #define BROTLI_COMMON_TRANSFORM_H_
10
-
11
- #include <brotli/port.h>
12
- #include <brotli/types.h>
13
-
14
- #if defined(__cplusplus) || defined(c_plusplus)
15
- extern "C" {
16
- #endif
17
-
18
- enum BrotliWordTransformType {
19
- BROTLI_TRANSFORM_IDENTITY = 0,
20
- BROTLI_TRANSFORM_OMIT_LAST_1 = 1,
21
- BROTLI_TRANSFORM_OMIT_LAST_2 = 2,
22
- BROTLI_TRANSFORM_OMIT_LAST_3 = 3,
23
- BROTLI_TRANSFORM_OMIT_LAST_4 = 4,
24
- BROTLI_TRANSFORM_OMIT_LAST_5 = 5,
25
- BROTLI_TRANSFORM_OMIT_LAST_6 = 6,
26
- BROTLI_TRANSFORM_OMIT_LAST_7 = 7,
27
- BROTLI_TRANSFORM_OMIT_LAST_8 = 8,
28
- BROTLI_TRANSFORM_OMIT_LAST_9 = 9,
29
- BROTLI_TRANSFORM_UPPERCASE_FIRST = 10,
30
- BROTLI_TRANSFORM_UPPERCASE_ALL = 11,
31
- BROTLI_TRANSFORM_OMIT_FIRST_1 = 12,
32
- BROTLI_TRANSFORM_OMIT_FIRST_2 = 13,
33
- BROTLI_TRANSFORM_OMIT_FIRST_3 = 14,
34
- BROTLI_TRANSFORM_OMIT_FIRST_4 = 15,
35
- BROTLI_TRANSFORM_OMIT_FIRST_5 = 16,
36
- BROTLI_TRANSFORM_OMIT_FIRST_6 = 17,
37
- BROTLI_TRANSFORM_OMIT_FIRST_7 = 18,
38
- BROTLI_TRANSFORM_OMIT_FIRST_8 = 19,
39
- BROTLI_TRANSFORM_OMIT_FIRST_9 = 20,
40
- BROTLI_TRANSFORM_SHIFT_FIRST = 21,
41
- BROTLI_TRANSFORM_SHIFT_ALL = 22,
42
- BROTLI_NUM_TRANSFORM_TYPES /* Counts transforms, not a transform itself. */
43
- };
44
-
45
- #define BROTLI_TRANSFORMS_MAX_CUT_OFF BROTLI_TRANSFORM_OMIT_LAST_9
46
-
47
- typedef struct BrotliTransforms {
48
- uint16_t prefix_suffix_size;
49
- /* Last character must be null, so prefix_suffix_size must be at least 1. */
50
- const uint8_t* prefix_suffix;
51
- const uint16_t* prefix_suffix_map;
52
- uint32_t num_transforms;
53
- /* Each entry is a [prefix_id, transform, suffix_id] triplet. */
54
- const uint8_t* transforms;
55
- /* Shift for BROTLI_TRANSFORM_SHIFT_FIRST and BROTLI_TRANSFORM_SHIFT_ALL,
56
- must be NULL if and only if no such transforms are present. */
57
- const uint8_t* params;
58
- /* Indices of transforms like ["", BROTLI_TRANSFORM_OMIT_LAST_#, ""].
59
- 0-th element corresponds to ["", BROTLI_TRANSFORM_IDENTITY, ""].
60
- -1, if cut-off transform does not exist. */
61
- int16_t cutOffTransforms[BROTLI_TRANSFORMS_MAX_CUT_OFF + 1];
62
- } BrotliTransforms;
63
-
64
- /* T is BrotliTransforms*; result is uint8_t. */
65
- #define BROTLI_TRANSFORM_PREFIX_ID(T, I) ((T)->transforms[((I) * 3) + 0])
66
- #define BROTLI_TRANSFORM_TYPE(T, I) ((T)->transforms[((I) * 3) + 1])
67
- #define BROTLI_TRANSFORM_SUFFIX_ID(T, I) ((T)->transforms[((I) * 3) + 2])
68
-
69
- /* T is BrotliTransforms*; result is const uint8_t*. */
70
- #define BROTLI_TRANSFORM_PREFIX(T, I) (&(T)->prefix_suffix[ \
71
- (T)->prefix_suffix_map[BROTLI_TRANSFORM_PREFIX_ID(T, I)]])
72
- #define BROTLI_TRANSFORM_SUFFIX(T, I) (&(T)->prefix_suffix[ \
73
- (T)->prefix_suffix_map[BROTLI_TRANSFORM_SUFFIX_ID(T, I)]])
74
-
75
- BROTLI_COMMON_API const BrotliTransforms* BrotliGetTransforms(void);
76
-
77
- BROTLI_COMMON_API int BrotliTransformDictionaryWord(
78
- uint8_t* dst, const uint8_t* word, int len,
79
- const BrotliTransforms* transforms, int transform_idx);
80
-
81
- #if defined(__cplusplus) || defined(c_plusplus)
82
- } /* extern "C" */
83
- #endif
84
-
85
- #endif /* BROTLI_COMMON_TRANSFORM_H_ */
@@ -1,26 +0,0 @@
1
- /* Copyright 2016 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
- /* Version definition. */
8
-
9
- #ifndef BROTLI_COMMON_VERSION_H_
10
- #define BROTLI_COMMON_VERSION_H_
11
-
12
- /* This macro should only be used when library is compiled together with client.
13
- If library is dynamically linked, use BrotliDecoderVersion and
14
- BrotliEncoderVersion methods. */
15
-
16
- /* Semantic version, calculated as (MAJOR << 24) | (MINOR << 12) | PATCH */
17
- #define BROTLI_VERSION 0x1000009
18
-
19
- /* This macro is used by build system to produce Libtool-friendly soname. See
20
- https://www.gnu.org/software/libtool/manual/html_node/Libtool-versioning.html
21
- */
22
-
23
- /* ABI version, calculated as (CURRENT << 24) | (REVISION << 12) | AGE */
24
- #define BROTLI_ABI_VERSION 0x1009000
25
-
26
- #endif /* BROTLI_COMMON_VERSION_H_ */
@@ -1,76 +0,0 @@
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
- /* Bit reading helpers */
8
-
9
- #include "./bit_reader.h"
10
-
11
- #include "../common/platform.h"
12
- #include <brotli/types.h>
13
-
14
- #if defined(__cplusplus) || defined(c_plusplus)
15
- extern "C" {
16
- #endif
17
-
18
- const uint32_t kBrotliBitMask[33] = { 0x00000000,
19
- 0x00000001, 0x00000003, 0x00000007, 0x0000000F,
20
- 0x0000001F, 0x0000003F, 0x0000007F, 0x000000FF,
21
- 0x000001FF, 0x000003FF, 0x000007FF, 0x00000FFF,
22
- 0x00001FFF, 0x00003FFF, 0x00007FFF, 0x0000FFFF,
23
- 0x0001FFFF, 0x0003FFFF, 0x0007FFFF, 0x000FFFFF,
24
- 0x001FFFFF, 0x003FFFFF, 0x007FFFFF, 0x00FFFFFF,
25
- 0x01FFFFFF, 0x03FFFFFF, 0x07FFFFFF, 0x0FFFFFFF,
26
- 0x1FFFFFFF, 0x3FFFFFFF, 0x7FFFFFFF, 0xFFFFFFFF
27
- };
28
-
29
- void BrotliInitBitReader(BrotliBitReader* const br) {
30
- br->val_ = 0;
31
- br->bit_pos_ = sizeof(br->val_) << 3;
32
- }
33
-
34
- BROTLI_BOOL BrotliWarmupBitReader(BrotliBitReader* const br) {
35
- size_t aligned_read_mask = (sizeof(br->val_) >> 1) - 1;
36
- /* Fixing alignment after unaligned BrotliFillWindow would result accumulator
37
- overflow. If unalignment is caused by BrotliSafeReadBits, then there is
38
- enough space in accumulator to fix alignment. */
39
- if (!BROTLI_ALIGNED_READ) {
40
- aligned_read_mask = 0;
41
- }
42
- if (BrotliGetAvailableBits(br) == 0) {
43
- if (!BrotliPullByte(br)) {
44
- return BROTLI_FALSE;
45
- }
46
- }
47
-
48
- while ((((size_t)br->next_in) & aligned_read_mask) != 0) {
49
- if (!BrotliPullByte(br)) {
50
- /* If we consumed all the input, we don't care about the alignment. */
51
- return BROTLI_TRUE;
52
- }
53
- }
54
- return BROTLI_TRUE;
55
- }
56
-
57
- BROTLI_BOOL BrotliSafeReadBits32Slow(BrotliBitReader* const br,
58
- uint32_t n_bits, uint32_t* val) {
59
- uint32_t low_val;
60
- uint32_t high_val;
61
- BrotliBitReaderState memento;
62
- BROTLI_DCHECK(n_bits <= 32);
63
- BROTLI_DCHECK(n_bits > 24);
64
- BrotliBitReaderSaveState(br, &memento);
65
- if (!BrotliSafeReadBits(br, 16, &low_val) ||
66
- !BrotliSafeReadBits(br, n_bits - 16, &high_val)) {
67
- BrotliBitReaderRestoreState(br, &memento);
68
- return BROTLI_FALSE;
69
- }
70
- *val = low_val | (high_val << 16);
71
- return BROTLI_TRUE;
72
- }
73
-
74
- #if defined(__cplusplus) || defined(c_plusplus)
75
- } /* extern "C" */
76
- #endif