@@@ cython and python 3 wip
[mLib-python] / defs.pxi
index b14b855..903a6d0 100644 (file)
--- a/defs.pxi
+++ b/defs.pxi
@@ -95,18 +95,18 @@ cdef extern from 'Python.h':
   ctypedef struct PyTypeObject:
     pass
 
-  object PyString_FromStringAndSize(char *p, Py_ssize_t len)
-  int PyString_AsStringAndSize(obj, char **p, Py_ssize_t *len) except -1
   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.
 
@@ -129,7 +129,7 @@ cdef extern from 'mLib/dstr.h':
 ### 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.
@@ -170,11 +170,44 @@ cdef extern from 'mLib/str.h':
     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.
@@ -211,9 +244,9 @@ cdef extern from 'atom.h':
   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.
@@ -406,8 +439,8 @@ cdef extern from 'mLib/fwatch.h':
     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.
@@ -439,6 +472,13 @@ cdef extern from 'mLib/daemonize.h':
 
 cdef extern from 'grim.h':
   int PSIZEOF(void *x)
-  ctypedef void *cvp
+  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 --------------------------------------------------