int tv_usec
cdef extern from 'sys/socket.h':
+ ctypedef int socklen_t
struct sockaddr:
int sa_family
enum:
ctypedef struct PyTypeObject:
pass
- object PyString_FromStringAndSize(char *p, int len)
- int PyString_AsStringAndSize(obj, char **p, int *len) except -1
- int PyObject_AsReadBuffer(obj, void **buf, int *len) except -1
- int PyObject_TypeCheck(obj, ty)
+ int PyObject_AsReadBuffer(obj, void **buf, Py_ssize_t *len) except -1
object PyInt_FromLong(long i)
object PyLong_FromUnsignedLong(unsigned long i)
- char *PyString_AS_STRING(string)
- int _PyString_Resize(PyObject **string, int size) except -1
+ void PyErr_Clear()
void Py_INCREF(PyObject *obj)
void Py_DECREF(PyObject *obj)
+ PyTypeObject *Py_TYPE(PyObject *obj)
+ Py_ssize_t Py_SIZE(PyObject *obj)
+ Py_ssize_t Py_REFCNT(PyObject *obj)
+
###--------------------------------------------------------------------------
### mLib basic stuff.
### CRC32.
cdef extern from 'mLib/crc32.h':
- uint32 c_crc32 "crc32" (uint32 a, void *p, int sz)
+ uint32 _crc32 "crc32" (uint32 a, void *p, int sz)
###--------------------------------------------------------------------------
### Universal hashing.
STRF_PREFIX
char *str_qword(char **pp, unsigned f)
size_t str_qsplit(char *p, char **v, size_t c, char **rest, unsigned f)
- int str_matchx(char *p, char *s, unsigned f)
+ bint str_matchx(char *p, char *s, unsigned f)
void str_sanitize(char *d, char *p, size_t sz)
cdef extern from 'mLib/versioncmp.h':
- int _versioncmp "versioncmp"(char *va, char *vb)
+ int _versioncmp "versioncmp" (char *va, char *vb)
+
+###--------------------------------------------------------------------------
+### Binary encoding functions.
+
+cdef extern from 'mLib/codec.h':
+ ctypedef struct codec
+ ctypedef struct codec_class:
+ char *name
+ codec *(*encoder)(unsigned f, char *ind, unsigned max)
+ codec *(*decoder)(unsigned f)
+ ctypedef struct codec_ops:
+ codec_class *c
+ int (*code)(codec *c, const void *p, size_t, dstr *d)
+ void (*destroy)(codec *c)
+ ctypedef struct codec:
+ codec_ops *ops
+ enum:
+ _CDCF_LOWERC "CDCF_LOWERC"
+ _CDCF_IGNCASE "CDCF_IGNCASE"
+ _CDCF_NOEQPAD "CDCF_NOEQPAD"
+ _CDCF_IGNEQPAD "CDCF_IGNEQPAD"
+ _CDCF_IGNEQMID "CDCF_IGNEQMID"
+ _CDCF_IGNZPAD "CDCF_IGNZPAD"
+ _CDCF_IGNNEWL "CDCF_IGNNEWL"
+ _CDCF_IGNSPC "CDCF_IGNSPC"
+ _CDCF_IGNINVCH "CDCF_IGNINVCH"
+ _CDCF_IGNJUNK "CDCF_IGNJUNK"
+ enum:
+ _CDCERR_OK "CDCERR_OK"
+ _CDCERR_INVCH "CDCERR_INVCH"
+ _CDCERR_INVEQPAD "CDCERR_INVEQPAD"
+ _CDCERR_INVZPAD "CDCERR_INVZPAD"
+ char *_codec_strerror "codec_strerror" (int err)
###--------------------------------------------------------------------------
### Form-urlencoding functions.
void atom_mkiter(atom_iter *i, atom_table *t)
atom *atom_next(atom_iter *)
void atom_pysetup()
- atom_pywrap(atom *a)
- atom_pyintern(obj)
- atom *ATOM_A(obj)
+ object atom_pywrap(atom *a)
+ object atom_pyintern(object obj)
+ atom *ATOM_A(object obj)
PyTypeObject atom_pytype
## Association tables.
pass
void fwatch_init(fwatch *f, char *name)
void fwatch_initfd(fwatch *f, int fd)
- int fwatch_update(fwatch *f, char *name)
- int fwatch_updatefd(fwatch *f, int fd)
+ bint fwatch_update(fwatch *f, char *name)
+ bint fwatch_updatefd(fwatch *f, int fd)
###--------------------------------------------------------------------------
### File descriptor hacking.
cdef extern from 'grim.h':
int PSIZEOF(void *x)
+ object BIN_FROMSTRLEN(const void *p, Py_ssize_t sz)
+ void *BIN_PTR(object bin)
+ void BIN_SETLEN(object bin, Py_ssize_t sz)
+ int TEXT_CHECK(object p)
+ char *TEXT_PTR(str s)
+ void TEXT_PTRLEN(str s, const char **p, Py_ssize_t *sz)
+ str TEXT_FROMSTR(const char *p)
+ str TEXT_FROMSTRLEN(const char *p, Py_ssize_t sz)
###----- That's all, folks --------------------------------------------------