enum ubyte[] vs enum ubyte[3]

Nick Voronin elfy.nv at gmail.com
Mon Dec 20 03:14:30 PST 2010


On Mon, 20 Dec 2010 10:26:16 +0100
"Johannes Pfau" <spam at example.com> wrote:

> Hi,
> I'm currently patching Ragel (http://www.complang.org/ragel/) to generate  
> D2 compatible code.

Interesting. Ragel-generated code works fine for me in D2. I suppose it mostly uses such a restricted C-like subset of language that it didn't change much from D1 to D2. But if you are going to patch it, please make it add extra {} around action code! The thing is that when there is a label before {} block (and in ragel generated code I saw it's always so) the block isn't considered as a new scope which causes problems when you have local variables declaration inside actions.

Anyway, good luck with whatever you plan :) Ragel is cool.

> Right now it creates output like this for static  
> arrays:
> ------------------------
> enum ubyte[] _parseResponseLine_key_offsets = [
> 	0, 0, 17, 18, 37, 41, 42, 44,
> 	50, 51, 57, 58, 78, 98, 118, 136,
> 	138, 141, 143, 146, 148, 150, 152, 153,
> 	159, 160, 160, 162, 164
> ];
> ------------------------
> Making it output "enum ubyte[30]" would be more complicated, so I wonder  
> if there's a difference between "enum ubyte[]" and "enum ubyte[30]"?

One is fixed size array and other is dynamic. Honestly I doubt that it matters for code generated by Ragel, since this is constant and won't be passed around. If it's harder to make it fixed-size then don't bother.

-- 
Nick Voronin <elfy.nv at gmail.com>


More information about the Digitalmars-d-learn mailing list