diff options
author | Bryan Forbes | 2011-09-26 17:14:39 +0200 |
---|---|---|
committer | Nikias Bassen | 2011-09-26 17:14:39 +0200 |
commit | 2ca52d65bb113e8639e732f67fec3c3223c0a444 (patch) | |
tree | b937e0c7a6a93eca914c0571bd71c85a3f2408b4 /cython/plist_util.c | |
parent | 36ad4384303e94b19cdf7a5ff43182efebe1b398 (diff) | |
download | libplist-2ca52d65bb113e8639e732f67fec3c3223c0a444.tar.gz libplist-2ca52d65bb113e8639e732f67fec3c3223c0a444.tar.bz2 |
Added cython bindings.
Diffstat (limited to 'cython/plist_util.c')
-rw-r--r-- | cython/plist_util.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/cython/plist_util.c b/cython/plist_util.c new file mode 100644 index 0000000..70c5be3 --- /dev/null +++ b/cython/plist_util.c @@ -0,0 +1,41 @@ +#include "plist_util.h" + +#include <time.h> +#include <datetime.h> + +void datetime_to_ints(PyObject* obj, int32_t* sec, int32_t* usec) { + PyDateTime_IMPORT; + if (!PyDateTime_Check(obj)) { + PyErr_SetString(PyExc_ValueError,"Expected a datetime"); + sec = NULL; + usec = NULL; + return; + } + struct tm t = { + PyDateTime_DATE_GET_SECOND(obj), + PyDateTime_DATE_GET_MINUTE(obj), + PyDateTime_DATE_GET_HOUR(obj), + PyDateTime_GET_DAY(obj), + PyDateTime_GET_MONTH(obj)-1, + PyDateTime_GET_YEAR(obj)-1900, + 0,0,0 + }; + *sec = (int32_t)mktime(&t); + *usec = PyDateTime_DATE_GET_MICROSECOND(obj); +} +PyObject* ints_to_datetime(int32_t sec, int32_t usec) { + time_t sec_tt = sec; + struct tm* t = gmtime(&sec_tt); + if(t){ + PyDateTime_IMPORT; + return PyDateTime_FromDateAndTime(t->tm_year+1900, t->tm_mon+1, t->tm_mday, t->tm_hour, t->tm_min, t->tm_sec, usec); + } + return NULL; +} +int check_datetime(PyObject* ob) { + if(ob){ + PyDateTime_IMPORT; + return PyDateTime_Check(ob); + } + return 0; +} |