Cairo Deimos bindings
Trass3r
un at known.com
Thu Apr 26 16:28:17 PDT 2012
> 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.
> htod is not a useful tool, especially if you want to do any sort of
> cross-platform, robust binding, manual binding is really the only way to
> do it properly and properly reflect the original binding and api of the
> library.
>
> It doesn't take that long, I did the binding for the 3000 line cairo.h
> file in about 3 hours, through judicious use of regex replaces and
> macros (I love Vim).
Exactly.
More information about the Digitalmars-d
mailing list