X-Git-Url: https://git.distorted.org.uk/~mdw/catacomb-python/blobdiff_plain/df9f83669cecb76bb6ab25f42ce25d060f6cf98d..9ca1789eac7b1e6be29918e033b66d6328883575:/field.c?ds=sidebyside diff --git a/field.c b/field.c index 89fe8fb..9f51f5f 100644 --- a/field.c +++ b/field.c @@ -58,17 +58,17 @@ static PyObject *field_dopywrap(PyTypeObject *ty, field *f) { field_pyobj *fobj = newtype(ty, 0, f->ops->name); fobj->f = f; - fobj->ty.type.tp_basicsize = sizeof(fe_pyobj); - fobj->ty.type.tp_base = fe_pytype; + fobj->ty.ht_type.tp_basicsize = sizeof(fe_pyobj); + fobj->ty.ht_type.tp_base = fe_pytype; Py_INCREF(fe_pytype); - fobj->ty.type.tp_flags = (Py_TPFLAGS_DEFAULT | - Py_TPFLAGS_BASETYPE | - Py_TPFLAGS_CHECKTYPES | - Py_TPFLAGS_HEAPTYPE); - fobj->ty.type.tp_alloc = PyType_GenericAlloc; - fobj->ty.type.tp_free = 0; - fobj->ty.type.tp_new = fe_pynew; - PyType_Ready(&fobj->ty.type); + fobj->ty.ht_type.tp_flags = (Py_TPFLAGS_DEFAULT | + Py_TPFLAGS_BASETYPE | + Py_TPFLAGS_CHECKTYPES | + Py_TPFLAGS_HEAPTYPE); + fobj->ty.ht_type.tp_alloc = PyType_GenericAlloc; + fobj->ty.ht_type.tp_free = 0; + fobj->ty.ht_type.tp_new = fe_pynew; + PyType_Ready(&fobj->ty.ht_type); return ((PyObject *)fobj); } @@ -115,16 +115,16 @@ static mp *tofe(field *f, PyObject *o) if (FE_PYCHECK(o)) { if (FE_F(o) != f && !field_samep(FE_F(o), f)) return (0); - y = FE_X(o); - } - if ((x = tomp(o)) != 0) { + y = MP_COPY(FE_X(o)); + } else if ((x = tomp(o)) != 0) { if (MP_ZEROP(x)) - y = f->zero; + y = MP_COPY(f->zero); else if (MP_EQ(x, MP_ONE)) - y = f->one; + y = MP_COPY(f->one); + else + y = F_IN(f, MP_NEW, x); + MP_DROP(x); } - if (x) MP_DROP(x); - if (y) MP_COPY(y); return (y); } @@ -272,7 +272,7 @@ static PyObject *fe_pyint(PyObject *x) static PyObject *fe_pylong(PyObject *x) { mp *xx = F_OUT(FE_F(x), MP_NEW, FE_X(x)); - PyObject *rc = (PyObject *)mp_topylong(xx); + PyObject *rc = mp_topylong(xx); MP_DROP(xx); return (rc); } @@ -407,7 +407,7 @@ static PyNumberMethods fe_pynumber = { }; static PyTypeObject fe_pytype_skel = { - PyObject_HEAD_INIT(&PyType_Type) 0, /* Header */ + PyObject_HEAD_INIT(0) 0, /* Header */ "catacomb.FE", /* @tp_name@ */ sizeof(fe_pyobj), /* @tp_basicsize@ */ 0, /* @tp_itemsize@ */ @@ -439,7 +439,7 @@ static PyTypeObject fe_pytype_skel = { fe_pyrichcompare, /* @tp_richcompare@ */ 0, /* @tp_weaklistoffset@ */ 0, /* @tp_iter@ */ - 0, /* @tp_iternexr@ */ + 0, /* @tp_iternext@ */ fe_pymethods, /* @tp_methods@ */ 0, /* @tp_members@ */ fe_pygetset, /* @tp_getset@ */ @@ -537,7 +537,7 @@ static PyMethodDef field_pymethods[] = { }; static PyTypeObject field_pytype_skel = { - PyObject_HEAD_INIT(&PyType_Type) 0, /* Header */ + PyObject_HEAD_INIT(0) 0, /* Header */ "catacomb.Field", /* @tp_name@ */ sizeof(field_pyobj), /* @tp_basicsize@ */ 0, /* @tp_itemsize@ */ @@ -568,7 +568,7 @@ static PyTypeObject field_pytype_skel = { field_pyrichcompare, /* @tp_richcompare@ */ 0, /* @tp_weaklistoffset@ */ 0, /* @tp_iter@ */ - 0, /* @tp_iternexr@ */ + 0, /* @tp_iternext@ */ field_pymethods, /* @tp_methods@ */ 0, /* @tp_members@ */ field_pygetset, /* @tp_getset@ */ @@ -593,7 +593,7 @@ static PyObject *primefield_pynew(PyTypeObject *ty, field *f; char *kwlist[] = { "p", 0 }; - if (!PyArg_ParseTupleAndKeywords(arg, kw, "O:primefield", kwlist, + if (!PyArg_ParseTupleAndKeywords(arg, kw, "O&:primefield", kwlist, convmp, &xx)) goto end; if ((f = field_prime(xx)) == 0) @@ -615,7 +615,7 @@ static PyGetSetDef primefield_pygetset[] = { }; static PyTypeObject primefield_pytype_skel = { - PyObject_HEAD_INIT(&PyType_Type) 0, /* Header */ + PyObject_HEAD_INIT(0) 0, /* Header */ "catacomb.PrimeField", /* @tp_name@ */ sizeof(field_pyobj), /* @tp_basicsize@ */ 0, /* @tp_itemsize@ */ @@ -646,7 +646,7 @@ static PyTypeObject primefield_pytype_skel = { field_pyrichcompare, /* @tp_richcompare@ */ 0, /* @tp_weaklistoffset@ */ 0, /* @tp_iter@ */ - 0, /* @tp_iternexr@ */ + 0, /* @tp_iternext@ */ 0, /* @tp_methods@ */ 0, /* @tp_members@ */ primefield_pygetset, /* @tp_getset@ */ @@ -682,7 +682,7 @@ end: } static PyTypeObject niceprimefield_pytype_skel = { - PyObject_HEAD_INIT(&PyType_Type) 0, /* Header */ + PyObject_HEAD_INIT(0) 0, /* Header */ "catacomb.NicePrimeField", /* @tp_name@ */ sizeof(field_pyobj), /* @tp_basicsize@ */ 0, /* @tp_itemsize@ */ @@ -713,7 +713,7 @@ static PyTypeObject niceprimefield_pytype_skel = { field_pyrichcompare, /* @tp_richcompare@ */ 0, /* @tp_weaklistoffset@ */ 0, /* @tp_iter@ */ - 0, /* @tp_iternexr@ */ + 0, /* @tp_iternext@ */ 0, /* @tp_methods@ */ 0, /* @tp_members@ */ 0, /* @tp_getset@ */ @@ -742,7 +742,7 @@ static PyGetSetDef binfield_pygetset[] = { }; static PyTypeObject binfield_pytype_skel = { - PyObject_HEAD_INIT(&PyType_Type) 0, /* Header */ + PyObject_HEAD_INIT(0) 0, /* Header */ "catacomb.BinField", /* @tp_name@ */ sizeof(field_pyobj), /* @tp_basicsize@ */ 0, /* @tp_itemsize@ */ @@ -773,7 +773,7 @@ static PyTypeObject binfield_pytype_skel = { field_pyrichcompare, /* @tp_richcompare@ */ 0, /* @tp_weaklistoffset@ */ 0, /* @tp_iter@ */ - 0, /* @tp_iternexr@ */ + 0, /* @tp_iternext@ */ 0, /* @tp_methods@ */ 0, /* @tp_members@ */ binfield_pygetset, /* @tp_getset@ */ @@ -815,7 +815,7 @@ static PyGetSetDef binpolyfield_pygetset[] = { }; static PyTypeObject binpolyfield_pytype_skel = { - PyObject_HEAD_INIT(&PyType_Type) 0, /* Header */ + PyObject_HEAD_INIT(0) 0, /* Header */ "catacomb.BinPolyField", /* @tp_name@ */ sizeof(field_pyobj), /* @tp_basicsize@ */ 0, /* @tp_itemsize@ */ @@ -846,7 +846,7 @@ static PyTypeObject binpolyfield_pytype_skel = { field_pyrichcompare, /* @tp_richcompare@ */ 0, /* @tp_weaklistoffset@ */ 0, /* @tp_iter@ */ - 0, /* @tp_iternexr@ */ + 0, /* @tp_iternext@ */ 0, /* @tp_methods@ */ 0, /* @tp_members@ */ binpolyfield_pygetset, /* @tp_getset@ */ @@ -897,7 +897,7 @@ static PyGetSetDef binnormfield_pygetset[] = { }; static PyTypeObject binnormfield_pytype_skel = { - PyObject_HEAD_INIT(&PyType_Type) 0, /* Header */ + PyObject_HEAD_INIT(0) 0, /* Header */ "catacomb.BinNormField", /* @tp_name@ */ sizeof(field_pyobj), /* @tp_basicsize@ */ 0, /* @tp_itemsize@ */ @@ -928,7 +928,7 @@ static PyTypeObject binnormfield_pytype_skel = { field_pyrichcompare, /* @tp_richcompare@ */ 0, /* @tp_weaklistoffset@ */ 0, /* @tp_iter@ */ - 0, /* @tp_iternexr@ */ + 0, /* @tp_iternext@ */ 0, /* @tp_methods@ */ 0, /* @tp_members@ */ binnormfield_pygetset, /* @tp_getset@ */