MODULES(DO)
#undef DO
+#define FREEOBJ(obj) \
+ (((PyObject *)(obj))->ob_type->tp_free((PyObject *)(obj)))
+
/*----- Bytestrings -------------------------------------------------------*/
PyTypeObject *bytestring_pyobj;
/*----- Abstract fields ---------------------------------------------------*/
typedef struct field_pyobj {
- PyTypeObject ty;
+ PyHeapTypeObject ty;
field *f;
} field_pyobj;
extern int convec(PyObject *, void *);
typedef struct eccurve_pyobj {
- PyTypeObject ty;
+ PyHeapTypeObject ty;
ec_curve *c;
PyObject *fobj;
} eccurve_pyobj;
extern PyObject *ge_pywrap(PyObject *, ge *);
typedef struct group_pyobj {
- PyTypeObject ty;
+ PyHeapTypeObject ty;
group *g;
} group_pyobj;
/*----- Symmetric cryptography --------------------------------------------*/
typedef struct gccipher_pyobj {
- PyTypeObject ty;
+ PyHeapTypeObject ty;
gccipher *cc;
} gccipher_pyobj;
extern int convgcipher(PyObject *, void *);
typedef struct gchash_pyobj {
- PyTypeObject ty;
+ PyHeapTypeObject ty;
gchash *ch;
} gchash_pyobj;
extern int convgmhash(PyObject *, void *);
typedef struct gcmac_pyobj {
- PyTypeObject ty;
+ PyHeapTypeObject ty;
gcmac *cm;
} gcmac_pyobj;
extern int convgcmac(PyObject *, void *);
typedef struct gmac_pyobj {
- PyTypeObject ty;
+ PyHeapTypeObject ty;
unsigned f;
gmac *m;
- PyObject *nameobj;
} gmac_pyobj;
extern PyTypeObject *gmac_pytype;
#define GMAC_PYCHECK(o) PyObject_TypeCheck((o), gmac_pytype)
#define GMAC_M(o) (((gmac_pyobj *)(o))->m)
-#define GMAC_NAMEOBJ(o) (((gmac_pyobj *)(o))->nameobj)
#define GMAC_F(o) (((gmac_pyobj *)(o))->f)
extern PyObject *gmac_pywrap(PyObject *, gmac *, unsigned);
extern int convgmac(PyObject *, void *);
extern PyObject *abstract_pynew(PyTypeObject *, PyObject *, PyObject *);
extern PyObject *getbool(int);
extern PyObject *getu32(uint32);
-extern void *newtype(PyTypeObject *, const PyTypeObject *);
+extern void *newtype(PyTypeObject *, const PyTypeObject *, const char *);
extern PyTypeObject *inittype(PyTypeObject *);
extern void addmethods(const PyMethodDef *);