template const to compile-time function
Daniel Keep
daniel.keep.lists at gmail.com
Tue Sep 4 14:43:35 PDT 2007
Carlos Santander wrote:
> Currently I have this template:
>
> template seqWrapper (char[] property, alias seq, alias array)
> {
> const seqWrapper = typeof(array).stringof ~ " " ~ property ~ "()"
> "{"
> "if (" ~ array.stringof ~ ".length == 0)"
> " " ~ array.stringof ~ " = seqToArray (" ~ seq.stringof ~ ");"
> "return " ~ array.stringof ~ ";"
> "}";
> }
>
> Which is simply used like this:
>
> mixin (seqWrapper!("users", _list, _users));
>
> And it works. But I was wondering if it was better to have it as a
> compile-time function, and if so, how it could be changed. I'm using
> D1.0, btw.
>
string seqWrapper(string property, string seq, string array)
{
return `typeof(`~array~`) `~property~`()
{
if( (`~array~`).length == 0 )
`~array~` = seqToArray(`~seq~`);
return `~array~`;
}`;
}
mixin (seqWrapper("users","_list","_users"));
Six of one, half-dozen of the other, really. Unless you need to do
stuff involving loops or string processing, templates are quite sufficient.
-- Daniel
More information about the Digitalmars-d-learn
mailing list