diff --git a/src/lang.zig b/src/lang.zig index 3b65c9d..10df1be 100644 --- a/src/lang.zig +++ b/src/lang.zig @@ -103,6 +103,19 @@ pub const NewCommand = struct { rotate, }; + pub fn tagToType(tag: Tag) type { + return switch (tag) { + .noop => Noop, + .load => Load, + .quicksave => Quicksave, + .runqs => RunQS, + + .amp => Amp, + .rflanger => RFlanger, + else => @panic("TODO"), + }; + } + pub fn cast(base: *@This(), comptime T: type) ?*T { if (base.tag != T.base_tag) return null; @@ -110,6 +123,10 @@ pub const NewCommand = struct { return @fieldParentPtr(T, "base", base); } + pub fn print(base: *const @This()) void { + std.debug.warn("{}\n", .{base.tag}); + } + pub const Noop = struct { pub const base_tag = Tag.noop; base: NewCommand, @@ -401,6 +418,8 @@ pub const Lang = struct { @field(cmd, cmd_field.name) = argument_value; } + cmd.base.tag = command_struct.base_tag; + try commands.append(cmd.base); } diff --git a/src/runner.zig b/src/runner.zig index bde8eb9..eacc3c7 100644 --- a/src/runner.zig +++ b/src/runner.zig @@ -778,7 +778,7 @@ pub const Runner = struct { debug_flag: bool, ) !void { for (cmds.items) |cmd| { - // if (debug_flag) const_cmd.print(); + cmd.print(); try self.newRunCommand(cmd); } }