28 lines
No EOL
866 B
Zig
28 lines
No EOL
866 B
Zig
// Copyright 2025 Tyler Peterson, Licensed under MPL-2.0
|
|
|
|
const std = @import("std");
|
|
|
|
pub fn getMemberDefaultType(t: type, comptime member: []const u8) type {
|
|
const field = std.meta.fields(t)[std.meta.fieldIndex(t, member).?];
|
|
return field.type;
|
|
}
|
|
|
|
pub fn getMemberDefaultValue(t: type, comptime member: []const u8) getMemberDefaultType(t, member) {
|
|
const field = std.meta.fields(t)[std.meta.fieldIndex(t, member).?];
|
|
const value = @as(*const field.type, @alignCast(@ptrCast(field.default_value))).*;
|
|
return value;
|
|
}
|
|
|
|
pub fn itoa(comptime value: anytype) [:0]const u8 {
|
|
comptime var s: []const u8 = &[_]u8{};
|
|
comptime var n = value;
|
|
if (n == 0) {
|
|
s = s ++ .{'0'};
|
|
} else {
|
|
comptime while (n != 0) {
|
|
s = s ++ .{'0' + (n % 10)};
|
|
n = n / 10;
|
|
};
|
|
}
|
|
return @ptrCast(s ++ .{0});
|
|
} |