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 *);
extern PyTypeObject *fe_pytype;
#define FE_PYCHECK(o) PyObject_TypeCheck((o), fe_pytype)
#define FE_F(o) (((fe_pyobj *)(o))->f)
-#define FE_FOBJ(o) ((PyObject *)(o)->ob_type)
+#define FE_FOBJ(o) ((PyObject *)Py_TYPE(o))
#define FE_X(o) (((fe_pyobj *)(o))->x)
extern PyObject *fe_pywrap(PyObject *, mp *);
#define ECPT_PYCHECK(o) PyObject_TypeCheck((o), ecpt_pytype)
#define ECPTCURVE_PYCHECK(o) PyObject_TypeCheck((o), ecptcurve_pytype)
#define ECPT_C(o) (((ecpt_pyobj *)(o))->c)
-#define ECPT_COBJ(o) ((PyObject *)(o)->ob_type)
+#define ECPT_COBJ(o) ((PyObject *)Py_TYPE(o))
#define ECPT_FOBJ(o) ECCURVE_FOBJ(ECPT_COBJ((o)))
#define ECPT_P(o) (&((ecpt_pyobj *)(o))->p)
extern PyObject *ecpt_pywrap(PyObject *, ec *);
#define GE_PYCHECK(o) PyObject_TypeCheck((o), ge_pytype)
#define GE_X(o) (((ge_pyobj *)(o))->x)
#define GE_G(o) (((ge_pyobj *)(o))->g)
-#define GE_GOBJ(o) ((PyObject *)(group_pyobj *)(o)->ob_type)
+#define GE_GOBJ(o) (PyObject *)(Py_TYPE(o))
extern PyObject *ge_pywrap(PyObject *, ge *);
typedef struct group_pyobj {