From 6be43138338fbe4623c1cd62cf71138873af3a7a Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sat, 31 Jan 2026 10:53:41 +0900 Subject: refactor: wrap std.json.* types --- src/jv/parse.zig | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) (limited to 'src/jv/parse.zig') diff --git a/src/jv/parse.zig b/src/jv/parse.zig index c1d35fc..dc3fcef 100644 --- a/src/jv/parse.zig +++ b/src/jv/parse.zig @@ -1,6 +1,24 @@ const std = @import("std"); const Value = @import("./value.zig").Value; -pub fn parse(allocator: std.mem.Allocator, input: []const u8) !std.json.Parsed(Value) { - return try std.json.parseFromSlice(Value, allocator, input, .{}); +pub const Parsed = struct { + value: Value, + arena: *std.heap.ArenaAllocator, + allocator: std.mem.Allocator, + + pub fn deinit(self: *const Parsed) void { + const arena = self.arena; + const allocator = self.allocator; + arena.deinit(); + allocator.destroy(arena); + } +}; + +pub fn parse(allocator: std.mem.Allocator, input: []const u8) !Parsed { + const internal = try std.json.parseFromSlice(std.json.Value, allocator, input, .{}); + return .{ + .value = .{ ._internal = internal.value }, + .arena = internal.arena, + .allocator = allocator, + }; } -- cgit v1.3-1-g0d28