I still think that the safest thing would be to use a C header
defining functions with different names for each type you intend to
use.

Until Cython does not provide some support for C++-ish templatized
declarations, I cannot warranty you that thinks will not break if we
try to be smart and use these macros directly...


On Wed, Jul 1, 2009 at 6:35 PM, Chris Colbert<[email protected]> wrote:
> what about functions defined in a macro where i wont know the return
> type in advance?
>
> such as:
>
> #define  CV_NEXT_GRAPH_EDGE( edge, vertex )                              \
>
>     (assert((edge)->vtx[0] == (vertex) || (edge)->vtx[1] == (vertex)),  \
>
>      (edge)->next[(edge)->vtx[1] == (vertex)])
>
> should I just implement this as a python function, or is there a way
> to wrap it?
>
> I would wrapping wouldn't be possible since the type isn't determined
> till runtime...
>
>
> On Wed, Jul 1, 2009 at 3:53 PM, Chris Colbert<[email protected]> wrote:
>> Thanks Lisandro,
>>
>> I may just end up declaring each struct like this with a 'pass'
>>
>> and then implementing the fields on the python side (this is how ctypes does 
>> it)
>>
>> Cheers!
>>
>> On Wed, Jul 1, 2009 at 3:01 PM, Lisandro Dalcin<[email protected]> wrote:
>>> On Wed, Jul 1, 2009 at 3:24 PM, Chris Colbert<[email protected]> wrote:
>>>> i just saw this line in the docs:
>>>>
>>>> 6. If the header file defines a function using a macro, declare it as
>>>> though it were an ordinary function, with appropriate argument and
>>>> result types.
>>>>
>>>> So i'll start there.
>>>>
>>>> Sorry for the bogus post.
>>>>
>>>
>>> IMHO, your post was not bogus... Making Cython use such kind of macros
>>> (which resembles a C++ template emulation) can be not so easy...
>>> Perhaps the easiest way would be to define a helper struct (one of
>>> each node_type) in some C header, and then include it using cdef
>>> extern from "mydefs.h": ...
>>>
>>>
>>>>
>>>> On Wed, Jul 1, 2009 at 1:52 PM, Chris Colbert<[email protected]> wrote:
>>>>> In wrapping a C library, I come across many #define statements that I
>>>>> need to use elsewhere. When they simply define a constant, I use an
>>>>> anonymous enum and all is well.
>>>>>
>>>>> But how would I wrap something like this that shown up in a header
>>>>> file that i'm cdef extern'ing from:
>>>>>
>>>>> #define CV_TREE_NODE_FIELDS(node_type)                               \
>>>>>
>>>>>    int       flags;                \
>>>>>
>>>>>    int       header_size;          \
>>>>>
>>>>>    struct    node_type* h_prev;      \
>>>>>
>>>>>    struct    node_type* h_next;     \
>>>>>
>>>>>    struct    node_type* v_prev;       \
>>>>>
>>>>>    struct    node_type* v_next ;
>>>>>
>>>>>
>>>>> or something like this:
>>>>>
>>>>> #define CV_IS_STORAGE(storage)  \
>>>>>
>>>>>    ((storage) != NULL &&       \
>>>>>
>>>>>    (((CvMemStorage*)(storage))->signature & CV_MAGIC_MASK) ==
>>>>> CV_STORAGE_MAGIC_VAL)
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> Thanks and Cheers!
>>>>>
>>>>> Chris
>>>>>
>>>> _______________________________________________
>>>> Cython-dev mailing list
>>>> [email protected]
>>>> http://codespeak.net/mailman/listinfo/cython-dev
>>>>
>>>
>>>
>>>
>>> --
>>> Lisandro Dalcín
>>> ---------------
>>> Centro Internacional de Métodos Computacionales en Ingeniería (CIMEC)
>>> Instituto de Desarrollo Tecnológico para la Industria Química (INTEC)
>>> Consejo Nacional de Investigaciones Científicas y Técnicas (CONICET)
>>> PTLC - Güemes 3450, (3000) Santa Fe, Argentina
>>> Tel/Fax: +54-(0)342-451.1594
>>> _______________________________________________
>>> Cython-dev mailing list
>>> [email protected]
>>> http://codespeak.net/mailman/listinfo/cython-dev
>>>
>>
> _______________________________________________
> Cython-dev mailing list
> [email protected]
> http://codespeak.net/mailman/listinfo/cython-dev
>



-- 
Lisandro Dalcín
---------------
Centro Internacional de Métodos Computacionales en Ingeniería (CIMEC)
Instituto de Desarrollo Tecnológico para la Industria Química (INTEC)
Consejo Nacional de Investigaciones Científicas y Técnicas (CONICET)
PTLC - Güemes 3450, (3000) Santa Fe, Argentina
Tel/Fax: +54-(0)342-451.1594
_______________________________________________
Cython-dev mailing list
[email protected]
http://codespeak.net/mailman/listinfo/cython-dev

Reply via email to