[Cython] Add support for the offsetof() C macro

2013-04-03 Thread Emmanuel Gil Peyrot
Hi,

offsetof() is not supported by current Cython, and I have not found any
workaround (except hardcoding offsets for a specific architecture and
compiler, but this is obviously wrong).

offsetof(struct_type, member) is a C macro that expands to the offset
of the member in the struct, in bytes.  Could you add support for it,
perhaps like sizeof as a special case in the parser?

And many thanks for the whole project! ☺

-- 
Emmanuel Gil Peyrot
XMPP: 
OpenPGP: 24B1D609


pgpNAHf9fQpmU.pgp
Description: PGP signature
___
cython-devel mailing list
cython-devel@python.org
http://mail.python.org/mailman/listinfo/cython-devel


Re: [Cython] Add support for the offsetof() C macro

2013-04-03 Thread Nikita Nemkin

Hi,


offsetof() is not supported by current Cython, and I have not found any
workaround (except hardcoding offsets for a specific architecture and
compiler, but this is obviously wrong).


offsetof() would certainly be very useful, but in the meantime
offsetof(Struct, field) can be replaced with:

&(NULL).field

It's not ANSI C, but is portable enough.

Another option (for extern or public structs only) is to abuse
renaming:

enum:
Struct_offsetof_field1 "offsetof(Struct, field1)"

This way a symbolic name can be given to any expression
to be literally pasted into the generated code.


Best regards,
Nikita Nemkin
___
cython-devel mailing list
cython-devel@python.org
http://mail.python.org/mailman/listinfo/cython-devel