diff --git a/util.d b/util.d index 98dad20..d4fe828 100644 --- a/util.d +++ b/util.d @@ -14,6 +14,8 @@ import std.traits; import core.stdc.string : memset; import core.simd; +enum bool StringType(T) = (is(T: string) || is(T: u8[]) || is(T: char[])); + pragma(inline) void Int3() { @@ -113,6 +115,26 @@ Errf(Args...)(string fmt, Args args) Logf!("ERROR", Args)(fmt, args); } +static string +AssignStr(T, alias param)() if(StringType!(T)) +{ + import std.format : format; + + enum string id = __traits(identifier, p); + string result = ""; + static if(is(T == string)) + { + result = id; + } + else static if(StringType!(T)) + { + result = format("Str(%s)", id); + } + else static assert(false, "Unknown type for AssignItem"); + + return result; +} + string Scratchf(Args...)(string fmt, Args args) {