[cairo] [API] unbreak CAIRO_FONT_TYPE_ATSUI
vladimir at pobox.com
Mon Mar 24 14:00:48 PDT 2008
On Mar 24, 2008, at 12:38 PM, Torsten Schoenfeld wrote:
> On Mon, 2008-03-24 at 12:20 -0700, Vladimir Vukicevic wrote:
>> The only thing that breaks with this is that you can't use the values
>> in case statements any more, but I'd think that's pretty uncommon in
>> user code.
> But I think it's a pretty common thing for bindings to do. When they,
> for example, try to find out how to represent a surface, they switch
> over its type. The switch statement can be replaced with if - else
> if -
> else of course, but then you'd need to use strncmp instead of simply
> too if enums are replaced with strings.
No, you would use ==; the string isn't relevant, just the address of
the string. (Much like the way user data keys are done.)
There may be a bit of extra work that needs to be done, I agree; but I
think that it would be worth it to avoid problems like this in the
future, and to allow people to create experimental backends without
worrying about clashing enum values. We could also hardcode the
current values (0, 1, 2, 3, etc.) so that switch-using bindings would
continue to work.. only when they wanted to wrap new types would they
have to change their code.
More information about the cairo