From ca3d26a18d772e4cd4f6888d2ae5a7641681e220 Mon Sep 17 00:00:00 2001 From: falsycat Date: Tue, 8 Apr 2025 23:03:32 +0900 Subject: [PATCH] add Mindmap and Project data type --- src/hncore/Mindmap.zig | 62 ++++++++++++++++++++++++++++++++++++++++++ src/hncore/Project.zig | 16 +++++++++++ src/hncore/root.zig | 6 ++-- 3 files changed, 81 insertions(+), 3 deletions(-) create mode 100644 src/hncore/Mindmap.zig create mode 100644 src/hncore/Project.zig diff --git a/src/hncore/Mindmap.zig b/src/hncore/Mindmap.zig new file mode 100644 index 0000000..d9b928c --- /dev/null +++ b/src/hncore/Mindmap.zig @@ -0,0 +1,62 @@ +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; +} diff --git a/src/hncore/Project.zig b/src/hncore/Project.zig new file mode 100644 index 0000000..8a73902 --- /dev/null +++ b/src/hncore/Project.zig @@ -0,0 +1,16 @@ +const std = @import("std"); + +const Mindmap = @import("./Mindmap.zig"); + +/// +mindmap: Mindmap, + +/// +pub fn init(alloc: std.mem.Allocator) !@This() { + return .{ + .mindmap = try .init(alloc), + }; +} +pub fn deinit(self: *@This()) void { + self.mindmap.deinit(); +} diff --git a/src/hncore/root.zig b/src/hncore/root.zig index 0a56eac..1a3d019 100644 --- a/src/hncore/root.zig +++ b/src/hncore/root.zig @@ -1,6 +1,6 @@ -pub const Digraph = @import("./Digraph.zig").Digraph; -pub const Node = @import("./Node.zig").Node; -pub const Store = @import("./Store.zig").Store; +pub const Mindmap = @import("./Mindmap.zig"); +pub const Node = @import("./Node.zig"); +pub const Project = @import("./Project.zig"); test { @import("std").testing.refAllDecls(@This());