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,1276 +0,0 @@
1
- //==================================================================================================
2
- // File: unicode_utils.cpp
3
- //
4
- // Copyright (c) 2018 Bob Steagall and KEWB Computing, All Rights Reserved
5
- //==================================================================================================
6
- //
7
- // modified by D. Lemire for benchmarking in simdutf in April 2021.
8
- #include "utf_utils.h"
9
- #include <cstdio>
10
-
11
- #if defined KEWB_PLATFORM_LINUX
12
- #include <emmintrin.h>
13
- #include <immintrin.h>
14
- #include <xmmintrin.h>
15
- #elif defined KEWB_PLATFORM_WINDOWS
16
- #include <intrin.h>
17
- #endif
18
- SIMDUTF_TARGET_WESTMERE
19
-
20
- namespace uu {
21
- //- Static member data init.
22
- //
23
- UtfUtils::LookupTables const UtfUtils::smTables =
24
- {
25
- //- Initialize the maFirstUnitTable member array. This array implements a lookup table that
26
- // maps the first code unit of a sequence to: 1. a pre-masked value to start the computation
27
- // of the resulting code point; and, 2. the next state in the DFA for this code unit.
28
- //
29
- {
30
- { 0x00, BGN }, //- 0x00
31
- { 0x01, BGN }, //- 0x01
32
- { 0x02, BGN }, //- 0x02
33
- { 0x03, BGN }, //- 0x03
34
- { 0x04, BGN }, //- 0x04
35
- { 0x05, BGN }, //- 0x05
36
- { 0x06, BGN }, //- 0x06
37
- { 0x07, BGN }, //- 0x07
38
- { 0x08, BGN }, //- 0x08
39
- { 0x09, BGN }, //- 0x09
40
- { 0x0A, BGN }, //- 0x0A
41
- { 0x0B, BGN }, //- 0x0B
42
- { 0x0C, BGN }, //- 0x0C
43
- { 0x0D, BGN }, //- 0x0D
44
- { 0x0E, BGN }, //- 0x0E
45
- { 0x0F, BGN }, //- 0x0F
46
-
47
- { 0x10, BGN }, //- 0x10
48
- { 0x11, BGN }, //- 0x11
49
- { 0x12, BGN }, //- 0x12
50
- { 0x13, BGN }, //- 0x13
51
- { 0x14, BGN }, //- 0x14
52
- { 0x15, BGN }, //- 0x15
53
- { 0x16, BGN }, //- 0x16
54
- { 0x17, BGN }, //- 0x17
55
- { 0x18, BGN }, //- 0x18
56
- { 0x19, BGN }, //- 0x19
57
- { 0x1A, BGN }, //- 0x1A
58
- { 0x1B, BGN }, //- 0x1B
59
- { 0x1C, BGN }, //- 0x1C
60
- { 0x1D, BGN }, //- 0x1D
61
- { 0x1E, BGN }, //- 0x1E
62
- { 0x1F, BGN }, //- 0x1F
63
-
64
- { 0x20, BGN }, //- 0x20
65
- { 0x21, BGN }, //- 0x21
66
- { 0x22, BGN }, //- 0x22
67
- { 0x23, BGN }, //- 0x23
68
- { 0x24, BGN }, //- 0x24
69
- { 0x25, BGN }, //- 0x25
70
- { 0x26, BGN }, //- 0x26
71
- { 0x27, BGN }, //- 0x27
72
- { 0x28, BGN }, //- 0x28
73
- { 0x29, BGN }, //- 0x29
74
- { 0x2A, BGN }, //- 0x2A
75
- { 0x2B, BGN }, //- 0x2B
76
- { 0x2C, BGN }, //- 0x2C
77
- { 0x2D, BGN }, //- 0x2D
78
- { 0x2E, BGN }, //- 0x2E
79
- { 0x2F, BGN }, //- 0x2F
80
-
81
- { 0x30, BGN }, //- 0x30
82
- { 0x31, BGN }, //- 0x31
83
- { 0x32, BGN }, //- 0x32
84
- { 0x33, BGN }, //- 0x33
85
- { 0x34, BGN }, //- 0x34
86
- { 0x35, BGN }, //- 0x35
87
- { 0x36, BGN }, //- 0x36
88
- { 0x37, BGN }, //- 0x37
89
- { 0x38, BGN }, //- 0x38
90
- { 0x39, BGN }, //- 0x39
91
- { 0x3A, BGN }, //- 0x3A
92
- { 0x3B, BGN }, //- 0x3B
93
- { 0x3C, BGN }, //- 0x3C
94
- { 0x3D, BGN }, //- 0x3D
95
- { 0x3E, BGN }, //- 0x3E
96
- { 0x3F, BGN }, //- 0x3F
97
-
98
- { 0x40, BGN }, //- 0x40
99
- { 0x41, BGN }, //- 0x41
100
- { 0x42, BGN }, //- 0x42
101
- { 0x43, BGN }, //- 0x43
102
- { 0x44, BGN }, //- 0x44
103
- { 0x45, BGN }, //- 0x45
104
- { 0x46, BGN }, //- 0x46
105
- { 0x47, BGN }, //- 0x47
106
- { 0x48, BGN }, //- 0x48
107
- { 0x49, BGN }, //- 0x49
108
- { 0x4A, BGN }, //- 0x4A
109
- { 0x4B, BGN }, //- 0x4B
110
- { 0x4C, BGN }, //- 0x4C
111
- { 0x4D, BGN }, //- 0x4D
112
- { 0x4E, BGN }, //- 0x4E
113
- { 0x4F, BGN }, //- 0x4F
114
-
115
- { 0x50, BGN }, //- 0x50
116
- { 0x51, BGN }, //- 0x51
117
- { 0x52, BGN }, //- 0x52
118
- { 0x53, BGN }, //- 0x53
119
- { 0x54, BGN }, //- 0x54
120
- { 0x55, BGN }, //- 0x55
121
- { 0x56, BGN }, //- 0x56
122
- { 0x57, BGN }, //- 0x57
123
- { 0x58, BGN }, //- 0x58
124
- { 0x59, BGN }, //- 0x59
125
- { 0x5A, BGN }, //- 0x5A
126
- { 0x5B, BGN }, //- 0x5B
127
- { 0x5C, BGN }, //- 0x5C
128
- { 0x5D, BGN }, //- 0x5D
129
- { 0x5E, BGN }, //- 0x5E
130
- { 0x5F, BGN }, //- 0x5F
131
-
132
- { 0x60, BGN }, //- 0x60
133
- { 0x61, BGN }, //- 0x61
134
- { 0x62, BGN }, //- 0x62
135
- { 0x63, BGN }, //- 0x63
136
- { 0x64, BGN }, //- 0x64
137
- { 0x65, BGN }, //- 0x65
138
- { 0x66, BGN }, //- 0x66
139
- { 0x67, BGN }, //- 0x67
140
- { 0x68, BGN }, //- 0x68
141
- { 0x69, BGN }, //- 0x69
142
- { 0x6A, BGN }, //- 0x6A
143
- { 0x6B, BGN }, //- 0x6B
144
- { 0x6C, BGN }, //- 0x6C
145
- { 0x6D, BGN }, //- 0x6D
146
- { 0x6E, BGN }, //- 0x6E
147
- { 0x6F, BGN }, //- 0x6F
148
-
149
- { 0x70, BGN }, //- 0x70
150
- { 0x71, BGN }, //- 0x71
151
- { 0x72, BGN }, //- 0x72
152
- { 0x73, BGN }, //- 0x73
153
- { 0x74, BGN }, //- 0x74
154
- { 0x75, BGN }, //- 0x75
155
- { 0x76, BGN }, //- 0x76
156
- { 0x77, BGN }, //- 0x77
157
- { 0x78, BGN }, //- 0x78
158
- { 0x79, BGN }, //- 0x79
159
- { 0x7A, BGN }, //- 0x7A
160
- { 0x7B, BGN }, //- 0x7B
161
- { 0x7C, BGN }, //- 0x7C
162
- { 0x7D, BGN }, //- 0x7D
163
- { 0x7E, BGN }, //- 0x7E
164
- { 0x7F, BGN }, //- 0x7F
165
-
166
- { 0x00, ERR }, //- 0x80
167
- { 0x01, ERR }, //- 0x81
168
- { 0x02, ERR }, //- 0x82
169
- { 0x03, ERR }, //- 0x83
170
- { 0x04, ERR }, //- 0x84
171
- { 0x05, ERR }, //- 0x85
172
- { 0x06, ERR }, //- 0x86
173
- { 0x07, ERR }, //- 0x87
174
- { 0x08, ERR }, //- 0x88
175
- { 0x09, ERR }, //- 0x89
176
- { 0x0A, ERR }, //- 0x8A
177
- { 0x0B, ERR }, //- 0x8B
178
- { 0x0C, ERR }, //- 0x8C
179
- { 0x0D, ERR }, //- 0x8D
180
- { 0x0E, ERR }, //- 0x8E
181
- { 0x0F, ERR }, //- 0x8F
182
-
183
- { 0x10, ERR }, //- 0x90
184
- { 0x11, ERR }, //- 0x91
185
- { 0x12, ERR }, //- 0x92
186
- { 0x13, ERR }, //- 0x93
187
- { 0x14, ERR }, //- 0x94
188
- { 0x15, ERR }, //- 0x95
189
- { 0x16, ERR }, //- 0x96
190
- { 0x17, ERR }, //- 0x97
191
- { 0x18, ERR }, //- 0x98
192
- { 0x19, ERR }, //- 0x99
193
- { 0x1A, ERR }, //- 0x9A
194
- { 0x1B, ERR }, //- 0x9B
195
- { 0x1C, ERR }, //- 0x9C
196
- { 0x1D, ERR }, //- 0x9D
197
- { 0x1E, ERR }, //- 0x9E
198
- { 0x1F, ERR }, //- 0x9F
199
-
200
- { 0x20, ERR }, //- 0xA0
201
- { 0x21, ERR }, //- 0xA1
202
- { 0x22, ERR }, //- 0xA2
203
- { 0x23, ERR }, //- 0xA3
204
- { 0x24, ERR }, //- 0xA4
205
- { 0x25, ERR }, //- 0xA5
206
- { 0x26, ERR }, //- 0xA6
207
- { 0x27, ERR }, //- 0xA7
208
- { 0x28, ERR }, //- 0xA8
209
- { 0x29, ERR }, //- 0xA9
210
- { 0x2A, ERR }, //- 0xAA
211
- { 0x2B, ERR }, //- 0xAB
212
- { 0x2C, ERR }, //- 0xAC
213
- { 0x2D, ERR }, //- 0xAD
214
- { 0x2E, ERR }, //- 0xAE
215
- { 0x2F, ERR }, //- 0xAF
216
-
217
- { 0x30, ERR }, //- 0xB0
218
- { 0x31, ERR }, //- 0xB1
219
- { 0x32, ERR }, //- 0xB2
220
- { 0x33, ERR }, //- 0xB3
221
- { 0x34, ERR }, //- 0xB4
222
- { 0x35, ERR }, //- 0xB5
223
- { 0x36, ERR }, //- 0xB6
224
- { 0x37, ERR }, //- 0xB7
225
- { 0x38, ERR }, //- 0xB8
226
- { 0x39, ERR }, //- 0xB9
227
- { 0x3A, ERR }, //- 0xBA
228
- { 0x3B, ERR }, //- 0xBB
229
- { 0x3C, ERR }, //- 0xBC
230
- { 0x3D, ERR }, //- 0xBD
231
- { 0x3E, ERR }, //- 0xBE
232
- { 0x3F, ERR }, //- 0xBF
233
-
234
- { 0xC0, ERR }, //- 0xC0
235
- { 0xC1, ERR }, //- 0xC1
236
- { 0x02, CS1 }, //- 0xC2
237
- { 0x03, CS1 }, //- 0xC3
238
- { 0x04, CS1 }, //- 0xC4
239
- { 0x05, CS1 }, //- 0xC5
240
- { 0x06, CS1 }, //- 0xC6
241
- { 0x07, CS1 }, //- 0xC7
242
- { 0x08, CS1 }, //- 0xC8
243
- { 0x09, CS1 }, //- 0xC9
244
- { 0x0A, CS1 }, //- 0xCA
245
- { 0x0B, CS1 }, //- 0xCB
246
- { 0x0C, CS1 }, //- 0xCC
247
- { 0x0D, CS1 }, //- 0xCD
248
- { 0x0E, CS1 }, //- 0xCE
249
- { 0x0F, CS1 }, //- 0xCF
250
-
251
- { 0x10, CS1 }, //- 0xD0
252
- { 0x11, CS1 }, //- 0xD1
253
- { 0x12, CS1 }, //- 0xD2
254
- { 0x13, CS1 }, //- 0xD3
255
- { 0x14, CS1 }, //- 0xD4
256
- { 0x15, CS1 }, //- 0xD5
257
- { 0x16, CS1 }, //- 0xD6
258
- { 0x17, CS1 }, //- 0xD7
259
- { 0x18, CS1 }, //- 0xD8
260
- { 0x19, CS1 }, //- 0xD9
261
- { 0x1A, CS1 }, //- 0xDA
262
- { 0x1B, CS1 }, //- 0xDB
263
- { 0x1C, CS1 }, //- 0xDC
264
- { 0x1D, CS1 }, //- 0xDD
265
- { 0x1E, CS1 }, //- 0xDE
266
- { 0x1F, CS1 }, //- 0xDF
267
-
268
- { 0x00, P3A }, //- 0xE0
269
- { 0x01, CS2 }, //- 0xE1
270
- { 0x02, CS2 }, //- 0xE2
271
- { 0x03, CS2 }, //- 0xE3
272
- { 0x04, CS2 }, //- 0xE4
273
- { 0x05, CS2 }, //- 0xE5
274
- { 0x06, CS2 }, //- 0xE6
275
- { 0x07, CS2 }, //- 0xE7
276
- { 0x08, CS2 }, //- 0xE8
277
- { 0x09, CS2 }, //- 0xE9
278
- { 0x0A, CS2 }, //- 0xEA
279
- { 0x0B, CS2 }, //- 0xEB
280
- { 0x0C, CS2 }, //- 0xEC
281
- { 0x0D, P3B }, //- 0xED
282
- { 0x0E, CS2 }, //- 0xEE
283
- { 0x0F, CS2 }, //- 0xEF
284
-
285
- { 0x00, P4A }, //- 0xF0
286
- { 0x01, CS3 }, //- 0xF1
287
- { 0x02, CS3 }, //- 0xF2
288
- { 0x03, CS3 }, //- 0xF3
289
- { 0x04, P4B }, //- 0xF4
290
- { 0xF5, ERR }, //- 0xF5
291
- { 0xF6, ERR }, //- 0xF6
292
- { 0xF7, ERR }, //- 0xF7
293
- { 0xF8, ERR }, //- 0xF8
294
- { 0xF9, ERR }, //- 0xF9
295
- { 0xFA, ERR }, //- 0xFA
296
- { 0xFB, ERR }, //- 0xFB
297
- { 0xFC, ERR }, //- 0xFC
298
- { 0xFD, ERR }, //- 0xFD
299
- { 0xFE, ERR }, //- 0xFE
300
- { 0xFF, ERR }, //- 0xFF
301
- },
302
-
303
- //- Initialize the maOctetCategory member array. This array implements a lookup table
304
- // that maps an input octet to a corresponding octet category.
305
- //
306
- // 0 1 2 3 4 5 6 7 8 9 A B C D E F
307
- //============================================================================================
308
- {
309
- ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, //- 00..0F
310
- ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, //- 10..1F
311
- ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, //- 20..2F
312
- ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, //- 30..3F
313
- //
314
- ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, //- 40..4F
315
- ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, //- 50..5F
316
- ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, //- 60..6F
317
- ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, //- 70..7F
318
- //
319
- CR1, CR1, CR1, CR1, CR1, CR1, CR1, CR1, CR1, CR1, CR1, CR1, CR1, CR1, CR1, CR1, //- 80..8F
320
- CR2, CR2, CR2, CR2, CR2, CR2, CR2, CR2, CR2, CR2, CR2, CR2, CR2, CR2, CR2, CR2, //- 90..9F
321
- CR3, CR3, CR3, CR3, CR3, CR3, CR3, CR3, CR3, CR3, CR3, CR3, CR3, CR3, CR3, CR3, //- A0..AF
322
- CR3, CR3, CR3, CR3, CR3, CR3, CR3, CR3, CR3, CR3, CR3, CR3, CR3, CR3, CR3, CR3, //- B0..BF
323
- //
324
- ILL, ILL, L2A, L2A, L2A, L2A, L2A, L2A, L2A, L2A, L2A, L2A, L2A, L2A, L2A, L2A, //- C0..CF
325
- L2A, L2A, L2A, L2A, L2A, L2A, L2A, L2A, L2A, L2A, L2A, L2A, L2A, L2A, L2A, L2A, //- D0..DF
326
- L3A, L3B, L3B, L3B, L3B, L3B, L3B, L3B, L3B, L3B, L3B, L3B, L3B, L3C, L3B, L3B, //- E0..EF
327
- L4A, L4B, L4B, L4B, L4C, ILL, ILL, ILL, ILL, ILL, ILL, ILL, ILL, ILL, ILL, ILL, //- F0..FF
328
- },
329
-
330
- //- Initialize the maTransitions member array. This array implements a lookup table that,
331
- // given the current DFA state and an input code unit, indicates the next DFA state.
332
- //
333
- // ILL ASC CR1 CR2 CR3 L2A L3A L3B L3C L4A L4B L4C CLASS/STATE
334
- //=========================================================================
335
- {
336
- err, END, err, err, err, CS1, P3A, CS2, P3B, P4A, CS3, P4B, //- BGN|END
337
- err, err, err, err, err, err, err, err, err, err, err, err, //- ERR
338
- //
339
- err, err, END, END, END, err, err, err, err, err, err, err, //- CS1
340
- err, err, CS1, CS1, CS1, err, err, err, err, err, err, err, //- CS2
341
- err, err, CS2, CS2, CS2, err, err, err, err, err, err, err, //- CS3
342
- //
343
- err, err, err, err, CS1, err, err, err, err, err, err, err, //- P3A
344
- err, err, CS1, CS1, err, err, err, err, err, err, err, err, //- P3B
345
- //
346
- err, err, err, CS2, CS2, err, err, err, err, err, err, err, //- P4A
347
- err, err, CS2, err, err, err, err, err, err, err, err, err, //- P4B
348
- },
349
-
350
- //- Initialize the maFirstOctetMask member array. This array implements a lookup table that
351
- // maps a character class to a mask that is applied to the first code unit in a sequence.
352
- //
353
- {
354
- 0xFF, //- ILL - C0..C1, F5..FF Illegal code unit
355
- //
356
- 0x7F, //- ASC - 00..7F ASCII byte range
357
- //
358
- 0x3F, //- CR1 - 80..8F Continuation range 1
359
- 0x3F, //- CR2 - 90..9F Continuation range 2
360
- 0x3F, //- CR3 - A0..BF Continuation range 3
361
- //
362
- 0x1F, //- L2A - C2..DF Leading byte range 2A / 2-byte sequence
363
- //
364
- 0x0F, //- L3A - E0 Leading byte range 3A / 3-byte sequence
365
- 0x0F, //- L3B - E1..EC, EE..EF Leading byte range 3B / 3-byte sequence
366
- 0x0F, //- L3C - ED Leading byte range 3C / 3-byte sequence
367
- //
368
- 0x07, //- L4A - F0 Leading byte range 4A / 4-byte sequence
369
- 0x07, //- L4B - F1..F3 Leading byte range 4B / 4-byte sequence
370
- 0x07, //- L4C - F4 Leading byte range 4C / 4-byte sequence
371
- },
372
- };
373
-
374
- //- These are the human-readable names assigned to the code unit categories.
375
- //
376
- char const* UtfUtils::smClassNames[12] =
377
- {
378
- "ILL", "ASC", "CR1", "CR2", "CR3", "L2A", "L3A", "L3B", "L3C", "L4A", "L4B", "L4C",
379
- };
380
-
381
- //- These are the human-readable names assigned to the various states comprising the DFA.
382
- //
383
- char const* UtfUtils::smStateNames[9] =
384
- {
385
- "BGN", "ERR", "CS1", "CS2", "CS3", "P3A", "P3B", "P4A", "P4B",
386
- };
387
-
388
- //--------------------------------------------------------------------------------------------------
389
- /// \brief Converts a sequence of UTF-8 code units to a sequence of UTF-32 code points.
390
- ///
391
- /// \details
392
- /// This static member function reads an input sequence of UTF-8 code units and converts
393
- /// it to an output sequence of UTF-32 code points. It performs conversion by traversing
394
- /// the DFA without any optimizations using the `AdvanceWithBigTable` member function to
395
- /// read and convert input.
396
- ///
397
- /// \param pSrc
398
- /// A non-null pointer defining the beginning of the code unit input range.
399
- /// \param pSrcEnd
400
- /// A non-null past-the-end pointer defining the end of the code unit input range.
401
- /// \param pDst
402
- /// A non-null pointer defining the beginning of the code point output range.
403
- ///
404
- /// \returns
405
- /// If successful, the number of UTF-32 code points written; otherwise -1 is returned to
406
- /// indicate an error was encountered.
407
- //--------------------------------------------------------------------------------------------------
408
- //
409
- KEWB_ALIGN_FN std::ptrdiff_t
410
- UtfUtils::BasicBigTableConvert(char8_t const* pSrc, char8_t const* pSrcEnd, char32_t* pDst) noexcept
411
- {
412
- char32_t* pDstOrig = pDst;
413
- char32_t cdpt;
414
-
415
- while (pSrc < pSrcEnd)
416
- {
417
- if (AdvanceWithBigTable(pSrc, pSrcEnd, cdpt) != ERR)
418
- {
419
- *pDst++ = cdpt;
420
- }
421
- else
422
- {
423
- return -1;
424
- }
425
- }
426
-
427
- return pDst - pDstOrig;
428
- }
429
-
430
- //--------------------------------------------------------------------------------------------------
431
- /// \brief Converts a sequence of UTF-8 code units to a sequence of UTF-32 code points.
432
- ///
433
- /// \details
434
- /// This static member function reads an input sequence of UTF-8 code units and converts
435
- /// it to an output sequence of UTF-32 code points. It uses the DFA to perform non-ascii
436
- /// code-unit sequence conversions, but optimizes by checking for ASCII code units and
437
- /// converting them directly to code points. It uses the `AdvanceWithBigTable` member
438
- /// function to read and convert input.
439
- ///
440
- /// \param pSrc
441
- /// A non-null pointer defining the beginning of the code unit input range.
442
- /// \param pSrcEnd
443
- /// A non-null past-the-end pointer defining the end of the code unit input range.
444
- /// \param pDst
445
- /// A non-null pointer defining the beginning of the code point output range.
446
- ///
447
- /// \returns
448
- /// If successful, the number of UTF-32 code points written; otherwise -1 is returned to
449
- /// indicate an error was encountered.
450
- //--------------------------------------------------------------------------------------------------
451
- //
452
- KEWB_ALIGN_FN std::ptrdiff_t
453
- UtfUtils::FastBigTableConvert(char8_t const* pSrc, char8_t const* pSrcEnd, char32_t* pDst) noexcept
454
- {
455
- char32_t* pDstOrig = pDst;
456
- char32_t cdpt;
457
-
458
- while (pSrc < pSrcEnd)
459
- {
460
- if (*pSrc < 0x80)
461
- {
462
- *pDst++ = *pSrc++;
463
- }
464
- else
465
- {
466
- if (AdvanceWithBigTable(pSrc, pSrcEnd, cdpt) != ERR)
467
- {
468
- *pDst++ = cdpt;
469
- }
470
- else
471
- {
472
- return -1;
473
- }
474
- }
475
- }
476
-
477
- return pDst - pDstOrig;
478
- }
479
-
480
- //--------------------------------------------------------------------------------------------------
481
- /// \brief Converts a sequence of UTF-8 code units to a sequence of UTF-32 code points.
482
- ///
483
- /// \details
484
- /// This static member function reads an input sequence of UTF-8 code units and converts
485
- /// it to an output sequence of UTF-32 code points. It uses the DFA to perform non-ascii
486
- /// code-unit sequence conversions, but optimizes by converting contiguous sequences of
487
- /// ASCII code units using SSE intrinsics. It uses the `AdvanceWithBigTable` member
488
- /// function to read and convert input.
489
- ///
490
- /// \param pSrc
491
- /// A non-null pointer defining the beginning of the code unit input range.
492
- /// \param pSrcEnd
493
- /// A non-null past-the-end pointer defining the end of the code unit input range.
494
- /// \param pDst
495
- /// A non-null pointer defining the beginning of the code point output range.
496
- ///
497
- /// \returns
498
- /// If successful, the number of UTF-32 code points written; otherwise -1 is returned to
499
- /// indicate an error was encountered.
500
- //--------------------------------------------------------------------------------------------------
501
- //
502
- KEWB_ALIGN_FN std::ptrdiff_t
503
- UtfUtils::SseBigTableConvert(char8_t const* pSrc, char8_t const* pSrcEnd, char32_t* pDst) noexcept
504
- {
505
- char32_t* pDstOrig = pDst;
506
- char32_t cdpt;
507
-
508
- while (pSrc < (pSrcEnd - sizeof(__m128i)))
509
- {
510
- if (*pSrc < 0x80)
511
- {
512
- ConvertAsciiWithSse(pSrc, pDst);
513
- }
514
- else
515
- {
516
- if (AdvanceWithBigTable(pSrc, pSrcEnd, cdpt) != ERR)
517
- {
518
- *pDst++ = cdpt;
519
- }
520
- else
521
- {
522
- return -1;
523
- }
524
- }
525
- }
526
-
527
- while (pSrc < pSrcEnd)
528
- {
529
- if (*pSrc < 0x80)
530
- {
531
- *pDst++ = *pSrc++;
532
- }
533
- else
534
- {
535
- if (AdvanceWithBigTable(pSrc, pSrcEnd, cdpt) != ERR)
536
- {
537
- *pDst++ = cdpt;
538
- }
539
- else
540
- {
541
- return -1;
542
- }
543
- }
544
- }
545
-
546
- return pDst - pDstOrig;
547
- }
548
-
549
- //--------------------------------------------------------------------------------------------------
550
- /// \brief Converts a sequence of UTF-8 code units to a sequence of UTF-16 code units.
551
- ///
552
- /// \details
553
- /// This static member function reads an input sequence of UTF-8 code units and converts
554
- /// it to an output sequence of UTF-16 code units. It performs conversion by traversing
555
- /// the DFA without any optimizations using the `AdvanceWithBigTable` member function to
556
- /// read and convert input.
557
- ///
558
- /// \param pSrc
559
- /// A non-null pointer defining the beginning of the code unit input range.
560
- /// \param pSrcEnd
561
- /// A non-null past-the-end pointer defining the end of the code unit input range.
562
- /// \param pDst
563
- /// A non-null pointer defining the beginning of the code unit output range.
564
- ///
565
- /// \returns
566
- /// If successful, the number of UTF-16 code units written; otherwise -1 is returned to
567
- /// indicate an error was encountered.
568
- //--------------------------------------------------------------------------------------------------
569
- //
570
- KEWB_ALIGN_FN std::ptrdiff_t
571
- UtfUtils::BasicBigTableConvert(char8_t const* pSrc, char8_t const* pSrcEnd, char16_t* pDst) noexcept
572
- {
573
- char16_t* pDstOrig = pDst;
574
- char32_t cdpt;
575
-
576
- while (pSrc < pSrcEnd)
577
- {
578
- if (AdvanceWithBigTable(pSrc, pSrcEnd, cdpt) != ERR)
579
- {
580
- GetCodeUnits(cdpt, pDst);
581
- }
582
- else
583
- {
584
- return -1;
585
- }
586
- }
587
-
588
- return pDst - pDstOrig;
589
- }
590
-
591
- //--------------------------------------------------------------------------------------------------
592
- /// \brief Converts a sequence of UTF-8 code units to a sequence of UTF-16 code units.
593
- ///
594
- /// \details
595
- /// This static member function reads an input sequence of UTF-8 code units and converts
596
- /// it to an output sequence of UTF-16 code unis. It uses the DFA to perform non-ascii
597
- /// code-unit sequence conversions, but optimizes by checking for ASCII code units and
598
- /// converting them directly to code points. It uses the `AdvanceWithBigTable` member
599
- /// function to read and convert input.
600
- ///
601
- /// \param pSrc
602
- /// A non-null pointer defining the beginning of the code unit input range.
603
- /// \param pSrcEnd
604
- /// A non-null past-the-end pointer defining the end of the code unit input range.
605
- /// \param pDst
606
- /// A non-null pointer defining the beginning of the code unit output range.
607
- ///
608
- /// \returns
609
- /// If successful, the number of UTF-16 code units written; otherwise -1 is returned to
610
- /// indicate an error was encountered.
611
- //--------------------------------------------------------------------------------------------------
612
- //
613
- KEWB_ALIGN_FN std::ptrdiff_t
614
- UtfUtils::FastBigTableConvert(char8_t const* pSrc, char8_t const* pSrcEnd, char16_t* pDst) noexcept
615
- {
616
- char16_t* pDstOrig = pDst;
617
- char32_t cdpt;
618
-
619
- while (pSrc < pSrcEnd)
620
- {
621
- if (*pSrc < 0x80)
622
- {
623
- *pDst++ = *pSrc++;
624
- }
625
- else
626
- {
627
- if (AdvanceWithBigTable(pSrc, pSrcEnd, cdpt) != ERR)
628
- {
629
- GetCodeUnits(cdpt, pDst);
630
- }
631
- else
632
- {
633
- return -1;
634
- }
635
- }
636
- }
637
-
638
- return pDst - pDstOrig;
639
- }
640
-
641
- //--------------------------------------------------------------------------------------------------
642
- /// \brief Converts a sequence of UTF-8 code units to a sequence of UTF-16 code units.
643
- ///
644
- /// \details
645
- /// This static member function reads an input sequence of UTF-8 code units and converts
646
- /// it to an output sequence of UTF-16 code units. It uses the DFA to perform non-ascii
647
- /// code-unit sequence conversions, but optimizes by converting contiguous sequences of
648
- /// ASCII code units using SSE intrinsics. It uses the `AdvanceWithBigTable` member
649
- /// function to read and convert input.
650
- ///
651
- /// \param pSrc
652
- /// A non-null pointer defining the beginning of the code unit input range.
653
- /// \param pSrcEnd
654
- /// A non-null past-the-end pointer defining the end of the code unit input range.
655
- /// \param pDst
656
- /// A non-null pointer defining the beginning of the code unit output range.
657
- ///
658
- /// \returns
659
- /// If successful, the number of UTF-16 code units written; otherwise -1 is returned to
660
- /// indicate an error was encountered.
661
- //--------------------------------------------------------------------------------------------------
662
- //
663
- KEWB_ALIGN_FN std::ptrdiff_t
664
- UtfUtils::SseBigTableConvert(char8_t const* pSrc, char8_t const* pSrcEnd, char16_t* pDst) noexcept
665
- {
666
- char16_t* pDstOrig = pDst;
667
- char32_t cdpt;
668
-
669
- while (pSrc < (pSrcEnd - sizeof(__m128i)))
670
- {
671
- if (*pSrc < 0x80)
672
- {
673
- ConvertAsciiWithSse(pSrc, pDst);
674
- }
675
- else
676
- {
677
- if (AdvanceWithBigTable(pSrc, pSrcEnd, cdpt) != ERR)
678
- {
679
- GetCodeUnits(cdpt, pDst);
680
- }
681
- else
682
- {
683
- return -1;
684
- }
685
- }
686
- }
687
-
688
- while (pSrc < pSrcEnd)
689
- {
690
- if (*pSrc < 0x80)
691
- {
692
- *pDst++ = *pSrc++;
693
- }
694
- else
695
- {
696
- if (AdvanceWithBigTable(pSrc, pSrcEnd, cdpt) != ERR)
697
- {
698
- GetCodeUnits(cdpt, pDst);
699
- }
700
- else
701
- {
702
- return -1;
703
- }
704
- }
705
- }
706
-
707
- return pDst - pDstOrig;
708
- }
709
-
710
- //--------------------------------------------------------------------------------------------------
711
- /// \brief Converts a sequence of UTF-8 code units to a sequence of UTF-32 code points.
712
- ///
713
- /// \details
714
- /// This static member function reads an input sequence of UTF-8 code units and converts
715
- /// it to an output sequence of UTF-32 code points. It performs conversion by traversing
716
- /// the DFA without any optimizations using the `AdvanceWithSmallTable` member function to
717
- /// read and convert input.
718
- ///
719
- /// \param pSrc
720
- /// A non-null pointer defining the beginning of the code unit input range.
721
- /// \param pSrcEnd
722
- /// A non-null past-the-end pointer defining the end of the code unit input range.
723
- /// \param pDst
724
- /// A non-null pointer defining the beginning of the code point output range.
725
- ///
726
- /// \returns
727
- /// If successful, the number of UTF-32 code points written; otherwise -1 is returned to
728
- /// indicate an error was encountered.
729
- //--------------------------------------------------------------------------------------------------
730
- //
731
- KEWB_ALIGN_FN std::ptrdiff_t
732
- UtfUtils::BasicSmallTableConvert(char8_t const* pSrc, char8_t const* pSrcEnd, char32_t* pDst) noexcept
733
- {
734
- char32_t* pDstOrig = pDst;
735
- char32_t cdpt;
736
-
737
- while (pSrc < pSrcEnd)
738
- {
739
- if (AdvanceWithSmallTable(pSrc, pSrcEnd, cdpt) != ERR)
740
- {
741
- *pDst++ = cdpt;
742
- }
743
- else
744
- {
745
- return -1;
746
- }
747
- }
748
-
749
- return pDst - pDstOrig;
750
- }
751
-
752
- //--------------------------------------------------------------------------------------------------
753
- /// \brief Converts a sequence of UTF-8 code units to a sequence of UTF-32 code points.
754
- ///
755
- /// \details
756
- /// This static member function reads an input sequence of UTF-8 code units and converts
757
- /// it to an output sequence of UTF-32 code points. It uses the DFA to perform non-ascii
758
- /// code-unit sequence conversions, but optimizes by checking for ASCII code units and
759
- /// converting them directly to code points. It uses the `AdvanceWithSmallTable` member
760
- /// function to read and convert input.
761
- ///
762
- /// \param pSrc
763
- /// A non-null pointer defining the beginning of the code unit input range.
764
- /// \param pSrcEnd
765
- /// A non-null past-the-end pointer defining the end of the code unit input range.
766
- /// \param pDst
767
- /// A non-null pointer defining the beginning of the code point output range.
768
- ///
769
- /// \returns
770
- /// If successful, the number of UTF-32 code points written; otherwise -1 is returned to
771
- /// indicate an error was encountered.
772
- //--------------------------------------------------------------------------------------------------
773
- //
774
- KEWB_ALIGN_FN std::ptrdiff_t
775
- UtfUtils::FastSmallTableConvert(char8_t const* pSrc, char8_t const* pSrcEnd, char32_t* pDst) noexcept
776
- {
777
- char32_t* pDstOrig = pDst;
778
- char32_t cdpt;
779
-
780
- while (pSrc < pSrcEnd)
781
- {
782
- if (*pSrc < 0x80)
783
- {
784
- *pDst++ = *pSrc++;
785
- }
786
- else
787
- {
788
- if (AdvanceWithSmallTable(pSrc, pSrcEnd, cdpt) != ERR)
789
- {
790
- *pDst++ = cdpt;
791
- }
792
- else
793
- {
794
- return -1;
795
- }
796
- }
797
- }
798
-
799
- return pDst - pDstOrig;
800
- }
801
-
802
- //--------------------------------------------------------------------------------------------------
803
- /// \brief Converts a sequence of UTF-8 code units to a sequence of UTF-32 code points.
804
- ///
805
- /// \details
806
- /// This static member function reads an input sequence of UTF-8 code units and converts
807
- /// it to an output sequence of UTF-32 code points. It uses the DFA to perform non-ascii
808
- /// code-unit sequence conversions, but optimizes by converting contiguous sequences of
809
- /// ASCII code units using SSE intrinsics. It uses the `AdvanceWithSmallTable` member
810
- /// function to read and convert input.
811
- ///
812
- /// \param pSrc
813
- /// A non-null pointer defining the beginning of the code unit input range.
814
- /// \param pSrcEnd
815
- /// A non-null past-the-end pointer defining the end of the code unit input range.
816
- /// \param pDst
817
- /// A non-null pointer defining the beginning of the code point output range.
818
- ///
819
- /// \returns
820
- /// If successful, the number of UTF-32 code points written; otherwise -1 is returned to
821
- /// indicate an error was encountered.
822
- //--------------------------------------------------------------------------------------------------
823
- //
824
- KEWB_ALIGN_FN std::ptrdiff_t
825
- UtfUtils::SseSmallTableConvert(char8_t const* pSrc, char8_t const* pSrcEnd, char32_t* pDst) noexcept
826
- {
827
- char32_t* pDstOrig = pDst;
828
- char32_t cdpt;
829
-
830
- while (pSrc < (pSrcEnd - sizeof(__m128i)))
831
- {
832
- if (*pSrc < 0x80)
833
- {
834
- ConvertAsciiWithSse(pSrc, pDst);
835
- }
836
- else
837
- {
838
- if (AdvanceWithSmallTable(pSrc, pSrcEnd, cdpt) != ERR)
839
- {
840
- *pDst++ = cdpt;
841
- }
842
- else
843
- {
844
- return -1;
845
- }
846
- }
847
- }
848
-
849
- while (pSrc < pSrcEnd)
850
- {
851
- if (*pSrc < 0x80)
852
- {
853
- *pDst++ = *pSrc++;
854
- }
855
- else
856
- {
857
- if (AdvanceWithSmallTable(pSrc, pSrcEnd, cdpt) != ERR)
858
- {
859
- *pDst++ = cdpt;
860
- }
861
- else
862
- {
863
- return -1;
864
- }
865
- }
866
- }
867
-
868
- return pDst - pDstOrig;
869
- }
870
-
871
- //--------------------------------------------------------------------------------------------------
872
- /// \brief Converts a sequence of UTF-8 code units to a sequence of UTF-16 code units.
873
- ///
874
- /// \details
875
- /// This static member function reads an input sequence of UTF-8 code units and converts
876
- /// it to an output sequence of UTF-16 code units. It performs conversion by traversing
877
- /// the DFA without any optimizations using the `AdvanceWithSmallTable` member function to
878
- /// read and convert input.
879
- ///
880
- /// \param pSrc
881
- /// A non-null pointer defining the beginning of the code unit input range.
882
- /// \param pSrcEnd
883
- /// A non-null past-the-end pointer defining the end of the code unit input range.
884
- /// \param pDst
885
- /// A non-null pointer defining the beginning of the code unit output range.
886
- ///
887
- /// \returns
888
- /// If successful, the number of UTF-16 code units written; otherwise -1 is returned to
889
- /// indicate an error was encountered.
890
- //--------------------------------------------------------------------------------------------------
891
- //
892
- KEWB_ALIGN_FN std::ptrdiff_t
893
- UtfUtils::BasicSmallTableConvert(char8_t const* pSrc, char8_t const* pSrcEnd, char16_t* pDst) noexcept
894
- {
895
- char16_t* pDstOrig = pDst;
896
- char32_t cdpt;
897
-
898
- while (pSrc < pSrcEnd)
899
- {
900
- if (AdvanceWithSmallTable(pSrc, pSrcEnd, cdpt) != ERR)
901
- {
902
- GetCodeUnits(cdpt, pDst);
903
- }
904
- else
905
- {
906
- return -1;
907
- }
908
- }
909
-
910
- return pDst - pDstOrig;
911
- }
912
-
913
- //--------------------------------------------------------------------------------------------------
914
- /// \brief Converts a sequence of UTF-8 code units to a sequence of UTF-16 code units.
915
- ///
916
- /// \details
917
- /// This static member function reads an input sequence of UTF-8 code units and converts
918
- /// it to an output sequence of UTF-16 code unis. It uses the DFA to perform non-ascii
919
- /// code-unit sequence conversions, but optimizes by checking for ASCII code units and
920
- /// converting them directly to code points. It uses the `AdvanceWithSmallTable` member
921
- /// function to read and convert input.
922
- ///
923
- /// \param pSrc
924
- /// A non-null pointer defining the beginning of the code unit input range.
925
- /// \param pSrcEnd
926
- /// A non-null past-the-end pointer defining the end of the code unit input range.
927
- /// \param pDst
928
- /// A non-null pointer defining the beginning of the code unit output range.
929
- ///
930
- /// \returns
931
- /// If successful, the number of UTF-16 code units written; otherwise -1 is returned to
932
- /// indicate an error was encountered.
933
- //--------------------------------------------------------------------------------------------------
934
- //
935
- KEWB_ALIGN_FN std::ptrdiff_t
936
- UtfUtils::FastSmallTableConvert(char8_t const* pSrc, char8_t const* pSrcEnd, char16_t* pDst) noexcept
937
- {
938
- char16_t* pDstOrig = pDst;
939
- char32_t cdpt;
940
-
941
- while (pSrc < pSrcEnd)
942
- {
943
- if (*pSrc < 0x80)
944
- {
945
- *pDst++ = *pSrc++;
946
- }
947
- else
948
- {
949
- if (AdvanceWithSmallTable(pSrc, pSrcEnd, cdpt) != ERR)
950
- {
951
- GetCodeUnits(cdpt, pDst);
952
- }
953
- else
954
- {
955
- return -1;
956
- }
957
- }
958
- }
959
-
960
- return pDst - pDstOrig;
961
- }
962
-
963
- //--------------------------------------------------------------------------------------------------
964
- /// \brief Converts a sequence of UTF-8 code units to a sequence of UTF-16 code units.
965
- ///
966
- /// \details
967
- /// This static member function reads an input sequence of UTF-8 code units and converts
968
- /// it to an output sequence of UTF-16 code units. It uses the DFA to perform non-ascii
969
- /// code-unit sequence conversions, but optimizes by converting contiguous sequences of
970
- /// ASCII code units using SSE intrinsics. It uses the `AdvanceWithSmallTable` member
971
- /// function to read and convert input.
972
- ///
973
- /// \param pSrc
974
- /// A non-null pointer defining the beginning of the code unit input range.
975
- /// \param pSrcEnd
976
- /// A non-null past-the-end pointer defining the end of the code unit input range.
977
- /// \param pDst
978
- /// A non-null pointer defining the beginning of the code unit output range.
979
- ///
980
- /// \returns
981
- /// If successful, the number of UTF-16 code units written; otherwise -1 is returned to
982
- /// indicate an error was encountered.
983
- //--------------------------------------------------------------------------------------------------
984
- //
985
- KEWB_ALIGN_FN std::ptrdiff_t
986
- UtfUtils::SseSmallTableConvert(char8_t const* pSrc, char8_t const* pSrcEnd, char16_t* pDst) noexcept
987
- {
988
- char16_t* pDstOrig = pDst;
989
- char32_t cdpt;
990
-
991
- while (pSrc < (pSrcEnd - sizeof(__m128i)))
992
- {
993
- if (*pSrc < 0x80)
994
- {
995
- ConvertAsciiWithSse(pSrc, pDst);
996
- }
997
- else
998
- {
999
- if (AdvanceWithSmallTable(pSrc, pSrcEnd, cdpt) != ERR)
1000
- {
1001
- GetCodeUnits(cdpt, pDst);
1002
- }
1003
- else
1004
- {
1005
- return -1;
1006
- }
1007
- }
1008
- }
1009
-
1010
- while (pSrc < pSrcEnd)
1011
- {
1012
- if (*pSrc < 0x80)
1013
- {
1014
- *pDst++ = *pSrc++;
1015
- }
1016
- else
1017
- {
1018
- if (AdvanceWithSmallTable(pSrc, pSrcEnd, cdpt) != ERR)
1019
- {
1020
- GetCodeUnits(cdpt, pDst);
1021
- }
1022
- else
1023
- {
1024
- return -1;
1025
- }
1026
- }
1027
- }
1028
-
1029
- return pDst - pDstOrig;
1030
- }
1031
-
1032
- //--------------------------------------------------------------------------------------------------
1033
- /// \brief Trace converts a sequence of UTF-8 code units to a sequence of UTF-32 code points.
1034
- ///
1035
- /// \details
1036
- /// This static member function reads an input sequence of UTF-8 code units and converts
1037
- /// it to an output sequence of UTF-32 code points. It uses only the DFA to perform
1038
- /// conversion. It prints current and next state transition information as it proceeds.
1039
- ///
1040
- /// \param pSrc
1041
- /// A non-null pointer defining the beginning of the code unit input range.
1042
- /// \param pSrcEnd
1043
- /// A non-null past-the-end pointer defining the end of the code unit input range.
1044
- /// \param pDst
1045
- /// A non-null pointer defining the beginning of the code point output range.
1046
- ///
1047
- /// \returns
1048
- /// If successful, the number of UTF-32 code points written; otherwise -1 is returned to
1049
- /// indicate an error was encountered.
1050
- //--------------------------------------------------------------------------------------------------
1051
- //
1052
- std::ptrdiff_t
1053
- UtfUtils::ConvertWithTrace(char8_t const* pSrc, char8_t const* pSrcEnd, char32_t* pDst) noexcept
1054
- {
1055
- char32_t* pDstOrig = pDst;
1056
- char32_t cdpt;
1057
-
1058
- while (pSrc < pSrcEnd)
1059
- {
1060
- if (AdvanceWithTrace(pSrc, pSrcEnd, cdpt) != ERR)
1061
- {
1062
- *pDst++ = cdpt;
1063
- }
1064
- else
1065
- {
1066
- return -1;
1067
- }
1068
- }
1069
-
1070
- return pDst - pDstOrig;
1071
- }
1072
-
1073
- //--------------------------------------------------------------------------------------------------
1074
- /// \brief Trace converts a sequence of UTF-8 code units to a sequence of UTF-16 code units.
1075
- ///
1076
- /// \details
1077
- /// This static member function reads an input sequence of UTF-8 code units and converts
1078
- /// it to an output sequence of UTF-16 code units. It uses only the DFA to perform
1079
- /// conversion. It prints current and next state transition information as it proceeds.
1080
- ///
1081
- /// \param pSrc
1082
- /// A non-null pointer defining the beginning of the code unit input range.
1083
- /// \param pSrcEnd
1084
- /// A non-null past-the-end pointer defining the end of the code unit input range.
1085
- /// \param pDst
1086
- /// A non-null pointer defining the beginning of the code unit output range.
1087
- ///
1088
- /// \returns
1089
- /// If successful, the number of UTF-16 code units written; otherwise -1 is returned to
1090
- /// indicate an error was encountered.
1091
- //--------------------------------------------------------------------------------------------------
1092
- //
1093
- std::ptrdiff_t
1094
- UtfUtils::ConvertWithTrace(char8_t const* pSrc, char8_t const* pSrcEnd, char16_t* pDst) noexcept
1095
- {
1096
- char16_t* pDstOrig = pDst;
1097
- char32_t cdpt;
1098
-
1099
- while (pSrc < pSrcEnd)
1100
- {
1101
- if (AdvanceWithTrace(pSrc, pSrcEnd, cdpt) != ERR)
1102
- {
1103
- GetCodeUnits(cdpt, pDst);
1104
- }
1105
- else
1106
- {
1107
- return -1;
1108
- }
1109
- }
1110
-
1111
- return pDst - pDstOrig;
1112
- }
1113
-
1114
- //--------------------------------------------------------------------------------------------------
1115
- /// \brief Converts a sequence of ASCII UTF-8 code units to a sequence of UTF-32 code points.
1116
- ///
1117
- /// \details
1118
- /// This static member function uses SSE intrinsics to convert a register of ASCII code
1119
- /// units to four registers of equivalent UTF-32 code units.
1120
- ///
1121
- /// \param pSrc
1122
- /// A reference to a non-null pointer defining the start of the code unit input range.
1123
- /// \param pDst
1124
- /// A reference to a non-null pointer defining the start of the code point output range.
1125
- //--------------------------------------------------------------------------------------------------
1126
- //
1127
- KEWB_FORCE_INLINE void
1128
- UtfUtils::ConvertAsciiWithSse(char8_t const*& pSrc, char32_t*& pDst) noexcept
1129
- {
1130
- __m128i chunk, half, qrtr, zero;
1131
- int32_t mask, incr;
1132
-
1133
- zero = _mm_set1_epi8(0); //- Zero out the interleave register
1134
- chunk = _mm_loadu_si128((__m128i const*) pSrc); //- Load a register with 8-bit bytes
1135
- mask = _mm_movemask_epi8(chunk); //- Determine which octets have high bit set
1136
-
1137
- half = _mm_unpacklo_epi8(chunk, zero); //- Unpack bytes 0-7 into 16-bit words
1138
- qrtr = _mm_unpacklo_epi16(half, zero); //- Unpack words 0-3 into 32-bit dwords
1139
- _mm_storeu_si128((__m128i*) pDst, qrtr); //- Write to memory
1140
- qrtr = _mm_unpackhi_epi16(half, zero); //- Unpack words 4-7 into 32-bit dwords
1141
- _mm_storeu_si128((__m128i*) (pDst + 4), qrtr); //- Write to memory
1142
-
1143
- half = _mm_unpackhi_epi8(chunk, zero); //- Unpack bytes 8-15 into 16-bit words
1144
- qrtr = _mm_unpacklo_epi16(half, zero); //- Unpack words 8-11 into 32-bit dwords
1145
- _mm_storeu_si128((__m128i*) (pDst + 8), qrtr); //- Write to memory
1146
- qrtr = _mm_unpackhi_epi16(half, zero); //- Unpack words 12-15 into 32-bit dwords
1147
- _mm_storeu_si128((__m128i*) (pDst + 12), qrtr); //- Write to memory
1148
-
1149
- //- If no bits were set in the mask, then all 16 code units were ASCII, and therefore
1150
- // both pointers are advanced by 16.
1151
- //
1152
- if (mask == 0)
1153
- {
1154
- pSrc += 16;
1155
- pDst += 16;
1156
- }
1157
-
1158
- //- Otherwise, the number of trailing (low-order) zero bits in the mask indicates the number
1159
- // of ASCII code units starting from the lowest byte address.
1160
- else
1161
- {
1162
- incr = GetTrailingZeros(mask);
1163
- pSrc += incr;
1164
- pDst += incr;
1165
- }
1166
- }
1167
-
1168
- //--------------------------------------------------------------------------------------------------
1169
- /// \brief Converts a sequence of ASCII UTF-8 code units to a sequence of UTF-16 code units.
1170
- ///
1171
- /// \details
1172
- /// This static member function uses SSE intrinsics to convert a register of ASCII code
1173
- /// units to two registers of equivalent UTF-16 code units.
1174
- ///
1175
- /// \param pSrc
1176
- /// A reference to a non-null pointer defining the start of the code unit input range.
1177
- /// \param pDst
1178
- /// A reference to a non-null pointer defining the start of the code unit output range.
1179
- //--------------------------------------------------------------------------------------------------
1180
- //
1181
- KEWB_FORCE_INLINE void
1182
- UtfUtils::ConvertAsciiWithSse(char8_t const*& pSrc, char16_t*& pDst) noexcept
1183
- {
1184
- __m128i chunk, half;
1185
- int32_t mask, incr;
1186
-
1187
- chunk = _mm_loadu_si128((__m128i const*) pSrc); //- Load the register with 8-bit bytes
1188
- mask = _mm_movemask_epi8(chunk); //- Determine which octets have high bit set
1189
-
1190
- half = _mm_unpacklo_epi8(chunk, _mm_set1_epi8(0)); //- Unpack lower half into 16-bit words
1191
- _mm_storeu_si128((__m128i*) pDst, half); //- Write to memory
1192
-
1193
- half = _mm_unpackhi_epi8(chunk, _mm_set1_epi8(0)); //- Unpack upper half into 16-bit words
1194
- _mm_storeu_si128((__m128i*) (pDst + 8), half); //- Write to memory
1195
-
1196
- //- If no bits were set in the mask, then all 16 code units were ASCII, and therefore
1197
- // both pointers are advanced by 16.
1198
- //
1199
- if (mask == 0)
1200
- {
1201
- pSrc += 16;
1202
- pDst += 16;
1203
- }
1204
-
1205
- //- Otherwise, the number of trailing (low-order) zero bits in the mask indicates the number
1206
- // of ASCII code units starting from the lowest byte address.
1207
- else
1208
- {
1209
- incr = GetTrailingZeros(mask);
1210
- pSrc += incr;
1211
- pDst += incr;
1212
- }
1213
- }
1214
-
1215
- //--------------------------------------------------------------------------------------------------
1216
- /// \brief Returns the number of trailing 0-bits in an integer, starting with the least
1217
- /// significant bit.
1218
- ///
1219
- /// \details
1220
- /// This static member function uses compiler intrinsics to determine the number of trailing
1221
- /// (i.e., low-order) zero bits in an int32_t parameter. For example, an input value of 8
1222
- /// (0000 1000) would return a value of 3; an input value of 64 (0100 0000) would return a
1223
- /// value of 6.
1224
- ///
1225
- /// \param x
1226
- /// An `int32_t` value whose number of trailing bits is to be determined.
1227
-
1228
- /// \returns
1229
- /// the number of trailing zero bits, as an `int32_t`.
1230
- //--------------------------------------------------------------------------------------------------
1231
- //
1232
- #if defined KEWB_COMPILER_CLANG || defined KEWB_COMPILER_GCC
1233
- // previous line modified by D. Lemire on June 23rd 2021: we want support for not just Linux!
1234
- KEWB_FORCE_INLINE int32_t
1235
- UtfUtils::GetTrailingZeros(int32_t x) noexcept
1236
- {
1237
- return __builtin_ctz((unsigned int) x);
1238
- }
1239
-
1240
- #elif defined KEWB_PLATFORM_WINDOWS && defined KEWB_COMPILER_MSVC
1241
-
1242
- KEWB_FORCE_INLINE int32_t
1243
- UtfUtils::GetTrailingZeros(int32_t x) noexcept
1244
- {
1245
- unsigned long indx;
1246
- _BitScanForward(&indx, (unsigned long) x);
1247
- return (int32_t) indx;
1248
- }
1249
- #endif
1250
-
1251
- //--------------------------------------------------------------------------------------------------
1252
- /// \brief Prints state information for tracing versions of converters.
1253
- ///
1254
- /// \param curr
1255
- /// The current DFA state.
1256
- /// \param type
1257
- /// The character class of the lookahead input octet.
1258
- /// \param unit
1259
- /// The lookahead input octet.
1260
- /// \param next
1261
- /// The next DFA state, based on the current state and lookahead character class.
1262
- //--------------------------------------------------------------------------------------------------
1263
- //
1264
- void
1265
- UtfUtils::PrintStateData(State curr, CharClass type, uint32_t unit, State next)
1266
- {
1267
- uint32_t currState = ((uint32_t) curr) / 12;
1268
- uint32_t nextState = ((uint32_t) next) / 12;
1269
- uint32_t unitValue = unit & 0xFF;
1270
-
1271
- printf("[%s, %s (0x%02X)] ==>> %s\n", smStateNames[currState],
1272
- smClassNames[type], unitValue, smStateNames[nextState]);
1273
- }
1274
-
1275
- } //- Namespace uu
1276
- SIMDUTF_UNTARGET_REGION