module jack.impl.util; import std.traits : isDelegate; import std.conv : to; template dgAllocCopy(T) if (isDelegate!T) { T *dgAllocCopy(T dg) { struct Tmp { T dg; } auto x = new Tmp; x.dg = dg; return &x.dg; } } string[] cStringListToD(const(char) **c_list) { size_t len = 0; for (const(char) **p = c_list; *p; ++p) ++len; auto list = new string[len]; foreach (i, ref string x; list) list[i] = to!string(c_list[i]); return list; }