SpacetimeDB-Zig/src/spacetime/utils.zig
2025-04-18 12:00:02 -04:00

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});
}