Template/mixin ideas?
Chris Katko
ckatko at gmail.com
Thu Oct 4 01:12:04 UTC 2018
On Wednesday, 3 October 2018 at 11:51:01 UTC, Sebastiaan Koppe
wrote:
> On Wednesday, 3 October 2018 at 11:01:53 UTC, Chris Katko wrote:
>> [...]
>
> A combination of static introspection with string mixins does
> the trick:
>
> ---
> enum colors {
> reset = "\033[0m",
> red = "\033[31m"
> }
>
> auto GenerateColorFuncs() {
> string result;
> static foreach(c; __traits(allMembers, colors))
> result ~= "auto "~c~"(string str) { return colors."~c~"
> ~ str ~ colors.reset; }";
> return result;
> }
>
> mixin(GenerateColorFuncs());
>
> void main()
> {
> import std.stdio;
> writeln("bla".red);
> }
> ---
>
> Although you might want to replace the string concatenation
> with something more performant if used a lot.
The mixin part wouldn't be slowed by strings, right? So the
"slowness" is the invokation part which changes strings and
forces GC allocations, I guess?
What's the alternative to using strings... for strings?
More information about the Digitalmars-d-learn
mailing list