On Tue, 2016-08-30 at 18:14 +0000, Gergely Polonkai wrote:
> That is actually the best approach if you have holes in your enum
> (which
> may bring in other problems)


If you have holes in your enum this is definitely not appropriate for
what rastersoft wants.  Your array will not include entries for the
holes, so accessing blah[Foo.BAR] will likely result in accessing out-
of-bounds memory (assuming BAR comes after a hole).

If you don't have holes (or they are small and rare), then allocating
n_values allows you to use the enum values as array indices to access
the relevant value.

Note that, if there is no 0 value in your enum, you'll want to either
allocate n_values + 1 entries or subtract one whenever you want to
access the relevant entry.

> 
> On Tue, Aug 30, 2016, 18:11 Evan Nemerson <e...@coeus-group.com>
> wrote:
> 
> > 
> > On Mon, 2016-08-29 at 23:47 +0200, rastersoft wrote:
> > > 
> > > Sorry, I found how to do that:
> > > 
> > > int[] blah = new int[LAST_ELEMENT];
> > 
> > If you want to avoid having a LAST_ELEMENT value, something like
> > this
> > will also work:
> > 
> >     ((GLib.EnumClass) typeof(Foo).class_ref ()).n_values
> > 
> > I'm not necessarily advocating it, but if you really want to keep
> > your
> > API clean it's an option.
> > 
> > > 
> > > 
> > > El 29/08/16 a las 23:45, rastersoft escribió:
> > > > 
> > > > 
> > > > Hi all:
> > > > 
> > > > I have an enum with several elements, and I need to create an
> > > > array
> > > > with
> > > > the same number of elements. In C I define a last element with
> > > > a
> > > > known
> > > > name (eg: "LAST_ELEMENT"), and use "int blah[LAST_ELEMENT];" to
> > > > create
> > > > the array. How can I do that in Vala?
> > > > 
> > > > Thanks.
> > > > 
> > > _______________________________________________
> > vala-list mailing list
> > vala-list@gnome.org
> > https://mail.gnome.org/mailman/listinfo/vala-list
> > 

Attachment: signature.asc
Description: This is a digitally signed message part

_______________________________________________
vala-list mailing list
vala-list@gnome.org
https://mail.gnome.org/mailman/listinfo/vala-list

Reply via email to