Dscanner - It exists
Jacob Carlborg
doob at me.com
Thu Aug 2 04:35:51 PDT 2012
On 2012-08-02 09:43, Jonathan M Davis wrote:
> For instance, I have this function which I use to generate a mixin any time
> that I want to get the first code unit:
>
> string declareFirst(R)()
> if(isForwardRange!R && is(Unqual!(ElementType!R) == dchar))
> {
> static if(isNarrowString!R)
> return "Unqual!(ElementEncodingType!R) first = range[0];";
> else
> return "dchar first = range.front;";
> }
>
> So, every line using it becomes
>
> mixin(declareFirst!R());
>
> which really isn't any worse than
>
> char c = str[0];
>
> except that it works with more than just strings. Yes, it's more effort to get
> the lexer working with all ranges of dchar, but I don't think that it's all
> that much worse, it the result is much more flexible.
That doesn't look too bad. I'm quite happy :)
--
/Jacob Carlborg
More information about the Digitalmars-d-announce
mailing list