diff options
Diffstat (limited to 'src/bun.js/bindings/bun-simdutf.cpp')
-rw-r--r-- | src/bun.js/bindings/bun-simdutf.cpp | 327 |
1 files changed, 327 insertions, 0 deletions
diff --git a/src/bun.js/bindings/bun-simdutf.cpp b/src/bun.js/bindings/bun-simdutf.cpp new file mode 100644 index 000000000..d02ff9854 --- /dev/null +++ b/src/bun.js/bindings/bun-simdutf.cpp @@ -0,0 +1,327 @@ +#include "simdutf.h" + +typedef struct SIMDUTFResult { + int error; + size_t count; +} SIMDUTFResult; + +extern "C" { + +int simdutf__detect_encodings(const char* input, size_t length) +{ + return simdutf::detect_encodings(input, length); +} + +bool simdutf__validate_utf8(const char* buf, size_t len) +{ + return simdutf::validate_utf8(buf, len); +} + +SIMDUTFResult simdutf__validate_utf8_with_errors(const char* buf, size_t len) +{ + auto res = simdutf::validate_utf8_with_errors(buf, len); + return { res.error, res.count }; +} + +bool simdutf__validate_ascii(const char* buf, size_t len) +{ + return simdutf::validate_ascii(buf, len); +} + +SIMDUTFResult simdutf__validate_ascii_with_errors(const char* buf, size_t len) +{ + auto res = simdutf::validate_ascii_with_errors(buf, len); + return { res.error, res.count }; +} + +bool simdutf__validate_utf16le(const char16_t* buf, size_t len) +{ + return simdutf::validate_utf16le(buf, len); +} + +bool simdutf__validate_utf16be(const char16_t* buf, size_t len) +{ + return simdutf::validate_utf16be(buf, len); +} + +SIMDUTFResult simdutf__validate_utf16le_with_errors(const char16_t* buf, + size_t len) +{ + auto res = simdutf::validate_utf16le_with_errors(buf, len); + return { res.error, res.count }; +} + +SIMDUTFResult simdutf__validate_utf16be_with_errors(const char16_t* buf, + size_t len) +{ + auto res = simdutf::validate_utf16be_with_errors(buf, len); + return { res.error, res.count }; +} + +bool simdutf__validate_utf32(const char32_t* buf, size_t len) +{ + return simdutf::validate_utf32(buf, len); +} + +SIMDUTFResult simdutf__validate_utf32_with_errors(const char32_t* buf, + size_t len) +{ + auto res = simdutf::validate_utf32_with_errors(buf, len); + return { res.error, res.count }; +} + +size_t simdutf__convert_utf8_to_utf16le(const char* buf, size_t len, + char16_t* utf16_output) +{ + return simdutf::convert_utf8_to_utf16le(buf, len, utf16_output); +} + +size_t simdutf__convert_utf8_to_utf16be(const char* buf, size_t len, + char16_t* utf16_output) +{ + return simdutf::convert_utf8_to_utf16be(buf, len, utf16_output); +} +SIMDUTFResult +simdutf__convert_utf8_to_utf16le_with_errors(const char* buf, size_t len, + char16_t* utf16_output) +{ + auto res = simdutf::convert_utf8_to_utf16le_with_errors(buf, len, utf16_output); + return { res.error, res.count }; +} + +SIMDUTFResult +simdutf__convert_utf8_to_utf16be_with_errors(const char* buf, size_t len, + char16_t* utf16_output) +{ + auto res = simdutf::convert_utf8_to_utf16be_with_errors(buf, len, utf16_output); + return { res.error, res.count }; +} +size_t simdutf__convert_valid_utf8_to_utf16le(const char* buf, size_t len, + char16_t* utf16_buffer) +{ + return simdutf::convert_valid_utf8_to_utf16le(buf, len, utf16_buffer); +} + +size_t simdutf__convert_valid_utf8_to_utf16be(const char* buf, size_t len, + char16_t* utf16_buffer) +{ + return simdutf::convert_valid_utf8_to_utf16be(buf, len, utf16_buffer); +} + +size_t simdutf__convert_utf8_to_utf32(const char* buf, size_t len, + char32_t* utf32_output) +{ + return simdutf::convert_utf8_to_utf32(buf, len, utf32_output); +} +SIMDUTFResult +simdutf__convert_utf8_to_utf32_with_errors(const char* buf, size_t len, + char32_t* utf32_output) +{ + auto res = simdutf::convert_utf8_to_utf32_with_errors(buf, len, utf32_output); + return { res.error, res.count }; +} + +size_t simdutf__convert_valid_utf8_to_utf32(const char* buf, size_t len, + char32_t* utf32_buffer) +{ + return simdutf::convert_valid_utf8_to_utf32(buf, len, utf32_buffer); +} + +size_t simdutf__convert_utf16le_to_utf8(const char16_t* buf, size_t len, + char* utf8_buffer) +{ + return simdutf::convert_utf16le_to_utf8(buf, len, utf8_buffer); +} + +size_t simdutf__convert_utf16be_to_utf8(const char16_t* buf, size_t len, + char* utf8_buffer) +{ + return simdutf::convert_utf16be_to_utf8(buf, len, utf8_buffer); +} +SIMDUTFResult simdutf__convert_utf16le_to_utf8_with_errors(const char16_t* buf, + size_t len, + char* utf8_buffer) +{ + auto res = simdutf::convert_utf16le_to_utf8_with_errors(buf, len, utf8_buffer); + return { res.error, res.count }; +} + +SIMDUTFResult simdutf__convert_utf16be_to_utf8_with_errors(const char16_t* buf, + size_t len, + char* utf8_buffer) +{ + auto res = simdutf::convert_utf16be_to_utf8_with_errors(buf, len, utf8_buffer); + return { res.error, res.count }; +} + +size_t simdutf__convert_valid_utf16le_to_utf8(const char16_t* buf, size_t len, + char* utf8_buffer) +{ + return simdutf::convert_valid_utf16le_to_utf8(buf, len, utf8_buffer); +} + +size_t simdutf__convert_valid_utf16be_to_utf8(const char16_t* buf, size_t len, + char* utf8_buffer) +{ + return simdutf::convert_valid_utf16be_to_utf8(buf, len, utf8_buffer); +} + +size_t simdutf__convert_utf32_to_utf8(const char32_t* buf, size_t len, + char* utf8_buffer) +{ + return simdutf::convert_utf32_to_utf8(buf, len, utf8_buffer); +} + +SIMDUTFResult simdutf__convert_utf32_to_utf8_with_errors(const char32_t* buf, + size_t len, + char* utf8_buffer) +{ + auto res = simdutf::convert_utf32_to_utf8_with_errors(buf, len, utf8_buffer); + return { res.error, res.count }; +} + +size_t simdutf__convert_valid_utf32_to_utf8(const char32_t* buf, size_t len, + char* utf8_buffer) +{ + return simdutf::convert_valid_utf32_to_utf8(buf, len, utf8_buffer); +} + +size_t simdutf__convert_utf32_to_utf16le(const char32_t* buf, size_t len, + char16_t* utf16_buffer) +{ + return simdutf::convert_utf32_to_utf16le(buf, len, utf16_buffer); +} + +size_t simdutf__convert_utf32_to_utf16be(const char32_t* buf, size_t len, + char16_t* utf16_buffer) +{ + return simdutf::convert_utf32_to_utf16be(buf, len, utf16_buffer); +} + +SIMDUTFResult +simdutf__convert_utf32_to_utf16le_with_errors(const char32_t* buf, size_t len, + char16_t* utf16_buffer) +{ + auto res = simdutf::convert_utf32_to_utf16le_with_errors(buf, len, utf16_buffer); + return { res.error, res.count }; +} + +SIMDUTFResult +simdutf__convert_utf32_to_utf16be_with_errors(const char32_t* buf, size_t len, + char16_t* utf16_buffer) +{ + auto res = simdutf::convert_utf32_to_utf16be_with_errors(buf, len, utf16_buffer); + return { res.error, res.count }; +} + +size_t simdutf__convert_valid_utf32_to_utf16le(const char32_t* buf, size_t len, + char16_t* utf16_buffer) +{ + return simdutf::convert_valid_utf32_to_utf16le(buf, len, utf16_buffer); +} + +size_t simdutf__convert_valid_utf32_to_utf16be(const char32_t* buf, size_t len, + char16_t* utf16_buffer) +{ + return simdutf::convert_valid_utf32_to_utf16be(buf, len, utf16_buffer); +} + +size_t simdutf__convert_utf16le_to_utf32(const char16_t* buf, size_t len, + char32_t* utf32_buffer) +{ + return simdutf::convert_utf16le_to_utf32(buf, len, utf32_buffer); +} + +size_t simdutf__convert_utf16be_to_utf32(const char16_t* buf, size_t len, + char32_t* utf32_buffer) +{ + return simdutf::convert_utf16be_to_utf32(buf, len, utf32_buffer); +} + +SIMDUTFResult +simdutf__convert_utf16le_to_utf32_with_errors(const char16_t* buf, size_t len, + char32_t* utf32_buffer) +{ + auto res = simdutf::convert_utf16le_to_utf32_with_errors(buf, len, utf32_buffer); + return { res.error, res.count }; +} + +SIMDUTFResult +simdutf__convert_utf16be_to_utf32_with_errors(const char16_t* buf, size_t len, + char32_t* utf32_buffer) +{ + auto res = simdutf::convert_utf16be_to_utf32_with_errors(buf, len, utf32_buffer); + return { res.error, res.count }; +} + +size_t simdutf__convert_valid_utf16le_to_utf32(const char16_t* buf, size_t len, + char32_t* utf32_buffer) +{ + return simdutf::convert_valid_utf16le_to_utf32(buf, len, utf32_buffer); +} +size_t simdutf__convert_valid_utf16be_to_utf32(const char16_t* buf, size_t len, + char32_t* utf32_buffer) +{ + return simdutf::convert_valid_utf16be_to_utf32(buf, len, utf32_buffer); +} +void simdutf__change_endianness_utf16(const char16_t* buf, size_t length, + char16_t* output) +{ + simdutf::change_endianness_utf16(buf, length, output); +} + +size_t simdutf__count_utf16le(const char16_t* buf, size_t length) +{ + return simdutf::count_utf16le(buf, length); +} + +size_t simdutf__count_utf16be(const char16_t* buf, size_t length) +{ + return simdutf::count_utf16be(buf, length); +} + +size_t simdutf__count_utf8(const char* buf, size_t length) +{ + return simdutf::count_utf8(buf, length); +} + +size_t simdutf__utf8_length_from_utf16le(const char16_t* input, size_t length) +{ + return simdutf::utf8_length_from_utf16le(input, length); +} + +size_t simdutf__utf8_length_from_utf16be(const char16_t* input, size_t length) +{ + return simdutf::utf8_length_from_utf16be(input, length); +} + +size_t simdutf__utf32_length_from_utf16le(const char16_t* input, size_t length) +{ + return simdutf::utf32_length_from_utf16le(input, length); +} + +size_t simdutf__utf32_length_from_utf16be(const char16_t* input, size_t length) +{ + return simdutf::utf32_length_from_utf16be(input, length); +} + +size_t simdutf__utf16_length_from_utf8(const char* input, size_t length) +{ + return simdutf::utf16_length_from_utf8(input, length); +} + +size_t simdutf__utf8_length_from_utf32(const char32_t* input, size_t length) +{ + return simdutf::utf8_length_from_utf32(input, length); +} + +size_t simdutf__utf16_length_from_utf32(const char32_t* input, size_t length) +{ + return simdutf::utf16_length_from_utf32(input, length); +} + +size_t simdutf__utf32_length_from_utf8(const char* input, size_t length) +{ + return simdutf::utf32_length_from_utf8(input, length); +} +}
\ No newline at end of file |