pub fn offset(self: Self, comptime field: FieldEnum) usize 101
102
103
104
105
106
107
108
109
110
111
112
113 pub fn offset(self: Self, comptime field: FieldEnum) usize {
var off: usize = 0;
inline for (@typeInfo(Fields).@"struct".field_types, 0..) |field_type, i| {
const active = (self.bits & (1 << i)) != 0;
if (i == @backingInt(field)) {
assert(active);
return mem.alignForward(usize, off, @alignOf(field_type));
} else if (active) {
off = mem.alignForward(usize, off, @alignOf(field_type));
off += @sizeOf(field_type);
}
}
}