koffi 2.1.3 → 2.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (401) hide show
  1. package/package.json +44 -68
  2. package/{LICENSE.txt → src/cnoke/LICENSE.txt} +0 -0
  3. package/src/cnoke/README.md +97 -0
  4. package/src/cnoke/assets/FindCNoke.cmake +71 -0
  5. package/src/cnoke/assets/win_delay_hook.c +34 -0
  6. package/src/cnoke/cnoke.js +968 -0
  7. package/src/cnoke/package.json +25 -0
  8. package/{vendor → src/core}/libcc/libcc.cc +38 -11
  9. package/{vendor → src/core}/libcc/libcc.hh +4 -2
  10. package/{CMakeLists.txt → src/koffi/CMakeLists.txt} +3 -3
  11. package/{ChangeLog.md → src/koffi/ChangeLog.md} +11 -0
  12. package/src/koffi/LICENSE.txt +661 -0
  13. package/{README.md → src/koffi/README.md} +0 -0
  14. package/{benchmark → src/koffi/benchmark}/CMakeLists.txt +9 -6
  15. package/{benchmark → src/koffi/benchmark}/atoi_koffi.js +0 -0
  16. package/{benchmark → src/koffi/benchmark}/atoi_napi.cc +1 -1
  17. package/{benchmark → src/koffi/benchmark}/atoi_napi.js +0 -0
  18. package/{benchmark → src/koffi/benchmark}/atoi_node_ffi.js +0 -0
  19. package/src/koffi/benchmark/benchmark.js +118 -0
  20. package/src/koffi/benchmark/rand_koffi.js +52 -0
  21. package/src/koffi/benchmark/rand_napi.cc +69 -0
  22. package/src/koffi/benchmark/rand_napi.js +47 -0
  23. package/src/koffi/benchmark/rand_node_ffi.js +55 -0
  24. package/{benchmark → src/koffi/benchmark}/raylib_cc.cc +2 -2
  25. package/{benchmark → src/koffi/benchmark}/raylib_cc.js +0 -0
  26. package/{benchmark → src/koffi/benchmark}/raylib_koffi.js +0 -0
  27. package/{benchmark → src/koffi/benchmark}/raylib_node_ffi.js +0 -0
  28. package/{benchmark → src/koffi/benchmark}/raylib_node_raylib.js +0 -0
  29. package/src/koffi/build/2.1.4/koffi_darwin_arm64.tar.gz +0 -0
  30. package/src/koffi/build/2.1.4/koffi_darwin_x64.tar.gz +0 -0
  31. package/src/koffi/build/2.1.4/koffi_freebsd_arm64.tar.gz +0 -0
  32. package/src/koffi/build/2.1.4/koffi_freebsd_ia32.tar.gz +0 -0
  33. package/src/koffi/build/2.1.4/koffi_freebsd_x64.tar.gz +0 -0
  34. package/src/koffi/build/2.1.4/koffi_linux_arm32hf.tar.gz +0 -0
  35. package/src/koffi/build/2.1.4/koffi_linux_arm64.tar.gz +0 -0
  36. package/src/koffi/build/2.1.4/koffi_linux_ia32.tar.gz +0 -0
  37. package/src/koffi/build/2.1.4/koffi_linux_riscv64hf64.tar.gz +0 -0
  38. package/src/koffi/build/2.1.4/koffi_linux_x64.tar.gz +0 -0
  39. package/src/koffi/build/2.1.4/koffi_openbsd_ia32.tar.gz +0 -0
  40. package/src/koffi/build/2.1.4/koffi_openbsd_x64.tar.gz +0 -0
  41. package/src/koffi/build/2.1.4/koffi_win32_arm64.tar.gz +0 -0
  42. package/src/koffi/build/2.1.4/koffi_win32_ia32.tar.gz +0 -0
  43. package/src/koffi/build/2.1.4/koffi_win32_x64.tar.gz +0 -0
  44. package/{doc → src/koffi/doc}/Makefile +0 -0
  45. package/{doc → src/koffi/doc}/benchmarks.md +0 -0
  46. package/{doc → src/koffi/doc}/benchmarks.xlsx +0 -0
  47. package/{doc → src/koffi/doc}/changes.md +0 -0
  48. package/{doc → src/koffi/doc}/conf.py +0 -0
  49. package/{doc → src/koffi/doc}/contribute.md +5 -5
  50. package/{doc → src/koffi/doc}/functions.md +0 -0
  51. package/{doc → src/koffi/doc}/index.rst +1 -1
  52. package/{doc → src/koffi/doc}/make.bat +0 -0
  53. package/{doc → src/koffi/doc}/memory.md +1 -0
  54. package/{doc → src/koffi/doc}/platforms.md +0 -0
  55. package/{doc → src/koffi/doc}/poetry.lock +0 -0
  56. package/{doc → src/koffi/doc}/pyproject.toml +0 -0
  57. package/{doc → src/koffi/doc}/start.md +0 -0
  58. package/{doc → src/koffi/doc}/static/bench_linux.png +0 -0
  59. package/{doc → src/koffi/doc}/static/bench_windows.png +0 -0
  60. package/{doc → src/koffi/doc}/static/custom.css +0 -0
  61. package/{doc → src/koffi/doc}/static/perf_linux_20220623.png +0 -0
  62. package/{doc → src/koffi/doc}/static/perf_linux_20220623_2.png +0 -0
  63. package/{doc → src/koffi/doc}/static/perf_linux_20220627.png +0 -0
  64. package/{doc → src/koffi/doc}/static/perf_linux_20220628.png +0 -0
  65. package/{doc → src/koffi/doc}/static/perf_linux_20220812.png +0 -0
  66. package/{doc → src/koffi/doc}/static/perf_windows_20220623.png +0 -0
  67. package/{doc → src/koffi/doc}/static/perf_windows_20220623_2.png +0 -0
  68. package/{doc → src/koffi/doc}/static/perf_windows_20220627.png +0 -0
  69. package/{doc → src/koffi/doc}/static/perf_windows_20220628.png +0 -0
  70. package/{doc → src/koffi/doc}/static/perf_windows_20220812.png +0 -0
  71. package/{doc → src/koffi/doc}/templates/badges.html +1 -1
  72. package/{doc → src/koffi/doc}/types.md +0 -0
  73. package/src/koffi/qemu/qemu/.gitkeep +0 -0
  74. package/{qemu → src/koffi/qemu}/qemu.js +217 -131
  75. package/{qemu → src/koffi/qemu}/registry/machines.json +24 -0
  76. package/{qemu → src/koffi/qemu}/registry/sha256sum.txt +0 -0
  77. package/src/{abi_arm32.cc → koffi/src/abi_arm32.cc} +1 -1
  78. package/src/{abi_arm32_fwd.S → koffi/src/abi_arm32_fwd.S} +0 -0
  79. package/src/{abi_arm64.cc → koffi/src/abi_arm64.cc} +1 -1
  80. package/src/{abi_arm64_fwd.S → koffi/src/abi_arm64_fwd.S} +0 -0
  81. package/src/{abi_arm64_fwd.asm → koffi/src/abi_arm64_fwd.asm} +0 -0
  82. package/src/{abi_riscv64.cc → koffi/src/abi_riscv64.cc} +1 -1
  83. package/src/{abi_riscv64_fwd.S → koffi/src/abi_riscv64_fwd.S} +0 -0
  84. package/src/{abi_x64_sysv.cc → koffi/src/abi_x64_sysv.cc} +1 -1
  85. package/src/{abi_x64_sysv_fwd.S → koffi/src/abi_x64_sysv_fwd.S} +0 -0
  86. package/src/{abi_x64_win.cc → koffi/src/abi_x64_win.cc} +1 -1
  87. package/src/{abi_x64_win_fwd.asm → koffi/src/abi_x64_win_fwd.asm} +0 -0
  88. package/src/{abi_x86.cc → koffi/src/abi_x86.cc} +1 -1
  89. package/src/{abi_x86_fwd.S → koffi/src/abi_x86_fwd.S} +0 -0
  90. package/src/{abi_x86_fwd.asm → koffi/src/abi_x86_fwd.asm} +0 -0
  91. package/src/{call.cc → koffi/src/call.cc} +1 -1
  92. package/src/{call.hh → koffi/src/call.hh} +2 -2
  93. package/src/{ffi.cc → koffi/src/ffi.cc} +34 -18
  94. package/src/{ffi.hh → koffi/src/ffi.hh} +5 -3
  95. package/src/{index.js → koffi/src/index.js} +0 -0
  96. package/src/{parser.cc → koffi/src/parser.cc} +1 -1
  97. package/src/{parser.hh → koffi/src/parser.hh} +1 -1
  98. package/src/{util.cc → koffi/src/util.cc} +1 -1
  99. package/src/{util.hh → koffi/src/util.hh} +1 -1
  100. package/{test → src/koffi/test}/CMakeLists.txt +14 -15
  101. package/{test → src/koffi/test}/async.js +0 -0
  102. package/{test → src/koffi/test}/callbacks.js +0 -0
  103. package/{test → src/koffi/test}/misc.c +13 -0
  104. package/{test → src/koffi/test}/misc.def +0 -0
  105. package/{test → src/koffi/test}/raylib.js +0 -0
  106. package/{test → src/koffi/test}/sqlite.js +1 -1
  107. package/{test → src/koffi/test}/sync.js +17 -0
  108. package/vendor/brotli/BUILD +144 -0
  109. package/vendor/brotli/CMakeLists.txt +421 -0
  110. package/vendor/brotli/CONTRIBUTING.md +27 -0
  111. package/vendor/brotli/LICENSE +19 -0
  112. package/vendor/brotli/MANIFEST.in +17 -0
  113. package/vendor/brotli/Makefile +55 -0
  114. package/vendor/brotli/Makefile.am +38 -0
  115. package/vendor/brotli/README +15 -0
  116. package/vendor/brotli/README.md +104 -0
  117. package/vendor/brotli/WORKSPACE +21 -0
  118. package/vendor/brotli/bootstrap +35 -0
  119. package/vendor/brotli/c/common/constants.c +15 -0
  120. package/vendor/brotli/c/common/constants.h +200 -0
  121. package/vendor/brotli/c/common/context.c +156 -0
  122. package/vendor/brotli/c/common/context.h +113 -0
  123. package/vendor/brotli/c/common/dictionary.c +5914 -0
  124. package/vendor/brotli/c/common/dictionary.h +64 -0
  125. package/vendor/brotli/c/common/platform.c +22 -0
  126. package/vendor/brotli/c/common/platform.h +594 -0
  127. package/vendor/brotli/c/common/transform.c +291 -0
  128. package/vendor/brotli/c/common/transform.h +85 -0
  129. package/vendor/brotli/c/common/version.h +26 -0
  130. package/vendor/brotli/c/dec/bit_reader.c +76 -0
  131. package/vendor/brotli/c/dec/bit_reader.h +351 -0
  132. package/vendor/brotli/c/dec/decode.c +2608 -0
  133. package/vendor/brotli/c/dec/huffman.c +339 -0
  134. package/vendor/brotli/c/dec/huffman.h +121 -0
  135. package/vendor/brotli/c/dec/prefix.h +732 -0
  136. package/vendor/brotli/c/dec/state.c +159 -0
  137. package/vendor/brotli/c/dec/state.h +365 -0
  138. package/vendor/brotli/c/enc/backward_references.c +145 -0
  139. package/vendor/brotli/c/enc/backward_references.h +39 -0
  140. package/vendor/brotli/c/enc/backward_references_hq.c +843 -0
  141. package/vendor/brotli/c/enc/backward_references_hq.h +95 -0
  142. package/vendor/brotli/c/enc/backward_references_inc.h +163 -0
  143. package/vendor/brotli/c/enc/bit_cost.c +35 -0
  144. package/vendor/brotli/c/enc/bit_cost.h +63 -0
  145. package/vendor/brotli/c/enc/bit_cost_inc.h +127 -0
  146. package/vendor/brotli/c/enc/block_encoder_inc.h +34 -0
  147. package/vendor/brotli/c/enc/block_splitter.c +194 -0
  148. package/vendor/brotli/c/enc/block_splitter.h +51 -0
  149. package/vendor/brotli/c/enc/block_splitter_inc.h +440 -0
  150. package/vendor/brotli/c/enc/brotli_bit_stream.c +1314 -0
  151. package/vendor/brotli/c/enc/brotli_bit_stream.h +84 -0
  152. package/vendor/brotli/c/enc/cluster.c +56 -0
  153. package/vendor/brotli/c/enc/cluster.h +48 -0
  154. package/vendor/brotli/c/enc/cluster_inc.h +320 -0
  155. package/vendor/brotli/c/enc/command.c +28 -0
  156. package/vendor/brotli/c/enc/command.h +190 -0
  157. package/vendor/brotli/c/enc/compress_fragment.c +790 -0
  158. package/vendor/brotli/c/enc/compress_fragment.h +61 -0
  159. package/vendor/brotli/c/enc/compress_fragment_two_pass.c +645 -0
  160. package/vendor/brotli/c/enc/compress_fragment_two_pass.h +54 -0
  161. package/vendor/brotli/c/enc/dictionary_hash.c +1846 -0
  162. package/vendor/brotli/c/enc/dictionary_hash.h +25 -0
  163. package/vendor/brotli/c/enc/encode.c +1927 -0
  164. package/vendor/brotli/c/enc/encoder_dict.c +33 -0
  165. package/vendor/brotli/c/enc/encoder_dict.h +43 -0
  166. package/vendor/brotli/c/enc/entropy_encode.c +503 -0
  167. package/vendor/brotli/c/enc/entropy_encode.h +122 -0
  168. package/vendor/brotli/c/enc/entropy_encode_static.h +539 -0
  169. package/vendor/brotli/c/enc/fast_log.c +105 -0
  170. package/vendor/brotli/c/enc/fast_log.h +66 -0
  171. package/vendor/brotli/c/enc/find_match_length.h +79 -0
  172. package/vendor/brotli/c/enc/hash.h +488 -0
  173. package/vendor/brotli/c/enc/hash_composite_inc.h +125 -0
  174. package/vendor/brotli/c/enc/hash_forgetful_chain_inc.h +293 -0
  175. package/vendor/brotli/c/enc/hash_longest_match64_inc.h +267 -0
  176. package/vendor/brotli/c/enc/hash_longest_match_inc.h +262 -0
  177. package/vendor/brotli/c/enc/hash_longest_match_quickly_inc.h +266 -0
  178. package/vendor/brotli/c/enc/hash_rolling_inc.h +212 -0
  179. package/vendor/brotli/c/enc/hash_to_binary_tree_inc.h +329 -0
  180. package/vendor/brotli/c/enc/histogram.c +100 -0
  181. package/vendor/brotli/c/enc/histogram.h +63 -0
  182. package/vendor/brotli/c/enc/histogram_inc.h +51 -0
  183. package/vendor/brotli/c/enc/literal_cost.c +175 -0
  184. package/vendor/brotli/c/enc/literal_cost.h +30 -0
  185. package/vendor/brotli/c/enc/memory.c +170 -0
  186. package/vendor/brotli/c/enc/memory.h +114 -0
  187. package/vendor/brotli/c/enc/metablock.c +663 -0
  188. package/vendor/brotli/c/enc/metablock.h +105 -0
  189. package/vendor/brotli/c/enc/metablock_inc.h +183 -0
  190. package/vendor/brotli/c/enc/params.h +46 -0
  191. package/vendor/brotli/c/enc/prefix.h +53 -0
  192. package/vendor/brotli/c/enc/quality.h +165 -0
  193. package/vendor/brotli/c/enc/ringbuffer.h +167 -0
  194. package/vendor/brotli/c/enc/static_dict.c +486 -0
  195. package/vendor/brotli/c/enc/static_dict.h +40 -0
  196. package/vendor/brotli/c/enc/static_dict_lut.h +5864 -0
  197. package/vendor/brotli/c/enc/utf8_util.c +85 -0
  198. package/vendor/brotli/c/enc/utf8_util.h +32 -0
  199. package/vendor/brotli/c/enc/write_bits.h +87 -0
  200. package/vendor/brotli/c/include/brotli/decode.h +344 -0
  201. package/vendor/brotli/c/include/brotli/encode.h +448 -0
  202. package/vendor/brotli/c/include/brotli/port.h +288 -0
  203. package/vendor/brotli/c/include/brotli/types.h +83 -0
  204. package/vendor/brotli/c/tools/brotli.c +1116 -0
  205. package/vendor/brotli/c/tools/brotli.md +107 -0
  206. package/vendor/brotli/compiler_config_setting.bzl +28 -0
  207. package/vendor/brotli/configure +8 -0
  208. package/vendor/brotli/configure-cmake +318 -0
  209. package/vendor/brotli/configure.ac +14 -0
  210. package/vendor/brotli/docs/brotli.1 +132 -0
  211. package/vendor/brotli/docs/constants.h.3 +47 -0
  212. package/vendor/brotli/docs/decode.h.3 +415 -0
  213. package/vendor/brotli/docs/encode.h.3 +586 -0
  214. package/vendor/brotli/docs/types.h.3 +117 -0
  215. package/vendor/brotli/premake5.lua +78 -0
  216. package/vendor/brotli/python/Makefile +57 -0
  217. package/vendor/brotli/python/README.md +54 -0
  218. package/vendor/brotli/python/_brotli.cc +753 -0
  219. package/vendor/brotli/python/bro.py +160 -0
  220. package/vendor/brotli/python/brotli.py +56 -0
  221. package/vendor/brotli/python/tests/__init__.py +0 -0
  222. package/vendor/brotli/python/tests/_test_utils.py +112 -0
  223. package/vendor/brotli/python/tests/bro_test.py +102 -0
  224. package/vendor/brotli/python/tests/compress_test.py +41 -0
  225. package/vendor/brotli/python/tests/compressor_test.py +94 -0
  226. package/vendor/brotli/python/tests/decompress_test.py +42 -0
  227. package/vendor/brotli/python/tests/decompressor_test.py +59 -0
  228. package/vendor/brotli/scripts/libbrotlicommon.pc.in +11 -0
  229. package/vendor/brotli/scripts/libbrotlidec.pc.in +12 -0
  230. package/vendor/brotli/scripts/libbrotlienc.pc.in +12 -0
  231. package/vendor/brotli/scripts/sources.lst +104 -0
  232. package/vendor/brotli/setup.cfg +5 -0
  233. package/vendor/brotli/setup.py +293 -0
  234. package/vendor/brotli/tests/Makefile +17 -0
  235. package/vendor/brotli/tests/compatibility_test.sh +25 -0
  236. package/vendor/brotli/tests/roundtrip_test.sh +36 -0
  237. package/vendor/brotli/tests/run-compatibility-test.cmake +31 -0
  238. package/vendor/brotli/tests/run-roundtrip-test.cmake +36 -0
  239. package/vendor/brotli/tests/testdata/empty +0 -0
  240. package/vendor/brotli/tests/testdata/empty.compressed +1 -0
  241. package/vendor/brotli/tests/testdata/ukkonooa +1 -0
  242. package/vendor/brotli/tests/testdata/ukkonooa.compressed +0 -0
  243. package/vendor/miniz/ChangeLog.md +235 -0
  244. package/vendor/miniz/LICENSE +22 -0
  245. package/vendor/miniz/examples/example1.c +105 -0
  246. package/vendor/miniz/examples/example2.c +164 -0
  247. package/vendor/miniz/examples/example3.c +269 -0
  248. package/vendor/miniz/examples/example4.c +102 -0
  249. package/vendor/miniz/examples/example5.c +327 -0
  250. package/vendor/miniz/examples/example6.c +166 -0
  251. package/vendor/miniz/miniz.c +7835 -0
  252. package/vendor/miniz/miniz.h +1422 -0
  253. package/vendor/miniz/readme.md +46 -0
  254. package/vendor/{sqlite3 → sqlite3mc}/sqlite3ext.h +18 -2
  255. package/vendor/{sqlite3/sqlite3.c → sqlite3mc/sqlite3mc.c} +60872 -4890
  256. package/vendor/sqlite3mc/sqlite3mc.def +312 -0
  257. package/vendor/{sqlite3/sqlite3.h → sqlite3mc/sqlite3mc.h} +480 -36
  258. package/build/qemu/2.1.3/koffi_darwin_arm64.tar.gz +0 -0
  259. package/build/qemu/2.1.3/koffi_darwin_x64.tar.gz +0 -0
  260. package/build/qemu/2.1.3/koffi_freebsd_arm64.tar.gz +0 -0
  261. package/build/qemu/2.1.3/koffi_freebsd_ia32.tar.gz +0 -0
  262. package/build/qemu/2.1.3/koffi_freebsd_x64.tar.gz +0 -0
  263. package/build/qemu/2.1.3/koffi_linux_arm32hf.tar.gz +0 -0
  264. package/build/qemu/2.1.3/koffi_linux_arm64.tar.gz +0 -0
  265. package/build/qemu/2.1.3/koffi_linux_ia32.tar.gz +0 -0
  266. package/build/qemu/2.1.3/koffi_linux_riscv64hf64.tar.gz +0 -0
  267. package/build/qemu/2.1.3/koffi_linux_x64.tar.gz +0 -0
  268. package/build/qemu/2.1.3/koffi_openbsd_ia32.tar.gz +0 -0
  269. package/build/qemu/2.1.3/koffi_openbsd_x64.tar.gz +0 -0
  270. package/build/qemu/2.1.3/koffi_win32_arm64.tar.gz +0 -0
  271. package/build/qemu/2.1.3/koffi_win32_ia32.tar.gz +0 -0
  272. package/build/qemu/2.1.3/koffi_win32_x64.tar.gz +0 -0
  273. package/vendor/_patches/glfw_001_fix_openbsd_xlib_soname.patch +0 -145
  274. package/vendor/raylib/projects/VS2019-Android/raylib_android/raylib_android.NativeActivity/raylib_android.NativeActivity.vcxproj +0 -226
  275. package/vendor/raylib/projects/VS2019-Android/raylib_android/raylib_android.NativeActivity/raylib_android.NativeActivity.vcxproj.filters +0 -10
  276. package/vendor/raylib/projects/VS2019-Android/raylib_android/raylib_android.NativeActivity/raylib_android.NativeActivity.vcxproj.user +0 -4
  277. package/vendor/raylib/projects/VS2019-Android/raylib_android.sln +0 -75
  278. package/vendor/raylib/projects/VS2022/examples/audio_module_playing.vcxproj +0 -390
  279. package/vendor/raylib/projects/VS2022/examples/audio_multichannel_sound.vcxproj +0 -390
  280. package/vendor/raylib/projects/VS2022/examples/audio_music_stream.vcxproj +0 -390
  281. package/vendor/raylib/projects/VS2022/examples/audio_raw_stream.vcxproj +0 -390
  282. package/vendor/raylib/projects/VS2022/examples/audio_sound_loading.vcxproj +0 -390
  283. package/vendor/raylib/projects/VS2022/examples/audio_stream_effects.vcxproj +0 -390
  284. package/vendor/raylib/projects/VS2022/examples/core_2d_camera.vcxproj +0 -390
  285. package/vendor/raylib/projects/VS2022/examples/core_2d_camera_mouse_zoom.vcxproj +0 -390
  286. package/vendor/raylib/projects/VS2022/examples/core_2d_camera_platformer.vcxproj +0 -390
  287. package/vendor/raylib/projects/VS2022/examples/core_3d_camera_first_person.vcxproj +0 -390
  288. package/vendor/raylib/projects/VS2022/examples/core_3d_camera_free.vcxproj +0 -390
  289. package/vendor/raylib/projects/VS2022/examples/core_3d_camera_mode.vcxproj +0 -390
  290. package/vendor/raylib/projects/VS2022/examples/core_3d_picking.vcxproj +0 -390
  291. package/vendor/raylib/projects/VS2022/examples/core_basic_screen_manager.vcxproj +0 -390
  292. package/vendor/raylib/projects/VS2022/examples/core_basic_window.vcxproj +0 -390
  293. package/vendor/raylib/projects/VS2022/examples/core_custom_frame_control.vcxproj +0 -390
  294. package/vendor/raylib/projects/VS2022/examples/core_custom_logging.vcxproj +0 -390
  295. package/vendor/raylib/projects/VS2022/examples/core_drop_files.vcxproj +0 -390
  296. package/vendor/raylib/projects/VS2022/examples/core_input_gamepad.vcxproj +0 -387
  297. package/vendor/raylib/projects/VS2022/examples/core_input_gestures.vcxproj +0 -387
  298. package/vendor/raylib/projects/VS2022/examples/core_input_keys.vcxproj +0 -387
  299. package/vendor/raylib/projects/VS2022/examples/core_input_mouse.vcxproj +0 -387
  300. package/vendor/raylib/projects/VS2022/examples/core_input_mouse_wheel.vcxproj +0 -387
  301. package/vendor/raylib/projects/VS2022/examples/core_input_multitouch.vcxproj +0 -387
  302. package/vendor/raylib/projects/VS2022/examples/core_loading_thread.vcxproj +0 -387
  303. package/vendor/raylib/projects/VS2022/examples/core_random_values.vcxproj +0 -387
  304. package/vendor/raylib/projects/VS2022/examples/core_scissor_test.vcxproj +0 -387
  305. package/vendor/raylib/projects/VS2022/examples/core_split_screen.vcxproj +0 -387
  306. package/vendor/raylib/projects/VS2022/examples/core_storage_values.vcxproj +0 -387
  307. package/vendor/raylib/projects/VS2022/examples/core_vr_simulator.vcxproj +0 -387
  308. package/vendor/raylib/projects/VS2022/examples/core_window_flags.vcxproj +0 -387
  309. package/vendor/raylib/projects/VS2022/examples/core_window_letterbox.vcxproj +0 -387
  310. package/vendor/raylib/projects/VS2022/examples/core_window_should_close.vcxproj +0 -390
  311. package/vendor/raylib/projects/VS2022/examples/core_world_screen.vcxproj +0 -387
  312. package/vendor/raylib/projects/VS2022/examples/easings_testbed.vcxproj +0 -387
  313. package/vendor/raylib/projects/VS2022/examples/embedded_files_loading.vcxproj +0 -387
  314. package/vendor/raylib/projects/VS2022/examples/models_animation.vcxproj +0 -387
  315. package/vendor/raylib/projects/VS2022/examples/models_billboard.vcxproj +0 -387
  316. package/vendor/raylib/projects/VS2022/examples/models_box_collisions.vcxproj +0 -387
  317. package/vendor/raylib/projects/VS2022/examples/models_cubicmap.vcxproj +0 -387
  318. package/vendor/raylib/projects/VS2022/examples/models_first_person_maze.vcxproj +0 -387
  319. package/vendor/raylib/projects/VS2022/examples/models_geometric_shapes.vcxproj +0 -387
  320. package/vendor/raylib/projects/VS2022/examples/models_heightmap.vcxproj +0 -387
  321. package/vendor/raylib/projects/VS2022/examples/models_loading.vcxproj +0 -387
  322. package/vendor/raylib/projects/VS2022/examples/models_loading_gltf.vcxproj +0 -387
  323. package/vendor/raylib/projects/VS2022/examples/models_loading_vox.vcxproj +0 -387
  324. package/vendor/raylib/projects/VS2022/examples/models_mesh_generation.vcxproj +0 -387
  325. package/vendor/raylib/projects/VS2022/examples/models_mesh_picking.vcxproj +0 -387
  326. package/vendor/raylib/projects/VS2022/examples/models_orthographic_projection.vcxproj +0 -387
  327. package/vendor/raylib/projects/VS2022/examples/models_rlgl_solar_system.vcxproj +0 -387
  328. package/vendor/raylib/projects/VS2022/examples/models_skybox.vcxproj +0 -387
  329. package/vendor/raylib/projects/VS2022/examples/models_waving_cubes.vcxproj +0 -387
  330. package/vendor/raylib/projects/VS2022/examples/models_yaw_pitch_roll.vcxproj +0 -387
  331. package/vendor/raylib/projects/VS2022/examples/rlgl_compute_shaders.vcxproj +0 -391
  332. package/vendor/raylib/projects/VS2022/examples/rlgl_standalone.vcxproj +0 -391
  333. package/vendor/raylib/projects/VS2022/examples/shaders_basic_lighting.vcxproj +0 -387
  334. package/vendor/raylib/projects/VS2022/examples/shaders_custom_uniform.vcxproj +0 -387
  335. package/vendor/raylib/projects/VS2022/examples/shaders_eratosthenes.vcxproj +0 -387
  336. package/vendor/raylib/projects/VS2022/examples/shaders_fog.vcxproj +0 -387
  337. package/vendor/raylib/projects/VS2022/examples/shaders_hot_reloading.vcxproj +0 -387
  338. package/vendor/raylib/projects/VS2022/examples/shaders_julia_set.vcxproj +0 -387
  339. package/vendor/raylib/projects/VS2022/examples/shaders_mesh_instancing.vcxproj +0 -387
  340. package/vendor/raylib/projects/VS2022/examples/shaders_model_shader.vcxproj +0 -387
  341. package/vendor/raylib/projects/VS2022/examples/shaders_multi_sample2d.vcxproj +0 -387
  342. package/vendor/raylib/projects/VS2022/examples/shaders_palette_switch.vcxproj +0 -387
  343. package/vendor/raylib/projects/VS2022/examples/shaders_postprocessing.vcxproj +0 -387
  344. package/vendor/raylib/projects/VS2022/examples/shaders_raymarching.vcxproj +0 -387
  345. package/vendor/raylib/projects/VS2022/examples/shaders_shapes_textures.vcxproj +0 -387
  346. package/vendor/raylib/projects/VS2022/examples/shaders_simple_mask.vcxproj +0 -387
  347. package/vendor/raylib/projects/VS2022/examples/shaders_spotlight.vcxproj +0 -387
  348. package/vendor/raylib/projects/VS2022/examples/shaders_texture_drawing.vcxproj +0 -387
  349. package/vendor/raylib/projects/VS2022/examples/shaders_texture_waves.vcxproj +0 -387
  350. package/vendor/raylib/projects/VS2022/examples/shapes_basic_shapes.vcxproj +0 -387
  351. package/vendor/raylib/projects/VS2022/examples/shapes_bouncing_ball.vcxproj +0 -387
  352. package/vendor/raylib/projects/VS2022/examples/shapes_collision_area.vcxproj +0 -387
  353. package/vendor/raylib/projects/VS2022/examples/shapes_colors_palette.vcxproj +0 -387
  354. package/vendor/raylib/projects/VS2022/examples/shapes_draw_circle_sector.vcxproj +0 -387
  355. package/vendor/raylib/projects/VS2022/examples/shapes_draw_rectangle_rounded.vcxproj +0 -387
  356. package/vendor/raylib/projects/VS2022/examples/shapes_draw_ring.vcxproj +0 -387
  357. package/vendor/raylib/projects/VS2022/examples/shapes_easings_ball_anim.vcxproj +0 -387
  358. package/vendor/raylib/projects/VS2022/examples/shapes_easings_box_anim.vcxproj +0 -387
  359. package/vendor/raylib/projects/VS2022/examples/shapes_easings_rectangle_array.vcxproj +0 -387
  360. package/vendor/raylib/projects/VS2022/examples/shapes_following_eyes.vcxproj +0 -387
  361. package/vendor/raylib/projects/VS2022/examples/shapes_lines_bezier.vcxproj +0 -387
  362. package/vendor/raylib/projects/VS2022/examples/shapes_logo_raylib.vcxproj +0 -387
  363. package/vendor/raylib/projects/VS2022/examples/shapes_logo_raylib_anim.vcxproj +0 -387
  364. package/vendor/raylib/projects/VS2022/examples/shapes_rectangle_scaling.vcxproj +0 -387
  365. package/vendor/raylib/projects/VS2022/examples/text_codepoints_loading.vcxproj +0 -387
  366. package/vendor/raylib/projects/VS2022/examples/text_draw_3d.vcxproj +0 -387
  367. package/vendor/raylib/projects/VS2022/examples/text_font_filters.vcxproj +0 -387
  368. package/vendor/raylib/projects/VS2022/examples/text_font_loading.vcxproj +0 -387
  369. package/vendor/raylib/projects/VS2022/examples/text_font_sdf.vcxproj +0 -387
  370. package/vendor/raylib/projects/VS2022/examples/text_font_spritefont.vcxproj +0 -387
  371. package/vendor/raylib/projects/VS2022/examples/text_format_text.vcxproj +0 -387
  372. package/vendor/raylib/projects/VS2022/examples/text_input_box.vcxproj +0 -387
  373. package/vendor/raylib/projects/VS2022/examples/text_raylib_fonts.vcxproj +0 -387
  374. package/vendor/raylib/projects/VS2022/examples/text_rectangle_bounds.vcxproj +0 -387
  375. package/vendor/raylib/projects/VS2022/examples/text_unicode.vcxproj +0 -387
  376. package/vendor/raylib/projects/VS2022/examples/text_writing_anim.vcxproj +0 -387
  377. package/vendor/raylib/projects/VS2022/examples/textures_background_scrolling.vcxproj +0 -387
  378. package/vendor/raylib/projects/VS2022/examples/textures_blend_modes.vcxproj +0 -387
  379. package/vendor/raylib/projects/VS2022/examples/textures_bunnymark.vcxproj +0 -387
  380. package/vendor/raylib/projects/VS2022/examples/textures_draw_tiled.vcxproj +0 -387
  381. package/vendor/raylib/projects/VS2022/examples/textures_fog_of_war.vcxproj +0 -387
  382. package/vendor/raylib/projects/VS2022/examples/textures_gif_player.vcxproj +0 -387
  383. package/vendor/raylib/projects/VS2022/examples/textures_image_drawing.vcxproj +0 -387
  384. package/vendor/raylib/projects/VS2022/examples/textures_image_generation.vcxproj +0 -387
  385. package/vendor/raylib/projects/VS2022/examples/textures_image_loading.vcxproj +0 -387
  386. package/vendor/raylib/projects/VS2022/examples/textures_image_processing.vcxproj +0 -387
  387. package/vendor/raylib/projects/VS2022/examples/textures_image_text.vcxproj +0 -387
  388. package/vendor/raylib/projects/VS2022/examples/textures_logo_raylib.vcxproj +0 -387
  389. package/vendor/raylib/projects/VS2022/examples/textures_mouse_painting.vcxproj +0 -387
  390. package/vendor/raylib/projects/VS2022/examples/textures_npatch_drawing.vcxproj +0 -387
  391. package/vendor/raylib/projects/VS2022/examples/textures_particles_blending.vcxproj +0 -387
  392. package/vendor/raylib/projects/VS2022/examples/textures_polygon.vcxproj +0 -387
  393. package/vendor/raylib/projects/VS2022/examples/textures_raw_data.vcxproj +0 -387
  394. package/vendor/raylib/projects/VS2022/examples/textures_sprite_anim.vcxproj +0 -387
  395. package/vendor/raylib/projects/VS2022/examples/textures_sprite_button.vcxproj +0 -387
  396. package/vendor/raylib/projects/VS2022/examples/textures_sprite_explosion.vcxproj +0 -387
  397. package/vendor/raylib/projects/VS2022/examples/textures_srcrec_dstrec.vcxproj +0 -387
  398. package/vendor/raylib/projects/VS2022/examples/textures_to_image.vcxproj +0 -387
  399. package/vendor/raylib/projects/VS2022/raylib/raylib.vcxproj +0 -340
  400. package/vendor/raylib/projects/VS2022/raylib.sln +0 -2347
  401. package/vendor/sqlite3/shell.c +0 -23496
@@ -0,0 +1,84 @@
1
+ /* Copyright 2014 Google Inc. All Rights Reserved.
2
+
3
+ Distributed under MIT license.
4
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
5
+ */
6
+
7
+ /* Functions to convert brotli-related data structures into the
8
+ brotli bit stream. The functions here operate under
9
+ assumption that there is enough space in the storage, i.e., there are
10
+ no out-of-range checks anywhere.
11
+
12
+ These functions do bit addressing into a byte array. The byte array
13
+ is called "storage" and the index to the bit is called storage_ix
14
+ in function arguments. */
15
+
16
+ #ifndef BROTLI_ENC_BROTLI_BIT_STREAM_H_
17
+ #define BROTLI_ENC_BROTLI_BIT_STREAM_H_
18
+
19
+ #include "../common/context.h"
20
+ #include "../common/platform.h"
21
+ #include <brotli/types.h>
22
+ #include "./command.h"
23
+ #include "./entropy_encode.h"
24
+ #include "./memory.h"
25
+ #include "./metablock.h"
26
+
27
+ #if defined(__cplusplus) || defined(c_plusplus)
28
+ extern "C" {
29
+ #endif
30
+
31
+ /* All Store functions here will use a storage_ix, which is always the bit
32
+ position for the current storage. */
33
+
34
+ BROTLI_INTERNAL void BrotliStoreHuffmanTree(const uint8_t* depths, size_t num,
35
+ HuffmanTree* tree, size_t* storage_ix, uint8_t* storage);
36
+
37
+ BROTLI_INTERNAL void BrotliBuildAndStoreHuffmanTreeFast(
38
+ MemoryManager* m, const uint32_t* histogram, const size_t histogram_total,
39
+ const size_t max_bits, uint8_t* depth, uint16_t* bits, size_t* storage_ix,
40
+ uint8_t* storage);
41
+
42
+ /* REQUIRES: length > 0 */
43
+ /* REQUIRES: length <= (1 << 24) */
44
+ BROTLI_INTERNAL void BrotliStoreMetaBlock(MemoryManager* m,
45
+ const uint8_t* input, size_t start_pos, size_t length, size_t mask,
46
+ uint8_t prev_byte, uint8_t prev_byte2, BROTLI_BOOL is_last,
47
+ const BrotliEncoderParams* params, ContextType literal_context_mode,
48
+ const Command* commands, size_t n_commands, const MetaBlockSplit* mb,
49
+ size_t* storage_ix, uint8_t* storage);
50
+
51
+ /* Stores the meta-block without doing any block splitting, just collects
52
+ one histogram per block category and uses that for entropy coding.
53
+ REQUIRES: length > 0
54
+ REQUIRES: length <= (1 << 24) */
55
+ BROTLI_INTERNAL void BrotliStoreMetaBlockTrivial(MemoryManager* m,
56
+ const uint8_t* input, size_t start_pos, size_t length, size_t mask,
57
+ BROTLI_BOOL is_last, const BrotliEncoderParams* params,
58
+ const Command* commands, size_t n_commands,
59
+ size_t* storage_ix, uint8_t* storage);
60
+
61
+ /* Same as above, but uses static prefix codes for histograms with a only a few
62
+ symbols, and uses static code length prefix codes for all other histograms.
63
+ REQUIRES: length > 0
64
+ REQUIRES: length <= (1 << 24) */
65
+ BROTLI_INTERNAL void BrotliStoreMetaBlockFast(MemoryManager* m,
66
+ const uint8_t* input, size_t start_pos, size_t length, size_t mask,
67
+ BROTLI_BOOL is_last, const BrotliEncoderParams* params,
68
+ const Command* commands, size_t n_commands,
69
+ size_t* storage_ix, uint8_t* storage);
70
+
71
+ /* This is for storing uncompressed blocks (simple raw storage of
72
+ bytes-as-bytes).
73
+ REQUIRES: length > 0
74
+ REQUIRES: length <= (1 << 24) */
75
+ BROTLI_INTERNAL void BrotliStoreUncompressedMetaBlock(
76
+ BROTLI_BOOL is_final_block, const uint8_t* BROTLI_RESTRICT input,
77
+ size_t position, size_t mask, size_t len,
78
+ size_t* BROTLI_RESTRICT storage_ix, uint8_t* BROTLI_RESTRICT storage);
79
+
80
+ #if defined(__cplusplus) || defined(c_plusplus)
81
+ } /* extern "C" */
82
+ #endif
83
+
84
+ #endif /* BROTLI_ENC_BROTLI_BIT_STREAM_H_ */
@@ -0,0 +1,56 @@
1
+ /* Copyright 2013 Google Inc. All Rights Reserved.
2
+
3
+ Distributed under MIT license.
4
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
5
+ */
6
+
7
+ /* Functions for clustering similar histograms together. */
8
+
9
+ #include "./cluster.h"
10
+
11
+ #include "../common/platform.h"
12
+ #include <brotli/types.h>
13
+ #include "./bit_cost.h" /* BrotliPopulationCost */
14
+ #include "./fast_log.h"
15
+ #include "./histogram.h"
16
+ #include "./memory.h"
17
+
18
+ #if defined(__cplusplus) || defined(c_plusplus)
19
+ extern "C" {
20
+ #endif
21
+
22
+ static BROTLI_INLINE BROTLI_BOOL HistogramPairIsLess(
23
+ const HistogramPair* p1, const HistogramPair* p2) {
24
+ if (p1->cost_diff != p2->cost_diff) {
25
+ return TO_BROTLI_BOOL(p1->cost_diff > p2->cost_diff);
26
+ }
27
+ return TO_BROTLI_BOOL((p1->idx2 - p1->idx1) > (p2->idx2 - p2->idx1));
28
+ }
29
+
30
+ /* Returns entropy reduction of the context map when we combine two clusters. */
31
+ static BROTLI_INLINE double ClusterCostDiff(size_t size_a, size_t size_b) {
32
+ size_t size_c = size_a + size_b;
33
+ return (double)size_a * FastLog2(size_a) +
34
+ (double)size_b * FastLog2(size_b) -
35
+ (double)size_c * FastLog2(size_c);
36
+ }
37
+
38
+ #define CODE(X) X
39
+
40
+ #define FN(X) X ## Literal
41
+ #include "./cluster_inc.h" /* NOLINT(build/include) */
42
+ #undef FN
43
+
44
+ #define FN(X) X ## Command
45
+ #include "./cluster_inc.h" /* NOLINT(build/include) */
46
+ #undef FN
47
+
48
+ #define FN(X) X ## Distance
49
+ #include "./cluster_inc.h" /* NOLINT(build/include) */
50
+ #undef FN
51
+
52
+ #undef CODE
53
+
54
+ #if defined(__cplusplus) || defined(c_plusplus)
55
+ } /* extern "C" */
56
+ #endif
@@ -0,0 +1,48 @@
1
+ /* Copyright 2013 Google Inc. All Rights Reserved.
2
+
3
+ Distributed under MIT license.
4
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
5
+ */
6
+
7
+ /* Functions for clustering similar histograms together. */
8
+
9
+ #ifndef BROTLI_ENC_CLUSTER_H_
10
+ #define BROTLI_ENC_CLUSTER_H_
11
+
12
+ #include "../common/platform.h"
13
+ #include <brotli/types.h>
14
+ #include "./histogram.h"
15
+ #include "./memory.h"
16
+
17
+ #if defined(__cplusplus) || defined(c_plusplus)
18
+ extern "C" {
19
+ #endif
20
+
21
+ typedef struct HistogramPair {
22
+ uint32_t idx1;
23
+ uint32_t idx2;
24
+ double cost_combo;
25
+ double cost_diff;
26
+ } HistogramPair;
27
+
28
+ #define CODE(X) /* Declaration */;
29
+
30
+ #define FN(X) X ## Literal
31
+ #include "./cluster_inc.h" /* NOLINT(build/include) */
32
+ #undef FN
33
+
34
+ #define FN(X) X ## Command
35
+ #include "./cluster_inc.h" /* NOLINT(build/include) */
36
+ #undef FN
37
+
38
+ #define FN(X) X ## Distance
39
+ #include "./cluster_inc.h" /* NOLINT(build/include) */
40
+ #undef FN
41
+
42
+ #undef CODE
43
+
44
+ #if defined(__cplusplus) || defined(c_plusplus)
45
+ } /* extern "C" */
46
+ #endif
47
+
48
+ #endif /* BROTLI_ENC_CLUSTER_H_ */
@@ -0,0 +1,320 @@
1
+ /* NOLINT(build/header_guard) */
2
+ /* Copyright 2013 Google Inc. All Rights Reserved.
3
+
4
+ Distributed under MIT license.
5
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
6
+ */
7
+
8
+ /* template parameters: FN, CODE */
9
+
10
+ #define HistogramType FN(Histogram)
11
+
12
+ /* Computes the bit cost reduction by combining out[idx1] and out[idx2] and if
13
+ it is below a threshold, stores the pair (idx1, idx2) in the *pairs queue. */
14
+ BROTLI_INTERNAL void FN(BrotliCompareAndPushToQueue)(
15
+ const HistogramType* out, const uint32_t* cluster_size, uint32_t idx1,
16
+ uint32_t idx2, size_t max_num_pairs, HistogramPair* pairs,
17
+ size_t* num_pairs) CODE({
18
+ BROTLI_BOOL is_good_pair = BROTLI_FALSE;
19
+ HistogramPair p;
20
+ p.idx1 = p.idx2 = 0;
21
+ p.cost_diff = p.cost_combo = 0;
22
+ if (idx1 == idx2) {
23
+ return;
24
+ }
25
+ if (idx2 < idx1) {
26
+ uint32_t t = idx2;
27
+ idx2 = idx1;
28
+ idx1 = t;
29
+ }
30
+ p.idx1 = idx1;
31
+ p.idx2 = idx2;
32
+ p.cost_diff = 0.5 * ClusterCostDiff(cluster_size[idx1], cluster_size[idx2]);
33
+ p.cost_diff -= out[idx1].bit_cost_;
34
+ p.cost_diff -= out[idx2].bit_cost_;
35
+
36
+ if (out[idx1].total_count_ == 0) {
37
+ p.cost_combo = out[idx2].bit_cost_;
38
+ is_good_pair = BROTLI_TRUE;
39
+ } else if (out[idx2].total_count_ == 0) {
40
+ p.cost_combo = out[idx1].bit_cost_;
41
+ is_good_pair = BROTLI_TRUE;
42
+ } else {
43
+ double threshold = *num_pairs == 0 ? 1e99 :
44
+ BROTLI_MAX(double, 0.0, pairs[0].cost_diff);
45
+ HistogramType combo = out[idx1];
46
+ double cost_combo;
47
+ FN(HistogramAddHistogram)(&combo, &out[idx2]);
48
+ cost_combo = FN(BrotliPopulationCost)(&combo);
49
+ if (cost_combo < threshold - p.cost_diff) {
50
+ p.cost_combo = cost_combo;
51
+ is_good_pair = BROTLI_TRUE;
52
+ }
53
+ }
54
+ if (is_good_pair) {
55
+ p.cost_diff += p.cost_combo;
56
+ if (*num_pairs > 0 && HistogramPairIsLess(&pairs[0], &p)) {
57
+ /* Replace the top of the queue if needed. */
58
+ if (*num_pairs < max_num_pairs) {
59
+ pairs[*num_pairs] = pairs[0];
60
+ ++(*num_pairs);
61
+ }
62
+ pairs[0] = p;
63
+ } else if (*num_pairs < max_num_pairs) {
64
+ pairs[*num_pairs] = p;
65
+ ++(*num_pairs);
66
+ }
67
+ }
68
+ })
69
+
70
+ BROTLI_INTERNAL size_t FN(BrotliHistogramCombine)(HistogramType* out,
71
+ uint32_t* cluster_size,
72
+ uint32_t* symbols,
73
+ uint32_t* clusters,
74
+ HistogramPair* pairs,
75
+ size_t num_clusters,
76
+ size_t symbols_size,
77
+ size_t max_clusters,
78
+ size_t max_num_pairs) CODE({
79
+ double cost_diff_threshold = 0.0;
80
+ size_t min_cluster_size = 1;
81
+ size_t num_pairs = 0;
82
+
83
+ {
84
+ /* We maintain a vector of histogram pairs, with the property that the pair
85
+ with the maximum bit cost reduction is the first. */
86
+ size_t idx1;
87
+ for (idx1 = 0; idx1 < num_clusters; ++idx1) {
88
+ size_t idx2;
89
+ for (idx2 = idx1 + 1; idx2 < num_clusters; ++idx2) {
90
+ FN(BrotliCompareAndPushToQueue)(out, cluster_size, clusters[idx1],
91
+ clusters[idx2], max_num_pairs, &pairs[0], &num_pairs);
92
+ }
93
+ }
94
+ }
95
+
96
+ while (num_clusters > min_cluster_size) {
97
+ uint32_t best_idx1;
98
+ uint32_t best_idx2;
99
+ size_t i;
100
+ if (pairs[0].cost_diff >= cost_diff_threshold) {
101
+ cost_diff_threshold = 1e99;
102
+ min_cluster_size = max_clusters;
103
+ continue;
104
+ }
105
+ /* Take the best pair from the top of heap. */
106
+ best_idx1 = pairs[0].idx1;
107
+ best_idx2 = pairs[0].idx2;
108
+ FN(HistogramAddHistogram)(&out[best_idx1], &out[best_idx2]);
109
+ out[best_idx1].bit_cost_ = pairs[0].cost_combo;
110
+ cluster_size[best_idx1] += cluster_size[best_idx2];
111
+ for (i = 0; i < symbols_size; ++i) {
112
+ if (symbols[i] == best_idx2) {
113
+ symbols[i] = best_idx1;
114
+ }
115
+ }
116
+ for (i = 0; i < num_clusters; ++i) {
117
+ if (clusters[i] == best_idx2) {
118
+ memmove(&clusters[i], &clusters[i + 1],
119
+ (num_clusters - i - 1) * sizeof(clusters[0]));
120
+ break;
121
+ }
122
+ }
123
+ --num_clusters;
124
+ {
125
+ /* Remove pairs intersecting the just combined best pair. */
126
+ size_t copy_to_idx = 0;
127
+ for (i = 0; i < num_pairs; ++i) {
128
+ HistogramPair* p = &pairs[i];
129
+ if (p->idx1 == best_idx1 || p->idx2 == best_idx1 ||
130
+ p->idx1 == best_idx2 || p->idx2 == best_idx2) {
131
+ /* Remove invalid pair from the queue. */
132
+ continue;
133
+ }
134
+ if (HistogramPairIsLess(&pairs[0], p)) {
135
+ /* Replace the top of the queue if needed. */
136
+ HistogramPair front = pairs[0];
137
+ pairs[0] = *p;
138
+ pairs[copy_to_idx] = front;
139
+ } else {
140
+ pairs[copy_to_idx] = *p;
141
+ }
142
+ ++copy_to_idx;
143
+ }
144
+ num_pairs = copy_to_idx;
145
+ }
146
+
147
+ /* Push new pairs formed with the combined histogram to the heap. */
148
+ for (i = 0; i < num_clusters; ++i) {
149
+ FN(BrotliCompareAndPushToQueue)(out, cluster_size, best_idx1, clusters[i],
150
+ max_num_pairs, &pairs[0], &num_pairs);
151
+ }
152
+ }
153
+ return num_clusters;
154
+ })
155
+
156
+ /* What is the bit cost of moving histogram from cur_symbol to candidate. */
157
+ BROTLI_INTERNAL double FN(BrotliHistogramBitCostDistance)(
158
+ const HistogramType* histogram, const HistogramType* candidate) CODE({
159
+ if (histogram->total_count_ == 0) {
160
+ return 0.0;
161
+ } else {
162
+ HistogramType tmp = *histogram;
163
+ FN(HistogramAddHistogram)(&tmp, candidate);
164
+ return FN(BrotliPopulationCost)(&tmp) - candidate->bit_cost_;
165
+ }
166
+ })
167
+
168
+ /* Find the best 'out' histogram for each of the 'in' histograms.
169
+ When called, clusters[0..num_clusters) contains the unique values from
170
+ symbols[0..in_size), but this property is not preserved in this function.
171
+ Note: we assume that out[]->bit_cost_ is already up-to-date. */
172
+ BROTLI_INTERNAL void FN(BrotliHistogramRemap)(const HistogramType* in,
173
+ size_t in_size, const uint32_t* clusters, size_t num_clusters,
174
+ HistogramType* out, uint32_t* symbols) CODE({
175
+ size_t i;
176
+ for (i = 0; i < in_size; ++i) {
177
+ uint32_t best_out = i == 0 ? symbols[0] : symbols[i - 1];
178
+ double best_bits =
179
+ FN(BrotliHistogramBitCostDistance)(&in[i], &out[best_out]);
180
+ size_t j;
181
+ for (j = 0; j < num_clusters; ++j) {
182
+ const double cur_bits =
183
+ FN(BrotliHistogramBitCostDistance)(&in[i], &out[clusters[j]]);
184
+ if (cur_bits < best_bits) {
185
+ best_bits = cur_bits;
186
+ best_out = clusters[j];
187
+ }
188
+ }
189
+ symbols[i] = best_out;
190
+ }
191
+
192
+ /* Recompute each out based on raw and symbols. */
193
+ for (i = 0; i < num_clusters; ++i) {
194
+ FN(HistogramClear)(&out[clusters[i]]);
195
+ }
196
+ for (i = 0; i < in_size; ++i) {
197
+ FN(HistogramAddHistogram)(&out[symbols[i]], &in[i]);
198
+ }
199
+ })
200
+
201
+ /* Reorders elements of the out[0..length) array and changes values in
202
+ symbols[0..length) array in the following way:
203
+ * when called, symbols[] contains indexes into out[], and has N unique
204
+ values (possibly N < length)
205
+ * on return, symbols'[i] = f(symbols[i]) and
206
+ out'[symbols'[i]] = out[symbols[i]], for each 0 <= i < length,
207
+ where f is a bijection between the range of symbols[] and [0..N), and
208
+ the first occurrences of values in symbols'[i] come in consecutive
209
+ increasing order.
210
+ Returns N, the number of unique values in symbols[]. */
211
+ BROTLI_INTERNAL size_t FN(BrotliHistogramReindex)(MemoryManager* m,
212
+ HistogramType* out, uint32_t* symbols, size_t length) CODE({
213
+ static const uint32_t kInvalidIndex = BROTLI_UINT32_MAX;
214
+ uint32_t* new_index = BROTLI_ALLOC(m, uint32_t, length);
215
+ uint32_t next_index;
216
+ HistogramType* tmp;
217
+ size_t i;
218
+ if (BROTLI_IS_OOM(m) || BROTLI_IS_NULL(new_index)) return 0;
219
+ for (i = 0; i < length; ++i) {
220
+ new_index[i] = kInvalidIndex;
221
+ }
222
+ next_index = 0;
223
+ for (i = 0; i < length; ++i) {
224
+ if (new_index[symbols[i]] == kInvalidIndex) {
225
+ new_index[symbols[i]] = next_index;
226
+ ++next_index;
227
+ }
228
+ }
229
+ /* TODO: by using idea of "cycle-sort" we can avoid allocation of
230
+ tmp and reduce the number of copying by the factor of 2. */
231
+ tmp = BROTLI_ALLOC(m, HistogramType, next_index);
232
+ if (BROTLI_IS_OOM(m) || BROTLI_IS_NULL(tmp)) return 0;
233
+ next_index = 0;
234
+ for (i = 0; i < length; ++i) {
235
+ if (new_index[symbols[i]] == next_index) {
236
+ tmp[next_index] = out[symbols[i]];
237
+ ++next_index;
238
+ }
239
+ symbols[i] = new_index[symbols[i]];
240
+ }
241
+ BROTLI_FREE(m, new_index);
242
+ for (i = 0; i < next_index; ++i) {
243
+ out[i] = tmp[i];
244
+ }
245
+ BROTLI_FREE(m, tmp);
246
+ return next_index;
247
+ })
248
+
249
+ BROTLI_INTERNAL void FN(BrotliClusterHistograms)(
250
+ MemoryManager* m, const HistogramType* in, const size_t in_size,
251
+ size_t max_histograms, HistogramType* out, size_t* out_size,
252
+ uint32_t* histogram_symbols) CODE({
253
+ uint32_t* cluster_size = BROTLI_ALLOC(m, uint32_t, in_size);
254
+ uint32_t* clusters = BROTLI_ALLOC(m, uint32_t, in_size);
255
+ size_t num_clusters = 0;
256
+ const size_t max_input_histograms = 64;
257
+ size_t pairs_capacity = max_input_histograms * max_input_histograms / 2;
258
+ /* For the first pass of clustering, we allow all pairs. */
259
+ HistogramPair* pairs = BROTLI_ALLOC(m, HistogramPair, pairs_capacity + 1);
260
+ size_t i;
261
+
262
+ if (BROTLI_IS_OOM(m) || BROTLI_IS_NULL(cluster_size) ||
263
+ BROTLI_IS_NULL(clusters) || BROTLI_IS_NULL(pairs)) {
264
+ return;
265
+ }
266
+
267
+ for (i = 0; i < in_size; ++i) {
268
+ cluster_size[i] = 1;
269
+ }
270
+
271
+ for (i = 0; i < in_size; ++i) {
272
+ out[i] = in[i];
273
+ out[i].bit_cost_ = FN(BrotliPopulationCost)(&in[i]);
274
+ histogram_symbols[i] = (uint32_t)i;
275
+ }
276
+
277
+ for (i = 0; i < in_size; i += max_input_histograms) {
278
+ size_t num_to_combine =
279
+ BROTLI_MIN(size_t, in_size - i, max_input_histograms);
280
+ size_t num_new_clusters;
281
+ size_t j;
282
+ for (j = 0; j < num_to_combine; ++j) {
283
+ clusters[num_clusters + j] = (uint32_t)(i + j);
284
+ }
285
+ num_new_clusters =
286
+ FN(BrotliHistogramCombine)(out, cluster_size,
287
+ &histogram_symbols[i],
288
+ &clusters[num_clusters], pairs,
289
+ num_to_combine, num_to_combine,
290
+ max_histograms, pairs_capacity);
291
+ num_clusters += num_new_clusters;
292
+ }
293
+
294
+ {
295
+ /* For the second pass, we limit the total number of histogram pairs.
296
+ After this limit is reached, we only keep searching for the best pair. */
297
+ size_t max_num_pairs = BROTLI_MIN(size_t,
298
+ 64 * num_clusters, (num_clusters / 2) * num_clusters);
299
+ BROTLI_ENSURE_CAPACITY(
300
+ m, HistogramPair, pairs, pairs_capacity, max_num_pairs + 1);
301
+ if (BROTLI_IS_OOM(m)) return;
302
+
303
+ /* Collapse similar histograms. */
304
+ num_clusters = FN(BrotliHistogramCombine)(out, cluster_size,
305
+ histogram_symbols, clusters,
306
+ pairs, num_clusters, in_size,
307
+ max_histograms, max_num_pairs);
308
+ }
309
+ BROTLI_FREE(m, pairs);
310
+ BROTLI_FREE(m, cluster_size);
311
+ /* Find the optimal map from original histograms to the final ones. */
312
+ FN(BrotliHistogramRemap)(in, in_size, clusters, num_clusters,
313
+ out, histogram_symbols);
314
+ BROTLI_FREE(m, clusters);
315
+ /* Convert the context map to a canonical form. */
316
+ *out_size = FN(BrotliHistogramReindex)(m, out, histogram_symbols, in_size);
317
+ if (BROTLI_IS_OOM(m)) return;
318
+ })
319
+
320
+ #undef HistogramType
@@ -0,0 +1,28 @@
1
+ /* Copyright 2013 Google Inc. All Rights Reserved.
2
+
3
+ Distributed under MIT license.
4
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
5
+ */
6
+
7
+ #include "./command.h"
8
+
9
+ #include <brotli/types.h>
10
+
11
+ #if defined(__cplusplus) || defined(c_plusplus)
12
+ extern "C" {
13
+ #endif
14
+
15
+ const uint32_t kBrotliInsBase[BROTLI_NUM_INS_COPY_CODES] = {
16
+ 0, 1, 2, 3, 4, 5, 6, 8, 10, 14, 18, 26,
17
+ 34, 50, 66, 98, 130, 194, 322, 578, 1090, 2114, 6210, 22594};
18
+ const uint32_t kBrotliInsExtra[BROTLI_NUM_INS_COPY_CODES] = {
19
+ 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 8, 9, 10, 12, 14, 24};
20
+ const uint32_t kBrotliCopyBase[BROTLI_NUM_INS_COPY_CODES] = {
21
+ 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 18,
22
+ 22, 30, 38, 54, 70, 102, 134, 198, 326, 582, 1094, 2118};
23
+ const uint32_t kBrotliCopyExtra[BROTLI_NUM_INS_COPY_CODES] = {
24
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 8, 9, 10, 24};
25
+
26
+ #if defined(__cplusplus) || defined(c_plusplus)
27
+ } /* extern "C" */
28
+ #endif