From 45d5bc4d3141232a87c28d859e03212ede39e4ec Mon Sep 17 00:00:00 2001 From: falsycat Date: Mon, 5 May 2025 11:44:49 +0900 Subject: [PATCH] add new data type, Stage --- src/hncore/Stage.zig | 48 ++++++++++++++++++++++++++++++++++++++++ src/hncore/Task.zig | 14 +++++------- src/hncore/TaskStore.zig | 8 +++++++ src/hncore/root.zig | 1 + 4 files changed, 62 insertions(+), 9 deletions(-) create mode 100644 src/hncore/Stage.zig diff --git a/src/hncore/Stage.zig b/src/hncore/Stage.zig new file mode 100644 index 0000000..0cec983 --- /dev/null +++ b/src/hncore/Stage.zig @@ -0,0 +1,48 @@ +const std = @import("std"); + +const Task = @import("./Task.zig"); + +/// +const Self = @This(); + +/// +const TaskList = std.ArrayList(*Task); + +/// +alloc: std.mem.Allocator, + +/// +name: [:0]const u8, + +/// +tasks: TaskList, + +/// +pub fn init(alloc: std.mem.Allocator, name: []const u8) !Self { + return Self { + .alloc = alloc, + .name = try alloc.dupeZ(u8, name), + .tasks = TaskList.init(alloc), + }; +} + +/// +pub fn deinit(self: *Self) void { + self.tasks.deinit(); + self.alloc.free(self.name); +} + +/// +pub fn rename(self: *Self, name: []const u8) !void { + self.alloc.free(self.name); + self.name = try self.alloc.dupeZ(u8, name); +} + +test { + var stage = try init(std.testing.allocator, "helloworld"); + defer stage.deinit(); + try std.testing.expectEqualStrings("helloworld", stage.name); + + try stage.rename("goodbye"); + try std.testing.expectEqualStrings("goodbye", stage.name); +} diff --git a/src/hncore/Task.zig b/src/hncore/Task.zig index b94de1f..ee84f26 100644 --- a/src/hncore/Task.zig +++ b/src/hncore/Task.zig @@ -17,18 +17,14 @@ details: [:0]const u8, /// done: bool, -/// -archived: bool, - /// pub fn init(alloc: std.mem.Allocator, id: usize) !Self { return Self { - .alloc = alloc, - .id = id, - .summary = try alloc.dupeZ(u8, ""), - .details = try alloc.dupeZ(u8, ""), - .done = true, - .archived = true, + .alloc = alloc, + .id = id, + .summary = try alloc.dupeZ(u8, ""), + .details = try alloc.dupeZ(u8, ""), + .done = true, }; } /// diff --git a/src/hncore/TaskStore.zig b/src/hncore/TaskStore.zig index bd4ab55..13cfe56 100644 --- a/src/hncore/TaskStore.zig +++ b/src/hncore/TaskStore.zig @@ -2,11 +2,19 @@ const std = @import("std"); const Task = @import("./Task.zig"); +/// const Self = @This(); + +/// const Map = std.AutoHashMap(usize, *Task); +/// alloc: std.mem.Allocator, + +/// map: Map, + +/// nextId: usize, /// diff --git a/src/hncore/root.zig b/src/hncore/root.zig index 70eae07..92eec67 100644 --- a/src/hncore/root.zig +++ b/src/hncore/root.zig @@ -1,6 +1,7 @@ pub const command = @import("./command/root.zig"); pub const CommandHistory = @import("./CommandHistory.zig"); +pub const Stage = @import("./Stage.zig"); pub const Task = @import("./Task.zig"); pub const TaskStore = @import("./TaskStore.zig"); pub const Workspace = @import("./Workspace.zig");