mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-07-23 12:16:11 +03:00
circbuf: iterator yields pointers
This commit is contained in:
@ -31,7 +31,7 @@ pub fn CircBuf(comptime T: type, comptime default: T) type {
|
|||||||
|
|
||||||
pub const Direction = enum { forward, reverse };
|
pub const Direction = enum { forward, reverse };
|
||||||
|
|
||||||
pub fn next(self: *Iterator) ?T {
|
pub fn next(self: *Iterator) ?*T {
|
||||||
if (self.idx >= self.buf.len()) return null;
|
if (self.idx >= self.buf.len()) return null;
|
||||||
|
|
||||||
// Get our index from the tail
|
// Get our index from the tail
|
||||||
@ -43,7 +43,7 @@ pub fn CircBuf(comptime T: type, comptime default: T) type {
|
|||||||
// Translate the tail index to a storage index
|
// Translate the tail index to a storage index
|
||||||
const storage_idx = (self.buf.tail + tail_idx) % self.buf.capacity();
|
const storage_idx = (self.buf.tail + tail_idx) % self.buf.capacity();
|
||||||
self.idx += 1;
|
self.idx += 1;
|
||||||
return self.buf.storage[storage_idx];
|
return &self.buf.storage[storage_idx];
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -292,8 +292,8 @@ test "forward iterator" {
|
|||||||
try buf.append(2);
|
try buf.append(2);
|
||||||
{
|
{
|
||||||
var it = buf.iterator(.forward);
|
var it = buf.iterator(.forward);
|
||||||
try testing.expect(it.next().? == 1);
|
try testing.expect(it.next().?.* == 1);
|
||||||
try testing.expect(it.next().? == 2);
|
try testing.expect(it.next().?.* == 2);
|
||||||
try testing.expect(it.next() == null);
|
try testing.expect(it.next() == null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -301,9 +301,9 @@ test "forward iterator" {
|
|||||||
try buf.append(3);
|
try buf.append(3);
|
||||||
{
|
{
|
||||||
var it = buf.iterator(.forward);
|
var it = buf.iterator(.forward);
|
||||||
try testing.expect(it.next().? == 1);
|
try testing.expect(it.next().?.* == 1);
|
||||||
try testing.expect(it.next().? == 2);
|
try testing.expect(it.next().?.* == 2);
|
||||||
try testing.expect(it.next().? == 3);
|
try testing.expect(it.next().?.* == 3);
|
||||||
try testing.expect(it.next() == null);
|
try testing.expect(it.next() == null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -312,9 +312,9 @@ test "forward iterator" {
|
|||||||
try buf.append(4);
|
try buf.append(4);
|
||||||
{
|
{
|
||||||
var it = buf.iterator(.forward);
|
var it = buf.iterator(.forward);
|
||||||
try testing.expect(it.next().? == 2);
|
try testing.expect(it.next().?.* == 2);
|
||||||
try testing.expect(it.next().? == 3);
|
try testing.expect(it.next().?.* == 3);
|
||||||
try testing.expect(it.next().? == 4);
|
try testing.expect(it.next().?.* == 4);
|
||||||
try testing.expect(it.next() == null);
|
try testing.expect(it.next() == null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -338,8 +338,8 @@ test "reverse iterator" {
|
|||||||
try buf.append(2);
|
try buf.append(2);
|
||||||
{
|
{
|
||||||
var it = buf.iterator(.reverse);
|
var it = buf.iterator(.reverse);
|
||||||
try testing.expect(it.next().? == 2);
|
try testing.expect(it.next().?.* == 2);
|
||||||
try testing.expect(it.next().? == 1);
|
try testing.expect(it.next().?.* == 1);
|
||||||
try testing.expect(it.next() == null);
|
try testing.expect(it.next() == null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -347,9 +347,9 @@ test "reverse iterator" {
|
|||||||
try buf.append(3);
|
try buf.append(3);
|
||||||
{
|
{
|
||||||
var it = buf.iterator(.reverse);
|
var it = buf.iterator(.reverse);
|
||||||
try testing.expect(it.next().? == 3);
|
try testing.expect(it.next().?.* == 3);
|
||||||
try testing.expect(it.next().? == 2);
|
try testing.expect(it.next().?.* == 2);
|
||||||
try testing.expect(it.next().? == 1);
|
try testing.expect(it.next().?.* == 1);
|
||||||
try testing.expect(it.next() == null);
|
try testing.expect(it.next() == null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -358,9 +358,9 @@ test "reverse iterator" {
|
|||||||
try buf.append(4);
|
try buf.append(4);
|
||||||
{
|
{
|
||||||
var it = buf.iterator(.reverse);
|
var it = buf.iterator(.reverse);
|
||||||
try testing.expect(it.next().? == 4);
|
try testing.expect(it.next().?.* == 4);
|
||||||
try testing.expect(it.next().? == 3);
|
try testing.expect(it.next().?.* == 3);
|
||||||
try testing.expect(it.next().? == 2);
|
try testing.expect(it.next().?.* == 2);
|
||||||
try testing.expect(it.next() == null);
|
try testing.expect(it.next() == null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user