Use comptime for fully declarative LV2 and Custom commands #14

Merged
luna merged 69 commits from declarative-commands into master 2020-06-02 21:37:47 +00:00
1 changed files with 7 additions and 2 deletions
Showing only changes of commit 5235482ab4 - Show all commits

View File

@ -1,9 +1,14 @@
const std = @import("std");
const langs = @import("lang.zig");
fn printCommandWithParams(stream: var, command: var) !void {
const Parameters = @TypeOf(command.parameters);
inline for (@typeInfo(Parameters).Struct.fields) |field| {
try stream.print(" {}", .{@field(command.parameters, field.name)});
if (field.field_type == f32 or field.field_type == f64) {
try stream.print(" {d}", .{@field(command.parameters, field.name)});
} else {
try stream.print(" {}", .{@field(command.parameters, field.name)});
}
}
}
@ -42,7 +47,7 @@ pub fn printList(list: langs.CommandList, stream: var) !void {
.noop, .quicksave => {},
.rotate => {
const rotate = cmd.cast(langs.Command.Rotate).?;
try stream.print(" {} {}", .{ rotate.deg, rotate.bgfill });
try stream.print(" {d} {}", .{ rotate.deg, rotate.bgfill });
},
.amp => try printCommand(stream, cmd, .amp),