aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/bindings/bun-simdutf.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/bun.js/bindings/bun-simdutf.cpp')
-rw-r--r--src/bun.js/bindings/bun-simdutf.cpp327
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