qmsk/net/py.pxd
author Tero Marttila <terom@fixme.fi>
Sat, 26 Sep 2009 16:39:20 +0300
changeset 50 da394bb715af
parent 22 f6e8d5e37998
child 51 c6b4abfc21da
permissions -rw-r--r--
try and keep lib.event2.event objects alive (via self-ref) while pending
from qmsk.net.libc cimport ssize_t, errno

cdef extern from "Python.h" :
    ctypedef struct PyObject :
        pass

    ## refcounting
    # XXX: does this make cython do some dumb refcounting stuff for the object arg?
    void Py_INCREF (object o)
    void Py_DECREF (object o)

    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