Cairo Deimos bindings

James Miller james at aatch.net
Thu Apr 26 16:43:36 PDT 2012


On Thursday, 26 April 2012 at 23:28:19 UTC, Trass3r wrote:
>> enums cause issues because the C enum:
>>
>>    enum Status {
>>       STATUS_SUCCESS
>>    }
>>
>> has type enum Status and the members are access like 
>> STATUS_SUCCESS. The same enum in D is
>>
>>    enum Status {
>>       STATUS_SUCCESS
>>    }
>>
>> has type Status and the members are accessed using 
>> Status.STATUS_SUCCESS
>
> //! bring named enum members into current scope
> string flattenNamedEnum(EnumType)()
> if (is (EnumType == enum))
> {
> 	string s = "";
> 	foreach (i, e; __traits(allMembers, EnumType))
> 	{
> 		s ~= "alias " ~ EnumType.stringof ~ "." ~ 
> __traits(allMembers, EnumType)[i] ~ " " ~ __traits(allMembers, 
> EnumType)[i] ~ ";\n";
> 	}
>
> 	return s;
> }
>
> I proposed 'extern(C) enum' to get rid of all those manual 
> aliases but as always nothing happened.
>
> Exactly.

I like that, its cool, but I figured just doing a minor rewrite
of the enum would suffice. Its not that hard since Vim has a
block select, and cairo has some pretty consistent naming that
makes doing macros easy for them, the last step is just to check
that everything gets renamed properly.

--
James Miller


More information about the Digitalmars-d mailing list