heavens-net/src/hncore/Mindmap.zig

63 lines
1.2 KiB
Zig

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;
}