const std = @import("std"); const Digraph = @import("./Digraph.zig"); pub const Node = @import("./Node.zig"); pub const NodeList = std.ArrayList(*Node); pub const NodeDigraph = Digraph.Container(*Node, Digraph.lessThanFuncFor(*Node)); /// alloc: std.mem.Allocator, /// nodes: NodeList, /// digraph: NodeDigraph, /// root: *Node, /// pub fn init(alloc: std.mem.Allocator) !@This() { var nodes = NodeList.init(alloc); errdefer nodes.deinit(); var digraph = try NodeDigraph.init(alloc, &.{}); errdefer digraph.deinit(); var root = try alloc.create(Node); errdefer alloc.destroy(root); root.* = try Node.init(alloc, 0, "helloworld"); errdefer root.deinit(alloc); try nodes.append(root); return .{ .alloc = alloc, .nodes = nodes, .digraph = digraph, .root = root, }; } /// pub fn deinit(self: *@This()) void { for (self.nodes) |node| { node.deinit(self.alloc); self.alloc.destroy(node); } self.digraph.deinit(); self.nodes.deinit(); } /// pub fn serialize(self: *const @This(), writer: anytype) !void { _ = self; _ = writer; } /// pub fn deserialize(reader: anytype) !@This() { _ = reader; }