[Pyrex] enums in C++ classes
Ravi Lanka
ravi_lanka at acusim.com
Wed Jan 10 17:38:10 UTC 2007
Lenard,
Thanks very much. It works.
Ravi
Lenard Lindstrom wrote:
> Ravi Lanka wrote:
>
>> Hi,
>>
>> I am using pyrex to write a wrapper to a C++ library. class A given
>> here is a representative class of one of the classes I have in the C++
>> library. It has an enum declared inside the class and one of the
>> methods takes this enum as an argument. I am not exactly sure how to
>> wrap this enum and use it from the python module.
>> I have included the code below that works fine and now I want to wrap
>> the "set" method.
>>
>> please advise.
>> Ravi
>>
>>
>> =====================================================
>> code from a.h and a.cpp:
>> class A {
>> public:
>> A(): { value = 0;}
>> typedef enum some_enum { zero, one, two, three };
>> void get() { return value;}
>> void set( some_enum eval, int i ) { value = i*eval ; }
>> private:
>> int value;
>> };
>>
>> demo.pyx:
>> cdef extern from "a.h":
>> ctypedef struct A "A":
>> int (*get) ()
>> #void (*set)(some_enum val, int i)
>> A* AFactory "new A"()
>> void deleteA "delete " (void *o)
>>
>> cdef class AWrapper:
>> def __new__( self ):
>> cdef A *first
>> cdef int i
>> first = AFactory()
>> print first.get()
>> =======================================================================
>>
>> _______________________________________________
>>
>>
>
> This is untried but should work. Move the enum declaration outside the
> class and use C name specifiers to put it back in the class's namespace:
>
> cdef extern from "a.h":
> cdef enum Asome_enum "A::some_enum":
> Azero "A::zero"
> Aone "A::one"
> Atwo "A::two"
> Athree "A::three"
>
>
More information about the Pyrex
mailing list