add Mindmap and Project data type
This commit is contained in:
parent
a339d2a392
commit
ca3d26a18d
62
src/hncore/Mindmap.zig
Normal file
62
src/hncore/Mindmap.zig
Normal file
@ -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;
|
||||
}
|
16
src/hncore/Project.zig
Normal file
16
src/hncore/Project.zig
Normal file
@ -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();
|
||||
}
|
@ -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());
|
||||
|
Loading…
x
Reference in New Issue
Block a user