Skip to content

Instantly share code, notes, and snippets.

@alexnask
Created April 16, 2018 02:02
Show Gist options
  • Select an option

  • Save alexnask/aaddbd5576094836f6553edf0b30e275 to your computer and use it in GitHub Desktop.

Select an option

Save alexnask/aaddbd5576094836f6553edf0b30e275 to your computer and use it in GitHub Desktop.
const eql = @import("std").mem.eql;
fn field_adder(comptime Base: type, comptime name: []u8, comptime field_type: type) type {
var info = @reflect(Base);
var i : usize = 0
while (i < @memberCount(Base)) : (i += 1) {
if (eql(u8, @memberName(Base, i), name)) {
@compileError("Member already present");
}
}
info.add_member(name, @reflect(field_type));
return @reify(info);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment