enum scope

Mike Parker aldacron at gmail.com
Thu Jan 26 05:37:12 PST 2012


On 1/26/2012 8:55 PM, Michel Fortin wrote:
> On 2012-01-26 01:12:40 +0000, Jonathan M Davis <jmdavisProg at gmx.com> said:
>
>> On Thursday, January 26, 2012 02:06:45 Trass3r wrote:
>>> When writing C bindings I usually create lots of aliases via a
>>> string mixin to pull enum members into the enclosing scope so
>>> it's compatible to C.
>>> Would it be wise to let the compiler do this automatically for
>>> extern(C) enums?
>>
>> Why? You're using them in D code, not C code. What difference does it
>> make if
>> the enum is one that's used in C code or not? Why would you use such
>> aliases
>> with enums from C but not those from D/ What makes enums from C
>> different?
>
> Often C enum value naming takes into account that they'll live in the
> outer scope. For instance:
>
> enum UITableViewRowAnimation {
> UITableViewRowAnimationFade,
> UITableViewRowAnimationRight,
> UITableViewRowAnimationLeft,
> UITableViewRowAnimationTop,
> UITableViewRowAnimationBottom,
> UITableViewRowAnimationNone,
> UITableViewRowAnimationMiddle,
> UITableViewRowAnimationAutomatic = 100
> }
>
> So if you're doing direct bindings where you don't want to change the
> names, how do you use that in D?
>
> UITableViewRowAnimation.UITableViewRowAnimationFade
>
alias int UITableViewRowAnimation;
enum
{
UITableViewRowAnimationFade,
UITableViewRowAnimationRight,
UITableViewRowAnimationLeft,
UITableViewRowAnimationTop,
UITableViewRowAnimationBottom,
UITableViewRowAnimationNone,
UITableViewRowAnimationMiddle,
UITableViewRowAnimationAutomatic = 100
}


More information about the Digitalmars-d mailing list