chiark / gitweb /
algorithms.c: Set `hashsz', `tagsz', and `name' properties on MAC keys.
[catacomb-python] / catacomb-python.h
index cae27c5d6b6e8f3991e2e1fb0c64eeb84eedb181..9b60ce4f39cd1ca93587e0c43fa157537fa8b31d 100644 (file)
@@ -158,6 +158,27 @@ extern PyObject *mexp_common(PyObject *, PyObject *, size_t,
 PyObject *bytestring_pywrap(const void *, size_t);
 PyObject *bytestring_pywrapbuf(buf *);
 
+/*----- Buffers -----------------------------------------------------------*/
+
+typedef struct buf_pyobj {
+  PyObject_HEAD
+  buf b;
+  PyObject *sub;
+  unsigned lk;
+} buf_pyobj;
+
+extern PyTypeObject *rbuf_pytype, *wbuf_pytype;
+#define RBUF_PYCHECK(o) PyObject_TypeCheck((o), rbuf_pytype)
+#define WBUF_PYCHECK(o) PyObject_TypeCheck((o), wbuf_pytype)
+#define BUF_B(o) (&((buf_pyobj *)(o))->b)
+#define BUF_SUB(o) (((buf_pyobj *)(o))->sub)
+#define BUF_LK(o) (((buf_pyobj *)(o))->lk)
+
+extern PyObject *buferr;
+#define BUFERR(str) do { PyErr_SetString(buferr, str); goto end; } while (0)
+
+extern int ensurebuf(PyObject *, size_t);
+
 /*----- Multiprecision arithmetic -----------------------------------------*/
 
 typedef struct mp_pyobj {
@@ -180,7 +201,7 @@ extern mp *getgf(PyObject *);
 extern int convgf(PyObject *, void *);
 extern PyObject *mp_pywrap(mp *);
 extern PyObject *gf_pywrap(mp *);
-extern long mphash(mp *);
+extern Py_hash_t mphash(mp *);
 extern mp *mp_frompyobject(PyObject *, int);
 extern PyObject *mp_topystring(mp *, int,
                               const char *, const char *, const char *);