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