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.
- package/android/build.gradle +5 -1
- package/cpp/argon2/HybridArgon2.cpp +10 -3
- package/cpp/blake3/HybridBlake3.cpp +5 -3
- package/cpp/cipher/CCMCipher.cpp +29 -16
- package/cpp/cipher/CCMCipher.hpp +2 -4
- package/cpp/cipher/ChaCha20Cipher.cpp +14 -18
- package/cpp/cipher/ChaCha20Cipher.hpp +2 -4
- package/cpp/cipher/ChaCha20Poly1305Cipher.cpp +34 -23
- package/cpp/cipher/ChaCha20Poly1305Cipher.hpp +2 -4
- package/cpp/cipher/GCMCipher.cpp +14 -15
- package/cpp/cipher/HybridCipher.cpp +39 -36
- package/cpp/cipher/HybridCipher.hpp +17 -1
- package/cpp/cipher/HybridRsaCipher.cpp +74 -29
- package/cpp/cipher/OCBCipher.cpp +4 -3
- package/cpp/cipher/XChaCha20Poly1305Cipher.cpp +14 -13
- package/cpp/cipher/XSalsa20Cipher.cpp +72 -6
- package/cpp/cipher/XSalsa20Cipher.hpp +25 -3
- package/cpp/cipher/XSalsa20Poly1305Cipher.cpp +21 -25
- package/cpp/dh/HybridDiffieHellman.cpp +29 -0
- package/cpp/ec/HybridEcKeyPair.cpp +35 -33
- package/cpp/ec/HybridEcKeyPair.hpp +3 -7
- package/cpp/ecdh/HybridECDH.cpp +23 -0
- package/cpp/ed25519/HybridEdKeyPair.cpp +73 -117
- package/cpp/ed25519/HybridEdKeyPair.hpp +5 -9
- package/cpp/hash/HybridHash.cpp +5 -7
- package/cpp/hkdf/HybridHkdf.cpp +6 -4
- package/cpp/hmac/HybridHmac.cpp +4 -6
- package/cpp/kmac/HybridKmac.cpp +4 -4
- package/cpp/mldsa/HybridMlDsaKeyPair.cpp +37 -49
- package/cpp/mlkem/HybridMlKemKeyPair.cpp +39 -43
- package/cpp/pbkdf2/HybridPbkdf2.cpp +7 -8
- package/cpp/rsa/HybridRsaKeyPair.cpp +5 -8
- package/cpp/rsa/HybridRsaKeyPair.hpp +4 -7
- package/cpp/scrypt/HybridScrypt.cpp +6 -4
- package/cpp/sign/HybridSignHandle.cpp +25 -68
- package/cpp/sign/HybridVerifyHandle.cpp +23 -60
- package/cpp/utils/HybridUtils.cpp +183 -43
- package/cpp/utils/HybridUtils.hpp +9 -2
- package/cpp/utils/QuickCryptoUtils.hpp +72 -0
- package/lib/commonjs/argon2.js +51 -2
- package/lib/commonjs/argon2.js.map +1 -1
- package/lib/commonjs/cipher.js +109 -11
- package/lib/commonjs/cipher.js.map +1 -1
- package/lib/commonjs/dsa.js +8 -2
- package/lib/commonjs/dsa.js.map +1 -1
- package/lib/commonjs/hash.js +15 -5
- package/lib/commonjs/hash.js.map +1 -1
- package/lib/commonjs/hkdf.js +33 -6
- package/lib/commonjs/hkdf.js.map +1 -1
- package/lib/commonjs/hmac.js +15 -5
- package/lib/commonjs/hmac.js.map +1 -1
- package/lib/commonjs/keys/publicCipher.js +10 -4
- package/lib/commonjs/keys/publicCipher.js.map +1 -1
- package/lib/commonjs/random.js +11 -2
- package/lib/commonjs/random.js.map +1 -1
- package/lib/commonjs/rsa.js +12 -5
- package/lib/commonjs/rsa.js.map +1 -1
- package/lib/commonjs/scrypt.js +47 -6
- package/lib/commonjs/scrypt.js.map +1 -1
- package/lib/commonjs/subtle.js +76 -5
- package/lib/commonjs/subtle.js.map +1 -1
- package/lib/commonjs/utils/cipher.js +18 -7
- package/lib/commonjs/utils/cipher.js.map +1 -1
- package/lib/commonjs/utils/conversion.js +33 -9
- package/lib/commonjs/utils/conversion.js.map +1 -1
- package/lib/commonjs/utils/timingSafeEqual.js +7 -2
- package/lib/commonjs/utils/timingSafeEqual.js.map +1 -1
- package/lib/commonjs/x509certificate.js +6 -6
- package/lib/commonjs/x509certificate.js.map +1 -1
- package/lib/module/argon2.js +51 -2
- package/lib/module/argon2.js.map +1 -1
- package/lib/module/cipher.js +109 -11
- package/lib/module/cipher.js.map +1 -1
- package/lib/module/dsa.js +8 -2
- package/lib/module/dsa.js.map +1 -1
- package/lib/module/hash.js +15 -5
- package/lib/module/hash.js.map +1 -1
- package/lib/module/hkdf.js +33 -6
- package/lib/module/hkdf.js.map +1 -1
- package/lib/module/hmac.js +15 -5
- package/lib/module/hmac.js.map +1 -1
- package/lib/module/keys/publicCipher.js +10 -4
- package/lib/module/keys/publicCipher.js.map +1 -1
- package/lib/module/random.js +11 -2
- package/lib/module/random.js.map +1 -1
- package/lib/module/rsa.js +11 -4
- package/lib/module/rsa.js.map +1 -1
- package/lib/module/scrypt.js +47 -6
- package/lib/module/scrypt.js.map +1 -1
- package/lib/module/subtle.js +76 -5
- package/lib/module/subtle.js.map +1 -1
- package/lib/module/utils/cipher.js +18 -7
- package/lib/module/utils/cipher.js.map +1 -1
- package/lib/module/utils/conversion.js +33 -9
- package/lib/module/utils/conversion.js.map +1 -1
- package/lib/module/utils/timingSafeEqual.js +8 -3
- package/lib/module/utils/timingSafeEqual.js.map +1 -1
- package/lib/module/x509certificate.js +6 -6
- package/lib/module/x509certificate.js.map +1 -1
- package/lib/typescript/argon2.d.ts.map +1 -1
- package/lib/typescript/cipher.d.ts +2 -2
- package/lib/typescript/cipher.d.ts.map +1 -1
- package/lib/typescript/dsa.d.ts.map +1 -1
- package/lib/typescript/hash.d.ts +2 -2
- package/lib/typescript/hash.d.ts.map +1 -1
- package/lib/typescript/hkdf.d.ts.map +1 -1
- package/lib/typescript/hmac.d.ts +2 -2
- package/lib/typescript/hmac.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +1 -1
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/keys/publicCipher.d.ts.map +1 -1
- package/lib/typescript/random.d.ts.map +1 -1
- package/lib/typescript/rsa.d.ts.map +1 -1
- package/lib/typescript/scrypt.d.ts.map +1 -1
- package/lib/typescript/specs/utils.nitro.d.ts +0 -2
- package/lib/typescript/specs/utils.nitro.d.ts.map +1 -1
- package/lib/typescript/subtle.d.ts.map +1 -1
- package/lib/typescript/utils/cipher.d.ts +13 -1
- package/lib/typescript/utils/cipher.d.ts.map +1 -1
- package/lib/typescript/utils/conversion.d.ts +9 -6
- package/lib/typescript/utils/conversion.d.ts.map +1 -1
- package/lib/typescript/utils/timingSafeEqual.d.ts.map +1 -1
- package/lib/typescript/x509certificate.d.ts.map +1 -1
- package/nitrogen/generated/shared/c++/HybridUtilsSpec.cpp +0 -2
- package/nitrogen/generated/shared/c++/HybridUtilsSpec.hpp +0 -3
- package/package.json +37 -5
- package/src/argon2.ts +80 -2
- package/src/cipher.ts +139 -15
- package/src/dsa.ts +11 -2
- package/src/hash.ts +17 -7
- package/src/hkdf.ts +44 -6
- package/src/hmac.ts +17 -7
- package/src/keys/publicCipher.ts +10 -4
- package/src/random.ts +11 -2
- package/src/rsa.ts +18 -4
- package/src/scrypt.ts +73 -6
- package/src/specs/utils.nitro.ts +0 -2
- package/src/subtle.ts +90 -8
- package/src/utils/cipher.ts +30 -8
- package/src/utils/conversion.ts +58 -20
- package/src/utils/timingSafeEqual.ts +8 -3
- package/src/x509certificate.ts +5 -6
- package/deps/blake3/.cargo/config.toml +0 -2
- package/deps/blake3/.git-blame-ignore-revs +0 -2
- package/deps/blake3/.github/workflows/build_b3sum.py +0 -38
- package/deps/blake3/.github/workflows/ci.yml +0 -491
- package/deps/blake3/.github/workflows/tag.yml +0 -43
- package/deps/blake3/.github/workflows/upload_github_release_asset.py +0 -73
- package/deps/blake3/CONTRIBUTING.md +0 -31
- package/deps/blake3/Cargo.toml +0 -135
- package/deps/blake3/b3sum/Cargo.lock +0 -513
- package/deps/blake3/b3sum/Cargo.toml +0 -26
- package/deps/blake3/b3sum/README.md +0 -72
- package/deps/blake3/b3sum/src/main.rs +0 -564
- package/deps/blake3/b3sum/src/unit_tests.rs +0 -235
- package/deps/blake3/b3sum/tests/cli_tests.rs +0 -680
- package/deps/blake3/b3sum/what_does_check_do.md +0 -176
- package/deps/blake3/benches/bench.rs +0 -623
- package/deps/blake3/build.rs +0 -389
- package/deps/blake3/c/CMakeLists.txt +0 -383
- package/deps/blake3/c/CMakePresets.json +0 -73
- package/deps/blake3/c/Makefile.testing +0 -82
- package/deps/blake3/c/blake3-config.cmake.in +0 -14
- package/deps/blake3/c/blake3_avx2.c +0 -326
- package/deps/blake3/c/blake3_avx2_x86-64_unix.S +0 -1815
- package/deps/blake3/c/blake3_avx2_x86-64_windows_gnu.S +0 -1817
- package/deps/blake3/c/blake3_avx2_x86-64_windows_msvc.asm +0 -1828
- package/deps/blake3/c/blake3_avx512.c +0 -1388
- package/deps/blake3/c/blake3_avx512_x86-64_unix.S +0 -4824
- package/deps/blake3/c/blake3_avx512_x86-64_windows_gnu.S +0 -2615
- package/deps/blake3/c/blake3_avx512_x86-64_windows_msvc.asm +0 -2634
- package/deps/blake3/c/blake3_c_rust_bindings/Cargo.toml +0 -32
- package/deps/blake3/c/blake3_c_rust_bindings/README.md +0 -4
- package/deps/blake3/c/blake3_c_rust_bindings/benches/bench.rs +0 -477
- package/deps/blake3/c/blake3_c_rust_bindings/build.rs +0 -253
- package/deps/blake3/c/blake3_c_rust_bindings/cross_test.sh +0 -31
- package/deps/blake3/c/blake3_c_rust_bindings/src/lib.rs +0 -333
- package/deps/blake3/c/blake3_c_rust_bindings/src/test.rs +0 -696
- package/deps/blake3/c/blake3_sse2.c +0 -566
- package/deps/blake3/c/blake3_sse2_x86-64_unix.S +0 -2291
- package/deps/blake3/c/blake3_sse2_x86-64_windows_gnu.S +0 -2332
- package/deps/blake3/c/blake3_sse2_x86-64_windows_msvc.asm +0 -2350
- package/deps/blake3/c/blake3_sse41.c +0 -560
- package/deps/blake3/c/blake3_sse41_x86-64_unix.S +0 -2028
- package/deps/blake3/c/blake3_sse41_x86-64_windows_gnu.S +0 -2069
- package/deps/blake3/c/blake3_sse41_x86-64_windows_msvc.asm +0 -2089
- package/deps/blake3/c/blake3_tbb.cpp +0 -37
- package/deps/blake3/c/dependencies/CMakeLists.txt +0 -3
- package/deps/blake3/c/dependencies/tbb/CMakeLists.txt +0 -28
- package/deps/blake3/c/example.c +0 -36
- package/deps/blake3/c/example_tbb.c +0 -57
- package/deps/blake3/c/libblake3.pc.in +0 -12
- package/deps/blake3/c/main.c +0 -166
- package/deps/blake3/c/test.py +0 -97
- package/deps/blake3/media/B3.svg +0 -70
- package/deps/blake3/media/BLAKE3.svg +0 -85
- package/deps/blake3/media/speed.svg +0 -1474
- package/deps/blake3/reference_impl/Cargo.toml +0 -8
- package/deps/blake3/reference_impl/README.md +0 -14
- package/deps/blake3/reference_impl/reference_impl.rs +0 -374
- package/deps/blake3/src/ffi_avx2.rs +0 -65
- package/deps/blake3/src/ffi_avx512.rs +0 -169
- package/deps/blake3/src/ffi_neon.rs +0 -82
- package/deps/blake3/src/ffi_sse2.rs +0 -126
- package/deps/blake3/src/ffi_sse41.rs +0 -126
- package/deps/blake3/src/guts.rs +0 -60
- package/deps/blake3/src/hazmat.rs +0 -704
- package/deps/blake3/src/io.rs +0 -64
- package/deps/blake3/src/join.rs +0 -92
- package/deps/blake3/src/lib.rs +0 -1835
- package/deps/blake3/src/platform.rs +0 -587
- package/deps/blake3/src/portable.rs +0 -198
- package/deps/blake3/src/rust_avx2.rs +0 -474
- package/deps/blake3/src/rust_sse2.rs +0 -775
- package/deps/blake3/src/rust_sse41.rs +0 -766
- package/deps/blake3/src/test.rs +0 -1049
- package/deps/blake3/src/traits.rs +0 -227
- package/deps/blake3/src/wasm32_simd.rs +0 -794
- package/deps/blake3/test_vectors/Cargo.toml +0 -19
- package/deps/blake3/test_vectors/cross_test.sh +0 -25
- package/deps/blake3/test_vectors/src/bin/generate.rs +0 -4
- package/deps/blake3/test_vectors/src/lib.rs +0 -350
- package/deps/blake3/test_vectors/test_vectors.json +0 -217
- package/deps/blake3/tools/compiler_version/Cargo.toml +0 -7
- package/deps/blake3/tools/compiler_version/build.rs +0 -6
- package/deps/blake3/tools/compiler_version/src/main.rs +0 -27
- package/deps/blake3/tools/instruction_set_support/Cargo.toml +0 -6
- package/deps/blake3/tools/instruction_set_support/src/main.rs +0 -10
- package/deps/blake3/tools/release.md +0 -16
- package/deps/ncrypto/.bazelignore +0 -4
- package/deps/ncrypto/.bazelrc +0 -1
- package/deps/ncrypto/.bazelversion +0 -1
- package/deps/ncrypto/.clang-format +0 -111
- package/deps/ncrypto/.github/workflows/bazel.yml +0 -58
- package/deps/ncrypto/.github/workflows/commitlint.yml +0 -16
- package/deps/ncrypto/.github/workflows/linter.yml +0 -38
- package/deps/ncrypto/.github/workflows/macos.yml +0 -43
- package/deps/ncrypto/.github/workflows/release-please.yml +0 -16
- package/deps/ncrypto/.github/workflows/ubuntu.yml +0 -128
- package/deps/ncrypto/.github/workflows/visual-studio.yml +0 -49
- package/deps/ncrypto/.python-version +0 -1
- package/deps/ncrypto/.release-please-manifest.json +0 -3
- package/deps/ncrypto/BUILD.bazel +0 -44
- package/deps/ncrypto/CHANGELOG.md +0 -37
- package/deps/ncrypto/CMakeLists.txt +0 -79
- package/deps/ncrypto/MODULE.bazel +0 -16
- package/deps/ncrypto/MODULE.bazel.lock +0 -461
- package/deps/ncrypto/cmake/CPM.cmake +0 -1225
- package/deps/ncrypto/cmake/ncrypto-flags.cmake +0 -17
- package/deps/ncrypto/ncrypto.pc.in +0 -10
- package/deps/ncrypto/patches/0001-Expose-libdecrepit-so-NodeJS-can-use-it-for-ncrypto.patch +0 -28
- package/deps/ncrypto/pyproject.toml +0 -38
- package/deps/ncrypto/release-please-config.json +0 -11
- package/deps/ncrypto/src/CMakeLists.txt +0 -40
- package/deps/ncrypto/tests/BUILD.bazel +0 -11
- package/deps/ncrypto/tests/CMakeLists.txt +0 -7
- package/deps/ncrypto/tests/basic.cpp +0 -856
- package/deps/ncrypto/tools/run-clang-format.sh +0 -42
- package/deps/simdutf/.clang-format +0 -4
- package/deps/simdutf/.github/ISSUE_TEMPLATE/bug_report.md +0 -62
- package/deps/simdutf/.github/ISSUE_TEMPLATE/config.yml +0 -1
- package/deps/simdutf/.github/ISSUE_TEMPLATE/feature_request.md +0 -35
- package/deps/simdutf/.github/ISSUE_TEMPLATE/standard-issue-template.md +0 -29
- package/deps/simdutf/.github/pull_request_template.md +0 -51
- package/deps/simdutf/.github/workflows/aarch64.yml +0 -39
- package/deps/simdutf/.github/workflows/alpine.yml +0 -27
- package/deps/simdutf/.github/workflows/amalgamation_demos.yml +0 -34
- package/deps/simdutf/.github/workflows/armv7.yml +0 -32
- package/deps/simdutf/.github/workflows/atomic_fuzz.yml +0 -25
- package/deps/simdutf/.github/workflows/cifuzz.yml +0 -37
- package/deps/simdutf/.github/workflows/clangformat.yml +0 -36
- package/deps/simdutf/.github/workflows/debian-latestcxxstandards.yml +0 -40
- package/deps/simdutf/.github/workflows/debian.yml +0 -33
- package/deps/simdutf/.github/workflows/documentation.yml +0 -36
- package/deps/simdutf/.github/workflows/emscripten.yml +0 -19
- package/deps/simdutf/.github/workflows/loongarch64-gcc-14.2.yml +0 -39
- package/deps/simdutf/.github/workflows/macos-latest.yml +0 -29
- package/deps/simdutf/.github/workflows/msys2-clang.yml +0 -48
- package/deps/simdutf/.github/workflows/msys2.yml +0 -50
- package/deps/simdutf/.github/workflows/ppc64le.yml +0 -29
- package/deps/simdutf/.github/workflows/rvv-1024-clang-18.yml +0 -35
- package/deps/simdutf/.github/workflows/rvv-128-clang-17.yml +0 -35
- package/deps/simdutf/.github/workflows/rvv-256-gcc-14.yml +0 -31
- package/deps/simdutf/.github/workflows/s390x.yml +0 -29
- package/deps/simdutf/.github/workflows/selective-amalgamation.yml +0 -29
- package/deps/simdutf/.github/workflows/typos.yml +0 -19
- package/deps/simdutf/.github/workflows/ubuntu22-cxx20.yml +0 -30
- package/deps/simdutf/.github/workflows/ubuntu22.yml +0 -32
- package/deps/simdutf/.github/workflows/ubuntu22_gcc12.yml +0 -27
- package/deps/simdutf/.github/workflows/ubuntu22sani.yml +0 -29
- package/deps/simdutf/.github/workflows/ubuntu24-cxxstandards.yml +0 -34
- package/deps/simdutf/.github/workflows/ubuntu24-unsignedchar.yml +0 -34
- package/deps/simdutf/.github/workflows/ubuntu24.yml +0 -32
- package/deps/simdutf/.github/workflows/ubuntu24sani.yml +0 -36
- package/deps/simdutf/.github/workflows/ubuntu24sani_clang.yml +0 -29
- package/deps/simdutf/.github/workflows/vs17-arm-ci.yml +0 -21
- package/deps/simdutf/.github/workflows/vs17-ci-cxx20.yml +0 -41
- package/deps/simdutf/.github/workflows/vs17-ci.yml +0 -41
- package/deps/simdutf/.github/workflows/vs17-clang-ci.yml +0 -41
- package/deps/simdutf/.github/workflows/vs17-cxxstandards.yml +0 -36
- package/deps/simdutf/AI_USAGE_POLICY.md +0 -56
- package/deps/simdutf/AUTHORS +0 -6
- package/deps/simdutf/CMakeLists.txt +0 -231
- package/deps/simdutf/CONTRIBUTING.md +0 -214
- package/deps/simdutf/CONTRIBUTORS +0 -1
- package/deps/simdutf/Doxyfile +0 -2584
- package/deps/simdutf/Makefile.crosscompile +0 -54
- package/deps/simdutf/README-RVV.md +0 -16
- package/deps/simdutf/SECURITY.md +0 -8
- package/deps/simdutf/benchmarks/CMakeLists.txt +0 -101
- package/deps/simdutf/benchmarks/alignment.cpp +0 -150
- package/deps/simdutf/benchmarks/base64/CMakeLists.txt +0 -30
- package/deps/simdutf/benchmarks/base64/benchmark_base64.cpp +0 -875
- package/deps/simdutf/benchmarks/base64/libbase64_spaces.h +0 -49
- package/deps/simdutf/benchmarks/base64/node_base64.h +0 -227
- package/deps/simdutf/benchmarks/base64/openssl3_base64.h +0 -334
- package/deps/simdutf/benchmarks/benchmark.cpp +0 -65
- package/deps/simdutf/benchmarks/benchmark_to_well_formed_utf16.cpp +0 -347
- package/deps/simdutf/benchmarks/competition/.clang-format-ignore +0 -5
- package/deps/simdutf/benchmarks/competition/CppCon2018/utf_utils.cpp +0 -1276
- package/deps/simdutf/benchmarks/competition/CppCon2018/utf_utils.h +0 -595
- package/deps/simdutf/benchmarks/competition/README.md +0 -7
- package/deps/simdutf/benchmarks/competition/hoehrmann/hoehrmann.h +0 -91
- package/deps/simdutf/benchmarks/competition/inoue2008/inoue_utf8_to_utf16.h +0 -444
- package/deps/simdutf/benchmarks/competition/inoue2008/inoue_utf8_to_utf16_tables.h +0 -13183
- package/deps/simdutf/benchmarks/competition/inoue2008/script.py +0 -73
- package/deps/simdutf/benchmarks/competition/llvm/ConvertUTF.cpp +0 -738
- package/deps/simdutf/benchmarks/competition/llvm/ConvertUTF.h +0 -293
- package/deps/simdutf/benchmarks/competition/u8u16/COPYRIGHT +0 -8
- package/deps/simdutf/benchmarks/competition/u8u16/Makefile +0 -44
- package/deps/simdutf/benchmarks/competition/u8u16/OSL3.0.txt +0 -169
- package/deps/simdutf/benchmarks/competition/u8u16/Profiling/BOM_Profiler.h +0 -148
- package/deps/simdutf/benchmarks/competition/u8u16/Profiling/i386_timer.h +0 -45
- package/deps/simdutf/benchmarks/competition/u8u16/Profiling/ppc_timer.c +0 -34
- package/deps/simdutf/benchmarks/competition/u8u16/README +0 -56
- package/deps/simdutf/benchmarks/competition/u8u16/config/config_defs.h +0 -43
- package/deps/simdutf/benchmarks/competition/u8u16/config/g4_config.h +0 -27
- package/deps/simdutf/benchmarks/competition/u8u16/config/mmx_config.h +0 -16
- package/deps/simdutf/benchmarks/competition/u8u16/config/p4_config.h +0 -18
- package/deps/simdutf/benchmarks/competition/u8u16/config/p4_ideal_config.h +0 -16
- package/deps/simdutf/benchmarks/competition/u8u16/config/spu_config.h +0 -28
- package/deps/simdutf/benchmarks/competition/u8u16/config/ssse3_config.h +0 -20
- package/deps/simdutf/benchmarks/competition/u8u16/iconv_u8u16.c +0 -2
- package/deps/simdutf/benchmarks/competition/u8u16/lib/altivec_simd.h +0 -440
- package/deps/simdutf/benchmarks/competition/u8u16/lib/libgen/make_basic_ops.py +0 -121
- package/deps/simdutf/benchmarks/competition/u8u16/lib/libgen/make_half_operand_versions.py +0 -158
- package/deps/simdutf/benchmarks/competition/u8u16/lib/libgen/make_test.py +0 -270
- package/deps/simdutf/benchmarks/competition/u8u16/lib/mmx_simd.h +0 -141
- package/deps/simdutf/benchmarks/competition/u8u16/lib/mmx_simd_basic.h +0 -216
- package/deps/simdutf/benchmarks/competition/u8u16/lib/mmx_simd_built_in.h +0 -119
- package/deps/simdutf/benchmarks/competition/u8u16/lib/mmx_simd_modified.h +0 -2430
- package/deps/simdutf/benchmarks/competition/u8u16/lib/outline.txt +0 -39
- package/deps/simdutf/benchmarks/competition/u8u16/lib/spu_simd.h +0 -421
- package/deps/simdutf/benchmarks/competition/u8u16/lib/sse_simd.h +0 -836
- package/deps/simdutf/benchmarks/competition/u8u16/lib/stdint.h +0 -222
- package/deps/simdutf/benchmarks/competition/u8u16/libu8u16_BE.c +0 -4
- package/deps/simdutf/benchmarks/competition/u8u16/libu8u16_LE.c +0 -5
- package/deps/simdutf/benchmarks/competition/u8u16/proto/u8u16.py +0 -390
- package/deps/simdutf/benchmarks/competition/u8u16/src/Makefile +0 -18
- package/deps/simdutf/benchmarks/competition/u8u16/src/bytelex.h +0 -448
- package/deps/simdutf/benchmarks/competition/u8u16/src/charsets/ASCII_EBCDIC.h +0 -284
- package/deps/simdutf/benchmarks/competition/u8u16/src/libu8u16.c +0 -1975
- package/deps/simdutf/benchmarks/competition/u8u16/src/libu8u16.pdf +0 -0
- package/deps/simdutf/benchmarks/competition/u8u16/src/libu8u16.w +0 -2263
- package/deps/simdutf/benchmarks/competition/u8u16/src/multiliteral.h +0 -239
- package/deps/simdutf/benchmarks/competition/u8u16/src/u8u16.c +0 -232
- package/deps/simdutf/benchmarks/competition/u8u16/src/x8x16.c +0 -194
- package/deps/simdutf/benchmarks/competition/u8u16/src/xml_error.c +0 -193
- package/deps/simdutf/benchmarks/competition/u8u16/src/xml_error.h +0 -167
- package/deps/simdutf/benchmarks/competition/u8u16/src/xmldecl.c +0 -288
- package/deps/simdutf/benchmarks/competition/u8u16/src/xmldecl.h +0 -117
- package/deps/simdutf/benchmarks/competition/u8u16/u8u16_g4.c +0 -2
- package/deps/simdutf/benchmarks/competition/u8u16/u8u16_mmx.c +0 -2
- package/deps/simdutf/benchmarks/competition/u8u16/u8u16_p4.c +0 -3
- package/deps/simdutf/benchmarks/competition/u8u16/u8u16_p4_ideal.c +0 -2
- package/deps/simdutf/benchmarks/competition/u8u16/u8u16_spu.c +0 -2
- package/deps/simdutf/benchmarks/competition/u8u16/u8u16_ssse3.c +0 -3
- package/deps/simdutf/benchmarks/competition/u8u16/x8x16_p4.c +0 -2
- package/deps/simdutf/benchmarks/competition/utf8lut/LICENSE +0 -23
- package/deps/simdutf/benchmarks/competition/utf8lut/data/test_minimal.txt +0 -44
- package/deps/simdutf/benchmarks/competition/utf8lut/readme.md +0 -106
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_clang_corr_tests.cmd +0 -11
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_clang_corr_tests.sh +0 -13
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_gcc_corr_tests.sh +0 -13
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_gcc_example.sh +0 -13
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_gcc_file_conv.sh +0 -14
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_gcc_iconv_lib.sh +0 -11
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_gcc_iconv_sample.sh +0 -8
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_mingw_corr_tests.cmd +0 -12
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_mingw_example.cmd +0 -13
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_mingw_file_conv.cmd +0 -14
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_mingw_iconv_lib.cmd +0 -11
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_mingw_iconv_sample.cmd +0 -8
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_msvc_corr_tests.cmd +0 -11
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_msvc_example.cmd +0 -12
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_msvc_file_conv.cmd +0 -13
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_msvc_iconv_lib.cmd +0 -10
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/build_msvc_iconv_sample.cmd +0 -9
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/html_table.py +0 -25
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/measure.py +0 -94
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/resize.py +0 -20
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/wipe_all.cmd +0 -2
- package/deps/simdutf/benchmarks/competition/utf8lut/scripts/wipe_interm.cmd +0 -1
- package/deps/simdutf/benchmarks/competition/utf8lut/src/base/CustomMemcpy.h +0 -75
- package/deps/simdutf/benchmarks/competition/utf8lut/src/base/PerfDefs.h +0 -47
- package/deps/simdutf/benchmarks/competition/utf8lut/src/base/Timing.cpp +0 -17
- package/deps/simdutf/benchmarks/competition/utf8lut/src/base/Timing.h +0 -76
- package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/AllProcessors.cpp +0 -35
- package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/BaseBufferProcessor.cpp +0 -117
- package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/BaseBufferProcessor.h +0 -210
- package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/BufferDecoder.h +0 -158
- package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/BufferEncoder.h +0 -104
- package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/ProcessorPlugins.h +0 -334
- package/deps/simdutf/benchmarks/competition/utf8lut/src/buffer/ProcessorSelector.h +0 -186
- package/deps/simdutf/benchmarks/competition/utf8lut/src/core/DecoderLut.cpp +0 -140
- package/deps/simdutf/benchmarks/competition/utf8lut/src/core/DecoderLut.h +0 -42
- package/deps/simdutf/benchmarks/competition/utf8lut/src/core/DecoderProcess.h +0 -100
- package/deps/simdutf/benchmarks/competition/utf8lut/src/core/Dfa.h +0 -57
- package/deps/simdutf/benchmarks/competition/utf8lut/src/core/EncoderLut.cpp +0 -85
- package/deps/simdutf/benchmarks/competition/utf8lut/src/core/EncoderLut.h +0 -27
- package/deps/simdutf/benchmarks/competition/utf8lut/src/core/EncoderProcess.h +0 -126
- package/deps/simdutf/benchmarks/competition/utf8lut/src/core/ProcessTrivial.h +0 -108
- package/deps/simdutf/benchmarks/competition/utf8lut/src/iconv/iconv.cpp +0 -139
- package/deps/simdutf/benchmarks/competition/utf8lut/src/iconv/iconv.h +0 -74
- package/deps/simdutf/benchmarks/competition/utf8lut/src/message/MessageConverter.cpp +0 -65
- package/deps/simdutf/benchmarks/competition/utf8lut/src/message/MessageConverter.h +0 -91
- package/deps/simdutf/benchmarks/competition/utf8lut/src/tests/CorrectnessTests.cpp +0 -772
- package/deps/simdutf/benchmarks/competition/utf8lut/src/tests/Example.cpp +0 -12
- package/deps/simdutf/benchmarks/competition/utf8lut/src/tests/FileConverter.cpp +0 -486
- package/deps/simdutf/benchmarks/competition/utf8lut/src/tests/iconv_sample.c +0 -162
- package/deps/simdutf/benchmarks/competition/utf8lut/src/utf8lut.h +0 -15
- package/deps/simdutf/benchmarks/competition/utf8sse4/fromutf8-sse.cpp +0 -292
- package/deps/simdutf/benchmarks/competition/utfcpp/LICENSE +0 -23
- package/deps/simdutf/benchmarks/competition/utfcpp/README.md +0 -1503
- package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8/checked.h +0 -335
- package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8/core.h +0 -338
- package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8/cpp11.h +0 -103
- package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8/cpp17.h +0 -103
- package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8/unchecked.h +0 -274
- package/deps/simdutf/benchmarks/competition/utfcpp/source/utf8.h +0 -34
- package/deps/simdutf/benchmarks/dataset/README.md +0 -155
- package/deps/simdutf/benchmarks/dataset/emoji.txt +0 -204
- package/deps/simdutf/benchmarks/dataset/scripts/utf8type.py +0 -40
- package/deps/simdutf/benchmarks/dataset/wikipedia_mars/Makefile +0 -80
- package/deps/simdutf/benchmarks/dataset/wikipedia_mars/convert_to_utf6.py +0 -20
- package/deps/simdutf/benchmarks/find/CMakeLists.txt +0 -6
- package/deps/simdutf/benchmarks/find/findbenchmark.cpp +0 -63
- package/deps/simdutf/benchmarks/find/findbenchmarker.h +0 -46
- package/deps/simdutf/benchmarks/shortbench.cpp +0 -555
- package/deps/simdutf/benchmarks/src/CMakeLists.txt +0 -52
- package/deps/simdutf/benchmarks/src/apple_arm_events.h +0 -1104
- package/deps/simdutf/benchmarks/src/benchmark.cpp +0 -3899
- package/deps/simdutf/benchmarks/src/benchmark.h +0 -317
- package/deps/simdutf/benchmarks/src/benchmark_base.cpp +0 -144
- package/deps/simdutf/benchmarks/src/benchmark_base.h +0 -98
- package/deps/simdutf/benchmarks/src/cmdline.cpp +0 -176
- package/deps/simdutf/benchmarks/src/cmdline.h +0 -35
- package/deps/simdutf/benchmarks/src/event_counter.h +0 -162
- package/deps/simdutf/benchmarks/src/linux-perf-events.h +0 -104
- package/deps/simdutf/benchmarks/stream.cpp +0 -209
- package/deps/simdutf/benchmarks/threaded.cpp +0 -123
- package/deps/simdutf/cmake/CPM.cmake +0 -1363
- package/deps/simdutf/cmake/JoinPaths.cmake +0 -23
- package/deps/simdutf/cmake/add_cpp_test.cmake +0 -68
- package/deps/simdutf/cmake/simdutf-config.cmake.in +0 -2
- package/deps/simdutf/cmake/simdutf-flags.cmake +0 -26
- package/deps/simdutf/cmake/toolchains-ci/riscv64-linux-gnu.cmake +0 -4
- package/deps/simdutf/cmake/toolchains-dev/README.md +0 -32
- package/deps/simdutf/cmake/toolchains-dev/aarch64.cmake +0 -14
- package/deps/simdutf/cmake/toolchains-dev/loongarch64.cmake +0 -22
- package/deps/simdutf/cmake/toolchains-dev/powerpc64.cmake +0 -16
- package/deps/simdutf/cmake/toolchains-dev/powerpc64le.cmake +0 -16
- package/deps/simdutf/cmake/toolchains-dev/riscv64.cmake +0 -16
- package/deps/simdutf/cmake/toolchains-dev/rvv-spike.cmake +0 -38
- package/deps/simdutf/doc/avx512.png +0 -0
- package/deps/simdutf/doc/logo.png +0 -0
- package/deps/simdutf/doc/logo.svg +0 -165
- package/deps/simdutf/doc/node2023.png +0 -0
- package/deps/simdutf/doc/shortinput.md +0 -78
- package/deps/simdutf/doc/utf16utf8.png +0 -0
- package/deps/simdutf/doc/utf8utf16.png +0 -0
- package/deps/simdutf/doc/widelogo.png +0 -0
- package/deps/simdutf/doxygen.py +0 -50
- package/deps/simdutf/fuzz/.clang-format +0 -9
- package/deps/simdutf/fuzz/CMakeLists.txt +0 -45
- package/deps/simdutf/fuzz/README.md +0 -168
- package/deps/simdutf/fuzz/atomic_base64.cpp +0 -448
- package/deps/simdutf/fuzz/base64.cpp +0 -278
- package/deps/simdutf/fuzz/build.sh +0 -83
- package/deps/simdutf/fuzz/conversion.cpp +0 -669
- package/deps/simdutf/fuzz/helpers/.clang-format-ignore +0 -1
- package/deps/simdutf/fuzz/helpers/common.h +0 -135
- package/deps/simdutf/fuzz/helpers/nameof.hpp +0 -1258
- package/deps/simdutf/fuzz/main.cpp +0 -72
- package/deps/simdutf/fuzz/minimize_and_cleanse.sh +0 -87
- package/deps/simdutf/fuzz/misc.cpp +0 -216
- package/deps/simdutf/fuzz/random_fuzz.sh +0 -154
- package/deps/simdutf/fuzz/roundtrip.cpp +0 -588
- package/deps/simdutf/fuzz/safe_conversion.cpp +0 -104
- package/deps/simdutf/riscv/Dockerfile +0 -16
- package/deps/simdutf/riscv/README.md +0 -24
- package/deps/simdutf/riscv/remove-docker-station +0 -8
- package/deps/simdutf/riscv/run-docker-station +0 -31
- package/deps/simdutf/scripts/.flake8 +0 -2
- package/deps/simdutf/scripts/Makefile +0 -2
- package/deps/simdutf/scripts/README_ADD_FUNCTION.md +0 -49
- package/deps/simdutf/scripts/add_function.py +0 -330
- package/deps/simdutf/scripts/amalgamation_tests.py +0 -156
- package/deps/simdutf/scripts/base64/Makefile +0 -2
- package/deps/simdutf/scripts/base64/README.md +0 -2
- package/deps/simdutf/scripts/base64/avx512.py +0 -76
- package/deps/simdutf/scripts/base64/neon_decode.py +0 -143
- package/deps/simdutf/scripts/base64/neon_generate_lut.py +0 -101
- package/deps/simdutf/scripts/base64/sse.py +0 -252
- package/deps/simdutf/scripts/base64/sseregular.py +0 -160
- package/deps/simdutf/scripts/base64/sseurl.py +0 -283
- package/deps/simdutf/scripts/base64/table.py +0 -59
- package/deps/simdutf/scripts/base64bench_print.py +0 -145
- package/deps/simdutf/scripts/benchmark-all.py +0 -119
- package/deps/simdutf/scripts/benchmark_print.py +0 -324
- package/deps/simdutf/scripts/check_feature_macros.py +0 -156
- package/deps/simdutf/scripts/check_typos.sh +0 -13
- package/deps/simdutf/scripts/clang_format.sh +0 -35
- package/deps/simdutf/scripts/clang_format_docker.sh +0 -38
- package/deps/simdutf/scripts/common.py +0 -24
- package/deps/simdutf/scripts/compilation_benchmark.py +0 -55
- package/deps/simdutf/scripts/compile_many_variations.sh +0 -64
- package/deps/simdutf/scripts/create_latex_table.py +0 -62
- package/deps/simdutf/scripts/docker/Dockerfile +0 -14
- package/deps/simdutf/scripts/docker/Makefile +0 -9
- package/deps/simdutf/scripts/docker/README.md +0 -30
- package/deps/simdutf/scripts/docker/llvm.gpg +0 -0
- package/deps/simdutf/scripts/ppc64_convert_utf16_to_utf8.py +0 -155
- package/deps/simdutf/scripts/prepare_doxygen.sh +0 -21
- package/deps/simdutf/scripts/release.py +0 -197
- package/deps/simdutf/scripts/shortinputplots.py +0 -97
- package/deps/simdutf/scripts/sse_convert_utf16_to_utf8.py +0 -422
- package/deps/simdutf/scripts/sse_convert_utf32_to_utf16.py +0 -105
- package/deps/simdutf/scripts/sse_utf8_utf16_decode.py +0 -186
- package/deps/simdutf/scripts/sse_validate_utf16le_proof.py +0 -137
- package/deps/simdutf/scripts/sse_validate_utf16le_testcases.py +0 -129
- package/deps/simdutf/scripts/table.py +0 -207
- package/deps/simdutf/scripts/tests/new.txt +0 -33
- package/deps/simdutf/scripts/tests/old.txt +0 -33
- package/deps/simdutf/scripts/tests/results.txt +0 -272
- package/deps/simdutf/simdutf.pc.in +0 -11
- package/deps/simdutf/singleheader/.flake8 +0 -2
- package/deps/simdutf/singleheader/CMakeLists.txt +0 -64
- package/deps/simdutf/singleheader/README-dev.md +0 -81
- package/deps/simdutf/singleheader/README.md +0 -19
- package/deps/simdutf/singleheader/amalgamate.py +0 -513
- package/deps/simdutf/singleheader/amalgamation_demo.c +0 -59
- package/deps/simdutf/singleheader/amalgamation_demo.cpp +0 -54
- package/deps/simdutf/singleheader/test-features.py +0 -262
- package/deps/simdutf/src/CMakeLists.txt +0 -78
- package/deps/simdutf/tests/CMakeLists.txt +0 -483
- package/deps/simdutf/tests/atomic_base64_tests.cpp +0 -2845
- package/deps/simdutf/tests/base64_tests.cpp +0 -3617
- package/deps/simdutf/tests/basic_fuzzer.cpp +0 -805
- package/deps/simdutf/tests/bele_tests.cpp +0 -182
- package/deps/simdutf/tests/constexpr_base64_tests.cpp +0 -387
- package/deps/simdutf/tests/convert_latin1_to_utf16be_tests.cpp +0 -52
- package/deps/simdutf/tests/convert_latin1_to_utf16le_tests.cpp +0 -80
- package/deps/simdutf/tests/convert_latin1_to_utf32_tests.cpp +0 -66
- package/deps/simdutf/tests/convert_latin1_to_utf8_tests.cpp +0 -120
- package/deps/simdutf/tests/convert_utf16_to_utf8_safe_tests.cpp +0 -203
- package/deps/simdutf/tests/convert_utf16_to_utf8_with_replacement_tests.cpp +0 -276
- package/deps/simdutf/tests/convert_utf16be_to_latin1_tests.cpp +0 -109
- package/deps/simdutf/tests/convert_utf16be_to_latin1_tests_with_errors.cpp +0 -136
- package/deps/simdutf/tests/convert_utf16be_to_utf32_tests.cpp +0 -193
- package/deps/simdutf/tests/convert_utf16be_to_utf32_with_errors_tests.cpp +0 -381
- package/deps/simdutf/tests/convert_utf16be_to_utf8_tests.cpp +0 -259
- package/deps/simdutf/tests/convert_utf16be_to_utf8_with_errors_tests.cpp +0 -266
- package/deps/simdutf/tests/convert_utf16le_to_latin1_tests.cpp +0 -148
- package/deps/simdutf/tests/convert_utf16le_to_latin1_tests_with_errors.cpp +0 -176
- package/deps/simdutf/tests/convert_utf16le_to_utf32_tests.cpp +0 -213
- package/deps/simdutf/tests/convert_utf16le_to_utf32_with_errors_tests.cpp +0 -318
- package/deps/simdutf/tests/convert_utf16le_to_utf8_tests.cpp +0 -343
- package/deps/simdutf/tests/convert_utf16le_to_utf8_with_errors_tests.cpp +0 -271
- package/deps/simdutf/tests/convert_utf32_to_latin1_tests.cpp +0 -111
- package/deps/simdutf/tests/convert_utf32_to_latin1_with_errors_tests.cpp +0 -96
- package/deps/simdutf/tests/convert_utf32_to_utf16be_tests.cpp +0 -148
- package/deps/simdutf/tests/convert_utf32_to_utf16be_with_errors_tests.cpp +0 -192
- package/deps/simdutf/tests/convert_utf32_to_utf16le_tests.cpp +0 -166
- package/deps/simdutf/tests/convert_utf32_to_utf16le_with_errors_tests.cpp +0 -215
- package/deps/simdutf/tests/convert_utf32_to_utf8_tests.cpp +0 -181
- package/deps/simdutf/tests/convert_utf32_to_utf8_with_errors_tests.cpp +0 -261
- package/deps/simdutf/tests/convert_utf8_to_latin1_tests.cpp +0 -516
- package/deps/simdutf/tests/convert_utf8_to_latin1_with_errors_tests.cpp +0 -579
- package/deps/simdutf/tests/convert_utf8_to_utf16be_tests.cpp +0 -412
- package/deps/simdutf/tests/convert_utf8_to_utf16be_with_errors_tests.cpp +0 -480
- package/deps/simdutf/tests/convert_utf8_to_utf16le_tests.cpp +0 -671
- package/deps/simdutf/tests/convert_utf8_to_utf16le_with_errors_tests.cpp +0 -455
- package/deps/simdutf/tests/convert_utf8_to_utf32_tests.cpp +0 -1204
- package/deps/simdutf/tests/convert_utf8_to_utf32_with_errors_tests.cpp +0 -337
- package/deps/simdutf/tests/convert_valid_utf16be_to_latin1_tests.cpp +0 -37
- package/deps/simdutf/tests/convert_valid_utf16be_to_utf32_tests.cpp +0 -97
- package/deps/simdutf/tests/convert_valid_utf16be_to_utf8_tests.cpp +0 -126
- package/deps/simdutf/tests/convert_valid_utf16le_to_latin1_tests.cpp +0 -71
- package/deps/simdutf/tests/convert_valid_utf16le_to_utf32_tests.cpp +0 -122
- package/deps/simdutf/tests/convert_valid_utf16le_to_utf8_tests.cpp +0 -244
- package/deps/simdutf/tests/convert_valid_utf32_to_latin1_tests.cpp +0 -49
- package/deps/simdutf/tests/convert_valid_utf32_to_utf16be_tests.cpp +0 -92
- package/deps/simdutf/tests/convert_valid_utf32_to_utf16le_tests.cpp +0 -114
- package/deps/simdutf/tests/convert_valid_utf32_to_utf8_tests.cpp +0 -109
- package/deps/simdutf/tests/convert_valid_utf8_to_latin1_tests.cpp +0 -84
- package/deps/simdutf/tests/convert_valid_utf8_to_utf16be_tests.cpp +0 -124
- package/deps/simdutf/tests/convert_valid_utf8_to_utf16le_tests.cpp +0 -221
- package/deps/simdutf/tests/convert_valid_utf8_to_utf32_tests.cpp +0 -155
- package/deps/simdutf/tests/count_utf16be.cpp +0 -64
- package/deps/simdutf/tests/count_utf16le.cpp +0 -61
- package/deps/simdutf/tests/count_utf8.cpp +0 -87
- package/deps/simdutf/tests/detect_encodings_tests.cpp +0 -312
- package/deps/simdutf/tests/embed/valid_utf8.txt +0 -1
- package/deps/simdutf/tests/embed_tests.cpp +0 -22
- package/deps/simdutf/tests/find_tests.cpp +0 -77
- package/deps/simdutf/tests/fixed_string_tests.cpp +0 -153
- package/deps/simdutf/tests/helpers/CMakeLists.txt +0 -25
- package/deps/simdutf/tests/helpers/compiletime_conversions.h +0 -222
- package/deps/simdutf/tests/helpers/fixed_string.h +0 -267
- package/deps/simdutf/tests/helpers/random_int.cpp +0 -30
- package/deps/simdutf/tests/helpers/random_int.h +0 -39
- package/deps/simdutf/tests/helpers/random_utf16.cpp +0 -123
- package/deps/simdutf/tests/helpers/random_utf16.h +0 -52
- package/deps/simdutf/tests/helpers/random_utf32.cpp +0 -41
- package/deps/simdutf/tests/helpers/random_utf32.h +0 -40
- package/deps/simdutf/tests/helpers/random_utf8.cpp +0 -93
- package/deps/simdutf/tests/helpers/random_utf8.h +0 -36
- package/deps/simdutf/tests/helpers/test.cpp +0 -231
- package/deps/simdutf/tests/helpers/test.h +0 -193
- package/deps/simdutf/tests/helpers/transcode_test_base.cpp +0 -1257
- package/deps/simdutf/tests/helpers/transcode_test_base.h +0 -683
- package/deps/simdutf/tests/helpers/utf16.h +0 -27
- package/deps/simdutf/tests/installation_tests/find/CMakeLists.txt +0 -43
- package/deps/simdutf/tests/installation_tests/from_fetch/CMakeLists.txt +0 -47
- package/deps/simdutf/tests/internal_tests.cpp +0 -27
- package/deps/simdutf/tests/null_safety_tests.cpp +0 -94
- package/deps/simdutf/tests/random_fuzzer.cpp +0 -779
- package/deps/simdutf/tests/readme_tests.cpp +0 -274
- package/deps/simdutf/tests/reference/CMakeLists.txt +0 -23
- package/deps/simdutf/tests/reference/decode_utf16.h +0 -81
- package/deps/simdutf/tests/reference/decode_utf32.h +0 -47
- package/deps/simdutf/tests/reference/encode_latin1.cpp +0 -1
- package/deps/simdutf/tests/reference/encode_latin1.h +0 -32
- package/deps/simdutf/tests/reference/encode_utf16.cpp +0 -49
- package/deps/simdutf/tests/reference/encode_utf16.h +0 -20
- package/deps/simdutf/tests/reference/encode_utf32.cpp +0 -1
- package/deps/simdutf/tests/reference/encode_utf32.h +0 -36
- package/deps/simdutf/tests/reference/encode_utf8.cpp +0 -1
- package/deps/simdutf/tests/reference/encode_utf8.h +0 -40
- package/deps/simdutf/tests/reference/validate_utf16.cpp +0 -60
- package/deps/simdutf/tests/reference/validate_utf16.h +0 -14
- package/deps/simdutf/tests/reference/validate_utf16_to_latin1.cpp +0 -35
- package/deps/simdutf/tests/reference/validate_utf16_to_latin1.h +0 -13
- package/deps/simdutf/tests/reference/validate_utf32.cpp +0 -27
- package/deps/simdutf/tests/reference/validate_utf32.h +0 -12
- package/deps/simdutf/tests/reference/validate_utf32_to_latin1.cpp +0 -27
- package/deps/simdutf/tests/reference/validate_utf32_to_latin1.h +0 -12
- package/deps/simdutf/tests/reference/validate_utf8.cpp +0 -82
- package/deps/simdutf/tests/reference/validate_utf8.h +0 -11
- package/deps/simdutf/tests/reference/validate_utf8_to_latin1.cpp +0 -43
- package/deps/simdutf/tests/reference/validate_utf8_to_latin1.h +0 -12
- package/deps/simdutf/tests/select_implementation.cpp +0 -43
- package/deps/simdutf/tests/simdutf_c_tests.cpp +0 -244
- package/deps/simdutf/tests/span_tests.cpp +0 -401
- package/deps/simdutf/tests/special_tests.cpp +0 -559
- package/deps/simdutf/tests/straight_c_test.c +0 -187
- package/deps/simdutf/tests/text_encoding_tests.cpp +0 -77
- package/deps/simdutf/tests/to_well_formed_utf16_tests.cpp +0 -377
- package/deps/simdutf/tests/utf8_length_from_utf16_tests.cpp +0 -202
- package/deps/simdutf/tests/validate_ascii_basic_tests.cpp +0 -165
- package/deps/simdutf/tests/validate_ascii_with_errors_tests.cpp +0 -77
- package/deps/simdutf/tests/validate_utf16be_basic_tests.cpp +0 -175
- package/deps/simdutf/tests/validate_utf16be_with_errors_tests.cpp +0 -188
- package/deps/simdutf/tests/validate_utf16le_basic_tests.cpp +0 -268
- package/deps/simdutf/tests/validate_utf16le_with_errors_tests.cpp +0 -274
- package/deps/simdutf/tests/validate_utf32_basic_tests.cpp +0 -92
- package/deps/simdutf/tests/validate_utf32_with_errors_tests.cpp +0 -114
- package/deps/simdutf/tests/validate_utf8_basic_tests.cpp +0 -178
- package/deps/simdutf/tests/validate_utf8_brute_force_tests.cpp +0 -88
- package/deps/simdutf/tests/validate_utf8_puzzler_tests.cpp +0 -33
- package/deps/simdutf/tests/validate_utf8_with_errors_tests.cpp +0 -228
- package/deps/simdutf/tools/CMakeLists.txt +0 -85
- package/deps/simdutf/tools/fastbase64.cpp +0 -250
- package/deps/simdutf/tools/sutf.cpp +0 -556
- package/deps/simdutf/tools/sutf.h +0 -40
- package/lib/tsconfig.tsbuildinfo +0 -1
|
@@ -1,1257 +0,0 @@
|
|
|
1
|
-
#include "transcode_test_base.h"
|
|
2
|
-
#include "simdutf.h"
|
|
3
|
-
|
|
4
|
-
#ifndef SIMDUTF_IS_BIG_ENDIAN
|
|
5
|
-
#error "SIMDUTF_IS_BIG_ENDIAN should be defined."
|
|
6
|
-
#endif
|
|
7
|
-
|
|
8
|
-
#include <stdexcept>
|
|
9
|
-
#include <string>
|
|
10
|
-
#include <vector>
|
|
11
|
-
#include <array>
|
|
12
|
-
|
|
13
|
-
#include <tests/reference/encode_utf8.h>
|
|
14
|
-
#include <tests/reference/encode_utf16.h>
|
|
15
|
-
#include <tests/reference/encode_utf32.h>
|
|
16
|
-
#include <tests/reference/encode_latin1.h>
|
|
17
|
-
#include <tests/reference/decode_utf16.h>
|
|
18
|
-
#include <tests/reference/decode_utf32.h>
|
|
19
|
-
#include <tests/reference/validate_utf8.h>
|
|
20
|
-
#include <tests/reference/validate_utf16.h>
|
|
21
|
-
#include <tests/reference/validate_utf32.h>
|
|
22
|
-
#include <tests/reference/validate_utf8_to_latin1.h>
|
|
23
|
-
#include <tests/reference/validate_utf16_to_latin1.h>
|
|
24
|
-
#include <tests/reference/validate_utf32_to_latin1.h>
|
|
25
|
-
|
|
26
|
-
namespace simdutf {
|
|
27
|
-
namespace tests {
|
|
28
|
-
namespace helpers {
|
|
29
|
-
|
|
30
|
-
// C++11 does not have mismatch.
|
|
31
|
-
template <class InputIt1, class InputIt2>
|
|
32
|
-
std::pair<InputIt1, InputIt2> our_mismatch(InputIt1 first1, InputIt1 last1,
|
|
33
|
-
InputIt2 first2, InputIt2 last2) {
|
|
34
|
-
while (first1 != last1 && first2 != last2 && *first1 == *first2) {
|
|
35
|
-
++first1, ++first2;
|
|
36
|
-
}
|
|
37
|
-
return std::make_pair(first1, first2);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
void transcode_test_base::encode_utf8(uint32_t codepoint,
|
|
41
|
-
std::vector<char> &target) {
|
|
42
|
-
::simdutf::tests::reference::utf8::encode(
|
|
43
|
-
codepoint, [&target](uint8_t byte) { target.push_back(byte); });
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
void transcode_test_base::encode_utf16(uint32_t codepoint,
|
|
47
|
-
std::vector<char16_t> &target) {
|
|
48
|
-
char16_t W1;
|
|
49
|
-
char16_t W2;
|
|
50
|
-
switch (::simdutf::tests::reference::utf16::encode(codepoint, W1, W2)) {
|
|
51
|
-
case 1:
|
|
52
|
-
if (!match_system(utf16_endianness)) {
|
|
53
|
-
W1 = char16_t((uint16_t(W1) << 8) | (uint16_t(W1) >> 8));
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
target.push_back(W1);
|
|
57
|
-
break;
|
|
58
|
-
|
|
59
|
-
case 2:
|
|
60
|
-
if (!match_system(utf16_endianness)) {
|
|
61
|
-
W1 = char16_t((uint16_t(W1) << 8) | (uint16_t(W1) >> 8));
|
|
62
|
-
W2 = char16_t((uint16_t(W2) << 8) | (uint16_t(W2) >> 8));
|
|
63
|
-
}
|
|
64
|
-
target.push_back(W1);
|
|
65
|
-
target.push_back(W2);
|
|
66
|
-
break;
|
|
67
|
-
|
|
68
|
-
default:
|
|
69
|
-
throw std::invalid_argument(
|
|
70
|
-
std::string("Value can't be encoded as UTF-16 code-point : ") +
|
|
71
|
-
std::to_string(codepoint));
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
void transcode_test_base::encode_latin1(uint32_t codepoint,
|
|
76
|
-
std::vector<char> &target) {
|
|
77
|
-
::simdutf::tests::reference::latin1::encode(
|
|
78
|
-
codepoint, [&target](uint8_t byte) { target.push_back(byte); });
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
void transcode_test_base::encode_utf32(uint32_t codepoint,
|
|
82
|
-
std::vector<char32_t> &target) {
|
|
83
|
-
::simdutf::tests::reference::utf32::encode(
|
|
84
|
-
codepoint, [&target](uint32_t word) { target.push_back(word); });
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* transcode_latin1_to_utf8_test_base can be used to test Latin1 => UTF8
|
|
89
|
-
* transcoding.
|
|
90
|
-
*/
|
|
91
|
-
transcode_latin1_to_utf8_test_base::transcode_latin1_to_utf8_test_base(
|
|
92
|
-
GenerateCodepoint generate, size_t input_size) {
|
|
93
|
-
while (input_latin1.size() < input_size) {
|
|
94
|
-
const uint32_t codepoint = generate();
|
|
95
|
-
prepare_input(codepoint);
|
|
96
|
-
}
|
|
97
|
-
output_utf8.resize(reference_output_utf8.size() + output_size_margin);
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
void transcode_latin1_to_utf8_test_base::prepare_input(uint32_t codepoint) {
|
|
101
|
-
encode_latin1(codepoint, input_latin1);
|
|
102
|
-
encode_utf8(codepoint, reference_output_utf8);
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
bool transcode_latin1_to_utf8_test_base::is_input_valid() const {
|
|
106
|
-
return true; //
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
bool transcode_latin1_to_utf8_test_base::validate(size_t saved_chars) const {
|
|
110
|
-
if (!is_input_valid()) {
|
|
111
|
-
if (saved_chars != 0) {
|
|
112
|
-
printf("input Latin1 string is not valid, but conversion routine "
|
|
113
|
-
"returned %zu, indicating a valid input\n",
|
|
114
|
-
saved_chars);
|
|
115
|
-
return false;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
if (saved_chars == 0) {
|
|
119
|
-
if (is_input_valid()) {
|
|
120
|
-
printf("input Latin1 string is valid, but conversion routine returned 0, "
|
|
121
|
-
"indicating input error");
|
|
122
|
-
return false;
|
|
123
|
-
}
|
|
124
|
-
return true;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
auto dump = [saved_chars](const char *title, const std::vector<char> &array) {
|
|
128
|
-
printf("%s", title);
|
|
129
|
-
for (size_t i = 0; i < saved_chars; i++) {
|
|
130
|
-
printf(" %02x", (uint8_t)array[i]);
|
|
131
|
-
}
|
|
132
|
-
putchar('\n');
|
|
133
|
-
};
|
|
134
|
-
|
|
135
|
-
if (saved_chars != reference_output_utf8.size()) {
|
|
136
|
-
printf("wrong saved bytes value: procedure returned %zu bytes, it should "
|
|
137
|
-
"be %zu\n",
|
|
138
|
-
size_t(saved_chars), size_t(reference_output_utf8.size()));
|
|
139
|
-
dump("expected :", reference_output_utf8);
|
|
140
|
-
dump("actual :", output_utf8);
|
|
141
|
-
return false;
|
|
142
|
-
}
|
|
143
|
-
// Note that, in general, output_utf8.size() will not matched saved_chars.
|
|
144
|
-
|
|
145
|
-
// At this point, we know that the lengths are the same so std::mismatch is
|
|
146
|
-
// enough to tell us whether the strings are identical.
|
|
147
|
-
auto it =
|
|
148
|
-
our_mismatch(output_utf8.begin(), output_utf8.begin() + saved_chars,
|
|
149
|
-
reference_output_utf8.begin(), reference_output_utf8.end());
|
|
150
|
-
if (it.first != output_utf8.begin() + saved_chars) {
|
|
151
|
-
printf("mismatched output at %zu: actual value 0x%02x, expected 0x%02x\n",
|
|
152
|
-
size_t(std::distance(output_utf8.begin(), it.first)),
|
|
153
|
-
uint8_t(*it.first), uint8_t(*it.second));
|
|
154
|
-
|
|
155
|
-
dump("expected :", reference_output_utf8);
|
|
156
|
-
dump("actual :", output_utf8);
|
|
157
|
-
for (size_t i = 0; i < reference_output_utf8.size(); i++) {
|
|
158
|
-
if (reference_output_utf8[i] != output_utf8[i]) {
|
|
159
|
-
printf(" ==> ");
|
|
160
|
-
}
|
|
161
|
-
printf("at %zu expected 0x%04x 0x%04x\n ", i,
|
|
162
|
-
uint8_t(reference_output_utf8[i]), uint8_t(output_utf8[i]));
|
|
163
|
-
}
|
|
164
|
-
return false;
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
return true;
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
/**
|
|
171
|
-
* transcode_latin1_to_utf16_test_base can be used to test Latin1 => utf16
|
|
172
|
-
* transcoding.
|
|
173
|
-
*/
|
|
174
|
-
transcode_latin1_to_utf16_test_base::transcode_latin1_to_utf16_test_base(
|
|
175
|
-
endianness utf16_endianness, GenerateCodepoint generate, size_t input_size)
|
|
176
|
-
: transcode_test_base{utf16_endianness} {
|
|
177
|
-
while (input_latin1.size() < input_size) {
|
|
178
|
-
const uint32_t codepoint = generate();
|
|
179
|
-
prepare_input(codepoint);
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
output_utf16.resize(reference_output_utf16.size() + output_size_margin);
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
void transcode_latin1_to_utf16_test_base::prepare_input(uint32_t codepoint) {
|
|
186
|
-
encode_latin1(codepoint, input_latin1);
|
|
187
|
-
|
|
188
|
-
encode_utf16(codepoint, reference_output_utf16);
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
bool transcode_latin1_to_utf16_test_base::is_input_valid() const {
|
|
192
|
-
return true;
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
bool transcode_latin1_to_utf16_test_base::validate(size_t saved_chars) const {
|
|
196
|
-
if (!is_input_valid()) {
|
|
197
|
-
if (saved_chars != 0) {
|
|
198
|
-
printf("input Latin1 string is not valid, but conversion routine "
|
|
199
|
-
"returned %zu, indicating a valid input\n",
|
|
200
|
-
saved_chars);
|
|
201
|
-
return false;
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
if (saved_chars == 0) {
|
|
205
|
-
if (is_input_valid()) {
|
|
206
|
-
printf("input Latin1 string is valid, but conversion routine returned 0, "
|
|
207
|
-
"indicating input error");
|
|
208
|
-
return false;
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
return true;
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
auto dump = [saved_chars](const char *title,
|
|
215
|
-
const std::vector<char16_t> &array) {
|
|
216
|
-
printf("%s", title);
|
|
217
|
-
for (size_t i = 0; i < saved_chars; i++) {
|
|
218
|
-
printf(
|
|
219
|
-
" %04x",
|
|
220
|
-
(uint16_t)array[i]); // Use %04x to print 16-bit hexadecimal numbers
|
|
221
|
-
}
|
|
222
|
-
putchar('\n');
|
|
223
|
-
};
|
|
224
|
-
|
|
225
|
-
if (saved_chars != reference_output_utf16.size()) {
|
|
226
|
-
printf("wrong saved bytes value: procedure returned %zu bytes, it should "
|
|
227
|
-
"be %zu\n",
|
|
228
|
-
size_t(saved_chars), size_t(reference_output_utf16.size()));
|
|
229
|
-
dump("expected :", reference_output_utf16);
|
|
230
|
-
dump("actual :", output_utf16);
|
|
231
|
-
return false;
|
|
232
|
-
}
|
|
233
|
-
// Note that, in general, output_utf16.size() will not matched saved_chars.
|
|
234
|
-
|
|
235
|
-
// At this point, we know that the lengths are the same so std::mismatch is
|
|
236
|
-
// enough to tell us whether the strings are identical.
|
|
237
|
-
auto it = our_mismatch(
|
|
238
|
-
output_utf16.begin(), output_utf16.begin() + saved_chars,
|
|
239
|
-
reference_output_utf16.begin(), reference_output_utf16.end());
|
|
240
|
-
if (it.first != output_utf16.begin() + saved_chars) {
|
|
241
|
-
printf("mismatched output at %zu: actual value 0x%02x, expected 0x%02x\n",
|
|
242
|
-
size_t(std::distance(output_utf16.begin(), it.first)),
|
|
243
|
-
uint16_t(*it.first), uint16_t(*it.second));
|
|
244
|
-
dump("expected :", reference_output_utf16);
|
|
245
|
-
dump("actual :", output_utf16);
|
|
246
|
-
for (size_t i = 0; i < reference_output_utf16.size(); i++) {
|
|
247
|
-
if (reference_output_utf16[i] != output_utf16[i]) {
|
|
248
|
-
printf(" ==> ");
|
|
249
|
-
}
|
|
250
|
-
printf("at %zu expected 0x%04x 0x%04x\n ", i,
|
|
251
|
-
uint16_t(reference_output_utf16[i]), uint16_t(output_utf16[i]));
|
|
252
|
-
}
|
|
253
|
-
return false;
|
|
254
|
-
}
|
|
255
|
-
return true;
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
/**
|
|
259
|
-
* transcode_latin1_to_utf32_test_base can be used to test UTF-32 => UTF-16LE
|
|
260
|
-
* transcoding.
|
|
261
|
-
*/
|
|
262
|
-
transcode_latin1_to_utf32_test_base::transcode_latin1_to_utf32_test_base(
|
|
263
|
-
GenerateCodepoint generate, size_t input_size) {
|
|
264
|
-
while (input_latin1.size() < input_size) {
|
|
265
|
-
const uint32_t codepoint = generate();
|
|
266
|
-
prepare_input(codepoint);
|
|
267
|
-
}
|
|
268
|
-
output_utf32.resize(reference_output_utf32.size() + output_size_margin);
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
void transcode_latin1_to_utf32_test_base::prepare_input(uint32_t codepoint) {
|
|
272
|
-
encode_latin1(codepoint, input_latin1);
|
|
273
|
-
encode_utf32(codepoint, reference_output_utf32);
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
bool transcode_latin1_to_utf32_test_base::is_input_valid() const {
|
|
277
|
-
return true;
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
bool transcode_latin1_to_utf32_test_base::validate(size_t saved_chars) const {
|
|
281
|
-
if (!is_input_valid()) {
|
|
282
|
-
if (saved_chars != 0) {
|
|
283
|
-
printf("input Latin1 string is not valid, but conversion routine "
|
|
284
|
-
"returned %zu, indicating a valid input\n",
|
|
285
|
-
saved_chars);
|
|
286
|
-
return false;
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
if (saved_chars == 0) {
|
|
290
|
-
if (is_input_valid()) {
|
|
291
|
-
printf("input Latin1 string is valid, but conversion routine returned 0, "
|
|
292
|
-
"indicating input error");
|
|
293
|
-
return false;
|
|
294
|
-
}
|
|
295
|
-
return true;
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
auto dump = [saved_chars](const char *title,
|
|
299
|
-
const std::vector<char32_t> &array) {
|
|
300
|
-
printf("%s", title);
|
|
301
|
-
for (size_t i = 0; i < saved_chars; i++) {
|
|
302
|
-
printf(" %02x", (unsigned int)array[i]);
|
|
303
|
-
}
|
|
304
|
-
putchar('\n');
|
|
305
|
-
};
|
|
306
|
-
|
|
307
|
-
if (saved_chars != reference_output_utf32.size()) {
|
|
308
|
-
printf("wrong saved bytes value: procedure returned %zu bytes, it should "
|
|
309
|
-
"be %zu\n",
|
|
310
|
-
size_t(saved_chars), size_t(reference_output_utf32.size()));
|
|
311
|
-
dump("expected :", reference_output_utf32);
|
|
312
|
-
dump("actual :", output_utf32);
|
|
313
|
-
return false;
|
|
314
|
-
}
|
|
315
|
-
// Note that, in general, output_utf32.size() will not matched saved_chars.
|
|
316
|
-
|
|
317
|
-
// At this point, we know that the lengths are the same so std::mismatch is
|
|
318
|
-
// enough to tell us whether the strings are identical.
|
|
319
|
-
auto it = our_mismatch(
|
|
320
|
-
output_utf32.begin(), output_utf32.begin() + saved_chars,
|
|
321
|
-
reference_output_utf32.begin(), reference_output_utf32.end());
|
|
322
|
-
if (it.first != output_utf32.begin() + saved_chars) {
|
|
323
|
-
printf("mismatched output at %zu: actual value 0x%02x, expected 0x%02x\n",
|
|
324
|
-
size_t(std::distance(output_utf32.begin(), it.first)),
|
|
325
|
-
uint8_t(*it.first), uint8_t(*it.second));
|
|
326
|
-
|
|
327
|
-
dump("expected :", reference_output_utf32);
|
|
328
|
-
dump("actual :", output_utf32);
|
|
329
|
-
for (size_t i = 0; i < reference_output_utf32.size(); i++) {
|
|
330
|
-
if (reference_output_utf32[i] != output_utf32[i]) {
|
|
331
|
-
printf(" ==> ");
|
|
332
|
-
}
|
|
333
|
-
printf("at %zu expected 0x%04x 0x%04x\n ", i,
|
|
334
|
-
uint8_t(reference_output_utf32[i]), uint8_t(output_utf32[i]));
|
|
335
|
-
}
|
|
336
|
-
return false;
|
|
337
|
-
}
|
|
338
|
-
return true;
|
|
339
|
-
}
|
|
340
|
-
|
|
341
|
-
/**
|
|
342
|
-
* transcode_utf8_to_latin1_test_base can be used to test UTF-32 => UTF-16LE
|
|
343
|
-
* transcoding.
|
|
344
|
-
*/
|
|
345
|
-
transcode_utf8_to_latin1_test_base::transcode_utf8_to_latin1_test_base(
|
|
346
|
-
GenerateCodepoint generate, size_t input_size) {
|
|
347
|
-
while (input_utf8.size() < input_size) {
|
|
348
|
-
const uint32_t codepoint = generate();
|
|
349
|
-
prepare_input(codepoint);
|
|
350
|
-
}
|
|
351
|
-
output_latin1.resize(reference_output_latin1.size() + output_size_margin);
|
|
352
|
-
}
|
|
353
|
-
|
|
354
|
-
void transcode_utf8_to_latin1_test_base::prepare_input(uint32_t codepoint) {
|
|
355
|
-
encode_utf8(codepoint, input_utf8);
|
|
356
|
-
encode_latin1(codepoint, reference_output_latin1);
|
|
357
|
-
}
|
|
358
|
-
|
|
359
|
-
bool transcode_utf8_to_latin1_test_base::is_input_valid() const {
|
|
360
|
-
return simdutf::tests::reference::validate_utf8_to_latin1(input_utf8.data(),
|
|
361
|
-
input_utf8.size());
|
|
362
|
-
}
|
|
363
|
-
|
|
364
|
-
bool transcode_utf8_to_latin1_test_base::validate(size_t saved_chars) const {
|
|
365
|
-
if (!is_input_valid()) {
|
|
366
|
-
if (saved_chars != 0) {
|
|
367
|
-
printf("input UTF-8 string is not valid, but conversion routine returned "
|
|
368
|
-
"%zu, indicating a valid input\n",
|
|
369
|
-
saved_chars);
|
|
370
|
-
return false;
|
|
371
|
-
}
|
|
372
|
-
}
|
|
373
|
-
if (saved_chars == 0) {
|
|
374
|
-
if (is_input_valid()) {
|
|
375
|
-
printf("input UTF-8 string is valid, but conversion routine returned 0, "
|
|
376
|
-
"indicating input error");
|
|
377
|
-
return false;
|
|
378
|
-
}
|
|
379
|
-
|
|
380
|
-
return true;
|
|
381
|
-
}
|
|
382
|
-
|
|
383
|
-
auto dump = [saved_chars](const char *title, const std::vector<char> &array) {
|
|
384
|
-
printf("%s", title);
|
|
385
|
-
for (size_t i = 0; i < saved_chars; i++) {
|
|
386
|
-
printf(" %02x", (char)array[i]);
|
|
387
|
-
}
|
|
388
|
-
putchar('\n');
|
|
389
|
-
};
|
|
390
|
-
|
|
391
|
-
if (saved_chars != reference_output_latin1.size()) {
|
|
392
|
-
printf("wrong saved bytes value: procedure returned %zu bytes, it should "
|
|
393
|
-
"be %zu\n",
|
|
394
|
-
size_t(saved_chars), size_t(reference_output_latin1.size()));
|
|
395
|
-
|
|
396
|
-
dump("expected :", reference_output_latin1);
|
|
397
|
-
dump("actual :", output_latin1);
|
|
398
|
-
return false;
|
|
399
|
-
}
|
|
400
|
-
// Note that, in general, output_latin1.size() will not matched saved_chars.
|
|
401
|
-
|
|
402
|
-
// At this point, we know that the lengths are the same so std::mismatch is
|
|
403
|
-
// enough to tell us whether the strings are identical.
|
|
404
|
-
auto it = our_mismatch(
|
|
405
|
-
output_latin1.begin(), output_latin1.begin() + saved_chars,
|
|
406
|
-
reference_output_latin1.begin(), reference_output_latin1.end());
|
|
407
|
-
if (it.first != output_latin1.begin() + saved_chars) {
|
|
408
|
-
printf("mismatched output at %zu: actual value 0x%02x, expected 0x%02x\n",
|
|
409
|
-
size_t(std::distance(output_latin1.begin(), it.first)),
|
|
410
|
-
uint8_t(*it.first), uint8_t(*it.second));
|
|
411
|
-
|
|
412
|
-
dump("expected :", reference_output_latin1);
|
|
413
|
-
dump("actual :", output_latin1);
|
|
414
|
-
for (size_t i = 0; i < reference_output_latin1.size(); i++) {
|
|
415
|
-
if (reference_output_latin1[i] != output_latin1[i]) {
|
|
416
|
-
printf(" ==> ");
|
|
417
|
-
}
|
|
418
|
-
printf("at %zu expected 0x%04x 0x%04x\n ", i,
|
|
419
|
-
uint8_t(reference_output_latin1[i]), uint8_t(output_latin1[i]));
|
|
420
|
-
}
|
|
421
|
-
return false;
|
|
422
|
-
}
|
|
423
|
-
|
|
424
|
-
return true;
|
|
425
|
-
}
|
|
426
|
-
|
|
427
|
-
/**
|
|
428
|
-
* transcode_utf16_to_latin1_test_base can be used to test UTF-16 => Latin1
|
|
429
|
-
* transcoding.
|
|
430
|
-
*/
|
|
431
|
-
transcode_utf16_to_latin1_test_base::transcode_utf16_to_latin1_test_base(
|
|
432
|
-
endianness utf16_endianness, GenerateCodepoint generate, size_t input_size)
|
|
433
|
-
: transcode_test_base{utf16_endianness} {
|
|
434
|
-
while (input_utf16.size() < input_size) {
|
|
435
|
-
const uint32_t codepoint = generate();
|
|
436
|
-
prepare_input(codepoint);
|
|
437
|
-
}
|
|
438
|
-
output_latin1.resize(reference_output_latin1.size() + output_size_margin);
|
|
439
|
-
}
|
|
440
|
-
|
|
441
|
-
transcode_utf16_to_latin1_test_base::transcode_utf16_to_latin1_test_base(
|
|
442
|
-
endianness utf16_endianness, const std::vector<char16_t> &input_utf16)
|
|
443
|
-
: transcode_test_base{utf16_endianness}, input_utf16{input_utf16} {
|
|
444
|
-
auto consume = [this](const uint32_t codepoint) {
|
|
445
|
-
::simdutf::tests::reference::latin1::encode(
|
|
446
|
-
codepoint,
|
|
447
|
-
[this](uint32_t byte) { reference_output_latin1.push_back(byte); });
|
|
448
|
-
};
|
|
449
|
-
|
|
450
|
-
auto error_handler = [](const char16_t *, const char16_t *,
|
|
451
|
-
simdutf::tests::reference::utf16::Error) -> bool {
|
|
452
|
-
throw std::invalid_argument("Wrong UTF-16 input");
|
|
453
|
-
};
|
|
454
|
-
simdutf::tests::reference::utf16::decode(utf16_endianness, input_utf16.data(),
|
|
455
|
-
input_utf16.size(), consume,
|
|
456
|
-
error_handler);
|
|
457
|
-
output_latin1.resize(reference_output_latin1.size() + output_size_margin);
|
|
458
|
-
}
|
|
459
|
-
|
|
460
|
-
void transcode_utf16_to_latin1_test_base::prepare_input(uint32_t codepoint) {
|
|
461
|
-
encode_utf16(codepoint, input_utf16);
|
|
462
|
-
encode_latin1(codepoint, reference_output_latin1);
|
|
463
|
-
}
|
|
464
|
-
|
|
465
|
-
bool transcode_utf16_to_latin1_test_base::is_input_valid() const {
|
|
466
|
-
return simdutf::tests::reference::validate_utf16_to_latin1(
|
|
467
|
-
utf16_endianness, input_utf16.data(), input_utf16.size());
|
|
468
|
-
}
|
|
469
|
-
|
|
470
|
-
bool transcode_utf16_to_latin1_test_base::validate(size_t saved_chars) const {
|
|
471
|
-
if (!is_input_valid()) {
|
|
472
|
-
if (saved_chars != 0) {
|
|
473
|
-
printf("input UTF-16 string is not valid, but conversion routine "
|
|
474
|
-
"returned %zu, indicating a valid input\n",
|
|
475
|
-
saved_chars);
|
|
476
|
-
return false;
|
|
477
|
-
}
|
|
478
|
-
}
|
|
479
|
-
if (saved_chars == 0) {
|
|
480
|
-
if (is_input_valid()) {
|
|
481
|
-
printf("input UTF-16 string is valid, but conversion routine returned 0, "
|
|
482
|
-
"indicating input error");
|
|
483
|
-
return false;
|
|
484
|
-
}
|
|
485
|
-
|
|
486
|
-
return true;
|
|
487
|
-
}
|
|
488
|
-
|
|
489
|
-
auto dump = [saved_chars](const char *title, const std::vector<char> &array) {
|
|
490
|
-
printf("%s", title);
|
|
491
|
-
for (size_t i = 0; i < saved_chars; i++) {
|
|
492
|
-
printf(" %08x", (uint32_t)array[i]);
|
|
493
|
-
}
|
|
494
|
-
putchar('\n');
|
|
495
|
-
};
|
|
496
|
-
|
|
497
|
-
if (saved_chars != reference_output_latin1.size()) {
|
|
498
|
-
printf("wrong saved bytes value: procedure returned %zu bytes, it should "
|
|
499
|
-
"be %zu\n",
|
|
500
|
-
size_t(saved_chars), size_t(reference_output_latin1.size()));
|
|
501
|
-
|
|
502
|
-
dump("expected :", reference_output_latin1);
|
|
503
|
-
dump("actual :", output_latin1);
|
|
504
|
-
return false;
|
|
505
|
-
}
|
|
506
|
-
// Note that, in general, output_latin1.size() will not matched saved_chars.
|
|
507
|
-
|
|
508
|
-
// At this point, we know that the lengths are the same so std::mismatch is
|
|
509
|
-
// enough to tell us whether the strings are identical.
|
|
510
|
-
auto it = our_mismatch(
|
|
511
|
-
output_latin1.begin(), output_latin1.begin() + saved_chars,
|
|
512
|
-
reference_output_latin1.begin(), reference_output_latin1.end());
|
|
513
|
-
if (it.first != output_latin1.begin() + saved_chars) {
|
|
514
|
-
printf("mismatched output at %zu: actual value 0x%02x, expected 0x%02x\n",
|
|
515
|
-
size_t(std::distance(output_latin1.begin(), it.first)),
|
|
516
|
-
uint8_t(*it.first), uint8_t(*it.second));
|
|
517
|
-
|
|
518
|
-
dump("expected :", reference_output_latin1);
|
|
519
|
-
dump("actual :", output_latin1);
|
|
520
|
-
for (size_t i = 0; i < reference_output_latin1.size(); i++) {
|
|
521
|
-
if (reference_output_latin1[i] != output_latin1[i]) {
|
|
522
|
-
printf(" ==> ");
|
|
523
|
-
}
|
|
524
|
-
printf("at %zu expected 0x%08x and got 0x%08x\n ", i,
|
|
525
|
-
uint8_t(reference_output_latin1[i]), uint8_t(output_latin1[i]));
|
|
526
|
-
}
|
|
527
|
-
return false;
|
|
528
|
-
}
|
|
529
|
-
return true;
|
|
530
|
-
}
|
|
531
|
-
|
|
532
|
-
/**
|
|
533
|
-
* transcode_utf8_to_utf16_test_base can be used to test UTF-8 => UTF-16
|
|
534
|
-
* transcoding.
|
|
535
|
-
*/
|
|
536
|
-
transcode_utf8_to_utf16_test_base::transcode_utf8_to_utf16_test_base(
|
|
537
|
-
endianness utf16_endianness, GenerateCodepoint generate, size_t input_size)
|
|
538
|
-
: transcode_test_base{utf16_endianness} {
|
|
539
|
-
while (input_utf8.size() < input_size) {
|
|
540
|
-
const uint32_t codepoint = generate();
|
|
541
|
-
prepare_input(codepoint);
|
|
542
|
-
}
|
|
543
|
-
|
|
544
|
-
output_utf16.resize(reference_output_utf16.size() + output_size_margin);
|
|
545
|
-
}
|
|
546
|
-
|
|
547
|
-
void transcode_utf8_to_utf16_test_base::prepare_input(uint32_t codepoint) {
|
|
548
|
-
encode_utf8(codepoint, input_utf8);
|
|
549
|
-
encode_utf16(codepoint, reference_output_utf16);
|
|
550
|
-
}
|
|
551
|
-
|
|
552
|
-
bool transcode_utf8_to_utf16_test_base::is_input_valid() const {
|
|
553
|
-
return simdutf::tests::reference::validate_utf8(input_utf8.data(),
|
|
554
|
-
input_utf8.size());
|
|
555
|
-
}
|
|
556
|
-
|
|
557
|
-
bool transcode_utf8_to_utf16_test_base::validate(size_t saved_chars) const {
|
|
558
|
-
if (!is_input_valid()) {
|
|
559
|
-
if (saved_chars != 0) {
|
|
560
|
-
printf("input UTF-8 string is not valid, but conversion routine returned "
|
|
561
|
-
"%zu, indicating a valid input\n",
|
|
562
|
-
saved_chars);
|
|
563
|
-
return false;
|
|
564
|
-
}
|
|
565
|
-
}
|
|
566
|
-
if (saved_chars == 0) {
|
|
567
|
-
if (is_input_valid()) {
|
|
568
|
-
printf("input UTF-8 string is valid, but conversion routine returned 0, "
|
|
569
|
-
"indicating input error");
|
|
570
|
-
return false;
|
|
571
|
-
}
|
|
572
|
-
|
|
573
|
-
return true;
|
|
574
|
-
}
|
|
575
|
-
if (saved_chars != reference_output_utf16.size()) {
|
|
576
|
-
printf("wrong saved bytes value: procedure returned %zu bytes, it should "
|
|
577
|
-
"be %zu\n",
|
|
578
|
-
size_t(saved_chars), size_t(reference_output_utf16.size()));
|
|
579
|
-
return false;
|
|
580
|
-
}
|
|
581
|
-
|
|
582
|
-
// Note that, in general, output_utf16.size() will not matched saved_chars.
|
|
583
|
-
|
|
584
|
-
// At this point, we know that the lengths are the same so std::mismatch is
|
|
585
|
-
// enough to tell us whether the strings are identical.
|
|
586
|
-
auto it = our_mismatch(
|
|
587
|
-
output_utf16.begin(), output_utf16.begin() + saved_chars,
|
|
588
|
-
reference_output_utf16.begin(), reference_output_utf16.end());
|
|
589
|
-
if (it.first != output_utf16.begin() + saved_chars) {
|
|
590
|
-
printf("mismatched output at %zu: actual value 0x%04x, expected 0x%04x\n",
|
|
591
|
-
size_t(std::distance(output_utf16.begin(), it.first)),
|
|
592
|
-
uint16_t(*it.first), uint16_t(*it.second));
|
|
593
|
-
for (size_t i = 0; i < output_utf16.size(); i++) {
|
|
594
|
-
if (reference_output_utf16[i] != output_utf16[i]) {
|
|
595
|
-
printf(" ==> ");
|
|
596
|
-
}
|
|
597
|
-
printf("at %zu expected 0x%04x and got 0x%04x\n ", i,
|
|
598
|
-
uint16_t(reference_output_utf16[i]), uint16_t(output_utf16[i]));
|
|
599
|
-
}
|
|
600
|
-
|
|
601
|
-
return false;
|
|
602
|
-
}
|
|
603
|
-
|
|
604
|
-
return true;
|
|
605
|
-
}
|
|
606
|
-
|
|
607
|
-
/**
|
|
608
|
-
* transcode_utf8_to_utf32_test_base can be used to test UTF-8 => UTF-32
|
|
609
|
-
* transcoding.
|
|
610
|
-
*/
|
|
611
|
-
transcode_utf8_to_utf32_test_base::transcode_utf8_to_utf32_test_base(
|
|
612
|
-
GenerateCodepoint generate, size_t input_size) {
|
|
613
|
-
while (input_utf8.size() < input_size) {
|
|
614
|
-
const uint32_t codepoint = generate();
|
|
615
|
-
prepare_input(codepoint);
|
|
616
|
-
}
|
|
617
|
-
|
|
618
|
-
output_utf32.resize(reference_output_utf32.size() + output_size_margin);
|
|
619
|
-
}
|
|
620
|
-
|
|
621
|
-
void transcode_utf8_to_utf32_test_base::prepare_input(uint32_t codepoint) {
|
|
622
|
-
encode_utf8(codepoint, input_utf8);
|
|
623
|
-
encode_utf32(codepoint, reference_output_utf32);
|
|
624
|
-
}
|
|
625
|
-
|
|
626
|
-
bool transcode_utf8_to_utf32_test_base::is_input_valid() const {
|
|
627
|
-
return simdutf::tests::reference::validate_utf8(input_utf8.data(),
|
|
628
|
-
input_utf8.size());
|
|
629
|
-
}
|
|
630
|
-
|
|
631
|
-
bool transcode_utf8_to_utf32_test_base::validate(size_t saved_chars) const {
|
|
632
|
-
if (!is_input_valid()) {
|
|
633
|
-
if (saved_chars != 0) {
|
|
634
|
-
printf("input UTF-8 string is not valid, but conversion routine returned "
|
|
635
|
-
"%zu, indicating a valid input\n",
|
|
636
|
-
saved_chars);
|
|
637
|
-
return false;
|
|
638
|
-
}
|
|
639
|
-
}
|
|
640
|
-
if (saved_chars == 0) {
|
|
641
|
-
if (is_input_valid()) {
|
|
642
|
-
printf("input UTF-8 string is valid, but conversion routine returned 0, "
|
|
643
|
-
"indicating input error");
|
|
644
|
-
return false;
|
|
645
|
-
}
|
|
646
|
-
|
|
647
|
-
return true;
|
|
648
|
-
}
|
|
649
|
-
|
|
650
|
-
if (saved_chars != reference_output_utf32.size()) {
|
|
651
|
-
printf("wrong saved bytes value: procedure returned %zu bytes, it should "
|
|
652
|
-
"be %zu\n",
|
|
653
|
-
size_t(saved_chars), size_t(reference_output_utf32.size()));
|
|
654
|
-
return false;
|
|
655
|
-
}
|
|
656
|
-
|
|
657
|
-
// Note that, in general, output_utf16.size() will not matched saved_chars.
|
|
658
|
-
|
|
659
|
-
// At this point, we know that the lengths are the same so std::mismatch is
|
|
660
|
-
// enough to tell us whether the strings are identical.
|
|
661
|
-
auto it = our_mismatch(
|
|
662
|
-
output_utf32.begin(), output_utf32.begin() + saved_chars,
|
|
663
|
-
reference_output_utf32.begin(), reference_output_utf32.end());
|
|
664
|
-
if (it.first != output_utf32.begin() + saved_chars) {
|
|
665
|
-
printf("mismatched output at %zu: actual value 0x%04x, expected 0x%04x\n",
|
|
666
|
-
size_t(std::distance(output_utf32.begin(), it.first)),
|
|
667
|
-
uint16_t(*it.first), uint16_t(*it.second));
|
|
668
|
-
for (size_t i = 0; i < output_utf32.size(); i++) {
|
|
669
|
-
if (reference_output_utf32[i] != output_utf32[i]) {
|
|
670
|
-
printf(" ==> ");
|
|
671
|
-
}
|
|
672
|
-
printf("at %zu expected 0x%08x and got 0x%08x\n ", i,
|
|
673
|
-
uint32_t(reference_output_utf32[i]), uint32_t(output_utf32[i]));
|
|
674
|
-
}
|
|
675
|
-
|
|
676
|
-
return false;
|
|
677
|
-
}
|
|
678
|
-
|
|
679
|
-
return true;
|
|
680
|
-
}
|
|
681
|
-
|
|
682
|
-
/**
|
|
683
|
-
* transcode_utf16_to_utf8_test_base can be used to test UTF-16 => UTF-8
|
|
684
|
-
* transcoding.
|
|
685
|
-
*/
|
|
686
|
-
transcode_utf16_to_utf8_test_base::transcode_utf16_to_utf8_test_base(
|
|
687
|
-
endianness utf16_endianness, GenerateCodepoint generate, size_t input_size)
|
|
688
|
-
: transcode_test_base{utf16_endianness} {
|
|
689
|
-
while (input_utf16.size() < input_size) {
|
|
690
|
-
const uint32_t codepoint = generate();
|
|
691
|
-
prepare_input(codepoint);
|
|
692
|
-
}
|
|
693
|
-
|
|
694
|
-
output_utf8.resize(reference_output_utf8.size() + output_size_margin);
|
|
695
|
-
}
|
|
696
|
-
|
|
697
|
-
transcode_utf16_to_utf8_test_base::transcode_utf16_to_utf8_test_base(
|
|
698
|
-
endianness utf16_endianness, const std::vector<char16_t> &input_utf16)
|
|
699
|
-
: transcode_test_base{utf16_endianness}, input_utf16{input_utf16} {
|
|
700
|
-
|
|
701
|
-
auto consume = [this](const uint32_t codepoint) {
|
|
702
|
-
::simdutf::tests::reference::utf8::encode(codepoint, [this](uint8_t byte) {
|
|
703
|
-
reference_output_utf8.push_back(byte);
|
|
704
|
-
});
|
|
705
|
-
};
|
|
706
|
-
|
|
707
|
-
auto error_handler = [](const char16_t *, const char16_t *,
|
|
708
|
-
simdutf::tests::reference::utf16::Error) -> bool {
|
|
709
|
-
throw std::invalid_argument("Wrong UTF-16 input");
|
|
710
|
-
};
|
|
711
|
-
simdutf::tests::reference::utf16::decode(utf16_endianness, input_utf16.data(),
|
|
712
|
-
input_utf16.size(), consume,
|
|
713
|
-
error_handler);
|
|
714
|
-
output_utf8.resize(reference_output_utf8.size() + output_size_margin);
|
|
715
|
-
}
|
|
716
|
-
|
|
717
|
-
void transcode_utf16_to_utf8_test_base::prepare_input(uint32_t codepoint) {
|
|
718
|
-
encode_utf16(codepoint, input_utf16);
|
|
719
|
-
encode_utf8(codepoint, reference_output_utf8);
|
|
720
|
-
}
|
|
721
|
-
|
|
722
|
-
bool transcode_utf16_to_utf8_test_base::is_input_valid() const {
|
|
723
|
-
return simdutf::tests::reference::validate_utf16(
|
|
724
|
-
utf16_endianness, input_utf16.data(), input_utf16.size());
|
|
725
|
-
}
|
|
726
|
-
|
|
727
|
-
bool transcode_utf16_to_utf8_test_base::validate(size_t saved_chars) const {
|
|
728
|
-
if (!is_input_valid()) {
|
|
729
|
-
if (saved_chars != 0) {
|
|
730
|
-
printf("input UTF-16 string is not valid, but conversion routine "
|
|
731
|
-
"returned %zu, indicating a valid input\n",
|
|
732
|
-
saved_chars);
|
|
733
|
-
return false;
|
|
734
|
-
}
|
|
735
|
-
}
|
|
736
|
-
if (saved_chars == 0) {
|
|
737
|
-
if (is_input_valid()) {
|
|
738
|
-
printf("input UTF-16 string is valid, but conversion routine returned 0, "
|
|
739
|
-
"indicating input error");
|
|
740
|
-
return false;
|
|
741
|
-
}
|
|
742
|
-
|
|
743
|
-
return true;
|
|
744
|
-
}
|
|
745
|
-
|
|
746
|
-
auto dump = [saved_chars](const char *title, const std::vector<char> &array) {
|
|
747
|
-
printf("%s", title);
|
|
748
|
-
for (size_t i = 0; i < saved_chars; i++) {
|
|
749
|
-
printf(" %02x", (uint8_t)array[i]);
|
|
750
|
-
}
|
|
751
|
-
putchar('\n');
|
|
752
|
-
};
|
|
753
|
-
|
|
754
|
-
if (saved_chars != reference_output_utf8.size()) {
|
|
755
|
-
printf("wrong saved bytes value: procedure returned %zu bytes, it should "
|
|
756
|
-
"be %zu\n",
|
|
757
|
-
size_t(saved_chars), size_t(reference_output_utf8.size()));
|
|
758
|
-
|
|
759
|
-
dump("expected :", reference_output_utf8);
|
|
760
|
-
dump("actual :", output_utf8);
|
|
761
|
-
return false;
|
|
762
|
-
}
|
|
763
|
-
// Note that, in general, output_utf8.size() will not matched saved_chars.
|
|
764
|
-
|
|
765
|
-
// At this point, we know that the lengths are the same so std::mismatch is
|
|
766
|
-
// enough to tell us whether the strings are identical.
|
|
767
|
-
auto it =
|
|
768
|
-
our_mismatch(output_utf8.begin(), output_utf8.begin() + saved_chars,
|
|
769
|
-
reference_output_utf8.begin(), reference_output_utf8.end());
|
|
770
|
-
if (it.first != output_utf8.begin() + saved_chars) {
|
|
771
|
-
printf("mismatched output at %zu: actual value 0x%02x, expected 0x%02x\n",
|
|
772
|
-
size_t(std::distance(output_utf8.begin(), it.first)),
|
|
773
|
-
uint8_t(*it.first), uint8_t(*it.second));
|
|
774
|
-
|
|
775
|
-
dump("expected :", reference_output_utf8);
|
|
776
|
-
dump("actual :", output_utf8);
|
|
777
|
-
for (size_t i = 0; i < reference_output_utf8.size(); i++) {
|
|
778
|
-
if (reference_output_utf8[i] != output_utf8[i]) {
|
|
779
|
-
printf(" ==> ");
|
|
780
|
-
}
|
|
781
|
-
printf("at %zu expected 0x%02x and got 0x%02x\n ", i,
|
|
782
|
-
uint8_t(reference_output_utf8[i]), uint8_t(output_utf8[i]));
|
|
783
|
-
}
|
|
784
|
-
return false;
|
|
785
|
-
}
|
|
786
|
-
|
|
787
|
-
return true;
|
|
788
|
-
}
|
|
789
|
-
|
|
790
|
-
/**
|
|
791
|
-
* transcode_utf16_to_utf32_test_base can be used to test UTF-16LE => UTF-32
|
|
792
|
-
* transcoding.
|
|
793
|
-
*/
|
|
794
|
-
transcode_utf16_to_utf32_test_base::transcode_utf16_to_utf32_test_base(
|
|
795
|
-
endianness utf16_endianness, GenerateCodepoint generate, size_t input_size)
|
|
796
|
-
: transcode_test_base{utf16_endianness} {
|
|
797
|
-
while (input_utf16.size() < input_size) {
|
|
798
|
-
const uint32_t codepoint = generate();
|
|
799
|
-
prepare_input(codepoint);
|
|
800
|
-
}
|
|
801
|
-
|
|
802
|
-
output_utf32.resize(reference_output_utf32.size() + output_size_margin);
|
|
803
|
-
}
|
|
804
|
-
|
|
805
|
-
transcode_utf16_to_utf32_test_base::transcode_utf16_to_utf32_test_base(
|
|
806
|
-
endianness utf16_endianness, const std::vector<char16_t> &input_utf16)
|
|
807
|
-
: transcode_test_base{utf16_endianness}, input_utf16{input_utf16} {
|
|
808
|
-
|
|
809
|
-
auto consume = [this](const uint32_t codepoint) {
|
|
810
|
-
::simdutf::tests::reference::utf32::encode(
|
|
811
|
-
codepoint,
|
|
812
|
-
[this](uint32_t byte) { reference_output_utf32.push_back(byte); });
|
|
813
|
-
};
|
|
814
|
-
|
|
815
|
-
auto error_handler = [](const char16_t *, const char16_t *,
|
|
816
|
-
simdutf::tests::reference::utf16::Error) -> bool {
|
|
817
|
-
throw std::invalid_argument("Wrong UTF-16 input");
|
|
818
|
-
};
|
|
819
|
-
simdutf::tests::reference::utf16::decode(utf16_endianness, input_utf16.data(),
|
|
820
|
-
input_utf16.size(), consume,
|
|
821
|
-
error_handler);
|
|
822
|
-
output_utf32.resize(reference_output_utf32.size() + output_size_margin);
|
|
823
|
-
}
|
|
824
|
-
|
|
825
|
-
void transcode_utf16_to_utf32_test_base::prepare_input(uint32_t codepoint) {
|
|
826
|
-
encode_utf16(codepoint, input_utf16);
|
|
827
|
-
encode_utf32(codepoint, reference_output_utf32);
|
|
828
|
-
}
|
|
829
|
-
|
|
830
|
-
bool transcode_utf16_to_utf32_test_base::is_input_valid() const {
|
|
831
|
-
return simdutf::tests::reference::validate_utf16(
|
|
832
|
-
utf16_endianness, input_utf16.data(), input_utf16.size());
|
|
833
|
-
}
|
|
834
|
-
|
|
835
|
-
bool transcode_utf16_to_utf32_test_base::validate(size_t saved_chars) const {
|
|
836
|
-
if (!is_input_valid()) {
|
|
837
|
-
if (saved_chars != 0) {
|
|
838
|
-
printf("input UTF-16 string is not valid, but conversion routine "
|
|
839
|
-
"returned %zu, indicating a valid input\n",
|
|
840
|
-
saved_chars);
|
|
841
|
-
return false;
|
|
842
|
-
}
|
|
843
|
-
}
|
|
844
|
-
if (saved_chars == 0) {
|
|
845
|
-
if (is_input_valid()) {
|
|
846
|
-
printf("input UTF-16 string is valid, but conversion routine returned 0, "
|
|
847
|
-
"indicating input error");
|
|
848
|
-
return false;
|
|
849
|
-
}
|
|
850
|
-
|
|
851
|
-
return true;
|
|
852
|
-
}
|
|
853
|
-
|
|
854
|
-
auto dump = [saved_chars](const char *title,
|
|
855
|
-
const std::vector<char32_t> &array) {
|
|
856
|
-
printf("%s", title);
|
|
857
|
-
for (size_t i = 0; i < saved_chars; i++) {
|
|
858
|
-
printf(" %08x", (uint32_t)array[i]);
|
|
859
|
-
}
|
|
860
|
-
putchar('\n');
|
|
861
|
-
};
|
|
862
|
-
|
|
863
|
-
if (saved_chars != reference_output_utf32.size()) {
|
|
864
|
-
printf("wrong saved bytes value: procedure returned %zu bytes, it should "
|
|
865
|
-
"be %zu\n",
|
|
866
|
-
size_t(saved_chars), size_t(reference_output_utf32.size()));
|
|
867
|
-
|
|
868
|
-
dump("expected :", reference_output_utf32);
|
|
869
|
-
dump("actual :", output_utf32);
|
|
870
|
-
return false;
|
|
871
|
-
}
|
|
872
|
-
// Note that, in general, output_utf32.size() will not matched saved_chars.
|
|
873
|
-
|
|
874
|
-
// At this point, we know that the lengths are the same so std::mismatch is
|
|
875
|
-
// enough to tell us whether the strings are identical.
|
|
876
|
-
auto it = our_mismatch(
|
|
877
|
-
output_utf32.begin(), output_utf32.begin() + saved_chars,
|
|
878
|
-
reference_output_utf32.begin(), reference_output_utf32.end());
|
|
879
|
-
if (it.first != output_utf32.begin() + saved_chars) {
|
|
880
|
-
printf("mismatched output at %zu: actual value 0x%02x, expected 0x%02x\n",
|
|
881
|
-
size_t(std::distance(output_utf32.begin(), it.first)),
|
|
882
|
-
uint32_t(*it.first), uint32_t(*it.second));
|
|
883
|
-
|
|
884
|
-
dump("expected :", reference_output_utf32);
|
|
885
|
-
dump("actual :", output_utf32);
|
|
886
|
-
for (size_t i = 0; i < reference_output_utf32.size(); i++) {
|
|
887
|
-
if (reference_output_utf32[i] != output_utf32[i]) {
|
|
888
|
-
printf(" ==> ");
|
|
889
|
-
}
|
|
890
|
-
printf("at %zu expected 0x%08x and got 0x%08x\n ", i,
|
|
891
|
-
uint32_t(reference_output_utf32[i]), uint32_t(output_utf32[i]));
|
|
892
|
-
}
|
|
893
|
-
return false;
|
|
894
|
-
}
|
|
895
|
-
|
|
896
|
-
return true;
|
|
897
|
-
}
|
|
898
|
-
|
|
899
|
-
/**
|
|
900
|
-
* transcode_utf32_to_latin1_test_base can be used to test UTF-32 => UTF-16LE
|
|
901
|
-
* transcoding.
|
|
902
|
-
*/
|
|
903
|
-
transcode_utf32_to_latin1_test_base::transcode_utf32_to_latin1_test_base(
|
|
904
|
-
GenerateCodepoint generate, size_t input_size) {
|
|
905
|
-
while (input_utf32.size() < input_size) {
|
|
906
|
-
const uint32_t codepoint = generate();
|
|
907
|
-
prepare_input(codepoint);
|
|
908
|
-
}
|
|
909
|
-
output_latin1.resize(reference_output_latin1.size() + output_size_margin);
|
|
910
|
-
}
|
|
911
|
-
|
|
912
|
-
void transcode_utf32_to_latin1_test_base::prepare_input(uint32_t codepoint) {
|
|
913
|
-
encode_utf32(codepoint, input_utf32);
|
|
914
|
-
encode_latin1(codepoint,
|
|
915
|
-
reference_output_latin1); //-- not applicable? All of a byte is
|
|
916
|
-
// translatable to latin1
|
|
917
|
-
}
|
|
918
|
-
|
|
919
|
-
bool transcode_utf32_to_latin1_test_base::is_input_valid() const {
|
|
920
|
-
return simdutf::tests::reference::validate_utf32_to_latin1(
|
|
921
|
-
input_utf32.data(), input_utf32.size());
|
|
922
|
-
}
|
|
923
|
-
|
|
924
|
-
bool transcode_utf32_to_latin1_test_base::validate(size_t saved_chars) const {
|
|
925
|
-
if (!is_input_valid()) {
|
|
926
|
-
if (saved_chars != 0) {
|
|
927
|
-
printf("input UTF-32 string is not valid, but conversion routine "
|
|
928
|
-
"returned %zu, indicating a valid input\n",
|
|
929
|
-
saved_chars);
|
|
930
|
-
return false;
|
|
931
|
-
}
|
|
932
|
-
}
|
|
933
|
-
if (saved_chars == 0) {
|
|
934
|
-
if (is_input_valid()) {
|
|
935
|
-
printf("input UTF-32 string is valid, but conversion routine returned 0, "
|
|
936
|
-
"indicating input error");
|
|
937
|
-
return false;
|
|
938
|
-
}
|
|
939
|
-
return true;
|
|
940
|
-
}
|
|
941
|
-
|
|
942
|
-
auto dump = [saved_chars](const char *title, const std::vector<char> &array) {
|
|
943
|
-
printf("%s", title);
|
|
944
|
-
for (size_t i = 0; i < saved_chars; i++) {
|
|
945
|
-
printf(" %02x", (char)array[i]);
|
|
946
|
-
}
|
|
947
|
-
putchar('\n');
|
|
948
|
-
};
|
|
949
|
-
|
|
950
|
-
if (saved_chars != reference_output_latin1.size()) {
|
|
951
|
-
printf("wrong saved bytes value: procedure returned %zu bytes, it should "
|
|
952
|
-
"be %zu\n",
|
|
953
|
-
size_t(saved_chars), size_t(reference_output_latin1.size()));
|
|
954
|
-
|
|
955
|
-
dump("expected :", reference_output_latin1);
|
|
956
|
-
dump("actual :", output_latin1);
|
|
957
|
-
return false;
|
|
958
|
-
}
|
|
959
|
-
// Note that, in general, output_latin1.size() will not matched saved_chars.
|
|
960
|
-
|
|
961
|
-
// At this point, we know that the lengths are the same so std::mismatch is
|
|
962
|
-
// enough to tell us whether the strings are identical.
|
|
963
|
-
auto it = our_mismatch(
|
|
964
|
-
output_latin1.begin(), output_latin1.begin() + saved_chars,
|
|
965
|
-
reference_output_latin1.begin(), reference_output_latin1.end());
|
|
966
|
-
if (it.first != output_latin1.begin() + saved_chars) {
|
|
967
|
-
printf("mismatched output at %zu: actual value 0x%02x, expected 0x%02x\n",
|
|
968
|
-
size_t(std::distance(output_latin1.begin(), it.first)),
|
|
969
|
-
uint8_t(*it.first), uint8_t(*it.second));
|
|
970
|
-
|
|
971
|
-
dump("expected :", reference_output_latin1);
|
|
972
|
-
dump("actual :", output_latin1);
|
|
973
|
-
for (size_t i = 0; i < reference_output_latin1.size(); i++) {
|
|
974
|
-
if (reference_output_latin1[i] != output_latin1[i]) {
|
|
975
|
-
printf(" ==> ");
|
|
976
|
-
}
|
|
977
|
-
printf("at %zu expected 0x%04x 0x%04x\n ", i,
|
|
978
|
-
uint8_t(reference_output_latin1[i]), uint8_t(output_latin1[i]));
|
|
979
|
-
}
|
|
980
|
-
return false;
|
|
981
|
-
}
|
|
982
|
-
return true;
|
|
983
|
-
}
|
|
984
|
-
|
|
985
|
-
/**
|
|
986
|
-
* transcode_utf32_to_utf8_test_base can be used to test UTF-32 => UTF-8
|
|
987
|
-
* transcoding.
|
|
988
|
-
*/
|
|
989
|
-
transcode_utf32_to_utf8_test_base::transcode_utf32_to_utf8_test_base(
|
|
990
|
-
GenerateCodepoint generate, size_t input_size) {
|
|
991
|
-
while (input_utf32.size() < input_size) {
|
|
992
|
-
const uint32_t codepoint = generate();
|
|
993
|
-
prepare_input(codepoint);
|
|
994
|
-
}
|
|
995
|
-
|
|
996
|
-
output_utf8.resize(reference_output_utf8.size() + output_size_margin);
|
|
997
|
-
}
|
|
998
|
-
|
|
999
|
-
transcode_utf32_to_utf8_test_base::transcode_utf32_to_utf8_test_base(
|
|
1000
|
-
const std::vector<char32_t> &input_utf32)
|
|
1001
|
-
: input_utf32{input_utf32} {
|
|
1002
|
-
|
|
1003
|
-
auto consume = [this](const uint32_t codepoint) {
|
|
1004
|
-
::simdutf::tests::reference::utf8::encode(codepoint, [this](uint8_t byte) {
|
|
1005
|
-
reference_output_utf8.push_back(byte);
|
|
1006
|
-
});
|
|
1007
|
-
};
|
|
1008
|
-
|
|
1009
|
-
auto error_handler = [](const char32_t *, const char32_t *,
|
|
1010
|
-
simdutf::tests::reference::utf32::Error) -> bool {
|
|
1011
|
-
throw std::invalid_argument("Wrong UTF-32 input");
|
|
1012
|
-
};
|
|
1013
|
-
simdutf::tests::reference::utf32::decode(
|
|
1014
|
-
input_utf32.data(), input_utf32.size(), consume, error_handler);
|
|
1015
|
-
output_utf8.resize(reference_output_utf8.size() + output_size_margin);
|
|
1016
|
-
}
|
|
1017
|
-
|
|
1018
|
-
void transcode_utf32_to_utf8_test_base::prepare_input(uint32_t codepoint) {
|
|
1019
|
-
encode_utf32(codepoint, input_utf32);
|
|
1020
|
-
encode_utf8(codepoint, reference_output_utf8);
|
|
1021
|
-
}
|
|
1022
|
-
|
|
1023
|
-
bool transcode_utf32_to_utf8_test_base::is_input_valid() const {
|
|
1024
|
-
return simdutf::tests::reference::validate_utf32(input_utf32.data(),
|
|
1025
|
-
input_utf32.size());
|
|
1026
|
-
}
|
|
1027
|
-
|
|
1028
|
-
bool transcode_utf32_to_utf8_test_base::validate(size_t saved_chars) const {
|
|
1029
|
-
if (!is_input_valid()) {
|
|
1030
|
-
if (saved_chars != 0) {
|
|
1031
|
-
printf("input UTF-32 string is not valid, but conversion routine "
|
|
1032
|
-
"returned %zu, indicating a valid input\n",
|
|
1033
|
-
saved_chars);
|
|
1034
|
-
return false;
|
|
1035
|
-
}
|
|
1036
|
-
}
|
|
1037
|
-
if (saved_chars == 0) {
|
|
1038
|
-
if (is_input_valid()) {
|
|
1039
|
-
printf("input UTF-32 string is valid, but conversion routine returned 0, "
|
|
1040
|
-
"indicating input error");
|
|
1041
|
-
return false;
|
|
1042
|
-
}
|
|
1043
|
-
|
|
1044
|
-
return true;
|
|
1045
|
-
}
|
|
1046
|
-
|
|
1047
|
-
auto dump = [saved_chars](const char *title, const std::vector<char> &array) {
|
|
1048
|
-
printf("%s", title);
|
|
1049
|
-
for (size_t i = 0; i < saved_chars; i++) {
|
|
1050
|
-
printf(" %02x", (uint8_t)array[i]);
|
|
1051
|
-
}
|
|
1052
|
-
putchar('\n');
|
|
1053
|
-
};
|
|
1054
|
-
|
|
1055
|
-
if (saved_chars != reference_output_utf8.size()) {
|
|
1056
|
-
printf("wrong saved bytes value: procedure returned %zu bytes, it should "
|
|
1057
|
-
"be %zu\n",
|
|
1058
|
-
size_t(saved_chars), size_t(reference_output_utf8.size()));
|
|
1059
|
-
|
|
1060
|
-
dump("expected :", reference_output_utf8);
|
|
1061
|
-
dump("actual :", output_utf8);
|
|
1062
|
-
return false;
|
|
1063
|
-
}
|
|
1064
|
-
// Note that, in general, output_utf8.size() will not matched saved_chars.
|
|
1065
|
-
|
|
1066
|
-
// At this point, we know that the lengths are the same so std::mismatch is
|
|
1067
|
-
// enough to tell us whether the strings are identical.
|
|
1068
|
-
auto it =
|
|
1069
|
-
our_mismatch(output_utf8.begin(), output_utf8.begin() + saved_chars,
|
|
1070
|
-
reference_output_utf8.begin(), reference_output_utf8.end());
|
|
1071
|
-
if (it.first != output_utf8.begin() + saved_chars) {
|
|
1072
|
-
printf("mismatched output at %zu: actual value 0x%02x, expected 0x%02x\n",
|
|
1073
|
-
size_t(std::distance(output_utf8.begin(), it.first)),
|
|
1074
|
-
uint8_t(*it.first), uint8_t(*it.second));
|
|
1075
|
-
|
|
1076
|
-
dump("expected :", reference_output_utf8);
|
|
1077
|
-
dump("actual :", output_utf8);
|
|
1078
|
-
for (size_t i = 0; i < reference_output_utf8.size(); i++) {
|
|
1079
|
-
if (reference_output_utf8[i] != output_utf8[i]) {
|
|
1080
|
-
printf(" ==> ");
|
|
1081
|
-
}
|
|
1082
|
-
printf("at %zu expected 0x%02x and got 0x%02x\n ", i,
|
|
1083
|
-
uint8_t(reference_output_utf8[i]), uint8_t(output_utf8[i]));
|
|
1084
|
-
}
|
|
1085
|
-
return false;
|
|
1086
|
-
}
|
|
1087
|
-
|
|
1088
|
-
return true;
|
|
1089
|
-
}
|
|
1090
|
-
|
|
1091
|
-
/**
|
|
1092
|
-
* transcode_utf32_to_utf16_test_base can be used to test UTF-32 => UTF-16LE
|
|
1093
|
-
* transcoding.
|
|
1094
|
-
*/
|
|
1095
|
-
transcode_utf32_to_utf16_test_base::transcode_utf32_to_utf16_test_base(
|
|
1096
|
-
endianness utf16_endianness, GenerateCodepoint generate, size_t input_size)
|
|
1097
|
-
: transcode_test_base{utf16_endianness} {
|
|
1098
|
-
while (input_utf32.size() < input_size) {
|
|
1099
|
-
const uint32_t codepoint = generate();
|
|
1100
|
-
prepare_input(codepoint);
|
|
1101
|
-
}
|
|
1102
|
-
|
|
1103
|
-
output_utf16.resize(reference_output_utf16.size() + output_size_margin);
|
|
1104
|
-
}
|
|
1105
|
-
|
|
1106
|
-
void transcode_utf32_to_utf16_test_base::prepare_input(uint32_t codepoint) {
|
|
1107
|
-
encode_utf32(codepoint, input_utf32);
|
|
1108
|
-
encode_utf16(codepoint, reference_output_utf16);
|
|
1109
|
-
}
|
|
1110
|
-
|
|
1111
|
-
bool transcode_utf32_to_utf16_test_base::is_input_valid() const {
|
|
1112
|
-
return simdutf::tests::reference::validate_utf32(input_utf32.data(),
|
|
1113
|
-
input_utf32.size());
|
|
1114
|
-
}
|
|
1115
|
-
|
|
1116
|
-
bool transcode_utf32_to_utf16_test_base::validate(size_t saved_chars) const {
|
|
1117
|
-
if (!is_input_valid()) {
|
|
1118
|
-
if (saved_chars != 0) {
|
|
1119
|
-
printf("input UTF-32 string is not valid, but conversion routine "
|
|
1120
|
-
"returned %zu, indicating a valid input\n",
|
|
1121
|
-
saved_chars);
|
|
1122
|
-
return false;
|
|
1123
|
-
}
|
|
1124
|
-
}
|
|
1125
|
-
if (saved_chars == 0) {
|
|
1126
|
-
if (is_input_valid()) {
|
|
1127
|
-
printf("input UTF-32 string is valid, but conversion routine returned 0, "
|
|
1128
|
-
"indicating input error");
|
|
1129
|
-
return false;
|
|
1130
|
-
}
|
|
1131
|
-
|
|
1132
|
-
return true;
|
|
1133
|
-
}
|
|
1134
|
-
|
|
1135
|
-
auto dump = [saved_chars](const char *title,
|
|
1136
|
-
const std::vector<char16_t> &array) {
|
|
1137
|
-
printf("%s", title);
|
|
1138
|
-
for (size_t i = 0; i < saved_chars; i++) {
|
|
1139
|
-
printf(" %02x", (uint16_t)array[i]);
|
|
1140
|
-
}
|
|
1141
|
-
putchar('\n');
|
|
1142
|
-
};
|
|
1143
|
-
|
|
1144
|
-
if (saved_chars != reference_output_utf16.size()) {
|
|
1145
|
-
printf("wrong saved bytes value: procedure returned %zu bytes, it should "
|
|
1146
|
-
"be %zu\n",
|
|
1147
|
-
size_t(saved_chars), size_t(reference_output_utf16.size()));
|
|
1148
|
-
|
|
1149
|
-
dump("expected :", reference_output_utf16);
|
|
1150
|
-
dump("actual :", output_utf16);
|
|
1151
|
-
return false;
|
|
1152
|
-
}
|
|
1153
|
-
// Note that, in general, output_utf16.size() will not matched saved_chars.
|
|
1154
|
-
|
|
1155
|
-
// At this point, we know that the lengths are the same so std::mismatch is
|
|
1156
|
-
// enough to tell us whether the strings are identical.
|
|
1157
|
-
auto it = our_mismatch(
|
|
1158
|
-
output_utf16.begin(), output_utf16.begin() + saved_chars,
|
|
1159
|
-
reference_output_utf16.begin(), reference_output_utf16.end());
|
|
1160
|
-
if (it.first != output_utf16.begin() + saved_chars) {
|
|
1161
|
-
printf("mismatched output at %zu: actual value 0x%02x, expected 0x%02x\n",
|
|
1162
|
-
size_t(std::distance(output_utf16.begin(), it.first)),
|
|
1163
|
-
uint8_t(*it.first), uint8_t(*it.second));
|
|
1164
|
-
|
|
1165
|
-
dump("expected :", reference_output_utf16);
|
|
1166
|
-
dump("actual :", output_utf16);
|
|
1167
|
-
for (size_t i = 0; i < reference_output_utf16.size(); i++) {
|
|
1168
|
-
if (reference_output_utf16[i] != output_utf16[i]) {
|
|
1169
|
-
printf(" ==> ");
|
|
1170
|
-
}
|
|
1171
|
-
printf("at %zu expected 0x%04x 0x%04x\n ", i,
|
|
1172
|
-
uint16_t(reference_output_utf16[i]), uint16_t(output_utf16[i]));
|
|
1173
|
-
}
|
|
1174
|
-
return false;
|
|
1175
|
-
}
|
|
1176
|
-
|
|
1177
|
-
return true;
|
|
1178
|
-
}
|
|
1179
|
-
|
|
1180
|
-
} // namespace helpers
|
|
1181
|
-
} // namespace tests
|
|
1182
|
-
} // namespace simdutf
|
|
1183
|
-
|
|
1184
|
-
//------------------------------------------------------------
|
|
1185
|
-
|
|
1186
|
-
std::vector<std::vector<char16_t>>
|
|
1187
|
-
all_utf16_combinations(simdutf::endianness byte_order) {
|
|
1188
|
-
// non-surrogate word that yields 1 UTF-8 byte
|
|
1189
|
-
const char16_t V_1byte_start = 0x0042;
|
|
1190
|
-
// non-surrogate word that yields 2 UTF-8 bytes
|
|
1191
|
-
const char16_t V_2bytes_start = 0x017f;
|
|
1192
|
-
// non-surrogate word the yields 3 UTF-8 bytes
|
|
1193
|
-
const char16_t V_3bytes_start = 0xefff;
|
|
1194
|
-
const char16_t L = to_utf16(byte_order, 0xd9ca); // low surrogate
|
|
1195
|
-
const char16_t H = to_utf16(byte_order, 0xde42); // high surrogate
|
|
1196
|
-
|
|
1197
|
-
std::vector<std::vector<char16_t>> result;
|
|
1198
|
-
std::vector<char16_t> row(32, to_utf16(byte_order, '*'));
|
|
1199
|
-
|
|
1200
|
-
std::array<int, 8> pattern{0};
|
|
1201
|
-
while (true) {
|
|
1202
|
-
// 1. produce output
|
|
1203
|
-
char16_t V_1byte = V_1byte_start;
|
|
1204
|
-
char16_t V_2bytes = V_2bytes_start;
|
|
1205
|
-
char16_t V_3bytes = V_3bytes_start;
|
|
1206
|
-
for (int i = 0; i < 8; i++) {
|
|
1207
|
-
switch (pattern[i]) {
|
|
1208
|
-
case 0:
|
|
1209
|
-
row[i] = to_utf16(byte_order, V_1byte++);
|
|
1210
|
-
break;
|
|
1211
|
-
case 1:
|
|
1212
|
-
row[i] = to_utf16(byte_order, V_2bytes++);
|
|
1213
|
-
break;
|
|
1214
|
-
case 2:
|
|
1215
|
-
row[i] = to_utf16(byte_order, V_3bytes++);
|
|
1216
|
-
break;
|
|
1217
|
-
case 3:
|
|
1218
|
-
row[i] = L;
|
|
1219
|
-
break;
|
|
1220
|
-
case 4:
|
|
1221
|
-
row[i] = H;
|
|
1222
|
-
break;
|
|
1223
|
-
default:
|
|
1224
|
-
abort();
|
|
1225
|
-
}
|
|
1226
|
-
} // for
|
|
1227
|
-
|
|
1228
|
-
if (row[7] == L) {
|
|
1229
|
-
row[8] = H; // make input valid
|
|
1230
|
-
result.push_back(row);
|
|
1231
|
-
|
|
1232
|
-
row[8] = to_utf16(byte_order, V_1byte); // broken input
|
|
1233
|
-
result.push_back(row);
|
|
1234
|
-
} else {
|
|
1235
|
-
row[8] = to_utf16(byte_order, V_1byte);
|
|
1236
|
-
result.push_back(row);
|
|
1237
|
-
}
|
|
1238
|
-
|
|
1239
|
-
// next pattern
|
|
1240
|
-
int i = 0;
|
|
1241
|
-
int carry = 1;
|
|
1242
|
-
for (; i < 8 && carry; i++) {
|
|
1243
|
-
pattern[i] += carry;
|
|
1244
|
-
if (pattern[i] == 5) {
|
|
1245
|
-
pattern[i] = 0;
|
|
1246
|
-
carry = 1;
|
|
1247
|
-
} else
|
|
1248
|
-
carry = 0;
|
|
1249
|
-
}
|
|
1250
|
-
|
|
1251
|
-
if (carry == 1 and i == 8)
|
|
1252
|
-
break;
|
|
1253
|
-
|
|
1254
|
-
} // while
|
|
1255
|
-
|
|
1256
|
-
return result;
|
|
1257
|
-
}
|