react-native-quick-crypto 1.1.0 → 1.1.1

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 (687) hide show
  1. package/android/build.gradle +5 -1
  2. package/cpp/argon2/HybridArgon2.cpp +10 -3
  3. package/cpp/blake3/HybridBlake3.cpp +5 -3
  4. package/cpp/cipher/CCMCipher.cpp +29 -16
  5. package/cpp/cipher/CCMCipher.hpp +2 -4
  6. package/cpp/cipher/ChaCha20Cipher.cpp +14 -18
  7. package/cpp/cipher/ChaCha20Cipher.hpp +2 -4
  8. package/cpp/cipher/ChaCha20Poly1305Cipher.cpp +34 -23
  9. package/cpp/cipher/ChaCha20Poly1305Cipher.hpp +2 -4
  10. package/cpp/cipher/GCMCipher.cpp +14 -15
  11. package/cpp/cipher/HybridCipher.cpp +39 -36
  12. package/cpp/cipher/HybridCipher.hpp +17 -1
  13. package/cpp/cipher/HybridRsaCipher.cpp +74 -29
  14. package/cpp/cipher/OCBCipher.cpp +4 -3
  15. package/cpp/cipher/XChaCha20Poly1305Cipher.cpp +14 -13
  16. package/cpp/cipher/XSalsa20Cipher.cpp +72 -6
  17. package/cpp/cipher/XSalsa20Cipher.hpp +25 -3
  18. package/cpp/cipher/XSalsa20Poly1305Cipher.cpp +21 -25
  19. package/cpp/dh/HybridDiffieHellman.cpp +29 -0
  20. package/cpp/ec/HybridEcKeyPair.cpp +35 -33
  21. package/cpp/ec/HybridEcKeyPair.hpp +3 -7
  22. package/cpp/ecdh/HybridECDH.cpp +23 -0
  23. package/cpp/ed25519/HybridEdKeyPair.cpp +73 -117
  24. package/cpp/ed25519/HybridEdKeyPair.hpp +5 -9
  25. package/cpp/hash/HybridHash.cpp +5 -7
  26. package/cpp/hkdf/HybridHkdf.cpp +6 -4
  27. package/cpp/hmac/HybridHmac.cpp +4 -6
  28. package/cpp/kmac/HybridKmac.cpp +4 -4
  29. package/cpp/mldsa/HybridMlDsaKeyPair.cpp +37 -49
  30. package/cpp/mlkem/HybridMlKemKeyPair.cpp +39 -43
  31. package/cpp/pbkdf2/HybridPbkdf2.cpp +7 -8
  32. package/cpp/rsa/HybridRsaKeyPair.cpp +5 -8
  33. package/cpp/rsa/HybridRsaKeyPair.hpp +4 -7
  34. package/cpp/scrypt/HybridScrypt.cpp +6 -4
  35. package/cpp/sign/HybridSignHandle.cpp +25 -68
  36. package/cpp/sign/HybridVerifyHandle.cpp +23 -60
  37. package/cpp/utils/HybridUtils.cpp +183 -43
  38. package/cpp/utils/HybridUtils.hpp +9 -2
  39. package/cpp/utils/QuickCryptoUtils.hpp +72 -0
  40. package/lib/commonjs/argon2.js +51 -2
  41. package/lib/commonjs/argon2.js.map +1 -1
  42. package/lib/commonjs/cipher.js +109 -11
  43. package/lib/commonjs/cipher.js.map +1 -1
  44. package/lib/commonjs/dsa.js +8 -2
  45. package/lib/commonjs/dsa.js.map +1 -1
  46. package/lib/commonjs/hash.js +15 -5
  47. package/lib/commonjs/hash.js.map +1 -1
  48. package/lib/commonjs/hkdf.js +33 -6
  49. package/lib/commonjs/hkdf.js.map +1 -1
  50. package/lib/commonjs/hmac.js +15 -5
  51. package/lib/commonjs/hmac.js.map +1 -1
  52. package/lib/commonjs/keys/publicCipher.js +10 -4
  53. package/lib/commonjs/keys/publicCipher.js.map +1 -1
  54. package/lib/commonjs/random.js +11 -2
  55. package/lib/commonjs/random.js.map +1 -1
  56. package/lib/commonjs/rsa.js +12 -5
  57. package/lib/commonjs/rsa.js.map +1 -1
  58. package/lib/commonjs/scrypt.js +47 -6
  59. package/lib/commonjs/scrypt.js.map +1 -1
  60. package/lib/commonjs/subtle.js +76 -5
  61. package/lib/commonjs/subtle.js.map +1 -1
  62. package/lib/commonjs/utils/cipher.js +18 -7
  63. package/lib/commonjs/utils/cipher.js.map +1 -1
  64. package/lib/commonjs/utils/conversion.js +33 -9
  65. package/lib/commonjs/utils/conversion.js.map +1 -1
  66. package/lib/commonjs/utils/timingSafeEqual.js +7 -2
  67. package/lib/commonjs/utils/timingSafeEqual.js.map +1 -1
  68. package/lib/commonjs/x509certificate.js +6 -6
  69. package/lib/commonjs/x509certificate.js.map +1 -1
  70. package/lib/module/argon2.js +51 -2
  71. package/lib/module/argon2.js.map +1 -1
  72. package/lib/module/cipher.js +109 -11
  73. package/lib/module/cipher.js.map +1 -1
  74. package/lib/module/dsa.js +8 -2
  75. package/lib/module/dsa.js.map +1 -1
  76. package/lib/module/hash.js +15 -5
  77. package/lib/module/hash.js.map +1 -1
  78. package/lib/module/hkdf.js +33 -6
  79. package/lib/module/hkdf.js.map +1 -1
  80. package/lib/module/hmac.js +15 -5
  81. package/lib/module/hmac.js.map +1 -1
  82. package/lib/module/keys/publicCipher.js +10 -4
  83. package/lib/module/keys/publicCipher.js.map +1 -1
  84. package/lib/module/random.js +11 -2
  85. package/lib/module/random.js.map +1 -1
  86. package/lib/module/rsa.js +11 -4
  87. package/lib/module/rsa.js.map +1 -1
  88. package/lib/module/scrypt.js +47 -6
  89. package/lib/module/scrypt.js.map +1 -1
  90. package/lib/module/subtle.js +76 -5
  91. package/lib/module/subtle.js.map +1 -1
  92. package/lib/module/utils/cipher.js +18 -7
  93. package/lib/module/utils/cipher.js.map +1 -1
  94. package/lib/module/utils/conversion.js +33 -9
  95. package/lib/module/utils/conversion.js.map +1 -1
  96. package/lib/module/utils/timingSafeEqual.js +8 -3
  97. package/lib/module/utils/timingSafeEqual.js.map +1 -1
  98. package/lib/module/x509certificate.js +6 -6
  99. package/lib/module/x509certificate.js.map +1 -1
  100. package/lib/typescript/argon2.d.ts.map +1 -1
  101. package/lib/typescript/cipher.d.ts +2 -2
  102. package/lib/typescript/cipher.d.ts.map +1 -1
  103. package/lib/typescript/dsa.d.ts.map +1 -1
  104. package/lib/typescript/hash.d.ts +2 -2
  105. package/lib/typescript/hash.d.ts.map +1 -1
  106. package/lib/typescript/hkdf.d.ts.map +1 -1
  107. package/lib/typescript/hmac.d.ts +2 -2
  108. package/lib/typescript/hmac.d.ts.map +1 -1
  109. package/lib/typescript/index.d.ts +1 -1
  110. package/lib/typescript/index.d.ts.map +1 -1
  111. package/lib/typescript/keys/publicCipher.d.ts.map +1 -1
  112. package/lib/typescript/random.d.ts.map +1 -1
  113. package/lib/typescript/rsa.d.ts.map +1 -1
  114. package/lib/typescript/scrypt.d.ts.map +1 -1
  115. package/lib/typescript/specs/utils.nitro.d.ts +0 -2
  116. package/lib/typescript/specs/utils.nitro.d.ts.map +1 -1
  117. package/lib/typescript/subtle.d.ts.map +1 -1
  118. package/lib/typescript/utils/cipher.d.ts +13 -1
  119. package/lib/typescript/utils/cipher.d.ts.map +1 -1
  120. package/lib/typescript/utils/conversion.d.ts +9 -6
  121. package/lib/typescript/utils/conversion.d.ts.map +1 -1
  122. package/lib/typescript/utils/timingSafeEqual.d.ts.map +1 -1
  123. package/lib/typescript/x509certificate.d.ts.map +1 -1
  124. package/nitrogen/generated/shared/c++/HybridUtilsSpec.cpp +0 -2
  125. package/nitrogen/generated/shared/c++/HybridUtilsSpec.hpp +0 -3
  126. package/package.json +37 -5
  127. package/src/argon2.ts +80 -2
  128. package/src/cipher.ts +139 -15
  129. package/src/dsa.ts +11 -2
  130. package/src/hash.ts +17 -7
  131. package/src/hkdf.ts +44 -6
  132. package/src/hmac.ts +17 -7
  133. package/src/keys/publicCipher.ts +10 -4
  134. package/src/random.ts +11 -2
  135. package/src/rsa.ts +18 -4
  136. package/src/scrypt.ts +73 -6
  137. package/src/specs/utils.nitro.ts +0 -2
  138. package/src/subtle.ts +90 -8
  139. package/src/utils/cipher.ts +30 -8
  140. package/src/utils/conversion.ts +58 -20
  141. package/src/utils/timingSafeEqual.ts +8 -3
  142. package/src/x509certificate.ts +5 -6
  143. package/deps/blake3/.cargo/config.toml +0 -2
  144. package/deps/blake3/.git-blame-ignore-revs +0 -2
  145. package/deps/blake3/.github/workflows/build_b3sum.py +0 -38
  146. package/deps/blake3/.github/workflows/ci.yml +0 -491
  147. package/deps/blake3/.github/workflows/tag.yml +0 -43
  148. package/deps/blake3/.github/workflows/upload_github_release_asset.py +0 -73
  149. package/deps/blake3/CONTRIBUTING.md +0 -31
  150. package/deps/blake3/Cargo.toml +0 -135
  151. package/deps/blake3/b3sum/Cargo.lock +0 -513
  152. package/deps/blake3/b3sum/Cargo.toml +0 -26
  153. package/deps/blake3/b3sum/README.md +0 -72
  154. package/deps/blake3/b3sum/src/main.rs +0 -564
  155. package/deps/blake3/b3sum/src/unit_tests.rs +0 -235
  156. package/deps/blake3/b3sum/tests/cli_tests.rs +0 -680
  157. package/deps/blake3/b3sum/what_does_check_do.md +0 -176
  158. package/deps/blake3/benches/bench.rs +0 -623
  159. package/deps/blake3/build.rs +0 -389
  160. package/deps/blake3/c/CMakeLists.txt +0 -383
  161. package/deps/blake3/c/CMakePresets.json +0 -73
  162. package/deps/blake3/c/Makefile.testing +0 -82
  163. package/deps/blake3/c/blake3-config.cmake.in +0 -14
  164. package/deps/blake3/c/blake3_avx2.c +0 -326
  165. package/deps/blake3/c/blake3_avx2_x86-64_unix.S +0 -1815
  166. package/deps/blake3/c/blake3_avx2_x86-64_windows_gnu.S +0 -1817
  167. package/deps/blake3/c/blake3_avx2_x86-64_windows_msvc.asm +0 -1828
  168. package/deps/blake3/c/blake3_avx512.c +0 -1388
  169. package/deps/blake3/c/blake3_avx512_x86-64_unix.S +0 -4824
  170. package/deps/blake3/c/blake3_avx512_x86-64_windows_gnu.S +0 -2615
  171. package/deps/blake3/c/blake3_avx512_x86-64_windows_msvc.asm +0 -2634
  172. package/deps/blake3/c/blake3_c_rust_bindings/Cargo.toml +0 -32
  173. package/deps/blake3/c/blake3_c_rust_bindings/README.md +0 -4
  174. package/deps/blake3/c/blake3_c_rust_bindings/benches/bench.rs +0 -477
  175. package/deps/blake3/c/blake3_c_rust_bindings/build.rs +0 -253
  176. package/deps/blake3/c/blake3_c_rust_bindings/cross_test.sh +0 -31
  177. package/deps/blake3/c/blake3_c_rust_bindings/src/lib.rs +0 -333
  178. package/deps/blake3/c/blake3_c_rust_bindings/src/test.rs +0 -696
  179. package/deps/blake3/c/blake3_sse2.c +0 -566
  180. package/deps/blake3/c/blake3_sse2_x86-64_unix.S +0 -2291
  181. package/deps/blake3/c/blake3_sse2_x86-64_windows_gnu.S +0 -2332
  182. package/deps/blake3/c/blake3_sse2_x86-64_windows_msvc.asm +0 -2350
  183. package/deps/blake3/c/blake3_sse41.c +0 -560
  184. package/deps/blake3/c/blake3_sse41_x86-64_unix.S +0 -2028
  185. package/deps/blake3/c/blake3_sse41_x86-64_windows_gnu.S +0 -2069
  186. package/deps/blake3/c/blake3_sse41_x86-64_windows_msvc.asm +0 -2089
  187. package/deps/blake3/c/blake3_tbb.cpp +0 -37
  188. package/deps/blake3/c/dependencies/CMakeLists.txt +0 -3
  189. package/deps/blake3/c/dependencies/tbb/CMakeLists.txt +0 -28
  190. package/deps/blake3/c/example.c +0 -36
  191. package/deps/blake3/c/example_tbb.c +0 -57
  192. package/deps/blake3/c/libblake3.pc.in +0 -12
  193. package/deps/blake3/c/main.c +0 -166
  194. package/deps/blake3/c/test.py +0 -97
  195. package/deps/blake3/media/B3.svg +0 -70
  196. package/deps/blake3/media/BLAKE3.svg +0 -85
  197. package/deps/blake3/media/speed.svg +0 -1474
  198. package/deps/blake3/reference_impl/Cargo.toml +0 -8
  199. package/deps/blake3/reference_impl/README.md +0 -14
  200. package/deps/blake3/reference_impl/reference_impl.rs +0 -374
  201. package/deps/blake3/src/ffi_avx2.rs +0 -65
  202. package/deps/blake3/src/ffi_avx512.rs +0 -169
  203. package/deps/blake3/src/ffi_neon.rs +0 -82
  204. package/deps/blake3/src/ffi_sse2.rs +0 -126
  205. package/deps/blake3/src/ffi_sse41.rs +0 -126
  206. package/deps/blake3/src/guts.rs +0 -60
  207. package/deps/blake3/src/hazmat.rs +0 -704
  208. package/deps/blake3/src/io.rs +0 -64
  209. package/deps/blake3/src/join.rs +0 -92
  210. package/deps/blake3/src/lib.rs +0 -1835
  211. package/deps/blake3/src/platform.rs +0 -587
  212. package/deps/blake3/src/portable.rs +0 -198
  213. package/deps/blake3/src/rust_avx2.rs +0 -474
  214. package/deps/blake3/src/rust_sse2.rs +0 -775
  215. package/deps/blake3/src/rust_sse41.rs +0 -766
  216. package/deps/blake3/src/test.rs +0 -1049
  217. package/deps/blake3/src/traits.rs +0 -227
  218. package/deps/blake3/src/wasm32_simd.rs +0 -794
  219. package/deps/blake3/test_vectors/Cargo.toml +0 -19
  220. package/deps/blake3/test_vectors/cross_test.sh +0 -25
  221. package/deps/blake3/test_vectors/src/bin/generate.rs +0 -4
  222. package/deps/blake3/test_vectors/src/lib.rs +0 -350
  223. package/deps/blake3/test_vectors/test_vectors.json +0 -217
  224. package/deps/blake3/tools/compiler_version/Cargo.toml +0 -7
  225. package/deps/blake3/tools/compiler_version/build.rs +0 -6
  226. package/deps/blake3/tools/compiler_version/src/main.rs +0 -27
  227. package/deps/blake3/tools/instruction_set_support/Cargo.toml +0 -6
  228. package/deps/blake3/tools/instruction_set_support/src/main.rs +0 -10
  229. package/deps/blake3/tools/release.md +0 -16
  230. package/deps/ncrypto/.bazelignore +0 -4
  231. package/deps/ncrypto/.bazelrc +0 -1
  232. package/deps/ncrypto/.bazelversion +0 -1
  233. package/deps/ncrypto/.clang-format +0 -111
  234. package/deps/ncrypto/.github/workflows/bazel.yml +0 -58
  235. package/deps/ncrypto/.github/workflows/commitlint.yml +0 -16
  236. package/deps/ncrypto/.github/workflows/linter.yml +0 -38
  237. package/deps/ncrypto/.github/workflows/macos.yml +0 -43
  238. package/deps/ncrypto/.github/workflows/release-please.yml +0 -16
  239. package/deps/ncrypto/.github/workflows/ubuntu.yml +0 -128
  240. package/deps/ncrypto/.github/workflows/visual-studio.yml +0 -49
  241. package/deps/ncrypto/.python-version +0 -1
  242. package/deps/ncrypto/.release-please-manifest.json +0 -3
  243. package/deps/ncrypto/BUILD.bazel +0 -44
  244. package/deps/ncrypto/CHANGELOG.md +0 -37
  245. package/deps/ncrypto/CMakeLists.txt +0 -79
  246. package/deps/ncrypto/MODULE.bazel +0 -16
  247. package/deps/ncrypto/MODULE.bazel.lock +0 -461
  248. package/deps/ncrypto/cmake/CPM.cmake +0 -1225
  249. package/deps/ncrypto/cmake/ncrypto-flags.cmake +0 -17
  250. package/deps/ncrypto/ncrypto.pc.in +0 -10
  251. package/deps/ncrypto/patches/0001-Expose-libdecrepit-so-NodeJS-can-use-it-for-ncrypto.patch +0 -28
  252. package/deps/ncrypto/pyproject.toml +0 -38
  253. package/deps/ncrypto/release-please-config.json +0 -11
  254. package/deps/ncrypto/src/CMakeLists.txt +0 -40
  255. package/deps/ncrypto/tests/BUILD.bazel +0 -11
  256. package/deps/ncrypto/tests/CMakeLists.txt +0 -7
  257. package/deps/ncrypto/tests/basic.cpp +0 -856
  258. package/deps/ncrypto/tools/run-clang-format.sh +0 -42
  259. package/deps/simdutf/.clang-format +0 -4
  260. package/deps/simdutf/.github/ISSUE_TEMPLATE/bug_report.md +0 -62
  261. package/deps/simdutf/.github/ISSUE_TEMPLATE/config.yml +0 -1
  262. package/deps/simdutf/.github/ISSUE_TEMPLATE/feature_request.md +0 -35
  263. package/deps/simdutf/.github/ISSUE_TEMPLATE/standard-issue-template.md +0 -29
  264. package/deps/simdutf/.github/pull_request_template.md +0 -51
  265. package/deps/simdutf/.github/workflows/aarch64.yml +0 -39
  266. package/deps/simdutf/.github/workflows/alpine.yml +0 -27
  267. package/deps/simdutf/.github/workflows/amalgamation_demos.yml +0 -34
  268. package/deps/simdutf/.github/workflows/armv7.yml +0 -32
  269. package/deps/simdutf/.github/workflows/atomic_fuzz.yml +0 -25
  270. package/deps/simdutf/.github/workflows/cifuzz.yml +0 -37
  271. package/deps/simdutf/.github/workflows/clangformat.yml +0 -36
  272. package/deps/simdutf/.github/workflows/debian-latestcxxstandards.yml +0 -40
  273. package/deps/simdutf/.github/workflows/debian.yml +0 -33
  274. package/deps/simdutf/.github/workflows/documentation.yml +0 -36
  275. package/deps/simdutf/.github/workflows/emscripten.yml +0 -19
  276. package/deps/simdutf/.github/workflows/loongarch64-gcc-14.2.yml +0 -39
  277. package/deps/simdutf/.github/workflows/macos-latest.yml +0 -29
  278. package/deps/simdutf/.github/workflows/msys2-clang.yml +0 -48
  279. package/deps/simdutf/.github/workflows/msys2.yml +0 -50
  280. package/deps/simdutf/.github/workflows/ppc64le.yml +0 -29
  281. package/deps/simdutf/.github/workflows/rvv-1024-clang-18.yml +0 -35
  282. package/deps/simdutf/.github/workflows/rvv-128-clang-17.yml +0 -35
  283. package/deps/simdutf/.github/workflows/rvv-256-gcc-14.yml +0 -31
  284. package/deps/simdutf/.github/workflows/s390x.yml +0 -29
  285. package/deps/simdutf/.github/workflows/selective-amalgamation.yml +0 -29
  286. package/deps/simdutf/.github/workflows/typos.yml +0 -19
  287. package/deps/simdutf/.github/workflows/ubuntu22-cxx20.yml +0 -30
  288. package/deps/simdutf/.github/workflows/ubuntu22.yml +0 -32
  289. package/deps/simdutf/.github/workflows/ubuntu22_gcc12.yml +0 -27
  290. package/deps/simdutf/.github/workflows/ubuntu22sani.yml +0 -29
  291. package/deps/simdutf/.github/workflows/ubuntu24-cxxstandards.yml +0 -34
  292. package/deps/simdutf/.github/workflows/ubuntu24-unsignedchar.yml +0 -34
  293. package/deps/simdutf/.github/workflows/ubuntu24.yml +0 -32
  294. package/deps/simdutf/.github/workflows/ubuntu24sani.yml +0 -36
  295. package/deps/simdutf/.github/workflows/ubuntu24sani_clang.yml +0 -29
  296. package/deps/simdutf/.github/workflows/vs17-arm-ci.yml +0 -21
  297. package/deps/simdutf/.github/workflows/vs17-ci-cxx20.yml +0 -41
  298. package/deps/simdutf/.github/workflows/vs17-ci.yml +0 -41
  299. package/deps/simdutf/.github/workflows/vs17-clang-ci.yml +0 -41
  300. package/deps/simdutf/.github/workflows/vs17-cxxstandards.yml +0 -36
  301. package/deps/simdutf/AI_USAGE_POLICY.md +0 -56
  302. package/deps/simdutf/AUTHORS +0 -6
  303. package/deps/simdutf/CMakeLists.txt +0 -231
  304. package/deps/simdutf/CONTRIBUTING.md +0 -214
  305. package/deps/simdutf/CONTRIBUTORS +0 -1
  306. package/deps/simdutf/Doxyfile +0 -2584
  307. package/deps/simdutf/Makefile.crosscompile +0 -54
  308. package/deps/simdutf/README-RVV.md +0 -16
  309. package/deps/simdutf/SECURITY.md +0 -8
  310. package/deps/simdutf/benchmarks/CMakeLists.txt +0 -101
  311. package/deps/simdutf/benchmarks/alignment.cpp +0 -150
  312. package/deps/simdutf/benchmarks/base64/CMakeLists.txt +0 -30
  313. package/deps/simdutf/benchmarks/base64/benchmark_base64.cpp +0 -875
  314. package/deps/simdutf/benchmarks/base64/libbase64_spaces.h +0 -49
  315. package/deps/simdutf/benchmarks/base64/node_base64.h +0 -227
  316. package/deps/simdutf/benchmarks/base64/openssl3_base64.h +0 -334
  317. package/deps/simdutf/benchmarks/benchmark.cpp +0 -65
  318. package/deps/simdutf/benchmarks/benchmark_to_well_formed_utf16.cpp +0 -347
  319. package/deps/simdutf/benchmarks/competition/.clang-format-ignore +0 -5
  320. package/deps/simdutf/benchmarks/competition/CppCon2018/utf_utils.cpp +0 -1276
  321. package/deps/simdutf/benchmarks/competition/CppCon2018/utf_utils.h +0 -595
  322. package/deps/simdutf/benchmarks/competition/README.md +0 -7
  323. package/deps/simdutf/benchmarks/competition/hoehrmann/hoehrmann.h +0 -91
  324. package/deps/simdutf/benchmarks/competition/inoue2008/inoue_utf8_to_utf16.h +0 -444
  325. package/deps/simdutf/benchmarks/competition/inoue2008/inoue_utf8_to_utf16_tables.h +0 -13183
  326. package/deps/simdutf/benchmarks/competition/inoue2008/script.py +0 -73
  327. package/deps/simdutf/benchmarks/competition/llvm/ConvertUTF.cpp +0 -738
  328. package/deps/simdutf/benchmarks/competition/llvm/ConvertUTF.h +0 -293
  329. package/deps/simdutf/benchmarks/competition/u8u16/COPYRIGHT +0 -8
  330. package/deps/simdutf/benchmarks/competition/u8u16/Makefile +0 -44
  331. package/deps/simdutf/benchmarks/competition/u8u16/OSL3.0.txt +0 -169
  332. package/deps/simdutf/benchmarks/competition/u8u16/Profiling/BOM_Profiler.h +0 -148
  333. package/deps/simdutf/benchmarks/competition/u8u16/Profiling/i386_timer.h +0 -45
  334. package/deps/simdutf/benchmarks/competition/u8u16/Profiling/ppc_timer.c +0 -34
  335. package/deps/simdutf/benchmarks/competition/u8u16/README +0 -56
  336. package/deps/simdutf/benchmarks/competition/u8u16/config/config_defs.h +0 -43
  337. package/deps/simdutf/benchmarks/competition/u8u16/config/g4_config.h +0 -27
  338. package/deps/simdutf/benchmarks/competition/u8u16/config/mmx_config.h +0 -16
  339. package/deps/simdutf/benchmarks/competition/u8u16/config/p4_config.h +0 -18
  340. package/deps/simdutf/benchmarks/competition/u8u16/config/p4_ideal_config.h +0 -16
  341. package/deps/simdutf/benchmarks/competition/u8u16/config/spu_config.h +0 -28
  342. package/deps/simdutf/benchmarks/competition/u8u16/config/ssse3_config.h +0 -20
  343. package/deps/simdutf/benchmarks/competition/u8u16/iconv_u8u16.c +0 -2
  344. package/deps/simdutf/benchmarks/competition/u8u16/lib/altivec_simd.h +0 -440
  345. package/deps/simdutf/benchmarks/competition/u8u16/lib/libgen/make_basic_ops.py +0 -121
  346. package/deps/simdutf/benchmarks/competition/u8u16/lib/libgen/make_half_operand_versions.py +0 -158
  347. package/deps/simdutf/benchmarks/competition/u8u16/lib/libgen/make_test.py +0 -270
  348. package/deps/simdutf/benchmarks/competition/u8u16/lib/mmx_simd.h +0 -141
  349. package/deps/simdutf/benchmarks/competition/u8u16/lib/mmx_simd_basic.h +0 -216
  350. package/deps/simdutf/benchmarks/competition/u8u16/lib/mmx_simd_built_in.h +0 -119
  351. package/deps/simdutf/benchmarks/competition/u8u16/lib/mmx_simd_modified.h +0 -2430
  352. package/deps/simdutf/benchmarks/competition/u8u16/lib/outline.txt +0 -39
  353. package/deps/simdutf/benchmarks/competition/u8u16/lib/spu_simd.h +0 -421
  354. package/deps/simdutf/benchmarks/competition/u8u16/lib/sse_simd.h +0 -836
  355. package/deps/simdutf/benchmarks/competition/u8u16/lib/stdint.h +0 -222
  356. package/deps/simdutf/benchmarks/competition/u8u16/libu8u16_BE.c +0 -4
  357. package/deps/simdutf/benchmarks/competition/u8u16/libu8u16_LE.c +0 -5
  358. package/deps/simdutf/benchmarks/competition/u8u16/proto/u8u16.py +0 -390
  359. package/deps/simdutf/benchmarks/competition/u8u16/src/Makefile +0 -18
  360. package/deps/simdutf/benchmarks/competition/u8u16/src/bytelex.h +0 -448
  361. package/deps/simdutf/benchmarks/competition/u8u16/src/charsets/ASCII_EBCDIC.h +0 -284
  362. package/deps/simdutf/benchmarks/competition/u8u16/src/libu8u16.c +0 -1975
  363. package/deps/simdutf/benchmarks/competition/u8u16/src/libu8u16.pdf +0 -0
  364. package/deps/simdutf/benchmarks/competition/u8u16/src/libu8u16.w +0 -2263
  365. package/deps/simdutf/benchmarks/competition/u8u16/src/multiliteral.h +0 -239
  366. package/deps/simdutf/benchmarks/competition/u8u16/src/u8u16.c +0 -232
  367. package/deps/simdutf/benchmarks/competition/u8u16/src/x8x16.c +0 -194
  368. package/deps/simdutf/benchmarks/competition/u8u16/src/xml_error.c +0 -193
  369. package/deps/simdutf/benchmarks/competition/u8u16/src/xml_error.h +0 -167
  370. package/deps/simdutf/benchmarks/competition/u8u16/src/xmldecl.c +0 -288
  371. package/deps/simdutf/benchmarks/competition/u8u16/src/xmldecl.h +0 -117
  372. package/deps/simdutf/benchmarks/competition/u8u16/u8u16_g4.c +0 -2
  373. package/deps/simdutf/benchmarks/competition/u8u16/u8u16_mmx.c +0 -2
  374. package/deps/simdutf/benchmarks/competition/u8u16/u8u16_p4.c +0 -3
  375. package/deps/simdutf/benchmarks/competition/u8u16/u8u16_p4_ideal.c +0 -2
  376. package/deps/simdutf/benchmarks/competition/u8u16/u8u16_spu.c +0 -2
  377. package/deps/simdutf/benchmarks/competition/u8u16/u8u16_ssse3.c +0 -3
  378. package/deps/simdutf/benchmarks/competition/u8u16/x8x16_p4.c +0 -2
  379. package/deps/simdutf/benchmarks/competition/utf8lut/LICENSE +0 -23
  380. package/deps/simdutf/benchmarks/competition/utf8lut/data/test_minimal.txt +0 -44
  381. package/deps/simdutf/benchmarks/competition/utf8lut/readme.md +0 -106
  382. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_clang_corr_tests.cmd +0 -11
  383. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_clang_corr_tests.sh +0 -13
  384. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_gcc_corr_tests.sh +0 -13
  385. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_gcc_example.sh +0 -13
  386. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_gcc_file_conv.sh +0 -14
  387. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_gcc_iconv_lib.sh +0 -11
  388. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_gcc_iconv_sample.sh +0 -8
  389. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_mingw_corr_tests.cmd +0 -12
  390. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_mingw_example.cmd +0 -13
  391. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_mingw_file_conv.cmd +0 -14
  392. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_mingw_iconv_lib.cmd +0 -11
  393. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_mingw_iconv_sample.cmd +0 -8
  394. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_msvc_corr_tests.cmd +0 -11
  395. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_msvc_example.cmd +0 -12
  396. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_msvc_file_conv.cmd +0 -13
  397. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_msvc_iconv_lib.cmd +0 -10
  398. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_msvc_iconv_sample.cmd +0 -9
  399. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/html_table.py +0 -25
  400. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/measure.py +0 -94
  401. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/resize.py +0 -20
  402. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/wipe_all.cmd +0 -2
  403. package/deps/simdutf/benchmarks/competition/utf8lut/scripts/wipe_interm.cmd +0 -1
  404. package/deps/simdutf/benchmarks/competition/utf8lut/src/base/CustomMemcpy.h +0 -75
  405. package/deps/simdutf/benchmarks/competition/utf8lut/src/base/PerfDefs.h +0 -47
  406. package/deps/simdutf/benchmarks/competition/utf8lut/src/base/Timing.cpp +0 -17
  407. package/deps/simdutf/benchmarks/competition/utf8lut/src/base/Timing.h +0 -76
  408. package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/AllProcessors.cpp +0 -35
  409. package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/BaseBufferProcessor.cpp +0 -117
  410. package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/BaseBufferProcessor.h +0 -210
  411. package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/BufferDecoder.h +0 -158
  412. package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/BufferEncoder.h +0 -104
  413. package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/ProcessorPlugins.h +0 -334
  414. package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/ProcessorSelector.h +0 -186
  415. package/deps/simdutf/benchmarks/competition/utf8lut/src/core/DecoderLut.cpp +0 -140
  416. package/deps/simdutf/benchmarks/competition/utf8lut/src/core/DecoderLut.h +0 -42
  417. package/deps/simdutf/benchmarks/competition/utf8lut/src/core/DecoderProcess.h +0 -100
  418. package/deps/simdutf/benchmarks/competition/utf8lut/src/core/Dfa.h +0 -57
  419. package/deps/simdutf/benchmarks/competition/utf8lut/src/core/EncoderLut.cpp +0 -85
  420. package/deps/simdutf/benchmarks/competition/utf8lut/src/core/EncoderLut.h +0 -27
  421. package/deps/simdutf/benchmarks/competition/utf8lut/src/core/EncoderProcess.h +0 -126
  422. package/deps/simdutf/benchmarks/competition/utf8lut/src/core/ProcessTrivial.h +0 -108
  423. package/deps/simdutf/benchmarks/competition/utf8lut/src/iconv/iconv.cpp +0 -139
  424. package/deps/simdutf/benchmarks/competition/utf8lut/src/iconv/iconv.h +0 -74
  425. package/deps/simdutf/benchmarks/competition/utf8lut/src/message/MessageConverter.cpp +0 -65
  426. package/deps/simdutf/benchmarks/competition/utf8lut/src/message/MessageConverter.h +0 -91
  427. package/deps/simdutf/benchmarks/competition/utf8lut/src/tests/CorrectnessTests.cpp +0 -772
  428. package/deps/simdutf/benchmarks/competition/utf8lut/src/tests/Example.cpp +0 -12
  429. package/deps/simdutf/benchmarks/competition/utf8lut/src/tests/FileConverter.cpp +0 -486
  430. package/deps/simdutf/benchmarks/competition/utf8lut/src/tests/iconv_sample.c +0 -162
  431. package/deps/simdutf/benchmarks/competition/utf8lut/src/utf8lut.h +0 -15
  432. package/deps/simdutf/benchmarks/competition/utf8sse4/fromutf8-sse.cpp +0 -292
  433. package/deps/simdutf/benchmarks/competition/utfcpp/LICENSE +0 -23
  434. package/deps/simdutf/benchmarks/competition/utfcpp/README.md +0 -1503
  435. package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8/checked.h +0 -335
  436. package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8/core.h +0 -338
  437. package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8/cpp11.h +0 -103
  438. package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8/cpp17.h +0 -103
  439. package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8/unchecked.h +0 -274
  440. package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8.h +0 -34
  441. package/deps/simdutf/benchmarks/dataset/README.md +0 -155
  442. package/deps/simdutf/benchmarks/dataset/emoji.txt +0 -204
  443. package/deps/simdutf/benchmarks/dataset/scripts/utf8type.py +0 -40
  444. package/deps/simdutf/benchmarks/dataset/wikipedia_mars/Makefile +0 -80
  445. package/deps/simdutf/benchmarks/dataset/wikipedia_mars/convert_to_utf6.py +0 -20
  446. package/deps/simdutf/benchmarks/find/CMakeLists.txt +0 -6
  447. package/deps/simdutf/benchmarks/find/findbenchmark.cpp +0 -63
  448. package/deps/simdutf/benchmarks/find/findbenchmarker.h +0 -46
  449. package/deps/simdutf/benchmarks/shortbench.cpp +0 -555
  450. package/deps/simdutf/benchmarks/src/CMakeLists.txt +0 -52
  451. package/deps/simdutf/benchmarks/src/apple_arm_events.h +0 -1104
  452. package/deps/simdutf/benchmarks/src/benchmark.cpp +0 -3899
  453. package/deps/simdutf/benchmarks/src/benchmark.h +0 -317
  454. package/deps/simdutf/benchmarks/src/benchmark_base.cpp +0 -144
  455. package/deps/simdutf/benchmarks/src/benchmark_base.h +0 -98
  456. package/deps/simdutf/benchmarks/src/cmdline.cpp +0 -176
  457. package/deps/simdutf/benchmarks/src/cmdline.h +0 -35
  458. package/deps/simdutf/benchmarks/src/event_counter.h +0 -162
  459. package/deps/simdutf/benchmarks/src/linux-perf-events.h +0 -104
  460. package/deps/simdutf/benchmarks/stream.cpp +0 -209
  461. package/deps/simdutf/benchmarks/threaded.cpp +0 -123
  462. package/deps/simdutf/cmake/CPM.cmake +0 -1363
  463. package/deps/simdutf/cmake/JoinPaths.cmake +0 -23
  464. package/deps/simdutf/cmake/add_cpp_test.cmake +0 -68
  465. package/deps/simdutf/cmake/simdutf-config.cmake.in +0 -2
  466. package/deps/simdutf/cmake/simdutf-flags.cmake +0 -26
  467. package/deps/simdutf/cmake/toolchains-ci/riscv64-linux-gnu.cmake +0 -4
  468. package/deps/simdutf/cmake/toolchains-dev/README.md +0 -32
  469. package/deps/simdutf/cmake/toolchains-dev/aarch64.cmake +0 -14
  470. package/deps/simdutf/cmake/toolchains-dev/loongarch64.cmake +0 -22
  471. package/deps/simdutf/cmake/toolchains-dev/powerpc64.cmake +0 -16
  472. package/deps/simdutf/cmake/toolchains-dev/powerpc64le.cmake +0 -16
  473. package/deps/simdutf/cmake/toolchains-dev/riscv64.cmake +0 -16
  474. package/deps/simdutf/cmake/toolchains-dev/rvv-spike.cmake +0 -38
  475. package/deps/simdutf/doc/avx512.png +0 -0
  476. package/deps/simdutf/doc/logo.png +0 -0
  477. package/deps/simdutf/doc/logo.svg +0 -165
  478. package/deps/simdutf/doc/node2023.png +0 -0
  479. package/deps/simdutf/doc/shortinput.md +0 -78
  480. package/deps/simdutf/doc/utf16utf8.png +0 -0
  481. package/deps/simdutf/doc/utf8utf16.png +0 -0
  482. package/deps/simdutf/doc/widelogo.png +0 -0
  483. package/deps/simdutf/doxygen.py +0 -50
  484. package/deps/simdutf/fuzz/.clang-format +0 -9
  485. package/deps/simdutf/fuzz/CMakeLists.txt +0 -45
  486. package/deps/simdutf/fuzz/README.md +0 -168
  487. package/deps/simdutf/fuzz/atomic_base64.cpp +0 -448
  488. package/deps/simdutf/fuzz/base64.cpp +0 -278
  489. package/deps/simdutf/fuzz/build.sh +0 -83
  490. package/deps/simdutf/fuzz/conversion.cpp +0 -669
  491. package/deps/simdutf/fuzz/helpers/.clang-format-ignore +0 -1
  492. package/deps/simdutf/fuzz/helpers/common.h +0 -135
  493. package/deps/simdutf/fuzz/helpers/nameof.hpp +0 -1258
  494. package/deps/simdutf/fuzz/main.cpp +0 -72
  495. package/deps/simdutf/fuzz/minimize_and_cleanse.sh +0 -87
  496. package/deps/simdutf/fuzz/misc.cpp +0 -216
  497. package/deps/simdutf/fuzz/random_fuzz.sh +0 -154
  498. package/deps/simdutf/fuzz/roundtrip.cpp +0 -588
  499. package/deps/simdutf/fuzz/safe_conversion.cpp +0 -104
  500. package/deps/simdutf/riscv/Dockerfile +0 -16
  501. package/deps/simdutf/riscv/README.md +0 -24
  502. package/deps/simdutf/riscv/remove-docker-station +0 -8
  503. package/deps/simdutf/riscv/run-docker-station +0 -31
  504. package/deps/simdutf/scripts/.flake8 +0 -2
  505. package/deps/simdutf/scripts/Makefile +0 -2
  506. package/deps/simdutf/scripts/README_ADD_FUNCTION.md +0 -49
  507. package/deps/simdutf/scripts/add_function.py +0 -330
  508. package/deps/simdutf/scripts/amalgamation_tests.py +0 -156
  509. package/deps/simdutf/scripts/base64/Makefile +0 -2
  510. package/deps/simdutf/scripts/base64/README.md +0 -2
  511. package/deps/simdutf/scripts/base64/avx512.py +0 -76
  512. package/deps/simdutf/scripts/base64/neon_decode.py +0 -143
  513. package/deps/simdutf/scripts/base64/neon_generate_lut.py +0 -101
  514. package/deps/simdutf/scripts/base64/sse.py +0 -252
  515. package/deps/simdutf/scripts/base64/sseregular.py +0 -160
  516. package/deps/simdutf/scripts/base64/sseurl.py +0 -283
  517. package/deps/simdutf/scripts/base64/table.py +0 -59
  518. package/deps/simdutf/scripts/base64bench_print.py +0 -145
  519. package/deps/simdutf/scripts/benchmark-all.py +0 -119
  520. package/deps/simdutf/scripts/benchmark_print.py +0 -324
  521. package/deps/simdutf/scripts/check_feature_macros.py +0 -156
  522. package/deps/simdutf/scripts/check_typos.sh +0 -13
  523. package/deps/simdutf/scripts/clang_format.sh +0 -35
  524. package/deps/simdutf/scripts/clang_format_docker.sh +0 -38
  525. package/deps/simdutf/scripts/common.py +0 -24
  526. package/deps/simdutf/scripts/compilation_benchmark.py +0 -55
  527. package/deps/simdutf/scripts/compile_many_variations.sh +0 -64
  528. package/deps/simdutf/scripts/create_latex_table.py +0 -62
  529. package/deps/simdutf/scripts/docker/Dockerfile +0 -14
  530. package/deps/simdutf/scripts/docker/Makefile +0 -9
  531. package/deps/simdutf/scripts/docker/README.md +0 -30
  532. package/deps/simdutf/scripts/docker/llvm.gpg +0 -0
  533. package/deps/simdutf/scripts/ppc64_convert_utf16_to_utf8.py +0 -155
  534. package/deps/simdutf/scripts/prepare_doxygen.sh +0 -21
  535. package/deps/simdutf/scripts/release.py +0 -197
  536. package/deps/simdutf/scripts/shortinputplots.py +0 -97
  537. package/deps/simdutf/scripts/sse_convert_utf16_to_utf8.py +0 -422
  538. package/deps/simdutf/scripts/sse_convert_utf32_to_utf16.py +0 -105
  539. package/deps/simdutf/scripts/sse_utf8_utf16_decode.py +0 -186
  540. package/deps/simdutf/scripts/sse_validate_utf16le_proof.py +0 -137
  541. package/deps/simdutf/scripts/sse_validate_utf16le_testcases.py +0 -129
  542. package/deps/simdutf/scripts/table.py +0 -207
  543. package/deps/simdutf/scripts/tests/new.txt +0 -33
  544. package/deps/simdutf/scripts/tests/old.txt +0 -33
  545. package/deps/simdutf/scripts/tests/results.txt +0 -272
  546. package/deps/simdutf/simdutf.pc.in +0 -11
  547. package/deps/simdutf/singleheader/.flake8 +0 -2
  548. package/deps/simdutf/singleheader/CMakeLists.txt +0 -64
  549. package/deps/simdutf/singleheader/README-dev.md +0 -81
  550. package/deps/simdutf/singleheader/README.md +0 -19
  551. package/deps/simdutf/singleheader/amalgamate.py +0 -513
  552. package/deps/simdutf/singleheader/amalgamation_demo.c +0 -59
  553. package/deps/simdutf/singleheader/amalgamation_demo.cpp +0 -54
  554. package/deps/simdutf/singleheader/test-features.py +0 -262
  555. package/deps/simdutf/src/CMakeLists.txt +0 -78
  556. package/deps/simdutf/tests/CMakeLists.txt +0 -483
  557. package/deps/simdutf/tests/atomic_base64_tests.cpp +0 -2845
  558. package/deps/simdutf/tests/base64_tests.cpp +0 -3617
  559. package/deps/simdutf/tests/basic_fuzzer.cpp +0 -805
  560. package/deps/simdutf/tests/bele_tests.cpp +0 -182
  561. package/deps/simdutf/tests/constexpr_base64_tests.cpp +0 -387
  562. package/deps/simdutf/tests/convert_latin1_to_utf16be_tests.cpp +0 -52
  563. package/deps/simdutf/tests/convert_latin1_to_utf16le_tests.cpp +0 -80
  564. package/deps/simdutf/tests/convert_latin1_to_utf32_tests.cpp +0 -66
  565. package/deps/simdutf/tests/convert_latin1_to_utf8_tests.cpp +0 -120
  566. package/deps/simdutf/tests/convert_utf16_to_utf8_safe_tests.cpp +0 -203
  567. package/deps/simdutf/tests/convert_utf16_to_utf8_with_replacement_tests.cpp +0 -276
  568. package/deps/simdutf/tests/convert_utf16be_to_latin1_tests.cpp +0 -109
  569. package/deps/simdutf/tests/convert_utf16be_to_latin1_tests_with_errors.cpp +0 -136
  570. package/deps/simdutf/tests/convert_utf16be_to_utf32_tests.cpp +0 -193
  571. package/deps/simdutf/tests/convert_utf16be_to_utf32_with_errors_tests.cpp +0 -381
  572. package/deps/simdutf/tests/convert_utf16be_to_utf8_tests.cpp +0 -259
  573. package/deps/simdutf/tests/convert_utf16be_to_utf8_with_errors_tests.cpp +0 -266
  574. package/deps/simdutf/tests/convert_utf16le_to_latin1_tests.cpp +0 -148
  575. package/deps/simdutf/tests/convert_utf16le_to_latin1_tests_with_errors.cpp +0 -176
  576. package/deps/simdutf/tests/convert_utf16le_to_utf32_tests.cpp +0 -213
  577. package/deps/simdutf/tests/convert_utf16le_to_utf32_with_errors_tests.cpp +0 -318
  578. package/deps/simdutf/tests/convert_utf16le_to_utf8_tests.cpp +0 -343
  579. package/deps/simdutf/tests/convert_utf16le_to_utf8_with_errors_tests.cpp +0 -271
  580. package/deps/simdutf/tests/convert_utf32_to_latin1_tests.cpp +0 -111
  581. package/deps/simdutf/tests/convert_utf32_to_latin1_with_errors_tests.cpp +0 -96
  582. package/deps/simdutf/tests/convert_utf32_to_utf16be_tests.cpp +0 -148
  583. package/deps/simdutf/tests/convert_utf32_to_utf16be_with_errors_tests.cpp +0 -192
  584. package/deps/simdutf/tests/convert_utf32_to_utf16le_tests.cpp +0 -166
  585. package/deps/simdutf/tests/convert_utf32_to_utf16le_with_errors_tests.cpp +0 -215
  586. package/deps/simdutf/tests/convert_utf32_to_utf8_tests.cpp +0 -181
  587. package/deps/simdutf/tests/convert_utf32_to_utf8_with_errors_tests.cpp +0 -261
  588. package/deps/simdutf/tests/convert_utf8_to_latin1_tests.cpp +0 -516
  589. package/deps/simdutf/tests/convert_utf8_to_latin1_with_errors_tests.cpp +0 -579
  590. package/deps/simdutf/tests/convert_utf8_to_utf16be_tests.cpp +0 -412
  591. package/deps/simdutf/tests/convert_utf8_to_utf16be_with_errors_tests.cpp +0 -480
  592. package/deps/simdutf/tests/convert_utf8_to_utf16le_tests.cpp +0 -671
  593. package/deps/simdutf/tests/convert_utf8_to_utf16le_with_errors_tests.cpp +0 -455
  594. package/deps/simdutf/tests/convert_utf8_to_utf32_tests.cpp +0 -1204
  595. package/deps/simdutf/tests/convert_utf8_to_utf32_with_errors_tests.cpp +0 -337
  596. package/deps/simdutf/tests/convert_valid_utf16be_to_latin1_tests.cpp +0 -37
  597. package/deps/simdutf/tests/convert_valid_utf16be_to_utf32_tests.cpp +0 -97
  598. package/deps/simdutf/tests/convert_valid_utf16be_to_utf8_tests.cpp +0 -126
  599. package/deps/simdutf/tests/convert_valid_utf16le_to_latin1_tests.cpp +0 -71
  600. package/deps/simdutf/tests/convert_valid_utf16le_to_utf32_tests.cpp +0 -122
  601. package/deps/simdutf/tests/convert_valid_utf16le_to_utf8_tests.cpp +0 -244
  602. package/deps/simdutf/tests/convert_valid_utf32_to_latin1_tests.cpp +0 -49
  603. package/deps/simdutf/tests/convert_valid_utf32_to_utf16be_tests.cpp +0 -92
  604. package/deps/simdutf/tests/convert_valid_utf32_to_utf16le_tests.cpp +0 -114
  605. package/deps/simdutf/tests/convert_valid_utf32_to_utf8_tests.cpp +0 -109
  606. package/deps/simdutf/tests/convert_valid_utf8_to_latin1_tests.cpp +0 -84
  607. package/deps/simdutf/tests/convert_valid_utf8_to_utf16be_tests.cpp +0 -124
  608. package/deps/simdutf/tests/convert_valid_utf8_to_utf16le_tests.cpp +0 -221
  609. package/deps/simdutf/tests/convert_valid_utf8_to_utf32_tests.cpp +0 -155
  610. package/deps/simdutf/tests/count_utf16be.cpp +0 -64
  611. package/deps/simdutf/tests/count_utf16le.cpp +0 -61
  612. package/deps/simdutf/tests/count_utf8.cpp +0 -87
  613. package/deps/simdutf/tests/detect_encodings_tests.cpp +0 -312
  614. package/deps/simdutf/tests/embed/valid_utf8.txt +0 -1
  615. package/deps/simdutf/tests/embed_tests.cpp +0 -22
  616. package/deps/simdutf/tests/find_tests.cpp +0 -77
  617. package/deps/simdutf/tests/fixed_string_tests.cpp +0 -153
  618. package/deps/simdutf/tests/helpers/CMakeLists.txt +0 -25
  619. package/deps/simdutf/tests/helpers/compiletime_conversions.h +0 -222
  620. package/deps/simdutf/tests/helpers/fixed_string.h +0 -267
  621. package/deps/simdutf/tests/helpers/random_int.cpp +0 -30
  622. package/deps/simdutf/tests/helpers/random_int.h +0 -39
  623. package/deps/simdutf/tests/helpers/random_utf16.cpp +0 -123
  624. package/deps/simdutf/tests/helpers/random_utf16.h +0 -52
  625. package/deps/simdutf/tests/helpers/random_utf32.cpp +0 -41
  626. package/deps/simdutf/tests/helpers/random_utf32.h +0 -40
  627. package/deps/simdutf/tests/helpers/random_utf8.cpp +0 -93
  628. package/deps/simdutf/tests/helpers/random_utf8.h +0 -36
  629. package/deps/simdutf/tests/helpers/test.cpp +0 -231
  630. package/deps/simdutf/tests/helpers/test.h +0 -193
  631. package/deps/simdutf/tests/helpers/transcode_test_base.cpp +0 -1257
  632. package/deps/simdutf/tests/helpers/transcode_test_base.h +0 -683
  633. package/deps/simdutf/tests/helpers/utf16.h +0 -27
  634. package/deps/simdutf/tests/installation_tests/find/CMakeLists.txt +0 -43
  635. package/deps/simdutf/tests/installation_tests/from_fetch/CMakeLists.txt +0 -47
  636. package/deps/simdutf/tests/internal_tests.cpp +0 -27
  637. package/deps/simdutf/tests/null_safety_tests.cpp +0 -94
  638. package/deps/simdutf/tests/random_fuzzer.cpp +0 -779
  639. package/deps/simdutf/tests/readme_tests.cpp +0 -274
  640. package/deps/simdutf/tests/reference/CMakeLists.txt +0 -23
  641. package/deps/simdutf/tests/reference/decode_utf16.h +0 -81
  642. package/deps/simdutf/tests/reference/decode_utf32.h +0 -47
  643. package/deps/simdutf/tests/reference/encode_latin1.cpp +0 -1
  644. package/deps/simdutf/tests/reference/encode_latin1.h +0 -32
  645. package/deps/simdutf/tests/reference/encode_utf16.cpp +0 -49
  646. package/deps/simdutf/tests/reference/encode_utf16.h +0 -20
  647. package/deps/simdutf/tests/reference/encode_utf32.cpp +0 -1
  648. package/deps/simdutf/tests/reference/encode_utf32.h +0 -36
  649. package/deps/simdutf/tests/reference/encode_utf8.cpp +0 -1
  650. package/deps/simdutf/tests/reference/encode_utf8.h +0 -40
  651. package/deps/simdutf/tests/reference/validate_utf16.cpp +0 -60
  652. package/deps/simdutf/tests/reference/validate_utf16.h +0 -14
  653. package/deps/simdutf/tests/reference/validate_utf16_to_latin1.cpp +0 -35
  654. package/deps/simdutf/tests/reference/validate_utf16_to_latin1.h +0 -13
  655. package/deps/simdutf/tests/reference/validate_utf32.cpp +0 -27
  656. package/deps/simdutf/tests/reference/validate_utf32.h +0 -12
  657. package/deps/simdutf/tests/reference/validate_utf32_to_latin1.cpp +0 -27
  658. package/deps/simdutf/tests/reference/validate_utf32_to_latin1.h +0 -12
  659. package/deps/simdutf/tests/reference/validate_utf8.cpp +0 -82
  660. package/deps/simdutf/tests/reference/validate_utf8.h +0 -11
  661. package/deps/simdutf/tests/reference/validate_utf8_to_latin1.cpp +0 -43
  662. package/deps/simdutf/tests/reference/validate_utf8_to_latin1.h +0 -12
  663. package/deps/simdutf/tests/select_implementation.cpp +0 -43
  664. package/deps/simdutf/tests/simdutf_c_tests.cpp +0 -244
  665. package/deps/simdutf/tests/span_tests.cpp +0 -401
  666. package/deps/simdutf/tests/special_tests.cpp +0 -559
  667. package/deps/simdutf/tests/straight_c_test.c +0 -187
  668. package/deps/simdutf/tests/text_encoding_tests.cpp +0 -77
  669. package/deps/simdutf/tests/to_well_formed_utf16_tests.cpp +0 -377
  670. package/deps/simdutf/tests/utf8_length_from_utf16_tests.cpp +0 -202
  671. package/deps/simdutf/tests/validate_ascii_basic_tests.cpp +0 -165
  672. package/deps/simdutf/tests/validate_ascii_with_errors_tests.cpp +0 -77
  673. package/deps/simdutf/tests/validate_utf16be_basic_tests.cpp +0 -175
  674. package/deps/simdutf/tests/validate_utf16be_with_errors_tests.cpp +0 -188
  675. package/deps/simdutf/tests/validate_utf16le_basic_tests.cpp +0 -268
  676. package/deps/simdutf/tests/validate_utf16le_with_errors_tests.cpp +0 -274
  677. package/deps/simdutf/tests/validate_utf32_basic_tests.cpp +0 -92
  678. package/deps/simdutf/tests/validate_utf32_with_errors_tests.cpp +0 -114
  679. package/deps/simdutf/tests/validate_utf8_basic_tests.cpp +0 -178
  680. package/deps/simdutf/tests/validate_utf8_brute_force_tests.cpp +0 -88
  681. package/deps/simdutf/tests/validate_utf8_puzzler_tests.cpp +0 -33
  682. package/deps/simdutf/tests/validate_utf8_with_errors_tests.cpp +0 -228
  683. package/deps/simdutf/tools/CMakeLists.txt +0 -85
  684. package/deps/simdutf/tools/fastbase64.cpp +0 -250
  685. package/deps/simdutf/tools/sutf.cpp +0 -556
  686. package/deps/simdutf/tools/sutf.h +0 -40
  687. package/lib/tsconfig.tsbuildinfo +0 -1
@@ -1,334 +0,0 @@
1
- #pragma once
2
-
3
- #include "../buffer/BaseBufferProcessor.h"
4
-
5
- // Base class for all plugins (they can be attached to BaseBufferProcessor).
6
- class BasePlugin {
7
- public:
8
- virtual ~BasePlugin() {}
9
- //callback called before conversion inside 'Process' method
10
- virtual void Pre() {}
11
- //callback called after conversion inside 'Process' method
12
- virtual void Post() {}
13
- };
14
-
15
- //plugins intended to simplify setting input data
16
- class InputPlugin : public BasePlugin {};
17
- //plugins intended to simplify setting output data
18
- class OutputPlugin : public BasePlugin {};
19
- //Note that you can independently choose one input plugin and one output plugin
20
-
21
-
22
-
23
- // A plugin which helps to convert a given contiguous byte array in memory.
24
- // It maintains a pointer to the beginning of yet unconverted data.
25
- // Before each 'Process' call, it installs a chunk (starting at the pointer) as input buffer.
26
- // So, contiguous calls to 'Process' would result in chunk-by-chunk conversion of the byte array.
27
- //
28
- // (chunk)
29
- // +----------|------|------------+
30
- // |..........|%%%%%%|%%%%%%%%%%%%| (before)
31
- // +----------|------|------------+ ||
32
- // >-->-->| || one 'Process' call
33
- // +-----------------|------------+ \/
34
- // |.................|%%%%%%%%%%%%| (after)
35
- // +-----------------|------------+
36
- //
37
- class ContiguousInput : public InputPlugin {
38
- BaseBufferProcessor *processor;
39
- const char *srcBuffer;
40
- long long srcSize;
41
- long long srcDone;
42
- int chunkSize;
43
- bool finished;
44
-
45
- public:
46
- //takes pointer and size of contiguous input buffer to be converted
47
- ContiguousInput(BaseBufferProcessor &owner, const char *buffer, long long size) : processor(&owner) {
48
- srcBuffer = buffer;
49
- srcSize = size;
50
- srcDone = 0;
51
- chunkSize = processor->GetInputBufferRecommendedSize();
52
- finished = (srcSize == 0);
53
- processor->AddPlugin(*this);
54
- }
55
- virtual void Pre() {
56
- assert(!finished);
57
- int bytes = GetNextChunkSize();
58
- processor->SetInputBuffer(srcBuffer + srcDone, bytes);
59
- finished = (srcDone + bytes == srcSize);
60
- processor->SetHint(finished);
61
- }
62
- virtual void Post() {
63
- srcDone += processor->GetInputDoneSize();
64
- }
65
- //returns size of already processed prefix (i.e. converted successfully)
66
- long long GetProcessedInputSize() const {
67
- return srcDone;
68
- }
69
- //returns size of the remaining suffix (i.e. not converted yet)
70
- long long GetRemainingDataSize() const {
71
- return srcSize - srcDone;
72
- }
73
- //returns the size of the whole input buffer (as given by user)
74
- long long GetBufferSize() const {
75
- return srcSize;
76
- }
77
- //returns the size of the chunk which would be processed during the next 'Process' call.
78
- int GetNextChunkSize() const {
79
- long long bytes = srcSize - srcDone;
80
- if (bytes > chunkSize)
81
- bytes = chunkSize;
82
- return int(bytes);
83
- }
84
- //returns true iff the conversion is finished
85
- //note that some bytes may still remain unprocessed (i.e. incomplete code point)
86
- bool Finished() const {
87
- return finished;
88
- }
89
- };
90
-
91
-
92
- // A plugin which helps to interactively put input data into internal buffer.
93
- // It owns a dynamically allocated buffer where the user puts his input data.
94
- // During each 'Process' call, all the contents of the buffer are processed.
95
- // Unconverted data (i.e. incomplete code point) at the end of the buffer is
96
- // automatically moved to the beginning of the buffer.
97
- //
98
- // +-|-----------------------+
99
- // |a|.......................| (before)
100
- // +-|-----------------------+ ||
101
- // (new data added) || user adds new data "b-r"
102
- // +------------------|------+ ||
103
- // |abcdefghijklmnopqr|......| ---++
104
- // +------------------|------+ ||
105
- // >-->-->-->-->-->| || 'Process' call
106
- // +---------------|--|------+ ||
107
- // |...............|qr|......| ---++
108
- // +---------------|--|------+ ||
109
- // || unprocessed data "qr" moved
110
- // +--|----------------------+ \/
111
- // |qr|......................| (after)
112
- // +--|----------------------+
113
- //
114
- // The following sample shows how to append new input data into buffer (from file f):
115
- // input.GetBuffer(ptr, size);
116
- // int added = fread(ptr, 1, size, f);
117
- // input.ConfirmInputBytes(added);
118
- //
119
- class InteractiveInput : public InputPlugin {
120
- BaseBufferProcessor *processor;
121
- char *inputBuffer;
122
- int inputSize;
123
- int inputSet;
124
- bool lastBlock;
125
- long long totalSizeDone;
126
-
127
- public:
128
- InteractiveInput(BaseBufferProcessor &owner) : processor(&owner) {
129
- inputSize = processor->GetInputBufferRecommendedSize();
130
- inputBuffer = new char[inputSize];
131
- inputSet = 0;
132
- totalSizeDone = 0;
133
- processor->AddPlugin(*this);
134
- }
135
- ~InteractiveInput() {
136
- delete[] inputBuffer;
137
- }
138
- //returns pointer and size of a subbuffer where new data must be placed
139
- //you can write to there K bytes of new input data (for any K <= "size")
140
- //then you must call ConfirmInputBytes with "bytes" = K
141
- void GetBuffer(char *&buffer, int &size) const {
142
- buffer = inputBuffer + inputSet;
143
- size = inputSize - inputSet;
144
- }
145
- //informs that exactly "bytes" bytes of input were appended to the buffer
146
- //argument "isLastBlock" would be passed to method SetHint of processor (see docs there)
147
- void ConfirmInputBytes(int bytes, bool isLastBlock = true) {
148
- inputSet += bytes;
149
- lastBlock = isLastBlock;
150
- }
151
- virtual void Pre() {
152
- processor->SetInputBuffer(inputBuffer, inputSet);
153
- processor->SetHint(lastBlock);
154
- }
155
- virtual void Post() {
156
- int inputDone = processor->GetInputDoneSize();
157
- int remains = inputSet - inputDone;
158
- if (remains > 0)
159
- memmove(inputBuffer, inputBuffer + inputDone, remains);
160
- inputSet = remains;
161
- totalSizeDone += inputDone;
162
- }
163
- //returns how many bytes are currently within the buffer (and are still unprocessed)
164
- int GetRemainingDataSize() const {
165
- return inputSet;
166
- }
167
- //returns how many bytes were processed in total during the whole life of the plugin
168
- long long GetProcessedInputSize() const {
169
- return totalSizeDone;
170
- }
171
- };
172
-
173
-
174
- // A plugin which helps to save result of conversion into a given contiguous byte array in memory.
175
- // It maintains a pointer to the end of the already saved output data.
176
- // Before each 'Process' call, it installs the remaining part of the byte array as output buffer.
177
- // So, contiguous calls to 'Process' would result in saving output in the array chunk-by-chunk.
178
- //
179
- // (chunk)
180
- // +----------|------|------------+
181
- // |##########|......|............| (before)
182
- // +----------|------|------------+ ||
183
- // >-->-->| || one 'Process' call
184
- // +-----------------|------------+ \/
185
- // |#################|............| (after)
186
- // +-----------------|------------+
187
- //
188
- // If multi-stream processor is used, then conversion results are first saved into internal buffers,
189
- // and then automatically copied into the user's byte array.
190
- // Note that this means minor performance loss due to additional memcpy of the output data.
191
- // You do not need to do anything special to handle this case, no difference is visible from the outside.
192
- //
193
- // Note that the static method ContiguousOutput::GetMaxOutputSize can be used without plugin
194
- // in order to see which size of output buffer is needed to surely accomodate result of conversion.
195
- //
196
- class ContiguousOutput : public OutputPlugin {
197
- BaseBufferProcessor *processor;
198
- char *dstBuffer;
199
- long long dstSize;
200
- long long dstDone;
201
- int maxSize;
202
-
203
- int streamsCnt, streamOutputSize;
204
- char *multiBuffer[BaseBufferProcessor::MaxStreamsCount];
205
-
206
- public:
207
- //returns minimal size of contiguous output buffer, such that for any input data of size "inputSize":
208
- // 1. output buffer would be large enough to hold converted result
209
- // 2. during conversion, there would always be enough empty space remaining in the buffer
210
- // (i.e. lower limit returned by GetOutputBufferMinSize() is not violated)
211
- static long long GetMaxOutputSize(const BaseBufferProcessor &processor, long long inputSize) {
212
- return processor.GetStreamsCount() * processor.GetOutputBufferMinSize(inputSize);
213
- }
214
- //takes pointer and size of contiguous output buffer where the result of conversion must be saved
215
- ContiguousOutput(BaseBufferProcessor &owner, char *buffer, long long size) : processor(&owner) {
216
- dstBuffer = buffer;
217
- dstSize = size;
218
- dstDone = 0;
219
- streamsCnt = processor->GetStreamsCount();
220
- streamOutputSize = 0;
221
- maxSize = processor->GetBufferMaxSize();
222
- if (streamsCnt > 1) {
223
- streamOutputSize = (int)processor->GetOutputBufferMinSize(processor->GetInputBufferRecommendedSize());
224
- for (int i = 0; i < streamsCnt; i++)
225
- multiBuffer[i] = new char[streamOutputSize];
226
- }
227
- processor->AddPlugin(*this);
228
- }
229
- ~ContiguousOutput() {
230
- if (streamsCnt > 1)
231
- for (int i = 0; i < streamsCnt; i++)
232
- delete[] multiBuffer[i];
233
- }
234
- virtual void Pre() {
235
- if (streamsCnt > 1) {
236
- for (int i = 0; i < streamsCnt; i++)
237
- processor->SetOutputBuffer(multiBuffer[i], streamOutputSize, i);
238
- }
239
- else {
240
- long long remains = dstSize - dstDone;
241
- if (remains > maxSize)
242
- remains = maxSize;
243
- processor->SetOutputBuffer(dstBuffer + dstDone, int(remains));
244
- }
245
- }
246
- virtual void Post() {
247
- if (streamsCnt > 1) {
248
- for (int i = 0; i < streamsCnt; i++) {
249
- int done = processor->GetOutputDoneSize(i);
250
- assert(dstDone + done <= dstSize);
251
- memcpy(dstBuffer + dstDone, multiBuffer[i], done);
252
- dstDone += done;
253
- }
254
- }
255
- else
256
- dstDone += processor->GetOutputDoneSize();
257
- }
258
- //returns how many bytes of output data already saved (in the prefix of the buffer)
259
- long long GetFilledOutputSize() const {
260
- return dstDone;
261
- }
262
- //returns the size of the whole output buffer (as given by user)
263
- long long GetBufferSize() const {
264
- return dstSize;
265
- }
266
- };
267
-
268
-
269
- // A plugin which helps to interactively consume conversion results from internal buffer(s).
270
- // It owns dynamically allocated buffer (or buffers) which receive output data.
271
- // During each 'Process' call, the conversion results are stored into this buffer(s).
272
- // User must read all the contents from this buffer(s) prior to next 'Process' call.
273
- //
274
- // single-stream case multi(4)-stream case
275
- // +-------------------------+ +-----+ +-----+ +-----+ +-----+
276
- // |.........................| (before) |.....| |.....| |.....| |.....|
277
- // +-------------------------+ || +-----+ +-----+ +-----+ +-----+
278
- // >-->-->-->-->-->-->| 'Process'|| call >-->| >--->| >->| >-->|
279
- // +------------------|------+ \/ +---|-+ +----|+ +--|--+ +---|-+
280
- // |##################|......| (after) |###|.| |####|| |##|..| |###|.|
281
- // +------------------|------+ +---|-+ +----|+ +--|--+ +---|-+
282
- // (output data) \ | | /
283
- // (to be ovewritten) (output data, to be ovewritten)
284
- //
285
- // The following sample shows how to receive conversion results from buffers (and dump them to file f):
286
- // for (int k = 0; k < output.GetStreamsCount(); k++) {
287
- // output.GetBuffer(ptr, size, k);
288
- // fwrite(ptr, 1, size, f);
289
- // }
290
- //
291
- class InteractiveOutput : public OutputPlugin {
292
- BaseBufferProcessor *processor;
293
- int streamsCnt, streamOutputSize;
294
- char *multiBuffer[BaseBufferProcessor::MaxStreamsCount];
295
- long long totalSizeDone;
296
-
297
- public:
298
- InteractiveOutput(BaseBufferProcessor &owner) : processor(&owner) {
299
- streamsCnt = processor->GetStreamsCount();
300
- streamOutputSize = (int)processor->GetOutputBufferMinSize(processor->GetInputBufferRecommendedSize());
301
- for (int i = 0; i < streamsCnt; i++)
302
- multiBuffer[i] = new char[streamOutputSize];
303
- totalSizeDone = 0;
304
- processor->AddPlugin(*this);
305
- }
306
- ~InteractiveOutput() {
307
- for (int i = 0; i < streamsCnt; i++)
308
- delete[] multiBuffer[i];
309
- }
310
- virtual void Pre() {
311
- for (int i = 0; i < streamsCnt; i++)
312
- processor->SetOutputBuffer(multiBuffer[i], streamOutputSize, i);
313
- }
314
- virtual void Post() {
315
- for (int i = 0; i < streamsCnt; i++)
316
- totalSizeDone += processor->GetOutputDoneSize(i);
317
- }
318
- //returns the number of output streams = the number of separate output buffers
319
- int GetStreamsCount() const {
320
- return streamsCnt;
321
- }
322
- //returns pointer and size of the output data obtained
323
- //by "index"-th stream during the last 'Process' call
324
- //Note that you have to concatenate outputs of all the streams in their order
325
- //to get the real output of the last 'Process' call.
326
- void GetBuffer(const char *&buffer, int &size, int index = 0) const {
327
- buffer = multiBuffer[index];
328
- size = processor->GetOutputDoneSize(index);
329
- }
330
- //returns total number of bytes written to output buffer(s) during the whole life of the plugin
331
- long long GetFilledOutputSize() const {
332
- return totalSizeDone;
333
- }
334
- };
@@ -1,186 +0,0 @@
1
- #pragma once
2
-
3
- #include "../buffer/BufferDecoder.h"
4
- #include "../buffer/BufferEncoder.h"
5
-
6
- //(metaprogramming helper equivalent to std::conditional)
7
- template<bool Condition, class First, class Second> struct TernaryOperator {};
8
- template<class First, class Second> struct TernaryOperator<true, First, Second> { typedef First Type; };
9
- template<class First, class Second> struct TernaryOperator<false, First, Second> { typedef Second Type; };
10
-
11
- //possible formats of input/output data
12
- enum DataFormat {
13
- dfUtf8, // UTF-8
14
- dfUtf16, // UTF-16LE
15
- dfUtf32, // UTF-32LE
16
- dfUtfCount //(helper)
17
- };
18
-
19
-
20
- //modes of conversion (synchronized with EncoderMode and DecoderMode)
21
- //see full explanations in ProcessorSelector description
22
- enum ConversionMode {
23
- cmFast = 0, // only fast path: converts limited set of code points
24
- cmFull = 1, // fast + slow path: converts any correct input
25
- cmValidate = 2 // any input allowed (includes validation)
26
- };
27
-
28
- // This selector can be used to get type of processor by options, e.g.:
29
- // typedef ProcessorSelector<dfUtf8, dfUtf16>::WithOptions<cmValidate, 2>::Processor MyProcessor;
30
- // BaseBufferProcessor *processor = new MyProcessor();
31
- // ... now you can pass this processor e.g. to functions from MessageConverter.h
32
- //
33
- // For each choice of template arguments, a separately optimized code is generated by the compiler.
34
- // In order to avoid template bloat, you can choose the set of all configurations you might need,
35
- // and write a factory function for them (similar to GenerateProcessor function in AllProcessors.cpp).
36
- //
37
- // The conversion itself is defined by two arguments:
38
- // SrcFormat: defines how the input data is encoded
39
- // DstFormat: defines desired encoding of the output data
40
- // Both of these arguments are chosen from DataFormat enum (must be dfUtf8, dfUtf16, or dfUtf32).
41
- //
42
- // The other arguments specify supported inputs and performance tradeoffs.
43
- // The processor usually contains two code paths: the FAST path and the SLOW path.
44
- // The fast path works only on a limited set of code points, while the slow path can process any data.
45
- // To maintain high overall performance, fast path should be able to process more than 99% of input code points.
46
- //
47
- // Fast path supports a code point if its representation in UTF-8 consists of at most MaxBytes bytes.
48
- // Therefore, fast path supports the following set of characters (depending on MaxBytes argument):
49
- // MaxBytes = 1: U+0000 .. U+007F all ASCII characters
50
- // MaxBytes = 2: U+0000 .. U+07FF ASCII + latin extensions, cyrillic, and much more
51
- // MaxBytes = 3: U+0000 .. U+FFFF the whole Basic Multilingual Plane
52
- // (except surrogate code points U+D800 .. U+DFFF)
53
- //
54
- // The Mode arguments controls what happens when code points unsupported by fast path are met:
55
- // Mode == cmFast:
56
- // Only fast path is included, no slow path at all.
57
- // The input data must be correctly encoded, and all code points must be within supported range of fast path.
58
- // Beware: incorrect encoding or unsupported code point in input results in Undefined Behavior.
59
- // Mode == cmFull:
60
- // Slow path is included to support the whole set of Unicode code points, but NO validation is done in fast path.
61
- // The input data must be correctly encoded, and may contain all valid code points.
62
- // Beware: incorrect encoding of the input results in Undefined Behavior.
63
- // Mode == cmValidate:
64
- // Slow path is included to support all code points, fast path includes full validation of the input.
65
- // The input data may be an arbitrary byte array, the processor should always behave properly.
66
- // In case of encoding error, the processor stops by default (error correction is discussed below).
67
- // NOTE: If the input comes from untrusted source, then using cmFast and cmFull modes is a serious security issue!
68
- // Prefer cmValidate mode in general.
69
- //
70
- // The SpeedMult argument is a small tweak which might improve performance on modern machines.
71
- // SpeedMult = 1:
72
- // Process input sequentally, reading a 16-byte chunk on each iteration.
73
- // SpeedMult = 4:
74
- // from UTF-8: Use 4 interleaved streams of processing, thus emulating Hyper-threading in a single thread.
75
- // to UTF-8: Use 4x loop unrolling in the innermost loop.
76
- // Note that using multi-stream processor is a bit more complicated, e.g. because it has four output buffers instead of one.
77
- // Also, it does not support error correction.
78
- //
79
- // If Mode == cmValidate, then it is possible to enable error correction callback (using SetErrorCallback method).
80
- // This callback is called when it becomes impossible to process the next code point.
81
- // It may adjust input/output data and pointers and ask to continue processing, or confirm that conversion must be stopped.
82
- // Two ready-to-use callbacks are included: skipping code units or replacing them with 0xFFFD replacement code point.
83
- // Note that error correction works even slower than the slow path, and it won't work in cmFast and cmFull modes.
84
- //
85
- // Here is an example of enabling the 'skip-code-unit' error correction:
86
- // typedef ProcessorSelector<dfUtf8, dfUtf16> ConversionDirection;
87
- // typedef ConversionDirection::WithOptions<cmValidate, 2>::Processor MyProcessor;
88
- // BaseBufferProcessor *processor = new MyProcessor();
89
- // int errorsCount = 0; //number of errors maintained here
90
- // processor->SetErrorCallback(&ConversionDirection::OnErrorMissCodeUnits, &errorsCount);
91
- // Alternatively, you can create processor with 'replace-with-0xfffd' error correction like this:
92
- // typedef ProcessorSelector<dfUtf8, dfUtf16>::WithOptions<cmValidate, 2>::Processor MyProcessor;
93
- // int errorsCount = 0;
94
- // BaseBufferProcessor *processor = MyProcessor::Create(&errorsCount);
95
- //
96
- template<int SrcFormat, int DstFormat>
97
- struct ProcessorSelector {
98
- static_assert(SrcFormat >= 0 && SrcFormat < dfUtfCount, "Unsupported format");
99
- static_assert(DstFormat >= 0 && DstFormat < dfUtfCount, "Unsupported format");
100
- static_assert((SrcFormat == dfUtf8) != (DstFormat == dfUtf8), "Supported only conversions: from UTF-8 or to UTF-8");
101
-
102
- template<int Mode = cmValidate, int MaxBytes = 3, int SpeedMult = 1>
103
- struct WithOptions {
104
- // Type of corresponding processor, can be created as "new ...::Processor();"
105
- typedef typename TernaryOperator<SrcFormat == dfUtf8,
106
- BufferDecoder<MaxBytes, (DstFormat == dfUtf32 ? 4 : 2), Mode, SpeedMult>,
107
- BufferEncoder<MaxBytes, (SrcFormat == dfUtf32 ? 4 : 2), Mode, SpeedMult>
108
- >::Type Processor;
109
-
110
- // A helper for creating processor with error correction or without it.
111
- // In any case: a new processor is created and returned.
112
- // If errorCounter is not null, then error correction is additionally enabled:
113
- // OnErrorSetReplacementChars callback is installed, and number of fixed errors is maintained in *errorCounter.
114
- static Processor* Create(int *errorCounter = 0);
115
- };
116
-
117
- // Some ready-to-use callbacks which can be installed for error correction (use BaseBufferProcessor::SetErrorCallback).
118
- // code units are simply skipped until conversion can be continued
119
- static bool OnErrorMissCodeUnits(void *context, const char *&srcBuffer, int srcBytes, char *&dstBuffer, int dstBytes);
120
- // code units are replaced with 0xFFFD code points until conversion can be continued
121
- static bool OnErrorSetReplacementChars(void *context, const char *&srcBuffer, int srcBytes, char *&dstBuffer, int dstBytes);
122
- };
123
-
124
-
125
-
126
- //==============================
127
- // implementation of some stuff
128
- //==============================
129
-
130
- FORCEINLINE int GetUnitSizeOfFormat(int format) { return format == dfUtf8 ? 1 : format == dfUtf16 ? 2 : 4; }
131
-
132
- template<int SrcFormat, int DstFormat>
133
- bool ProcessorSelector<SrcFormat, DstFormat>::OnErrorMissCodeUnits(
134
- void *context, const char *&srcBuffer, int srcBytes, char *&dstBuffer, int dstBytes
135
- ) {
136
- (void)dstBytes; // otherwise it is unused
137
- (void)dstBuffer; // otherwise it is unused
138
- (void)srcBytes; // otherwise it is unused
139
- srcBuffer += GetUnitSizeOfFormat(SrcFormat);
140
- if (context) {
141
- int &counter = *(int*)context;
142
- counter++;
143
- }
144
- return true;
145
- }
146
-
147
- template<int SrcFormat, int DstFormat>
148
- bool ProcessorSelector<SrcFormat, DstFormat>::OnErrorSetReplacementChars(
149
- void *context, const char *&srcBuffer, int srcBytes, char *&dstBuffer, int dstBytes
150
- ) {
151
- (void)srcBytes;
152
- if (DstFormat == dfUtf8) {
153
- if (dstBytes < 3) return false;
154
- *dstBuffer++ = (char)0xEF;
155
- *dstBuffer++ = (char)0xBF;
156
- *dstBuffer++ = (char)0xBD;
157
- }
158
- else if (DstFormat == dfUtf16) {
159
- if (dstBytes < 2) return false;
160
- *dstBuffer++ = (char)0xFD;
161
- *dstBuffer++ = (char)0xFF;
162
- }
163
- else if (DstFormat == dfUtf32) {
164
- if (dstBytes < 4) return false;
165
- *dstBuffer++ = (char)0xFD;
166
- *dstBuffer++ = (char)0xFF;
167
- *dstBuffer++ = (char)0x00;
168
- *dstBuffer++ = (char)0x00;
169
- }
170
- srcBuffer += GetUnitSizeOfFormat(SrcFormat);
171
- if (context) {
172
- int &counter = *(int*)context;
173
- counter++;
174
- }
175
- return true;
176
- }
177
-
178
- template<int SrcFormat, int DstFormat>
179
- template<int Mode, int MaxBytes, int SpeedMult>
180
- typename ProcessorSelector<SrcFormat, DstFormat>::template WithOptions<Mode, MaxBytes, SpeedMult>::Processor *
181
- ProcessorSelector<SrcFormat, DstFormat>::WithOptions<Mode, MaxBytes, SpeedMult>::Create(int *errorCounter) {
182
- Processor *result = new Processor();
183
- if (errorCounter)
184
- result->SetErrorCallback(OnErrorSetReplacementChars, errorCounter);
185
- return result;
186
- }
@@ -1,140 +0,0 @@
1
- #include "../core/DecoderLut.h"
2
- #include <assert.h>
3
- #include <string.h>
4
-
5
- static inline void SetEntry(DecoderLutEntry<false> &entry,
6
- const __m128i &shufAB, const __m128i &shufC, int srcStep, int dstStep,
7
- const __m128i &/*headerMask*/, const __m128i &/*minValues*/
8
- ) {
9
- entry.shufAB = shufAB;
10
- entry.shufC = shufC;
11
- entry.s.srcStep = srcStep;
12
- entry.s.dstStep = dstStep;
13
- }
14
- static inline void SetEntry(DecoderLutEntry<true> &entry,
15
- const __m128i &shufAB, const __m128i &shufC, int srcStep, int dstStep,
16
- const __m128i &headerMask, const __m128i &minValues
17
- ) {
18
- entry.shufAB = shufAB;
19
- entry.shufC = shufC;
20
- entry.s.
21
- srcStep = srcStep;
22
- entry.s.dstStep = dstStep;
23
- entry.headerMask = headerMask;
24
- entry.minValues = minValues;
25
- }
26
-
27
-
28
- template<bool Validate> void DecoderLutTable<Validate>::ComputeAll() {
29
- //fill tables with empty values for BAD masks
30
- DecoderLutEntry<Validate> empty;
31
- SetEntry(empty,
32
- _mm_set1_epi8(-1), //produce zero symbols
33
- _mm_set1_epi8(-1), //produce zero symbols
34
- 16, //skip the whole 16-byte block on error
35
- 0, //do not move output pointer
36
- _mm_set1_epi8(-1), //forbid any bytes except 11111110
37
- _mm_set1_epi16(0x7FFF) //forbid almost all output codes
38
- );
39
- for (int i = 0; i < 32768; i++)
40
- data[i] = empty;
41
- //start recursive search for valid masks
42
- int sizes[32];
43
- ComputeRec(sizes, 0, 0); //10609 entries total
44
- }
45
-
46
- template<bool Validate> void DecoderLutTable<Validate>::ComputeRec(int *sizes, int num, int total) {
47
- if (total >= 16)
48
- return ComputeEntry(sizes, num);
49
- for (int sz = 1; sz <= 3; sz++) {
50
- sizes[num] = sz;
51
- ComputeRec(sizes, num + 1, total + sz);
52
- }
53
- }
54
-
55
- template<bool Validate> void DecoderLutTable<Validate>::ComputeEntry(const int *sizes, int num) {
56
- //find maximal number of chars to decode
57
- int cnt = num - 1;
58
- int preSum = 0;
59
- for (int i = 0; i < cnt; i++)
60
- preSum += sizes[i];
61
- assert(preSum < 16);
62
- //Note: generally, we can process a char only if the next byte is within XMM register
63
- //However, if the last char takes 3 bytes and fits the register tightly, we can take it too
64
- if (preSum == 13 && preSum + sizes[cnt] == 16)
65
- preSum += sizes[cnt++];
66
- //still cannot process more that 8 chars per register
67
- while (cnt > 8)
68
- preSum -= sizes[--cnt];
69
-
70
- //generate bitmask
71
- int mask = 0;
72
- int pos = 0;
73
- for (int i = 0; i < num; i++)
74
- for (int j = 0; j < sizes[i]; j++)
75
- mask |= (j>0) << (pos++);
76
- assert(pos >= 16);
77
- mask &= 0xFFFF;
78
-
79
- //generate shuffle masks
80
- char shufAB[16], shufC[16];
81
- memset(shufAB, -1, sizeof(shufAB));
82
- memset(shufC, -1, sizeof(shufC));
83
- pos = 0;
84
- for (int i = 0; i < cnt; i++) {
85
- int sz = sizes[i];
86
- for (int j = sz-1; j >= 0; j--) {
87
- if (j < 2)
88
- shufAB[2 * i + j] = char(pos++);
89
- else
90
- shufC[i] = char(pos++);
91
- }
92
- }
93
- assert(pos <= 16);
94
-
95
- //generate header masks for validation
96
- char headerMask[16];
97
- memset(headerMask, 0, sizeof(headerMask));
98
- pos = 0;
99
- for (int i = 0; i < cnt; i++) {
100
- int sz = sizes[i];
101
- for (int j = 0; j < sz; j++) {
102
- int bits = 2;
103
- if (j == 0)
104
- bits = (sz == 1 ? 1 : sz == 2 ? 3 : 4);
105
- headerMask[(pos++)%16] = -char(1 << (8 - bits));
106
- }
107
- }
108
- assert(pos <= 16);
109
-
110
- //generate min symbols values for validation
111
- int16_t minValues[8];
112
- for (int i = 0; i < 8; i++) {
113
- int sz = (i < cnt ? sizes[i] : 1);
114
- minValues[i] = 0x8000 + (sz == 1 ? 0 : sz == 2 ? (1<<7) : (1<<11));
115
- }
116
-
117
- //store info into the lookup table
118
- assert(mask % 2 == 0); mask /= 2; //note: odd masks are removed
119
- SetEntry(data[mask],
120
- _mm_loadu_si128((__m128i*)shufAB),
121
- _mm_loadu_si128((__m128i*)shufC),
122
- preSum,
123
- 2 * cnt,
124
- _mm_loadu_si128((__m128i*)headerMask),
125
- _mm_loadu_si128((__m128i*)minValues)
126
- );
127
- }
128
-
129
- template<bool Validate> const DecoderLutTable<Validate> *DecoderLutTable<Validate>::CreateInstance() {
130
- static DecoderLutTable<Validate> *singletonTable = 0;
131
- if (!singletonTable) {
132
- singletonTable = (DecoderLutTable<Validate> *)_mm_malloc(sizeof(DecoderLutTable<Validate>), CACHE_LINE);
133
- singletonTable->ComputeAll();
134
- }
135
- return singletonTable;
136
- }
137
-
138
-
139
- template struct DecoderLutTable<false>;
140
- template struct DecoderLutTable<true>;