[vtk-developers] Wrapping enum types
Berk Geveci
berk.geveci at kitware.com
Tue Dec 9 09:49:59 EST 2014
You rock David.
-berk
On Tue, Dec 9, 2014 at 7:30 AM, David Gobbi <david.gobbi at gmail.com> wrote:
> I've merged the fixes for the Java and Tcl wrappers so that they can wrap
> methods that take enum types as parameters. Together with the python
> fixes, this means that there should be no barrier to people who want to use
> enum types in their class interfaces.
>
>
> On Tue, Dec 2, 2014 at 9:17 PM, David Gobbi <david.gobbi at gmail.com> wrote:
>
>> Thanks, Marcus. I've been thinking about Java and Tcl, and I might
>> implement enums in those wrappers via a simple type cast.
>>
>> For example,
>>
>> void SetColorMode(ColorModeEnum val);
>>
>> would be called from the Tcl and Java wrappers like this
>>
>> SetColorMode(static_cast<ColorModeEnum>(val));
>>
>> with no type checking. It would be much easier to implement
>> than making each enum into a first-class type like I've done
>> for the Python wrappers.
>>
>> - David
>>
>>
>> On Tue, Dec 2, 2014 at 9:01 PM, Marcus D. Hanwell <
>> marcus.hanwell at kitware.com> wrote:
>>
>>> Hi David,
>>>
>>> I will try to take a look soon, travel and proposals have taken up
>>> more of my time than I might like. I am really pleased to see this
>>> added to the Python wrapping (although in truth would love to see it
>>> in Java/Tcl so we could actually use it in our API).
>>>
>>> Marcus
>>>
>>> On Tue, Dec 2, 2014 at 11:46 AM, David Gobbi <david.gobbi at gmail.com>
>>> wrote:
>>> > Still waiting for reviewers for
>>> http://review.source.kitware.com/#/c/17993
>>> > (refactoring the python wrappers and wrapping enum types). Big thanks
>>> > to Ben for his comments so far.
>>> >
>>> > - David
>>> >
>>> >
>>> > On Fri, Nov 21, 2014 at 10:58 AM, David Gobbi <david.gobbi at gmail.com>
>>> wrote:
>>> >>
>>> >> Hi All,
>>> >>
>>> >> The enum support for the wrappers is done (pending merge). The caveat
>>> >> that I mentioned in my previous email no longer applies, i.e. with
>>> this
>>> >> new
>>> >> patch _all_ enum types are wrapped, whether they are in the global
>>> >> namespace, in a class namespace, or in any other namespace (except for
>>> >> nested namespaces, which aren't supported by the wrappers yet).
>>> >>
>>> >> This change isn't going to have much impact on the VTK core, because
>>> >> most VTK class methods simply take "int" parameters instead of
>>> requiring
>>> >> the use of enums. However, it will have a _big_ impact for the
>>> wrapping
>>> >> of third-party VTK classes which tend to use enum parameters quite
>>> often.
>>> >> (In fact the change was motivated by the need to wrap some of my own
>>> >> external classes).
>>> >>
>>> >> Enum parameter support is only provided for the python wrappers, not
>>> for
>>> >> Java or Tcl.
>>> >>
>>> >> - David
>>> >>
>>> >>
>>> >> On Mon, Nov 17, 2014 at 7:04 AM, David Gobbi <david.gobbi at gmail.com>
>>> >> wrote:
>>> >>>
>>> >>> Hi All,
>>> >>>
>>> >>> I have a patch in gerrit that modifies the python wrappers so that
>>> enum
>>> >>> types are wrapped. This means that method parameters can be enum
>>> >>> types, something that wasn't possible for wrapped methods before.
>>> >>> http://review.source.kitware.com/#/c/17993
>>> >>>
>>> >>> E.g.:
>>> >>>
>>> >>> class vtkSomeObject
>>> >>> {
>>> >>> public:
>>> >>> enum ColorEnum { Red, Blue };
>>> >>> void SetColor(enum ColorEnum);
>>> >>> };
>>> >>>
>>> >>> Each enum type is wrapped as a unique python type subclassed from
>>> >>> python's "int" type. So an enum can be used wherever an int can be
>>> >>> used, but methods that take an enum will raise a TypeError unless
>>> >>> given a value of the correct enum type.
>>> >>>
>>> >>> One caveat is that this only works if the method and the enum type
>>> are
>>> >>> members of the same class. Sometime later I'll generalize it so
>>> that a
>>> >>> method can use an enum defined in a different class, but method &
>>> enum
>>> >>> in the same class seems to be the most common use case.
>>> >>>
>>> >>> Cheers,
>>> >>>
>>> >>> - David
>>>
>>
>>
>
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/vtk-developers
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtk-developers/attachments/20141209/d44625d4/attachment.html>
More information about the vtk-developers
mailing list