Ah, that's what it means.  I saw something similar to this somewhere in
some documentation, but the object keyword threw me off.  To me,
'object' indicates something more on the python side than on the c side.

Also, even though you can do this to ensure the struct declaration ends
up in the header file, I would still make the case that currently
something is a bit off in that the header file tries to use something
which it has no information about (and in the process actually ends up
creating its own empty struct type).

Thanks for all the help.

-Seth

On 06/07/2011 06:24 PM, Greg Ewing wrote:
>> On Sat, Jun 4, 2011 at 10:36 AM, Seth Shannin
>> <sshan...@stwing.upenn.edu> wrote:
>>
>>> test.h:11: warning: 'struct __pyx_obj_4test_foo' declared inside
>>> parameter
>>> list
>>> test.h:11: warning: its scope is only this definition or declaration,
>>> which
>>> is probably not what you want
> 
> Not sure about Cython, but the way to to this in Pyrex
> is to declare the class 'public' as well, and then the
> struct declaration for it will be put in the .h file.
> 
> You will need to supply C names for the struct and type
> object as well, e.g.
> 
>    cdef public class foo[type FooType, object FooObject]:
>       ...
> 
> The generated test.h file then contains
> 
>    struct FooObject {
>      PyObject_HEAD
>      int a;
>      int b;
>    };
> 
>    __PYX_EXTERN_C DL_IMPORT(void) bar(struct FooObject *);
>    __PYX_EXTERN_C DL_IMPORT(struct FooObject) *make_foo(int,int);
> 

_______________________________________________
cython-devel mailing list
cython-devel@python.org
http://mail.python.org/mailman/listinfo/cython-devel

Reply via email to