Hi Roshan,

On Fri, Sep 18, 2015 at 10:02 AM, Roshan Cherian <cherian.r...@gmail.com> wrote:
> _icaltimezonechange is opaque as its in src/libical/icaltimezone.c a c file
> and not in in ical.h. However this struct is required for my purpose.

All structs must be declared in C before you import them into Python.
In this case, the "cheat" to access this structure is the same as if
you wrote C code: you need to give the real C compiler a declaration
of this struct.  Then you can import it as you did.  (So you need to
write this struct twice.)

ffi.set_source("_ical_cffi_ext",
    """ // passed to the real C compiler
        #include <libical/ical.h>

        struct _icaltimezonechange {
            int          utc_offset;
            int          prev_utc_offset;
            int          year;          /**< Actual year, e.g. 2001. */
            int          month;         /**< 1 (Jan) to 12 (Dec). */
            int          day;
            int          hour;
            int          minute;
            int          second;
            int          is_daylight;
        };
    """,
        include_dirs=['./include'],    # where ical.h is
        libraries=['ical'],
        library_dirs=['./lib'],)   # or a list of libraries to link with


A bientôt,

Armin.
_______________________________________________
pypy-dev mailing list
pypy-dev@python.org
https://mail.python.org/mailman/listinfo/pypy-dev

Reply via email to