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,51 @@
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: Histogram, DATA_SIZE, DataType */
9
+
10
+ /* A simple container for histograms of data in blocks. */
11
+
12
+ typedef struct FN(Histogram) {
13
+ uint32_t data_[DATA_SIZE];
14
+ size_t total_count_;
15
+ double bit_cost_;
16
+ } FN(Histogram);
17
+
18
+ static BROTLI_INLINE void FN(HistogramClear)(FN(Histogram)* self) {
19
+ memset(self->data_, 0, sizeof(self->data_));
20
+ self->total_count_ = 0;
21
+ self->bit_cost_ = HUGE_VAL;
22
+ }
23
+
24
+ static BROTLI_INLINE void FN(ClearHistograms)(
25
+ FN(Histogram)* array, size_t length) {
26
+ size_t i;
27
+ for (i = 0; i < length; ++i) FN(HistogramClear)(array + i);
28
+ }
29
+
30
+ static BROTLI_INLINE void FN(HistogramAdd)(FN(Histogram)* self, size_t val) {
31
+ ++self->data_[val];
32
+ ++self->total_count_;
33
+ }
34
+
35
+ static BROTLI_INLINE void FN(HistogramAddVector)(FN(Histogram)* self,
36
+ const DataType* p, size_t n) {
37
+ self->total_count_ += n;
38
+ n += 1;
39
+ while (--n) ++self->data_[*p++];
40
+ }
41
+
42
+ static BROTLI_INLINE void FN(HistogramAddHistogram)(FN(Histogram)* self,
43
+ const FN(Histogram)* v) {
44
+ size_t i;
45
+ self->total_count_ += v->total_count_;
46
+ for (i = 0; i < DATA_SIZE; ++i) {
47
+ self->data_[i] += v->data_[i];
48
+ }
49
+ }
50
+
51
+ static BROTLI_INLINE size_t FN(HistogramDataSize)(void) { return DATA_SIZE; }
@@ -0,0 +1,175 @@
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
+ /* Literal cost model to allow backward reference replacement to be efficient.
8
+ */
9
+
10
+ #include "./literal_cost.h"
11
+
12
+ #include "../common/platform.h"
13
+ #include <brotli/types.h>
14
+ #include "./fast_log.h"
15
+ #include "./utf8_util.h"
16
+
17
+ #if defined(__cplusplus) || defined(c_plusplus)
18
+ extern "C" {
19
+ #endif
20
+
21
+ static size_t UTF8Position(size_t last, size_t c, size_t clamp) {
22
+ if (c < 128) {
23
+ return 0; /* Next one is the 'Byte 1' again. */
24
+ } else if (c >= 192) { /* Next one is the 'Byte 2' of utf-8 encoding. */
25
+ return BROTLI_MIN(size_t, 1, clamp);
26
+ } else {
27
+ /* Let's decide over the last byte if this ends the sequence. */
28
+ if (last < 0xE0) {
29
+ return 0; /* Completed two or three byte coding. */
30
+ } else { /* Next one is the 'Byte 3' of utf-8 encoding. */
31
+ return BROTLI_MIN(size_t, 2, clamp);
32
+ }
33
+ }
34
+ }
35
+
36
+ static size_t DecideMultiByteStatsLevel(size_t pos, size_t len, size_t mask,
37
+ const uint8_t* data) {
38
+ size_t counts[3] = { 0 };
39
+ size_t max_utf8 = 1; /* should be 2, but 1 compresses better. */
40
+ size_t last_c = 0;
41
+ size_t i;
42
+ for (i = 0; i < len; ++i) {
43
+ size_t c = data[(pos + i) & mask];
44
+ ++counts[UTF8Position(last_c, c, 2)];
45
+ last_c = c;
46
+ }
47
+ if (counts[2] < 500) {
48
+ max_utf8 = 1;
49
+ }
50
+ if (counts[1] + counts[2] < 25) {
51
+ max_utf8 = 0;
52
+ }
53
+ return max_utf8;
54
+ }
55
+
56
+ static void EstimateBitCostsForLiteralsUTF8(size_t pos, size_t len, size_t mask,
57
+ const uint8_t* data, float* cost) {
58
+ /* max_utf8 is 0 (normal ASCII single byte modeling),
59
+ 1 (for 2-byte UTF-8 modeling), or 2 (for 3-byte UTF-8 modeling). */
60
+ const size_t max_utf8 = DecideMultiByteStatsLevel(pos, len, mask, data);
61
+ size_t histogram[3][256] = { { 0 } };
62
+ size_t window_half = 495;
63
+ size_t in_window = BROTLI_MIN(size_t, window_half, len);
64
+ size_t in_window_utf8[3] = { 0 };
65
+
66
+ size_t i;
67
+ { /* Bootstrap histograms. */
68
+ size_t last_c = 0;
69
+ size_t utf8_pos = 0;
70
+ for (i = 0; i < in_window; ++i) {
71
+ size_t c = data[(pos + i) & mask];
72
+ ++histogram[utf8_pos][c];
73
+ ++in_window_utf8[utf8_pos];
74
+ utf8_pos = UTF8Position(last_c, c, max_utf8);
75
+ last_c = c;
76
+ }
77
+ }
78
+
79
+ /* Compute bit costs with sliding window. */
80
+ for (i = 0; i < len; ++i) {
81
+ if (i >= window_half) {
82
+ /* Remove a byte in the past. */
83
+ size_t c =
84
+ i < window_half + 1 ? 0 : data[(pos + i - window_half - 1) & mask];
85
+ size_t last_c =
86
+ i < window_half + 2 ? 0 : data[(pos + i - window_half - 2) & mask];
87
+ size_t utf8_pos2 = UTF8Position(last_c, c, max_utf8);
88
+ --histogram[utf8_pos2][data[(pos + i - window_half) & mask]];
89
+ --in_window_utf8[utf8_pos2];
90
+ }
91
+ if (i + window_half < len) {
92
+ /* Add a byte in the future. */
93
+ size_t c = data[(pos + i + window_half - 1) & mask];
94
+ size_t last_c = data[(pos + i + window_half - 2) & mask];
95
+ size_t utf8_pos2 = UTF8Position(last_c, c, max_utf8);
96
+ ++histogram[utf8_pos2][data[(pos + i + window_half) & mask]];
97
+ ++in_window_utf8[utf8_pos2];
98
+ }
99
+ {
100
+ size_t c = i < 1 ? 0 : data[(pos + i - 1) & mask];
101
+ size_t last_c = i < 2 ? 0 : data[(pos + i - 2) & mask];
102
+ size_t utf8_pos = UTF8Position(last_c, c, max_utf8);
103
+ size_t masked_pos = (pos + i) & mask;
104
+ size_t histo = histogram[utf8_pos][data[masked_pos]];
105
+ double lit_cost;
106
+ if (histo == 0) {
107
+ histo = 1;
108
+ }
109
+ lit_cost = FastLog2(in_window_utf8[utf8_pos]) - FastLog2(histo);
110
+ lit_cost += 0.02905;
111
+ if (lit_cost < 1.0) {
112
+ lit_cost *= 0.5;
113
+ lit_cost += 0.5;
114
+ }
115
+ /* Make the first bytes more expensive -- seems to help, not sure why.
116
+ Perhaps because the entropy source is changing its properties
117
+ rapidly in the beginning of the file, perhaps because the beginning
118
+ of the data is a statistical "anomaly". */
119
+ if (i < 2000) {
120
+ lit_cost += 0.7 - ((double)(2000 - i) / 2000.0 * 0.35);
121
+ }
122
+ cost[i] = (float)lit_cost;
123
+ }
124
+ }
125
+ }
126
+
127
+ void BrotliEstimateBitCostsForLiterals(size_t pos, size_t len, size_t mask,
128
+ const uint8_t* data, float* cost) {
129
+ if (BrotliIsMostlyUTF8(data, pos, mask, len, kMinUTF8Ratio)) {
130
+ EstimateBitCostsForLiteralsUTF8(pos, len, mask, data, cost);
131
+ return;
132
+ } else {
133
+ size_t histogram[256] = { 0 };
134
+ size_t window_half = 2000;
135
+ size_t in_window = BROTLI_MIN(size_t, window_half, len);
136
+
137
+ /* Bootstrap histogram. */
138
+ size_t i;
139
+ for (i = 0; i < in_window; ++i) {
140
+ ++histogram[data[(pos + i) & mask]];
141
+ }
142
+
143
+ /* Compute bit costs with sliding window. */
144
+ for (i = 0; i < len; ++i) {
145
+ size_t histo;
146
+ if (i >= window_half) {
147
+ /* Remove a byte in the past. */
148
+ --histogram[data[(pos + i - window_half) & mask]];
149
+ --in_window;
150
+ }
151
+ if (i + window_half < len) {
152
+ /* Add a byte in the future. */
153
+ ++histogram[data[(pos + i + window_half) & mask]];
154
+ ++in_window;
155
+ }
156
+ histo = histogram[data[(pos + i) & mask]];
157
+ if (histo == 0) {
158
+ histo = 1;
159
+ }
160
+ {
161
+ double lit_cost = FastLog2(in_window) - FastLog2(histo);
162
+ lit_cost += 0.029;
163
+ if (lit_cost < 1.0) {
164
+ lit_cost *= 0.5;
165
+ lit_cost += 0.5;
166
+ }
167
+ cost[i] = (float)lit_cost;
168
+ }
169
+ }
170
+ }
171
+ }
172
+
173
+ #if defined(__cplusplus) || defined(c_plusplus)
174
+ } /* extern "C" */
175
+ #endif
@@ -0,0 +1,30 @@
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
+ /* Literal cost model to allow backward reference replacement to be efficient.
8
+ */
9
+
10
+ #ifndef BROTLI_ENC_LITERAL_COST_H_
11
+ #define BROTLI_ENC_LITERAL_COST_H_
12
+
13
+ #include "../common/platform.h"
14
+ #include <brotli/types.h>
15
+
16
+ #if defined(__cplusplus) || defined(c_plusplus)
17
+ extern "C" {
18
+ #endif
19
+
20
+ /* Estimates how many bits the literals in the interval [pos, pos + len) in the
21
+ ring-buffer (data, mask) will take entropy coded and writes these estimates
22
+ to the cost[0..len) array. */
23
+ BROTLI_INTERNAL void BrotliEstimateBitCostsForLiterals(
24
+ size_t pos, size_t len, size_t mask, const uint8_t* data, float* cost);
25
+
26
+ #if defined(__cplusplus) || defined(c_plusplus)
27
+ } /* extern "C" */
28
+ #endif
29
+
30
+ #endif /* BROTLI_ENC_LITERAL_COST_H_ */
@@ -0,0 +1,170 @@
1
+ /* Copyright 2015 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
+ /* Algorithms for distributing the literals and commands of a metablock between
8
+ block types and contexts. */
9
+
10
+ #include "./memory.h"
11
+
12
+ #include <stdlib.h> /* exit, free, malloc */
13
+ #include <string.h> /* memcpy */
14
+
15
+ #include "../common/platform.h"
16
+ #include <brotli/types.h>
17
+
18
+ #if defined(__cplusplus) || defined(c_plusplus)
19
+ extern "C" {
20
+ #endif
21
+
22
+ #define MAX_PERM_ALLOCATED 128
23
+ #define MAX_NEW_ALLOCATED 64
24
+ #define MAX_NEW_FREED 64
25
+
26
+ #define PERM_ALLOCATED_OFFSET 0
27
+ #define NEW_ALLOCATED_OFFSET MAX_PERM_ALLOCATED
28
+ #define NEW_FREED_OFFSET (MAX_PERM_ALLOCATED + MAX_NEW_ALLOCATED)
29
+
30
+ void BrotliInitMemoryManager(
31
+ MemoryManager* m, brotli_alloc_func alloc_func, brotli_free_func free_func,
32
+ void* opaque) {
33
+ if (!alloc_func) {
34
+ m->alloc_func = BrotliDefaultAllocFunc;
35
+ m->free_func = BrotliDefaultFreeFunc;
36
+ m->opaque = 0;
37
+ } else {
38
+ m->alloc_func = alloc_func;
39
+ m->free_func = free_func;
40
+ m->opaque = opaque;
41
+ }
42
+ #if !defined(BROTLI_ENCODER_EXIT_ON_OOM)
43
+ m->is_oom = BROTLI_FALSE;
44
+ m->perm_allocated = 0;
45
+ m->new_allocated = 0;
46
+ m->new_freed = 0;
47
+ #endif /* BROTLI_ENCODER_EXIT_ON_OOM */
48
+ }
49
+
50
+ #if defined(BROTLI_ENCODER_EXIT_ON_OOM)
51
+
52
+ void* BrotliAllocate(MemoryManager* m, size_t n) {
53
+ void* result = m->alloc_func(m->opaque, n);
54
+ if (!result) exit(EXIT_FAILURE);
55
+ return result;
56
+ }
57
+
58
+ void BrotliFree(MemoryManager* m, void* p) {
59
+ m->free_func(m->opaque, p);
60
+ }
61
+
62
+ void BrotliWipeOutMemoryManager(MemoryManager* m) {
63
+ BROTLI_UNUSED(m);
64
+ }
65
+
66
+ #else /* BROTLI_ENCODER_EXIT_ON_OOM */
67
+
68
+ static void SortPointers(void** items, const size_t n) {
69
+ /* Shell sort. */
70
+ static const size_t gaps[] = {23, 10, 4, 1};
71
+ int g = 0;
72
+ for (; g < 4; ++g) {
73
+ size_t gap = gaps[g];
74
+ size_t i;
75
+ for (i = gap; i < n; ++i) {
76
+ size_t j = i;
77
+ void* tmp = items[i];
78
+ for (; j >= gap && tmp < items[j - gap]; j -= gap) {
79
+ items[j] = items[j - gap];
80
+ }
81
+ items[j] = tmp;
82
+ }
83
+ }
84
+ }
85
+
86
+ static size_t Annihilate(void** a, size_t a_len, void** b, size_t b_len) {
87
+ size_t a_read_index = 0;
88
+ size_t b_read_index = 0;
89
+ size_t a_write_index = 0;
90
+ size_t b_write_index = 0;
91
+ size_t annihilated = 0;
92
+ while (a_read_index < a_len && b_read_index < b_len) {
93
+ if (a[a_read_index] == b[b_read_index]) {
94
+ a_read_index++;
95
+ b_read_index++;
96
+ annihilated++;
97
+ } else if (a[a_read_index] < b[b_read_index]) {
98
+ a[a_write_index++] = a[a_read_index++];
99
+ } else {
100
+ b[b_write_index++] = b[b_read_index++];
101
+ }
102
+ }
103
+ while (a_read_index < a_len) a[a_write_index++] = a[a_read_index++];
104
+ while (b_read_index < b_len) b[b_write_index++] = b[b_read_index++];
105
+ return annihilated;
106
+ }
107
+
108
+ static void CollectGarbagePointers(MemoryManager* m) {
109
+ size_t annihilated;
110
+ SortPointers(m->pointers + NEW_ALLOCATED_OFFSET, m->new_allocated);
111
+ SortPointers(m->pointers + NEW_FREED_OFFSET, m->new_freed);
112
+ annihilated = Annihilate(
113
+ m->pointers + NEW_ALLOCATED_OFFSET, m->new_allocated,
114
+ m->pointers + NEW_FREED_OFFSET, m->new_freed);
115
+ m->new_allocated -= annihilated;
116
+ m->new_freed -= annihilated;
117
+
118
+ if (m->new_freed != 0) {
119
+ annihilated = Annihilate(
120
+ m->pointers + PERM_ALLOCATED_OFFSET, m->perm_allocated,
121
+ m->pointers + NEW_FREED_OFFSET, m->new_freed);
122
+ m->perm_allocated -= annihilated;
123
+ m->new_freed -= annihilated;
124
+ BROTLI_DCHECK(m->new_freed == 0);
125
+ }
126
+
127
+ if (m->new_allocated != 0) {
128
+ BROTLI_DCHECK(m->perm_allocated + m->new_allocated <= MAX_PERM_ALLOCATED);
129
+ memcpy(m->pointers + PERM_ALLOCATED_OFFSET + m->perm_allocated,
130
+ m->pointers + NEW_ALLOCATED_OFFSET,
131
+ sizeof(void*) * m->new_allocated);
132
+ m->perm_allocated += m->new_allocated;
133
+ m->new_allocated = 0;
134
+ SortPointers(m->pointers + PERM_ALLOCATED_OFFSET, m->perm_allocated);
135
+ }
136
+ }
137
+
138
+ void* BrotliAllocate(MemoryManager* m, size_t n) {
139
+ void* result = m->alloc_func(m->opaque, n);
140
+ if (!result) {
141
+ m->is_oom = BROTLI_TRUE;
142
+ return NULL;
143
+ }
144
+ if (m->new_allocated == MAX_NEW_ALLOCATED) CollectGarbagePointers(m);
145
+ m->pointers[NEW_ALLOCATED_OFFSET + (m->new_allocated++)] = result;
146
+ return result;
147
+ }
148
+
149
+ void BrotliFree(MemoryManager* m, void* p) {
150
+ if (!p) return;
151
+ m->free_func(m->opaque, p);
152
+ if (m->new_freed == MAX_NEW_FREED) CollectGarbagePointers(m);
153
+ m->pointers[NEW_FREED_OFFSET + (m->new_freed++)] = p;
154
+ }
155
+
156
+ void BrotliWipeOutMemoryManager(MemoryManager* m) {
157
+ size_t i;
158
+ CollectGarbagePointers(m);
159
+ /* Now all unfreed pointers are in perm-allocated list. */
160
+ for (i = 0; i < m->perm_allocated; ++i) {
161
+ m->free_func(m->opaque, m->pointers[PERM_ALLOCATED_OFFSET + i]);
162
+ }
163
+ m->perm_allocated = 0;
164
+ }
165
+
166
+ #endif /* BROTLI_ENCODER_EXIT_ON_OOM */
167
+
168
+ #if defined(__cplusplus) || defined(c_plusplus)
169
+ } /* extern "C" */
170
+ #endif
@@ -0,0 +1,114 @@
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
+ /* Macros for memory management. */
8
+
9
+ #ifndef BROTLI_ENC_MEMORY_H_
10
+ #define BROTLI_ENC_MEMORY_H_
11
+
12
+ #include <string.h> /* memcpy */
13
+
14
+ #include "../common/platform.h"
15
+ #include <brotli/types.h>
16
+
17
+ #if defined(__cplusplus) || defined(c_plusplus)
18
+ extern "C" {
19
+ #endif
20
+
21
+ #if !defined(BROTLI_ENCODER_CLEANUP_ON_OOM) && \
22
+ !defined(BROTLI_ENCODER_EXIT_ON_OOM)
23
+ #define BROTLI_ENCODER_EXIT_ON_OOM
24
+ #endif
25
+
26
+ typedef struct MemoryManager {
27
+ brotli_alloc_func alloc_func;
28
+ brotli_free_func free_func;
29
+ void* opaque;
30
+ #if !defined(BROTLI_ENCODER_EXIT_ON_OOM)
31
+ BROTLI_BOOL is_oom;
32
+ size_t perm_allocated;
33
+ size_t new_allocated;
34
+ size_t new_freed;
35
+ void* pointers[256];
36
+ #endif /* BROTLI_ENCODER_EXIT_ON_OOM */
37
+ } MemoryManager;
38
+
39
+ BROTLI_INTERNAL void BrotliInitMemoryManager(
40
+ MemoryManager* m, brotli_alloc_func alloc_func, brotli_free_func free_func,
41
+ void* opaque);
42
+
43
+ BROTLI_INTERNAL void* BrotliAllocate(MemoryManager* m, size_t n);
44
+ #define BROTLI_ALLOC(M, T, N) \
45
+ ((N) > 0 ? ((T*)BrotliAllocate((M), (N) * sizeof(T))) : NULL)
46
+
47
+ BROTLI_INTERNAL void BrotliFree(MemoryManager* m, void* p);
48
+ #define BROTLI_FREE(M, P) { \
49
+ BrotliFree((M), (P)); \
50
+ P = NULL; \
51
+ }
52
+
53
+ #if defined(BROTLI_ENCODER_EXIT_ON_OOM)
54
+ #define BROTLI_IS_OOM(M) (!!0)
55
+ #else /* BROTLI_ENCODER_EXIT_ON_OOM */
56
+ #define BROTLI_IS_OOM(M) (!!(M)->is_oom)
57
+ #endif /* BROTLI_ENCODER_EXIT_ON_OOM */
58
+
59
+ /*
60
+ BROTLI_IS_NULL is a fake check, BROTLI_IS_OOM does the heavy lifting.
61
+ The only purpose of it is to explain static analyzers the state of things.
62
+ NB: use ONLY together with BROTLI_IS_OOM
63
+ AND ONLY for allocations in the current scope.
64
+ */
65
+ #if defined(__clang_analyzer__) && !defined(BROTLI_ENCODER_EXIT_ON_OOM)
66
+ #define BROTLI_IS_NULL(A) ((A) == nullptr)
67
+ #else /* defined(__clang_analyzer__) */
68
+ #define BROTLI_IS_NULL(A) (!!0)
69
+ #endif /* defined(__clang_analyzer__) */
70
+
71
+ BROTLI_INTERNAL void BrotliWipeOutMemoryManager(MemoryManager* m);
72
+
73
+ /*
74
+ Dynamically grows array capacity to at least the requested size
75
+ M: MemoryManager
76
+ T: data type
77
+ A: array
78
+ C: capacity
79
+ R: requested size
80
+ */
81
+ #define BROTLI_ENSURE_CAPACITY(M, T, A, C, R) { \
82
+ if (C < (R)) { \
83
+ size_t _new_size = (C == 0) ? (R) : C; \
84
+ T* new_array; \
85
+ while (_new_size < (R)) _new_size *= 2; \
86
+ new_array = BROTLI_ALLOC((M), T, _new_size); \
87
+ if (!BROTLI_IS_OOM(M) && !BROTLI_IS_NULL(new_array) && C != 0) \
88
+ memcpy(new_array, A, C * sizeof(T)); \
89
+ BROTLI_FREE((M), A); \
90
+ A = new_array; \
91
+ C = _new_size; \
92
+ } \
93
+ }
94
+
95
+ /*
96
+ Appends value and dynamically grows array capacity when needed
97
+ M: MemoryManager
98
+ T: data type
99
+ A: array
100
+ C: array capacity
101
+ S: array size
102
+ V: value to append
103
+ */
104
+ #define BROTLI_ENSURE_CAPACITY_APPEND(M, T, A, C, S, V) { \
105
+ (S)++; \
106
+ BROTLI_ENSURE_CAPACITY(M, T, A, C, S); \
107
+ A[(S) - 1] = (V); \
108
+ }
109
+
110
+ #if defined(__cplusplus) || defined(c_plusplus)
111
+ } /* extern "C" */
112
+ #endif
113
+
114
+ #endif /* BROTLI_ENC_MEMORY_H_ */