from qmsk.net.libc cimport ssize_t, errno
cdef extern from "Python.h" :
ctypedef struct PyObject :
pass
## refcounting
void Py_XDECREF (PyObject *obj)
## object protocol
# __richcompare__ constants
enum :
Py_LT
Py_LE
Py_EQ
Py_NE
Py_GT
Py_GE
PyObject *Py_NotImplemented
## string stuff
int PyObject_AsCharBuffer (object obj, char **buf, ssize_t *len) except -1
PyObject* PyString_FromStringAndSize (char *v, ssize_t len)
# no error checking
ssize_t PyString_GET_SIZE (PyObject *str)
char* PyString_AS_STRING (PyObject *str)
int _PyString_Resize (PyObject **string, ssize_t newsize) except -1
## except setting
PyObject* PyErr_SetFromErrno (PyObject *type)
PyObject *PyExc_OSError
# raise OSError with errno
# XXX: doesn't do anything with func
cdef int raise_errno (char *func) except -1