diff --git a/AnyReadable.zig b/AnyReadable.zig index 888e16edc09cc1771d96ad7c736d1407510415da..ed0a26491d59d6863a249c76488ddaf43d75c780 100644 --- a/AnyReadable.zig +++ b/AnyReadable.zig @@ -3,12 +3,12 @@ const std = @import("std"); const nio = @import("./nio.zig"); const AnyReadable = @This(); -readFn: *const fn (*allowzero anyopaque, []u8) anyerror!usize, +vtable: *const struct { +}, state: *allowzero anyopaque, -pub fn read(r: *AnyReadable, buffer: []u8) !usize { - return r.readFn(r.state, buffer); -} - pub const ReadError = anyerror; pub usingnamespace nio.Readable(@This(), ._var); +pub fn read(r: *AnyReadable, buffer: []u8) !usize { + return r.vtable.read(r.state, buffer); +} diff --git a/fixed_buffer_stream.zig b/fixed_buffer_stream.zig index 6216762979a0e1e33d9bb832ac0b1eec05475909..56766ba29e27931bffac0c123cf793d524a21d73 100644 --- a/fixed_buffer_stream.zig +++ b/fixed_buffer_stream.zig @@ -29,13 +29,15 @@ pub fn FixedBufferStream(comptime Buffer: type) type { pub fn anyReadable(self: *Self) nio.AnyReadable { const S = struct { - fn foo(s: *allowzero anyopaque, buffer: []u8) anyerror!usize { + fn read(s: *allowzero anyopaque, buffer: []u8) anyerror!usize { const fbs: *Self = @ptrCast(@alignCast(s)); return fbs.read(buffer); } }; return .{ - .readFn = S.foo, + .vtable = &.{ + .read = S.read, + }, .state = @ptrCast(self), }; }