react-native-quick-crypto 1.0.19 → 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/QuickCrypto.podspec +12 -38
- package/README.md +2 -0
- package/android/CMakeLists.txt +3 -0
- 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 +213 -111
- package/cpp/utils/HybridUtils.hpp +9 -2
- package/cpp/utils/QuickCryptoUtils.hpp +72 -0
- package/deps/simdutf/LICENSE-APACHE +201 -0
- package/deps/simdutf/LICENSE-MIT +18 -0
- package/deps/simdutf/README.md +2782 -0
- package/deps/simdutf/include/simdutf/avx512.h +79 -0
- package/deps/simdutf/include/simdutf/base64_implementation.h +158 -0
- package/deps/simdutf/include/simdutf/base64_tables.h +887 -0
- package/deps/simdutf/include/simdutf/common_defs.h +186 -0
- package/deps/simdutf/include/simdutf/compiler_check.h +50 -0
- package/deps/simdutf/include/simdutf/constexpr_ptr.h +138 -0
- package/deps/simdutf/include/simdutf/encoding_types.h +189 -0
- package/deps/simdutf/include/simdutf/error.h +126 -0
- package/deps/simdutf/include/simdutf/implementation.h +7081 -0
- package/deps/simdutf/include/simdutf/internal/isadetection.h +325 -0
- package/deps/simdutf/include/simdutf/portability.h +285 -0
- package/deps/simdutf/include/simdutf/scalar/ascii.h +86 -0
- package/deps/simdutf/include/simdutf/scalar/atomic_util.h +105 -0
- package/deps/simdutf/include/simdutf/scalar/base64.h +911 -0
- package/deps/simdutf/include/simdutf/scalar/latin1.h +26 -0
- package/deps/simdutf/include/simdutf/scalar/latin1_to_utf16/latin1_to_utf16.h +52 -0
- package/deps/simdutf/include/simdutf/scalar/latin1_to_utf32/latin1_to_utf32.h +27 -0
- package/deps/simdutf/include/simdutf/scalar/latin1_to_utf8/latin1_to_utf8.h +191 -0
- package/deps/simdutf/include/simdutf/scalar/swap_bytes.h +35 -0
- package/deps/simdutf/include/simdutf/scalar/utf16.h +226 -0
- package/deps/simdutf/include/simdutf/scalar/utf16_to_latin1/utf16_to_latin1.h +108 -0
- package/deps/simdutf/include/simdutf/scalar/utf16_to_latin1/valid_utf16_to_latin1.h +40 -0
- package/deps/simdutf/include/simdutf/scalar/utf16_to_utf32/utf16_to_utf32.h +86 -0
- package/deps/simdutf/include/simdutf/scalar/utf16_to_utf32/valid_utf16_to_utf32.h +44 -0
- package/deps/simdutf/include/simdutf/scalar/utf16_to_utf8/utf16_to_utf8.h +295 -0
- package/deps/simdutf/include/simdutf/scalar/utf16_to_utf8/valid_utf16_to_utf8.h +91 -0
- package/deps/simdutf/include/simdutf/scalar/utf32.h +82 -0
- package/deps/simdutf/include/simdutf/scalar/utf32_to_latin1/utf32_to_latin1.h +68 -0
- package/deps/simdutf/include/simdutf/scalar/utf32_to_latin1/valid_utf32_to_latin1.h +67 -0
- package/deps/simdutf/include/simdutf/scalar/utf32_to_utf16/utf32_to_utf16.h +84 -0
- package/deps/simdutf/include/simdutf/scalar/utf32_to_utf16/valid_utf32_to_utf16.h +44 -0
- package/deps/simdutf/include/simdutf/scalar/utf32_to_utf8/utf32_to_utf8.h +142 -0
- package/deps/simdutf/include/simdutf/scalar/utf32_to_utf8/valid_utf32_to_utf8.h +72 -0
- package/deps/simdutf/include/simdutf/scalar/utf8.h +326 -0
- package/deps/simdutf/include/simdutf/scalar/utf8_to_latin1/utf8_to_latin1.h +225 -0
- package/deps/simdutf/include/simdutf/scalar/utf8_to_latin1/valid_utf8_to_latin1.h +87 -0
- package/deps/simdutf/include/simdutf/scalar/utf8_to_utf16/utf8_to_utf16.h +342 -0
- package/deps/simdutf/include/simdutf/scalar/utf8_to_utf16/valid_utf8_to_utf16.h +106 -0
- package/deps/simdutf/include/simdutf/scalar/utf8_to_utf32/utf8_to_utf32.h +299 -0
- package/deps/simdutf/include/simdutf/scalar/utf8_to_utf32/valid_utf8_to_utf32.h +83 -0
- package/deps/simdutf/include/simdutf/simdutf_version.h +26 -0
- package/deps/simdutf/include/simdutf.h +26 -0
- package/deps/simdutf/include/simdutf_c.h +342 -0
- package/deps/simdutf/src/arm64/arm_base64.cpp +791 -0
- package/deps/simdutf/src/arm64/arm_convert_latin1_to_utf16.cpp +24 -0
- package/deps/simdutf/src/arm64/arm_convert_latin1_to_utf32.cpp +24 -0
- package/deps/simdutf/src/arm64/arm_convert_latin1_to_utf8.cpp +70 -0
- package/deps/simdutf/src/arm64/arm_convert_utf16_to_latin1.cpp +61 -0
- package/deps/simdutf/src/arm64/arm_convert_utf16_to_utf32.cpp +185 -0
- package/deps/simdutf/src/arm64/arm_convert_utf16_to_utf8.cpp +780 -0
- package/deps/simdutf/src/arm64/arm_convert_utf32_to_latin1.cpp +60 -0
- package/deps/simdutf/src/arm64/arm_convert_utf32_to_utf16.cpp +208 -0
- package/deps/simdutf/src/arm64/arm_convert_utf32_to_utf8.cpp +505 -0
- package/deps/simdutf/src/arm64/arm_convert_utf8_to_latin1.cpp +69 -0
- package/deps/simdutf/src/arm64/arm_convert_utf8_to_utf16.cpp +313 -0
- package/deps/simdutf/src/arm64/arm_convert_utf8_to_utf32.cpp +179 -0
- package/deps/simdutf/src/arm64/arm_find.cpp +199 -0
- package/deps/simdutf/src/arm64/arm_utf16fix.cpp +185 -0
- package/deps/simdutf/src/arm64/arm_validate_utf16.cpp +165 -0
- package/deps/simdutf/src/arm64/arm_validate_utf32le.cpp +65 -0
- package/deps/simdutf/src/arm64/implementation.cpp +1442 -0
- package/deps/simdutf/src/encoding_types.cpp +67 -0
- package/deps/simdutf/src/error.cpp +3 -0
- package/deps/simdutf/src/fallback/implementation.cpp +589 -0
- package/deps/simdutf/src/generic/ascii_validation.h +50 -0
- package/deps/simdutf/src/generic/base64.h +233 -0
- package/deps/simdutf/src/generic/base64lengths.h +63 -0
- package/deps/simdutf/src/generic/buf_block_reader.h +109 -0
- package/deps/simdutf/src/generic/find.h +75 -0
- package/deps/simdutf/src/generic/utf16/change_endianness.h +24 -0
- package/deps/simdutf/src/generic/utf16/count_code_points_bytemask.h +58 -0
- package/deps/simdutf/src/generic/utf16/to_well_formed.h +93 -0
- package/deps/simdutf/src/generic/utf16/utf32_length_from_utf16.h +15 -0
- package/deps/simdutf/src/generic/utf16/utf8_length_from_utf16.h +35 -0
- package/deps/simdutf/src/generic/utf16/utf8_length_from_utf16_bytemask.h +199 -0
- package/deps/simdutf/src/generic/utf16.h +73 -0
- package/deps/simdutf/src/generic/utf32.h +136 -0
- package/deps/simdutf/src/generic/utf8/utf16_length_from_utf8_bytemask.h +53 -0
- package/deps/simdutf/src/generic/utf8.h +92 -0
- package/deps/simdutf/src/generic/utf8_to_latin1/utf8_to_latin1.h +316 -0
- package/deps/simdutf/src/generic/utf8_to_latin1/valid_utf8_to_latin1.h +78 -0
- package/deps/simdutf/src/generic/utf8_to_utf16/utf8_to_utf16.h +332 -0
- package/deps/simdutf/src/generic/utf8_to_utf16/valid_utf8_to_utf16.h +74 -0
- package/deps/simdutf/src/generic/utf8_to_utf32/utf8_to_utf32.h +318 -0
- package/deps/simdutf/src/generic/utf8_to_utf32/valid_utf8_to_utf32.h +42 -0
- package/deps/simdutf/src/generic/utf8_validation/utf8_lookup4_algorithm.h +223 -0
- package/deps/simdutf/src/generic/utf8_validation/utf8_validator.h +84 -0
- package/deps/simdutf/src/generic/validate_utf16.h +164 -0
- package/deps/simdutf/src/generic/validate_utf32.h +99 -0
- package/deps/simdutf/src/haswell/avx2_base64.cpp +837 -0
- package/deps/simdutf/src/haswell/avx2_convert_latin1_to_utf16.cpp +28 -0
- package/deps/simdutf/src/haswell/avx2_convert_latin1_to_utf32.cpp +20 -0
- package/deps/simdutf/src/haswell/avx2_convert_latin1_to_utf8.cpp +83 -0
- package/deps/simdutf/src/haswell/avx2_convert_utf16_to_latin1.cpp +83 -0
- package/deps/simdutf/src/haswell/avx2_convert_utf16_to_utf32.cpp +210 -0
- package/deps/simdutf/src/haswell/avx2_convert_utf16_to_utf8.cpp +602 -0
- package/deps/simdutf/src/haswell/avx2_convert_utf32_to_latin1.cpp +116 -0
- package/deps/simdutf/src/haswell/avx2_convert_utf32_to_utf16.cpp +164 -0
- package/deps/simdutf/src/haswell/avx2_convert_utf32_to_utf8.cpp +569 -0
- package/deps/simdutf/src/haswell/avx2_convert_utf8_to_latin1.cpp +60 -0
- package/deps/simdutf/src/haswell/avx2_convert_utf8_to_utf16.cpp +195 -0
- package/deps/simdutf/src/haswell/avx2_convert_utf8_to_utf32.cpp +135 -0
- package/deps/simdutf/src/haswell/avx2_utf16fix.cpp +173 -0
- package/deps/simdutf/src/haswell/avx2_validate_utf16.cpp +17 -0
- package/deps/simdutf/src/haswell/implementation.cpp +1447 -0
- package/deps/simdutf/src/icelake/icelake_ascii_validation.inl.cpp +19 -0
- package/deps/simdutf/src/icelake/icelake_base64.inl.cpp +630 -0
- package/deps/simdutf/src/icelake/icelake_common.inl.cpp +37 -0
- package/deps/simdutf/src/icelake/icelake_convert_latin1_to_utf16.inl.cpp +36 -0
- package/deps/simdutf/src/icelake/icelake_convert_latin1_to_utf32.inl.cpp +23 -0
- package/deps/simdutf/src/icelake/icelake_convert_latin1_to_utf8.inl.cpp +107 -0
- package/deps/simdutf/src/icelake/icelake_convert_utf16_to_latin1.inl.cpp +103 -0
- package/deps/simdutf/src/icelake/icelake_convert_utf16_to_utf32.inl.cpp +136 -0
- package/deps/simdutf/src/icelake/icelake_convert_utf16_to_utf8.inl.cpp +206 -0
- package/deps/simdutf/src/icelake/icelake_convert_utf32_to_latin1.inl.cpp +74 -0
- package/deps/simdutf/src/icelake/icelake_convert_utf32_to_utf16.inl.cpp +338 -0
- package/deps/simdutf/src/icelake/icelake_convert_utf32_to_utf8.inl.cpp +574 -0
- package/deps/simdutf/src/icelake/icelake_convert_utf8_to_latin1.inl.cpp +104 -0
- package/deps/simdutf/src/icelake/icelake_convert_utf8_to_utf16.inl.cpp +75 -0
- package/deps/simdutf/src/icelake/icelake_convert_valid_utf8_to_latin1.inl.cpp +69 -0
- package/deps/simdutf/src/icelake/icelake_find.inl.cpp +146 -0
- package/deps/simdutf/src/icelake/icelake_from_utf8.inl.cpp +266 -0
- package/deps/simdutf/src/icelake/icelake_from_valid_utf8.inl.cpp +136 -0
- package/deps/simdutf/src/icelake/icelake_macros.inl.cpp +143 -0
- package/deps/simdutf/src/icelake/icelake_utf16fix.cpp +138 -0
- package/deps/simdutf/src/icelake/icelake_utf32_validation.inl.cpp +63 -0
- package/deps/simdutf/src/icelake/icelake_utf8_common.inl.cpp +753 -0
- package/deps/simdutf/src/icelake/icelake_utf8_length_from_utf16.inl.cpp +269 -0
- package/deps/simdutf/src/icelake/icelake_utf8_validation.inl.cpp +116 -0
- package/deps/simdutf/src/icelake/implementation.cpp +1903 -0
- package/deps/simdutf/src/implementation.cpp +2526 -0
- package/deps/simdutf/src/lasx/implementation.cpp +1531 -0
- package/deps/simdutf/src/lasx/lasx_base64.cpp +695 -0
- package/deps/simdutf/src/lasx/lasx_convert_latin1_to_utf16.cpp +76 -0
- package/deps/simdutf/src/lasx/lasx_convert_latin1_to_utf32.cpp +55 -0
- package/deps/simdutf/src/lasx/lasx_convert_latin1_to_utf8.cpp +65 -0
- package/deps/simdutf/src/lasx/lasx_convert_utf16_to_latin1.cpp +64 -0
- package/deps/simdutf/src/lasx/lasx_convert_utf16_to_utf32.cpp +183 -0
- package/deps/simdutf/src/lasx/lasx_convert_utf16_to_utf8.cpp +550 -0
- package/deps/simdutf/src/lasx/lasx_convert_utf32_to_latin1.cpp +73 -0
- package/deps/simdutf/src/lasx/lasx_convert_utf32_to_utf16.cpp +218 -0
- package/deps/simdutf/src/lasx/lasx_convert_utf32_to_utf8.cpp +589 -0
- package/deps/simdutf/src/lasx/lasx_convert_utf8_to_latin1.cpp +72 -0
- package/deps/simdutf/src/lasx/lasx_convert_utf8_to_utf16.cpp +296 -0
- package/deps/simdutf/src/lasx/lasx_convert_utf8_to_utf32.cpp +190 -0
- package/deps/simdutf/src/lasx/lasx_find.cpp +64 -0
- package/deps/simdutf/src/lasx/lasx_validate_utf16.cpp +13 -0
- package/deps/simdutf/src/lasx/lasx_validate_utf32le.cpp +84 -0
- package/deps/simdutf/src/lsx/implementation.cpp +1417 -0
- package/deps/simdutf/src/lsx/lsx_base64.cpp +675 -0
- package/deps/simdutf/src/lsx/lsx_convert_latin1_to_utf16.cpp +39 -0
- package/deps/simdutf/src/lsx/lsx_convert_latin1_to_utf32.cpp +27 -0
- package/deps/simdutf/src/lsx/lsx_convert_latin1_to_utf8.cpp +56 -0
- package/deps/simdutf/src/lsx/lsx_convert_utf16_to_latin1.cpp +64 -0
- package/deps/simdutf/src/lsx/lsx_convert_utf16_to_utf32.cpp +133 -0
- package/deps/simdutf/src/lsx/lsx_convert_utf16_to_utf8.cpp +518 -0
- package/deps/simdutf/src/lsx/lsx_convert_utf32_to_latin1.cpp +66 -0
- package/deps/simdutf/src/lsx/lsx_convert_utf32_to_utf16.cpp +155 -0
- package/deps/simdutf/src/lsx/lsx_convert_utf32_to_utf8.cpp +459 -0
- package/deps/simdutf/src/lsx/lsx_convert_utf8_to_latin1.cpp +75 -0
- package/deps/simdutf/src/lsx/lsx_convert_utf8_to_utf16.cpp +291 -0
- package/deps/simdutf/src/lsx/lsx_convert_utf8_to_utf32.cpp +179 -0
- package/deps/simdutf/src/lsx/lsx_find.cpp +60 -0
- package/deps/simdutf/src/lsx/lsx_validate_utf16.cpp +13 -0
- package/deps/simdutf/src/lsx/lsx_validate_utf32le.cpp +68 -0
- package/deps/simdutf/src/ppc64/implementation.cpp +992 -0
- package/deps/simdutf/src/ppc64/ppc64_base64.cpp +480 -0
- package/deps/simdutf/src/ppc64/ppc64_base64_internal_tests.cpp +401 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_latin1_to_utf16.cpp +12 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_latin1_to_utf32.cpp +12 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_latin1_to_utf8.cpp +149 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_utf16_to_latin1.cpp +67 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_utf16_to_utf32.cpp +87 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_utf16_to_utf8.cpp +296 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_utf32_to_latin1.cpp +57 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_utf32_to_utf16.cpp +117 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_utf32_to_utf8.cpp +166 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_utf8_to_latin1.cpp +69 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_utf8_to_utf16.cpp +211 -0
- package/deps/simdutf/src/ppc64/ppc64_convert_utf8_to_utf32.cpp +153 -0
- package/deps/simdutf/src/ppc64/ppc64_utf16_to_utf8_tables.h +1011 -0
- package/deps/simdutf/src/ppc64/ppc64_utf8_length_from_latin1.cpp +37 -0
- package/deps/simdutf/src/ppc64/ppc64_validate_utf16.cpp +19 -0
- package/deps/simdutf/src/ppc64/templates.cpp +91 -0
- package/deps/simdutf/src/rvv/implementation.cpp +138 -0
- package/deps/simdutf/src/rvv/rvv_find.cpp +27 -0
- package/deps/simdutf/src/rvv/rvv_helpers.inl.cpp +23 -0
- package/deps/simdutf/src/rvv/rvv_latin1_to.inl.cpp +71 -0
- package/deps/simdutf/src/rvv/rvv_length_from.inl.cpp +164 -0
- package/deps/simdutf/src/rvv/rvv_utf16_to.inl.cpp +399 -0
- package/deps/simdutf/src/rvv/rvv_utf16fix.cpp +110 -0
- package/deps/simdutf/src/rvv/rvv_utf32_to.inl.cpp +307 -0
- package/deps/simdutf/src/rvv/rvv_utf8_to.inl.cpp +435 -0
- package/deps/simdutf/src/rvv/rvv_validate.inl.cpp +275 -0
- package/deps/simdutf/src/simdutf/arm64/begin.h +2 -0
- package/deps/simdutf/src/simdutf/arm64/bitmanipulation.h +34 -0
- package/deps/simdutf/src/simdutf/arm64/end.h +2 -0
- package/deps/simdutf/src/simdutf/arm64/implementation.h +307 -0
- package/deps/simdutf/src/simdutf/arm64/intrinsics.h +10 -0
- package/deps/simdutf/src/simdutf/arm64/simd.h +547 -0
- package/deps/simdutf/src/simdutf/arm64/simd16-inl.h +403 -0
- package/deps/simdutf/src/simdutf/arm64/simd32-inl.h +129 -0
- package/deps/simdutf/src/simdutf/arm64/simd64-inl.h +28 -0
- package/deps/simdutf/src/simdutf/arm64.h +43 -0
- package/deps/simdutf/src/simdutf/fallback/begin.h +1 -0
- package/deps/simdutf/src/simdutf/fallback/bitmanipulation.h +13 -0
- package/deps/simdutf/src/simdutf/fallback/end.h +1 -0
- package/deps/simdutf/src/simdutf/fallback/implementation.h +331 -0
- package/deps/simdutf/src/simdutf/fallback.h +42 -0
- package/deps/simdutf/src/simdutf/haswell/begin.h +15 -0
- package/deps/simdutf/src/simdutf/haswell/bitmanipulation.h +35 -0
- package/deps/simdutf/src/simdutf/haswell/end.h +13 -0
- package/deps/simdutf/src/simdutf/haswell/implementation.h +338 -0
- package/deps/simdutf/src/simdutf/haswell/intrinsics.h +67 -0
- package/deps/simdutf/src/simdutf/haswell/simd.h +363 -0
- package/deps/simdutf/src/simdutf/haswell/simd16-inl.h +261 -0
- package/deps/simdutf/src/simdutf/haswell/simd32-inl.h +111 -0
- package/deps/simdutf/src/simdutf/haswell/simd64-inl.h +34 -0
- package/deps/simdutf/src/simdutf/haswell.h +63 -0
- package/deps/simdutf/src/simdutf/icelake/begin.h +14 -0
- package/deps/simdutf/src/simdutf/icelake/bitmanipulation.h +44 -0
- package/deps/simdutf/src/simdutf/icelake/end.h +12 -0
- package/deps/simdutf/src/simdutf/icelake/implementation.h +346 -0
- package/deps/simdutf/src/simdutf/icelake/intrinsics.h +138 -0
- package/deps/simdutf/src/simdutf/icelake/simd.h +17 -0
- package/deps/simdutf/src/simdutf/icelake/simd16-inl.h +90 -0
- package/deps/simdutf/src/simdutf/icelake/simd32-inl.h +47 -0
- package/deps/simdutf/src/simdutf/icelake.h +81 -0
- package/deps/simdutf/src/simdutf/lasx/begin.h +8 -0
- package/deps/simdutf/src/simdutf/lasx/bitmanipulation.h +25 -0
- package/deps/simdutf/src/simdutf/lasx/end.h +8 -0
- package/deps/simdutf/src/simdutf/lasx/implementation.h +310 -0
- package/deps/simdutf/src/simdutf/lasx/intrinsics.h +319 -0
- package/deps/simdutf/src/simdutf/lasx/simd.h +551 -0
- package/deps/simdutf/src/simdutf/lasx/simd16-inl.h +234 -0
- package/deps/simdutf/src/simdutf/lasx/simd32-inl.h +74 -0
- package/deps/simdutf/src/simdutf/lasx/simd64-inl.h +52 -0
- package/deps/simdutf/src/simdutf/lasx.h +49 -0
- package/deps/simdutf/src/simdutf/lsx/begin.h +2 -0
- package/deps/simdutf/src/simdutf/lsx/bitmanipulation.h +25 -0
- package/deps/simdutf/src/simdutf/lsx/end.h +2 -0
- package/deps/simdutf/src/simdutf/lsx/implementation.h +309 -0
- package/deps/simdutf/src/simdutf/lsx/intrinsics.h +196 -0
- package/deps/simdutf/src/simdutf/lsx/simd.h +421 -0
- package/deps/simdutf/src/simdutf/lsx/simd16-inl.h +242 -0
- package/deps/simdutf/src/simdutf/lsx/simd32-inl.h +69 -0
- package/deps/simdutf/src/simdutf/lsx/simd64-inl.h +50 -0
- package/deps/simdutf/src/simdutf/lsx.h +52 -0
- package/deps/simdutf/src/simdutf/ppc64/begin.h +1 -0
- package/deps/simdutf/src/simdutf/ppc64/bitmanipulation.h +29 -0
- package/deps/simdutf/src/simdutf/ppc64/end.h +1 -0
- package/deps/simdutf/src/simdutf/ppc64/implementation.h +348 -0
- package/deps/simdutf/src/simdutf/ppc64/intrinsics.h +19 -0
- package/deps/simdutf/src/simdutf/ppc64/simd.h +177 -0
- package/deps/simdutf/src/simdutf/ppc64/simd16-inl.h +327 -0
- package/deps/simdutf/src/simdutf/ppc64/simd32-inl.h +247 -0
- package/deps/simdutf/src/simdutf/ppc64/simd8-inl.h +618 -0
- package/deps/simdutf/src/simdutf/ppc64.h +40 -0
- package/deps/simdutf/src/simdutf/rvv/begin.h +7 -0
- package/deps/simdutf/src/simdutf/rvv/end.h +7 -0
- package/deps/simdutf/src/simdutf/rvv/implementation.h +321 -0
- package/deps/simdutf/src/simdutf/rvv/intrinsics.h +131 -0
- package/deps/simdutf/src/simdutf/rvv.h +41 -0
- package/deps/simdutf/src/simdutf/westmere/begin.h +8 -0
- package/deps/simdutf/src/simdutf/westmere/bitmanipulation.h +37 -0
- package/deps/simdutf/src/simdutf/westmere/end.h +8 -0
- package/deps/simdutf/src/simdutf/westmere/implementation.h +338 -0
- package/deps/simdutf/src/simdutf/westmere/intrinsics.h +38 -0
- package/deps/simdutf/src/simdutf/westmere/simd.h +379 -0
- package/deps/simdutf/src/simdutf/westmere/simd16-inl.h +242 -0
- package/deps/simdutf/src/simdutf/westmere/simd32-inl.h +151 -0
- package/deps/simdutf/src/simdutf/westmere/simd64-inl.h +33 -0
- package/deps/simdutf/src/simdutf/westmere.h +59 -0
- package/deps/simdutf/src/simdutf.cpp +152 -0
- package/deps/simdutf/src/simdutf_c.cpp +525 -0
- package/deps/simdutf/src/tables/utf16_to_utf8_tables.h +768 -0
- package/deps/simdutf/src/tables/utf32_to_utf16_tables.h +53 -0
- package/deps/simdutf/src/tables/utf8_to_utf16_tables.h +826 -0
- package/deps/simdutf/src/westmere/implementation.cpp +1479 -0
- package/deps/simdutf/src/westmere/internal/loader.cpp +7 -0
- package/deps/simdutf/src/westmere/internal/write_v_u16_11bits_to_utf8.cpp +66 -0
- package/deps/simdutf/src/westmere/sse_base64.cpp +672 -0
- package/deps/simdutf/src/westmere/sse_convert_latin1_to_utf16.cpp +21 -0
- package/deps/simdutf/src/westmere/sse_convert_latin1_to_utf32.cpp +31 -0
- package/deps/simdutf/src/westmere/sse_convert_latin1_to_utf8.cpp +71 -0
- package/deps/simdutf/src/westmere/sse_convert_utf16_to_latin1.cpp +70 -0
- package/deps/simdutf/src/westmere/sse_convert_utf16_to_utf32.cpp +206 -0
- package/deps/simdutf/src/westmere/sse_convert_utf16_to_utf8.cpp +504 -0
- package/deps/simdutf/src/westmere/sse_convert_utf32_to_latin1.cpp +82 -0
- package/deps/simdutf/src/westmere/sse_convert_utf32_to_utf16.cpp +209 -0
- package/deps/simdutf/src/westmere/sse_convert_utf32_to_utf8.cpp +589 -0
- package/deps/simdutf/src/westmere/sse_convert_utf8_to_latin1.cpp +58 -0
- package/deps/simdutf/src/westmere/sse_convert_utf8_to_utf16.cpp +197 -0
- package/deps/simdutf/src/westmere/sse_convert_utf8_to_utf32.cpp +141 -0
- package/deps/simdutf/src/westmere/sse_utf16fix.cpp +82 -0
- package/deps/simdutf/src/westmere/sse_validate_utf16.cpp +17 -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 +38 -6
- 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/lib/tsconfig.tsbuildinfo +0 -1
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
#ifndef SIMDUTF_COMMON_DEFS_H
|
|
2
|
+
#define SIMDUTF_COMMON_DEFS_H
|
|
3
|
+
|
|
4
|
+
#include "simdutf/portability.h"
|
|
5
|
+
#include "simdutf/avx512.h"
|
|
6
|
+
|
|
7
|
+
// Sometimes logging is useful, but we want it disabled by default
|
|
8
|
+
// and free of any logging code in release builds.
|
|
9
|
+
#ifdef SIMDUTF_LOGGING
|
|
10
|
+
#include <iostream>
|
|
11
|
+
#define simdutf_log(msg) \
|
|
12
|
+
std::cout << "[" << __FUNCTION__ << "]: " << msg << std::endl \
|
|
13
|
+
<< "\t" << __FILE__ << ":" << __LINE__ << std::endl;
|
|
14
|
+
#define simdutf_log_assert(cond, msg) \
|
|
15
|
+
do { \
|
|
16
|
+
if (!(cond)) { \
|
|
17
|
+
std::cerr << "[" << __FUNCTION__ << "]: " << msg << std::endl \
|
|
18
|
+
<< "\t" << __FILE__ << ":" << __LINE__ << std::endl; \
|
|
19
|
+
std::abort(); \
|
|
20
|
+
} \
|
|
21
|
+
} while (0)
|
|
22
|
+
#else
|
|
23
|
+
#define simdutf_log(msg)
|
|
24
|
+
#define simdutf_log_assert(cond, msg)
|
|
25
|
+
#endif
|
|
26
|
+
|
|
27
|
+
#if defined(SIMDUTF_REGULAR_VISUAL_STUDIO)
|
|
28
|
+
#define SIMDUTF_DEPRECATED __declspec(deprecated)
|
|
29
|
+
|
|
30
|
+
#define simdutf_really_inline __forceinline // really inline in release mode
|
|
31
|
+
#define simdutf_always_inline __forceinline // always inline, no matter what
|
|
32
|
+
#define simdutf_never_inline __declspec(noinline)
|
|
33
|
+
|
|
34
|
+
#define simdutf_unused
|
|
35
|
+
#define simdutf_warn_unused
|
|
36
|
+
|
|
37
|
+
#ifndef simdutf_likely
|
|
38
|
+
#define simdutf_likely(x) x
|
|
39
|
+
#endif
|
|
40
|
+
#ifndef simdutf_unlikely
|
|
41
|
+
#define simdutf_unlikely(x) x
|
|
42
|
+
#endif
|
|
43
|
+
|
|
44
|
+
#define SIMDUTF_PUSH_DISABLE_WARNINGS __pragma(warning(push))
|
|
45
|
+
#define SIMDUTF_PUSH_DISABLE_ALL_WARNINGS __pragma(warning(push, 0))
|
|
46
|
+
#define SIMDUTF_DISABLE_VS_WARNING(WARNING_NUMBER) \
|
|
47
|
+
__pragma(warning(disable : WARNING_NUMBER))
|
|
48
|
+
// Get rid of Intellisense-only warnings (Code Analysis)
|
|
49
|
+
// Though __has_include is C++17, it is supported in Visual Studio 2017 or
|
|
50
|
+
// better (_MSC_VER>=1910).
|
|
51
|
+
#ifdef __has_include
|
|
52
|
+
#if __has_include(<CppCoreCheck\Warnings.h>)
|
|
53
|
+
#include <CppCoreCheck\Warnings.h>
|
|
54
|
+
#define SIMDUTF_DISABLE_UNDESIRED_WARNINGS \
|
|
55
|
+
SIMDUTF_DISABLE_VS_WARNING(ALL_CPPCORECHECK_WARNINGS)
|
|
56
|
+
#endif
|
|
57
|
+
#endif
|
|
58
|
+
|
|
59
|
+
#ifndef SIMDUTF_DISABLE_UNDESIRED_WARNINGS
|
|
60
|
+
#define SIMDUTF_DISABLE_UNDESIRED_WARNINGS
|
|
61
|
+
#endif
|
|
62
|
+
|
|
63
|
+
#define SIMDUTF_DISABLE_DEPRECATED_WARNING SIMDUTF_DISABLE_VS_WARNING(4996)
|
|
64
|
+
#define SIMDUTF_DISABLE_STRICT_OVERFLOW_WARNING
|
|
65
|
+
#define SIMDUTF_POP_DISABLE_WARNINGS __pragma(warning(pop))
|
|
66
|
+
#define SIMDUTF_DISABLE_UNUSED_WARNING
|
|
67
|
+
#else // SIMDUTF_REGULAR_VISUAL_STUDIO
|
|
68
|
+
#if defined(__OPTIMIZE__) || defined(NDEBUG)
|
|
69
|
+
#define simdutf_really_inline inline __attribute__((always_inline))
|
|
70
|
+
#else
|
|
71
|
+
#define simdutf_really_inline inline
|
|
72
|
+
#endif
|
|
73
|
+
#define simdutf_always_inline \
|
|
74
|
+
inline __attribute__((always_inline)) // always inline, no matter what
|
|
75
|
+
#define SIMDUTF_DEPRECATED __attribute__((deprecated))
|
|
76
|
+
#define simdutf_never_inline inline __attribute__((noinline))
|
|
77
|
+
|
|
78
|
+
#define simdutf_unused __attribute__((unused))
|
|
79
|
+
#define simdutf_warn_unused __attribute__((warn_unused_result))
|
|
80
|
+
|
|
81
|
+
#ifndef simdutf_likely
|
|
82
|
+
#define simdutf_likely(x) __builtin_expect(!!(x), 1)
|
|
83
|
+
#endif
|
|
84
|
+
#ifndef simdutf_unlikely
|
|
85
|
+
#define simdutf_unlikely(x) __builtin_expect(!!(x), 0)
|
|
86
|
+
#endif
|
|
87
|
+
// clang-format off
|
|
88
|
+
#define SIMDUTF_PUSH_DISABLE_WARNINGS _Pragma("GCC diagnostic push")
|
|
89
|
+
// gcc doesn't seem to disable all warnings with all and extra, add warnings
|
|
90
|
+
// here as necessary
|
|
91
|
+
#define SIMDUTF_PUSH_DISABLE_ALL_WARNINGS \
|
|
92
|
+
SIMDUTF_PUSH_DISABLE_WARNINGS \
|
|
93
|
+
SIMDUTF_DISABLE_GCC_WARNING(-Weffc++) \
|
|
94
|
+
SIMDUTF_DISABLE_GCC_WARNING(-Wall) \
|
|
95
|
+
SIMDUTF_DISABLE_GCC_WARNING(-Wconversion) \
|
|
96
|
+
SIMDUTF_DISABLE_GCC_WARNING(-Wextra) \
|
|
97
|
+
SIMDUTF_DISABLE_GCC_WARNING(-Wattributes) \
|
|
98
|
+
SIMDUTF_DISABLE_GCC_WARNING(-Wimplicit-fallthrough) \
|
|
99
|
+
SIMDUTF_DISABLE_GCC_WARNING(-Wnon-virtual-dtor) \
|
|
100
|
+
SIMDUTF_DISABLE_GCC_WARNING(-Wreturn-type) \
|
|
101
|
+
SIMDUTF_DISABLE_GCC_WARNING(-Wshadow) \
|
|
102
|
+
SIMDUTF_DISABLE_GCC_WARNING(-Wunused-parameter) \
|
|
103
|
+
SIMDUTF_DISABLE_GCC_WARNING(-Wunused-variable)
|
|
104
|
+
#define SIMDUTF_PRAGMA(P) _Pragma(#P)
|
|
105
|
+
#define SIMDUTF_DISABLE_GCC_WARNING(WARNING) \
|
|
106
|
+
SIMDUTF_PRAGMA(GCC diagnostic ignored #WARNING)
|
|
107
|
+
#if defined(SIMDUTF_CLANG_VISUAL_STUDIO)
|
|
108
|
+
#define SIMDUTF_DISABLE_UNDESIRED_WARNINGS \
|
|
109
|
+
SIMDUTF_DISABLE_GCC_WARNING(-Wmicrosoft-include)
|
|
110
|
+
#else
|
|
111
|
+
#define SIMDUTF_DISABLE_UNDESIRED_WARNINGS
|
|
112
|
+
#endif
|
|
113
|
+
#define SIMDUTF_DISABLE_DEPRECATED_WARNING \
|
|
114
|
+
SIMDUTF_DISABLE_GCC_WARNING(-Wdeprecated-declarations)
|
|
115
|
+
#define SIMDUTF_DISABLE_STRICT_OVERFLOW_WARNING \
|
|
116
|
+
SIMDUTF_DISABLE_GCC_WARNING(-Wstrict-overflow)
|
|
117
|
+
#define SIMDUTF_POP_DISABLE_WARNINGS _Pragma("GCC diagnostic pop")
|
|
118
|
+
#define SIMDUTF_DISABLE_UNUSED_WARNING \
|
|
119
|
+
SIMDUTF_PUSH_DISABLE_WARNINGS \
|
|
120
|
+
SIMDUTF_DISABLE_GCC_WARNING(-Wunused-function) \
|
|
121
|
+
SIMDUTF_DISABLE_GCC_WARNING(-Wunused-const-variable)
|
|
122
|
+
// clang-format on
|
|
123
|
+
|
|
124
|
+
#endif // MSC_VER
|
|
125
|
+
|
|
126
|
+
// Conditional constexpr macro: expands to constexpr for C++17+, empty otherwise
|
|
127
|
+
#if SIMDUTF_CPLUSPLUS17
|
|
128
|
+
#define simdutf_constexpr constexpr
|
|
129
|
+
#else
|
|
130
|
+
#define simdutf_constexpr
|
|
131
|
+
#endif
|
|
132
|
+
|
|
133
|
+
// Will evaluate to constexpr in C++23 or later. This makes it possible to mark
|
|
134
|
+
// functions constexpr if the "if consteval" feature is available to use.
|
|
135
|
+
#if SIMDUTF_CPLUSPLUS23
|
|
136
|
+
#define simdutf_constexpr23 constexpr
|
|
137
|
+
#else
|
|
138
|
+
#define simdutf_constexpr23
|
|
139
|
+
#endif
|
|
140
|
+
|
|
141
|
+
#ifndef SIMDUTF_DLLIMPORTEXPORT
|
|
142
|
+
#if defined(SIMDUTF_VISUAL_STUDIO) // Visual Studio
|
|
143
|
+
/**
|
|
144
|
+
* Windows users need to do some extra work when building
|
|
145
|
+
* or using a dynamic library (DLL). When building, we need
|
|
146
|
+
* to set SIMDUTF_DLLIMPORTEXPORT to __declspec(dllexport).
|
|
147
|
+
* When *using* the DLL, the user needs to set
|
|
148
|
+
* SIMDUTF_DLLIMPORTEXPORT __declspec(dllimport).
|
|
149
|
+
*
|
|
150
|
+
* Static libraries not need require such work.
|
|
151
|
+
*
|
|
152
|
+
* It does not matter here whether you are using
|
|
153
|
+
* the regular visual studio or clang under visual
|
|
154
|
+
* studio, you still need to handle these issues.
|
|
155
|
+
*
|
|
156
|
+
* Non-Windows systems do not have this complexity.
|
|
157
|
+
*/
|
|
158
|
+
#if SIMDUTF_BUILDING_WINDOWS_DYNAMIC_LIBRARY
|
|
159
|
+
|
|
160
|
+
// We set SIMDUTF_BUILDING_WINDOWS_DYNAMIC_LIBRARY when we build a DLL
|
|
161
|
+
// under Windows. It should never happen that both
|
|
162
|
+
// SIMDUTF_BUILDING_WINDOWS_DYNAMIC_LIBRARY and
|
|
163
|
+
// SIMDUTF_USING_WINDOWS_DYNAMIC_LIBRARY are set.
|
|
164
|
+
#define SIMDUTF_DLLIMPORTEXPORT __declspec(dllexport)
|
|
165
|
+
#elif SIMDUTF_USING_WINDOWS_DYNAMIC_LIBRARY
|
|
166
|
+
// Windows user who call a dynamic library should set
|
|
167
|
+
// SIMDUTF_USING_WINDOWS_DYNAMIC_LIBRARY to 1.
|
|
168
|
+
|
|
169
|
+
#define SIMDUTF_DLLIMPORTEXPORT __declspec(dllimport)
|
|
170
|
+
#else
|
|
171
|
+
// We assume by default static linkage
|
|
172
|
+
#define SIMDUTF_DLLIMPORTEXPORT
|
|
173
|
+
#endif
|
|
174
|
+
#else // defined(SIMDUTF_VISUAL_STUDIO)
|
|
175
|
+
// Non-Windows systems do not have this complexity.
|
|
176
|
+
#define SIMDUTF_DLLIMPORTEXPORT
|
|
177
|
+
#endif // defined(SIMDUTF_VISUAL_STUDIO)
|
|
178
|
+
#endif
|
|
179
|
+
|
|
180
|
+
#if SIMDUTF_MAYBE_UNUSED_AVAILABLE
|
|
181
|
+
#define simdutf_maybe_unused [[maybe_unused]]
|
|
182
|
+
#else
|
|
183
|
+
#define simdutf_maybe_unused
|
|
184
|
+
#endif
|
|
185
|
+
|
|
186
|
+
#endif // SIMDUTF_COMMON_DEFS_H
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
#ifndef SIMDUTF_COMPILER_CHECK_H
|
|
2
|
+
#define SIMDUTF_COMPILER_CHECK_H
|
|
3
|
+
|
|
4
|
+
#ifndef __cplusplus
|
|
5
|
+
#error simdutf requires a C++ compiler
|
|
6
|
+
#endif
|
|
7
|
+
|
|
8
|
+
#ifndef SIMDUTF_CPLUSPLUS
|
|
9
|
+
#if defined(_MSVC_LANG) && !defined(__clang__)
|
|
10
|
+
#define SIMDUTF_CPLUSPLUS (_MSC_VER == 1900 ? 201103L : _MSVC_LANG)
|
|
11
|
+
#else
|
|
12
|
+
#define SIMDUTF_CPLUSPLUS __cplusplus
|
|
13
|
+
#endif
|
|
14
|
+
#endif
|
|
15
|
+
|
|
16
|
+
// C++ 26
|
|
17
|
+
#if !defined(SIMDUTF_CPLUSPLUS26) && (SIMDUTF_CPLUSPLUS >= 202602L)
|
|
18
|
+
#define SIMDUTF_CPLUSPLUS26 1
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
// C++ 23
|
|
22
|
+
#if !defined(SIMDUTF_CPLUSPLUS23) && (SIMDUTF_CPLUSPLUS >= 202302L)
|
|
23
|
+
#define SIMDUTF_CPLUSPLUS23 1
|
|
24
|
+
#endif
|
|
25
|
+
|
|
26
|
+
// C++ 20
|
|
27
|
+
#if !defined(SIMDUTF_CPLUSPLUS20) && (SIMDUTF_CPLUSPLUS >= 202002L)
|
|
28
|
+
#define SIMDUTF_CPLUSPLUS20 1
|
|
29
|
+
#endif
|
|
30
|
+
|
|
31
|
+
// C++ 17
|
|
32
|
+
#if !defined(SIMDUTF_CPLUSPLUS17) && (SIMDUTF_CPLUSPLUS >= 201703L)
|
|
33
|
+
#define SIMDUTF_CPLUSPLUS17 1
|
|
34
|
+
#endif
|
|
35
|
+
|
|
36
|
+
// C++ 14
|
|
37
|
+
#if !defined(SIMDUTF_CPLUSPLUS14) && (SIMDUTF_CPLUSPLUS >= 201402L)
|
|
38
|
+
#define SIMDUTF_CPLUSPLUS14 1
|
|
39
|
+
#endif
|
|
40
|
+
|
|
41
|
+
// C++ 11
|
|
42
|
+
#if !defined(SIMDUTF_CPLUSPLUS11) && (SIMDUTF_CPLUSPLUS >= 201103L)
|
|
43
|
+
#define SIMDUTF_CPLUSPLUS11 1
|
|
44
|
+
#endif
|
|
45
|
+
|
|
46
|
+
#ifndef SIMDUTF_CPLUSPLUS11
|
|
47
|
+
#error simdutf requires a compiler compliant with the C++11 standard
|
|
48
|
+
#endif
|
|
49
|
+
|
|
50
|
+
#endif // SIMDUTF_COMPILER_CHECK_H
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
#ifndef SIMDUTF_CONSTEXPR_PTR_H
|
|
2
|
+
#define SIMDUTF_CONSTEXPR_PTR_H
|
|
3
|
+
|
|
4
|
+
#include <cstddef>
|
|
5
|
+
|
|
6
|
+
namespace simdutf {
|
|
7
|
+
namespace detail {
|
|
8
|
+
/**
|
|
9
|
+
* The constexpr_ptr class is a workaround for reinterpret_cast not being
|
|
10
|
+
* allowed during constant evaluation.
|
|
11
|
+
*/
|
|
12
|
+
template <typename to, typename from>
|
|
13
|
+
requires(sizeof(to) == sizeof(from))
|
|
14
|
+
struct constexpr_ptr {
|
|
15
|
+
const from *p;
|
|
16
|
+
|
|
17
|
+
constexpr explicit constexpr_ptr(const from *ptr) noexcept : p(ptr) {}
|
|
18
|
+
|
|
19
|
+
constexpr to operator*() const noexcept { return static_cast<to>(*p); }
|
|
20
|
+
|
|
21
|
+
constexpr constexpr_ptr &operator++() noexcept {
|
|
22
|
+
++p;
|
|
23
|
+
return *this;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
constexpr constexpr_ptr operator++(int) noexcept {
|
|
27
|
+
auto old = *this;
|
|
28
|
+
++p;
|
|
29
|
+
return old;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
constexpr constexpr_ptr &operator--() noexcept {
|
|
33
|
+
--p;
|
|
34
|
+
return *this;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
constexpr constexpr_ptr operator--(int) noexcept {
|
|
38
|
+
auto old = *this;
|
|
39
|
+
--p;
|
|
40
|
+
return old;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
constexpr constexpr_ptr &operator+=(std::ptrdiff_t n) noexcept {
|
|
44
|
+
p += n;
|
|
45
|
+
return *this;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
constexpr constexpr_ptr &operator-=(std::ptrdiff_t n) noexcept {
|
|
49
|
+
p -= n;
|
|
50
|
+
return *this;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
constexpr constexpr_ptr operator+(std::ptrdiff_t n) const noexcept {
|
|
54
|
+
return constexpr_ptr{p + n};
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
constexpr constexpr_ptr operator-(std::ptrdiff_t n) const noexcept {
|
|
58
|
+
return constexpr_ptr{p - n};
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
constexpr std::ptrdiff_t operator-(const constexpr_ptr &o) const noexcept {
|
|
62
|
+
return p - o.p;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
constexpr to operator[](std::ptrdiff_t n) const noexcept {
|
|
66
|
+
return static_cast<to>(*(p + n));
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// to prevent compilation errors for memcpy, even if it is never
|
|
70
|
+
// called during constant evaluation
|
|
71
|
+
constexpr operator const void *() const noexcept { return p; }
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
template <typename to, typename from>
|
|
75
|
+
constexpr constexpr_ptr<to, from> constexpr_cast_ptr(from *p) noexcept {
|
|
76
|
+
return constexpr_ptr<to, from>{p};
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* helper type for constexpr_writeptr, so it is possible to
|
|
81
|
+
* do "*ptr = val;"
|
|
82
|
+
*/
|
|
83
|
+
template <typename SrcType, typename TargetType>
|
|
84
|
+
struct constexpr_write_ptr_proxy {
|
|
85
|
+
|
|
86
|
+
constexpr explicit constexpr_write_ptr_proxy(TargetType *raw) : p(raw) {}
|
|
87
|
+
|
|
88
|
+
constexpr constexpr_write_ptr_proxy &operator=(SrcType v) {
|
|
89
|
+
*p = static_cast<TargetType>(v);
|
|
90
|
+
return *this;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
TargetType *p;
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* helper for working around reinterpret_cast not being allowed during constexpr
|
|
98
|
+
* evaluation. will try to act as a SrcType* but actually write to the pointer
|
|
99
|
+
* given in the constructor, which is of another type TargetType
|
|
100
|
+
*/
|
|
101
|
+
template <typename SrcType, typename TargetType> struct constexpr_write_ptr {
|
|
102
|
+
constexpr explicit constexpr_write_ptr(TargetType *raw) : p(raw) {}
|
|
103
|
+
|
|
104
|
+
constexpr constexpr_write_ptr_proxy<SrcType, TargetType> operator*() const {
|
|
105
|
+
return constexpr_write_ptr_proxy<SrcType, TargetType>{p};
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
constexpr constexpr_write_ptr_proxy<SrcType, TargetType>
|
|
109
|
+
operator[](std::ptrdiff_t n) const {
|
|
110
|
+
return constexpr_write_ptr_proxy<SrcType, TargetType>{p + n};
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
constexpr constexpr_write_ptr &operator++() {
|
|
114
|
+
++p;
|
|
115
|
+
return *this;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
constexpr constexpr_write_ptr operator++(int) {
|
|
119
|
+
constexpr_write_ptr old = *this;
|
|
120
|
+
++p;
|
|
121
|
+
return old;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
constexpr std::ptrdiff_t operator-(const constexpr_write_ptr &other) const {
|
|
125
|
+
return p - other.p;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
TargetType *p;
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
template <typename SrcType, typename TargetType>
|
|
132
|
+
constexpr auto constexpr_cast_writeptr(TargetType *raw) {
|
|
133
|
+
return constexpr_write_ptr<SrcType, TargetType>{raw};
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
} // namespace detail
|
|
137
|
+
} // namespace simdutf
|
|
138
|
+
#endif
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
#ifndef SIMDUTF_ENCODING_TYPES_H
|
|
2
|
+
#define SIMDUTF_ENCODING_TYPES_H
|
|
3
|
+
#include <string>
|
|
4
|
+
#include "simdutf/portability.h"
|
|
5
|
+
#include "simdutf/common_defs.h"
|
|
6
|
+
|
|
7
|
+
#if !defined(SIMDUTF_NO_STD_TEXT_ENCODING) && \
|
|
8
|
+
defined(__cpp_lib_text_encoding) && __cpp_lib_text_encoding >= 202306L
|
|
9
|
+
#define SIMDUTF_HAS_STD_TEXT_ENCODING 1
|
|
10
|
+
#include <text_encoding>
|
|
11
|
+
#endif
|
|
12
|
+
|
|
13
|
+
namespace simdutf {
|
|
14
|
+
|
|
15
|
+
enum encoding_type {
|
|
16
|
+
UTF8 = 1, // BOM 0xef 0xbb 0xbf
|
|
17
|
+
UTF16_LE = 2, // BOM 0xff 0xfe
|
|
18
|
+
UTF16_BE = 4, // BOM 0xfe 0xff
|
|
19
|
+
UTF32_LE = 8, // BOM 0xff 0xfe 0x00 0x00
|
|
20
|
+
UTF32_BE = 16, // BOM 0x00 0x00 0xfe 0xff
|
|
21
|
+
Latin1 = 32,
|
|
22
|
+
|
|
23
|
+
unspecified = 0
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
#ifndef SIMDUTF_IS_BIG_ENDIAN
|
|
27
|
+
#error "SIMDUTF_IS_BIG_ENDIAN needs to be defined."
|
|
28
|
+
#endif
|
|
29
|
+
|
|
30
|
+
enum endianness {
|
|
31
|
+
LITTLE = 0,
|
|
32
|
+
BIG = 1,
|
|
33
|
+
NATIVE =
|
|
34
|
+
#if SIMDUTF_IS_BIG_ENDIAN
|
|
35
|
+
BIG
|
|
36
|
+
#else
|
|
37
|
+
LITTLE
|
|
38
|
+
#endif
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
simdutf_warn_unused simdutf_really_inline constexpr bool
|
|
42
|
+
match_system(endianness e) {
|
|
43
|
+
return e == endianness::NATIVE;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
simdutf_warn_unused std::string to_string(encoding_type bom);
|
|
47
|
+
|
|
48
|
+
// Note that BOM for UTF8 is discouraged.
|
|
49
|
+
namespace BOM {
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Checks for a BOM. If not, returns unspecified
|
|
53
|
+
* @param input the string to process
|
|
54
|
+
* @param length the length of the string in code units
|
|
55
|
+
* @return the corresponding encoding
|
|
56
|
+
*/
|
|
57
|
+
|
|
58
|
+
simdutf_warn_unused encoding_type check_bom(const uint8_t *byte, size_t length);
|
|
59
|
+
simdutf_warn_unused encoding_type check_bom(const char *byte, size_t length);
|
|
60
|
+
/**
|
|
61
|
+
* Returns the size, in bytes, of the BOM for a given encoding type.
|
|
62
|
+
* Note that UTF8 BOM are discouraged.
|
|
63
|
+
* @param bom the encoding type
|
|
64
|
+
* @return the size in bytes of the corresponding BOM
|
|
65
|
+
*/
|
|
66
|
+
simdutf_warn_unused size_t bom_byte_size(encoding_type bom);
|
|
67
|
+
|
|
68
|
+
} // namespace BOM
|
|
69
|
+
|
|
70
|
+
#ifdef SIMDUTF_HAS_STD_TEXT_ENCODING
|
|
71
|
+
/**
|
|
72
|
+
* Convert a simdutf encoding type to a std::text_encoding.
|
|
73
|
+
*
|
|
74
|
+
* @param enc the simdutf encoding type
|
|
75
|
+
* @return the corresponding std::text_encoding, or
|
|
76
|
+
* std::text_encoding::id::unknown for unspecified/unsupported
|
|
77
|
+
*/
|
|
78
|
+
simdutf_warn_unused constexpr std::text_encoding
|
|
79
|
+
to_std_encoding(encoding_type enc) noexcept {
|
|
80
|
+
switch (enc) {
|
|
81
|
+
case UTF8:
|
|
82
|
+
return std::text_encoding(std::text_encoding::id::UTF8);
|
|
83
|
+
case UTF16_LE:
|
|
84
|
+
return std::text_encoding(std::text_encoding::id::UTF16LE);
|
|
85
|
+
case UTF16_BE:
|
|
86
|
+
return std::text_encoding(std::text_encoding::id::UTF16BE);
|
|
87
|
+
case UTF32_LE:
|
|
88
|
+
return std::text_encoding(std::text_encoding::id::UTF32LE);
|
|
89
|
+
case UTF32_BE:
|
|
90
|
+
return std::text_encoding(std::text_encoding::id::UTF32BE);
|
|
91
|
+
case Latin1:
|
|
92
|
+
return std::text_encoding(std::text_encoding::id::ISOLatin1);
|
|
93
|
+
case unspecified:
|
|
94
|
+
default:
|
|
95
|
+
return std::text_encoding(std::text_encoding::id::unknown);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Convert a std::text_encoding to a simdutf encoding type.
|
|
101
|
+
*
|
|
102
|
+
* @param enc the std::text_encoding
|
|
103
|
+
* @return the corresponding simdutf encoding type, or
|
|
104
|
+
* encoding_type::unspecified if the encoding is not supported
|
|
105
|
+
*/
|
|
106
|
+
simdutf_warn_unused constexpr encoding_type
|
|
107
|
+
from_std_encoding(const std::text_encoding &enc) noexcept {
|
|
108
|
+
switch (enc.mib()) {
|
|
109
|
+
case std::text_encoding::id::UTF8:
|
|
110
|
+
return UTF8;
|
|
111
|
+
case std::text_encoding::id::UTF16LE:
|
|
112
|
+
return UTF16_LE;
|
|
113
|
+
case std::text_encoding::id::UTF16BE:
|
|
114
|
+
return UTF16_BE;
|
|
115
|
+
case std::text_encoding::id::UTF32LE:
|
|
116
|
+
return UTF32_LE;
|
|
117
|
+
case std::text_encoding::id::UTF32BE:
|
|
118
|
+
return UTF32_BE;
|
|
119
|
+
case std::text_encoding::id::ISOLatin1:
|
|
120
|
+
return Latin1;
|
|
121
|
+
default:
|
|
122
|
+
return unspecified;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Get the native-endian UTF-16 encoding type for this system.
|
|
128
|
+
*
|
|
129
|
+
* @return UTF16_LE on little-endian systems, UTF16_BE on big-endian systems
|
|
130
|
+
*/
|
|
131
|
+
simdutf_warn_unused constexpr encoding_type native_utf16_encoding() noexcept {
|
|
132
|
+
#if SIMDUTF_IS_BIG_ENDIAN
|
|
133
|
+
return UTF16_BE;
|
|
134
|
+
#else
|
|
135
|
+
return UTF16_LE;
|
|
136
|
+
#endif
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Get the native-endian UTF-32 encoding type for this system.
|
|
141
|
+
*
|
|
142
|
+
* @return UTF32_LE on little-endian systems, UTF32_BE on big-endian systems
|
|
143
|
+
*/
|
|
144
|
+
simdutf_warn_unused constexpr encoding_type native_utf32_encoding() noexcept {
|
|
145
|
+
#if SIMDUTF_IS_BIG_ENDIAN
|
|
146
|
+
return UTF32_BE;
|
|
147
|
+
#else
|
|
148
|
+
return UTF32_LE;
|
|
149
|
+
#endif
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* Convert a std::text_encoding to a simdutf encoding type,
|
|
154
|
+
* using native endianness for UTF-16/UTF-32 without explicit endianness.
|
|
155
|
+
*
|
|
156
|
+
* When the input is std::text_encoding::id::UTF16 or UTF32 (without LE/BE
|
|
157
|
+
* suffix), this returns the native-endian simdutf variant.
|
|
158
|
+
*
|
|
159
|
+
* @param enc the std::text_encoding
|
|
160
|
+
* @return the corresponding simdutf encoding type, or
|
|
161
|
+
* encoding_type::unspecified if the encoding is not supported
|
|
162
|
+
*/
|
|
163
|
+
simdutf_warn_unused constexpr encoding_type
|
|
164
|
+
from_std_encoding_native(const std::text_encoding &enc) noexcept {
|
|
165
|
+
switch (enc.mib()) {
|
|
166
|
+
case std::text_encoding::id::UTF8:
|
|
167
|
+
return UTF8;
|
|
168
|
+
case std::text_encoding::id::UTF16:
|
|
169
|
+
return native_utf16_encoding();
|
|
170
|
+
case std::text_encoding::id::UTF16LE:
|
|
171
|
+
return UTF16_LE;
|
|
172
|
+
case std::text_encoding::id::UTF16BE:
|
|
173
|
+
return UTF16_BE;
|
|
174
|
+
case std::text_encoding::id::UTF32:
|
|
175
|
+
return native_utf32_encoding();
|
|
176
|
+
case std::text_encoding::id::UTF32LE:
|
|
177
|
+
return UTF32_LE;
|
|
178
|
+
case std::text_encoding::id::UTF32BE:
|
|
179
|
+
return UTF32_BE;
|
|
180
|
+
case std::text_encoding::id::ISOLatin1:
|
|
181
|
+
return Latin1;
|
|
182
|
+
default:
|
|
183
|
+
return unspecified;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
#endif // SIMDUTF_HAS_STD_TEXT_ENCODING
|
|
187
|
+
|
|
188
|
+
} // namespace simdutf
|
|
189
|
+
#endif
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
#ifndef SIMDUTF_ERROR_H
|
|
2
|
+
#define SIMDUTF_ERROR_H
|
|
3
|
+
namespace simdutf {
|
|
4
|
+
|
|
5
|
+
enum error_code {
|
|
6
|
+
SUCCESS = 0,
|
|
7
|
+
HEADER_BITS, // Any byte must have fewer than 5 header bits.
|
|
8
|
+
TOO_SHORT, // The leading byte must be followed by N-1 continuation bytes,
|
|
9
|
+
// where N is the UTF-8 character length This is also the error
|
|
10
|
+
// when the input is truncated.
|
|
11
|
+
TOO_LONG, // We either have too many consecutive continuation bytes or the
|
|
12
|
+
// string starts with a continuation byte.
|
|
13
|
+
OVERLONG, // The decoded character must be above U+7F for two-byte characters,
|
|
14
|
+
// U+7FF for three-byte characters, and U+FFFF for four-byte
|
|
15
|
+
// characters.
|
|
16
|
+
TOO_LARGE, // The decoded character must be less than or equal to
|
|
17
|
+
// U+10FFFF,less than or equal than U+7F for ASCII OR less than
|
|
18
|
+
// equal than U+FF for Latin1
|
|
19
|
+
SURROGATE, // The decoded character must be not be in U+D800...DFFF (UTF-8 or
|
|
20
|
+
// UTF-32)
|
|
21
|
+
// OR
|
|
22
|
+
// a high surrogate must be followed by a low surrogate
|
|
23
|
+
// and a low surrogate must be preceded by a high surrogate
|
|
24
|
+
// (UTF-16)
|
|
25
|
+
// OR
|
|
26
|
+
// there must be no surrogate at all and one is
|
|
27
|
+
// found (Latin1 functions)
|
|
28
|
+
// OR
|
|
29
|
+
// *specifically* for the function
|
|
30
|
+
// utf8_length_from_utf16_with_replacement, a surrogate (whether
|
|
31
|
+
// in error or not) has been found (I.e., whether we are in the
|
|
32
|
+
// Basic Multilingual Plane or not).
|
|
33
|
+
INVALID_BASE64_CHARACTER, // Found a character that cannot be part of a valid
|
|
34
|
+
// base64 string. This may include a misplaced
|
|
35
|
+
// padding character ('=').
|
|
36
|
+
BASE64_INPUT_REMAINDER, // The base64 input terminates with a single
|
|
37
|
+
// character, excluding padding (=). It is also used
|
|
38
|
+
// in strict mode when padding is not adequate.
|
|
39
|
+
BASE64_EXTRA_BITS, // The base64 input terminates with non-zero
|
|
40
|
+
// padding bits.
|
|
41
|
+
OUTPUT_BUFFER_TOO_SMALL, // The provided buffer is too small.
|
|
42
|
+
OTHER // Not related to validation/transcoding.
|
|
43
|
+
};
|
|
44
|
+
#if SIMDUTF_CPLUSPLUS17
|
|
45
|
+
inline std::string_view error_to_string(error_code code) noexcept {
|
|
46
|
+
switch (code) {
|
|
47
|
+
case SUCCESS:
|
|
48
|
+
return "SUCCESS";
|
|
49
|
+
case HEADER_BITS:
|
|
50
|
+
return "HEADER_BITS";
|
|
51
|
+
case TOO_SHORT:
|
|
52
|
+
return "TOO_SHORT";
|
|
53
|
+
case TOO_LONG:
|
|
54
|
+
return "TOO_LONG";
|
|
55
|
+
case OVERLONG:
|
|
56
|
+
return "OVERLONG";
|
|
57
|
+
case TOO_LARGE:
|
|
58
|
+
return "TOO_LARGE";
|
|
59
|
+
case SURROGATE:
|
|
60
|
+
return "SURROGATE";
|
|
61
|
+
case INVALID_BASE64_CHARACTER:
|
|
62
|
+
return "INVALID_BASE64_CHARACTER";
|
|
63
|
+
case BASE64_INPUT_REMAINDER:
|
|
64
|
+
return "BASE64_INPUT_REMAINDER";
|
|
65
|
+
case BASE64_EXTRA_BITS:
|
|
66
|
+
return "BASE64_EXTRA_BITS";
|
|
67
|
+
case OUTPUT_BUFFER_TOO_SMALL:
|
|
68
|
+
return "OUTPUT_BUFFER_TOO_SMALL";
|
|
69
|
+
default:
|
|
70
|
+
return "OTHER";
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
#endif
|
|
74
|
+
|
|
75
|
+
struct result {
|
|
76
|
+
error_code error;
|
|
77
|
+
size_t count; // In case of error, indicates the position of the error. In
|
|
78
|
+
// case of success, indicates the number of code units
|
|
79
|
+
// validated/written.
|
|
80
|
+
|
|
81
|
+
simdutf_really_inline simdutf_constexpr23 result() noexcept
|
|
82
|
+
: error{error_code::SUCCESS}, count{0} {}
|
|
83
|
+
|
|
84
|
+
simdutf_really_inline simdutf_constexpr23 result(error_code err,
|
|
85
|
+
size_t pos) noexcept
|
|
86
|
+
: error{err}, count{pos} {}
|
|
87
|
+
|
|
88
|
+
simdutf_really_inline simdutf_constexpr23 bool is_ok() const noexcept {
|
|
89
|
+
return error == error_code::SUCCESS;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
simdutf_really_inline simdutf_constexpr23 bool is_err() const noexcept {
|
|
93
|
+
return error != error_code::SUCCESS;
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
struct full_result {
|
|
98
|
+
error_code error;
|
|
99
|
+
size_t input_count;
|
|
100
|
+
size_t output_count;
|
|
101
|
+
bool padding_error = false; // true if the error is due to padding, only
|
|
102
|
+
// meaningful when error is not SUCCESS
|
|
103
|
+
|
|
104
|
+
simdutf_really_inline simdutf_constexpr23 full_result() noexcept
|
|
105
|
+
: error{error_code::SUCCESS}, input_count{0}, output_count{0} {}
|
|
106
|
+
|
|
107
|
+
simdutf_really_inline simdutf_constexpr23 full_result(error_code err,
|
|
108
|
+
size_t pos_in,
|
|
109
|
+
size_t pos_out) noexcept
|
|
110
|
+
: error{err}, input_count{pos_in}, output_count{pos_out} {}
|
|
111
|
+
simdutf_really_inline simdutf_constexpr23 full_result(
|
|
112
|
+
error_code err, size_t pos_in, size_t pos_out, bool padding_err) noexcept
|
|
113
|
+
: error{err}, input_count{pos_in}, output_count{pos_out},
|
|
114
|
+
padding_error{padding_err} {}
|
|
115
|
+
|
|
116
|
+
simdutf_really_inline simdutf_constexpr23 operator result() const noexcept {
|
|
117
|
+
if (error == error_code::SUCCESS) {
|
|
118
|
+
return result{error, output_count};
|
|
119
|
+
} else {
|
|
120
|
+
return result{error, input_count};
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
} // namespace simdutf
|
|
126
|
+
#endif
|