aboutsummaryrefslogtreecommitdiff
path: root/vendor/libghostty-vt/src/simd/index_of.zig
diff options
context:
space:
mode:
authorCan Celik <ogulcancelik@gmail.com>2026-04-04 19:22:04 +0300
committerCan Celik <ogulcancelik@gmail.com>2026-04-05 01:23:06 +0300
commit41dd733ca7123c9ac4bfc6c781697a660e95b052 (patch)
tree3fc91815ca139ef2e0b281bba0abda4ef15175f4 /vendor/libghostty-vt/src/simd/index_of.zig
parent55c138263e190a1e79d4b997bfb9397306c0ec1f (diff)
feat: finish ghostty pane backend integration
Diffstat (limited to 'vendor/libghostty-vt/src/simd/index_of.zig')
-rw-r--r--vendor/libghostty-vt/src/simd/index_of.zig35
1 files changed, 35 insertions, 0 deletions
diff --git a/vendor/libghostty-vt/src/simd/index_of.zig b/vendor/libghostty-vt/src/simd/index_of.zig
new file mode 100644
index 00000000..7bf053b0
--- /dev/null
+++ b/vendor/libghostty-vt/src/simd/index_of.zig
@@ -0,0 +1,35 @@
+const std = @import("std");
+const options = @import("build_options");
+
+extern "c" fn ghostty_simd_index_of(
+ needle: u8,
+ input: [*]const u8,
+ count: usize,
+) usize;
+
+pub fn indexOf(input: []const u8, needle: u8) ?usize {
+ if (comptime options.simd) {
+ const result = ghostty_simd_index_of(needle, input.ptr, input.len);
+ return if (result == input.len) null else result;
+ }
+
+ return indexOfScalar(input, needle);
+}
+
+fn indexOfScalar(input: []const u8, needle: u8) ?usize {
+ return std.mem.indexOfScalar(u8, input, needle);
+}
+
+test "indexOf" {
+ const testing = std.testing;
+ try testing.expect(indexOf("hello", ' ') == null);
+ try testing.expectEqual(@as(usize, 2), indexOf("hi lo", ' ').?);
+ try testing.expectEqual(@as(usize, 5), indexOf(
+ \\XXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+ \\XXXXXXXXXXXX XXXXXXXXXXX XXXXXXXXXXXXXXX
+ , ' ').?);
+ try testing.expectEqual(@as(usize, 53), indexOf(
+ \\XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+ \\XXXXXXXXXXXX XXXXXXXXXXX XXXXXXXXXXXXXXX
+ , ' ').?);
+}