diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-05-07 18:29:21 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-05-07 18:29:21 +0300 |
| commit | dcfe11a7588fcd42471159453810abc9b7720a57 (patch) | |
| tree | c32a77266028e73ca2382b96c96f8438a5fcd621 /vendor/libghostty-vt/src/terminal/c/row.zig | |
| parent | 2dfed860103c4e4505ac7f25def9fe37da1e1e6a (diff) | |
build: update libghostty-vt vendor
vendor ghostty 063ac3e and remove the musl libc++ link workaround.
expose the new selection formatter and hyperlink uri apis for follow-up rendering work.
add manual artifact validation for static linux builds.
Diffstat (limited to 'vendor/libghostty-vt/src/terminal/c/row.zig')
| -rw-r--r-- | vendor/libghostty-vt/src/terminal/c/row.zig | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/vendor/libghostty-vt/src/terminal/c/row.zig b/vendor/libghostty-vt/src/terminal/c/row.zig index d4532706..66c398c8 100644 --- a/vendor/libghostty-vt/src/terminal/c/row.zig +++ b/vendor/libghostty-vt/src/terminal/c/row.zig @@ -83,6 +83,27 @@ pub fn get( }; } +pub fn get_multi( + row_: CRow, + count: usize, + keys: ?[*]const RowData, + values: ?[*]?*anyopaque, + out_written: ?*usize, +) callconv(lib.calling_conv) Result { + const k = keys orelse return .invalid_value; + const v = values orelse return .invalid_value; + + for (0..count) |i| { + const result = get(row_, k[i], v[i]); + if (result != .success) { + if (out_written) |w| w.* = i; + return result; + } + } + if (out_written) |w| w.* = count; + return .success; +} + fn getTyped( row_: CRow, comptime data: RowData, @@ -130,3 +151,43 @@ test "get dirty" { try testing.expectEqual(Result.success, get(row, .dirty, @ptrCast(&dirty))); try testing.expect(dirty); } + +test "get_multi success" { + var zig_row: Row = @bitCast(@as(u64, 0)); + zig_row.wrap = true; + zig_row.dirty = true; + const row_val: CRow = @bitCast(zig_row); + + var wrap: bool = false; + var dirty: bool = false; + var written: usize = 0; + + const keys = [_]RowData{ .wrap, .dirty }; + var values = [_]?*anyopaque{ @ptrCast(&wrap), @ptrCast(&dirty) }; + try testing.expectEqual(Result.success, get_multi(row_val, keys.len, &keys, &values, &written)); + try testing.expectEqual(keys.len, written); + try testing.expect(wrap); + try testing.expect(dirty); +} + +test "get_multi error sets out_written" { + var zig_row: Row = @bitCast(@as(u64, 0)); + zig_row.wrap = true; + const row_val: CRow = @bitCast(zig_row); + + var wrap: bool = false; + var written: usize = 99; + + const keys = [_]RowData{ .wrap, .invalid }; + var values = [_]?*anyopaque{ @ptrCast(&wrap), @ptrCast(&wrap) }; + try testing.expectEqual(Result.invalid_value, get_multi(row_val, keys.len, &keys, &values, &written)); + try testing.expectEqual(1, written); + try testing.expect(wrap); +} + +test "get_multi null keys returns invalid_value" { + const row_val: CRow = @bitCast(@as(u64, 0)); + var wrap: bool = false; + var values = [_]?*anyopaque{@ptrCast(&wrap)}; + try testing.expectEqual(Result.invalid_value, get_multi(row_val, 1, null, &values, null)); +} |
