From 4d3d91a7449948936ef4863b1cf710719ed8e125 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Sun, 26 Jan 2025 17:19:58 +0100 Subject: [PATCH] feat(buffers): add support for buffer references --- build.zig | 1 + src/buffer/Manager.zig | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/build.zig b/build.zig index 3718e91..869947a 100644 --- a/build.zig +++ b/build.zig @@ -292,6 +292,7 @@ pub fn build_exe( .root_source_file = b.path("src/buffer/Buffer.zig"), .imports = &.{ .{ .name = "cbor", .module = cbor_mod }, + .{ .name = "thespian", .module = thespian_mod }, }, }); diff --git a/src/buffer/Manager.zig b/src/buffer/Manager.zig index 4cc0024..a0c23fa 100644 --- a/src/buffer/Manager.zig +++ b/src/buffer/Manager.zig @@ -1,4 +1,5 @@ const std = @import("std"); +const tp = @import("thespian"); const Buffer = @import("Buffer.zig"); const Self = @This(); @@ -109,3 +110,16 @@ pub fn delete_all(self: *Self) void { } self.buffers.clearRetainingCapacity(); } + +pub fn buffer_from_ref(self: *Self, buffer_ref: usize) ?*Buffer { + var i = self.buffers.iterator(); + while (i.next()) |p| + if (@intFromPtr(p.value_ptr.*) == buffer_ref) + return p.value_ptr.*; + tp.trace(tp.channel.debug, .{ "buffer_from_ref", "failed", buffer_ref }); + return null; +} + +pub fn buffer_to_ref(_: *Self, buffer: *Buffer) usize { + return @intFromPtr(buffer); +}