X-Git-Url: https://git.distorted.org.uk/~mdw/catacomb-python/blobdiff_plain/8ebc32d8616aeac9892d20cebfbdc1b531b29d2c..f281293ca70de172b275ecb3224ea36839f2f830:/field.c diff --git a/field.c b/field.c index e33fdfd..7fc1f9d 100644 --- a/field.c +++ b/field.c @@ -324,7 +324,7 @@ static PyObject *feget__value(PyObject *me, void *hunoz) return (mp_pywrap(x)); } -static PyGetSetDef fe_pygetset[] = { +static const PyGetSetDef fe_pygetset[] = { #define GETSETNAME(op, name) fe##op##_##name GET (field, "X.field -> field containing X") GET (value, "X.value -> `natural' MP/GF representation of X") @@ -333,7 +333,7 @@ static PyGetSetDef fe_pygetset[] = { { 0 } }; -static PyMethodDef fe_pymethods[] = { +static const PyMethodDef fe_pymethods[] = { #define METHNAME(func) femeth_##func METH (inv, "X.inv() -> X^{-1}") METH (sqr, "X.sqr() -> X^2") @@ -347,7 +347,7 @@ static PyMethodDef fe_pymethods[] = { { 0 } }; -static PyNumberMethods fe_pynumber = { +static const PyNumberMethods fe_pynumber = { fe_pyadd, /* @nb_add@ */ fe_pysub, /* @nb_subtract@ */ fe_pymul, /* @nb_multiply@ */ @@ -402,7 +402,7 @@ static PyTypeObject fe_pytype_skel = { 0, /* @tp_setattr@ */ 0, /* @tp_compare@ */ 0, /* @tp_repr@ */ - &fe_pynumber, /* @tp_as_number@ */ + PYNUMBER(fe), /* @tp_as_number@ */ 0, /* @tp_as_sequence@ */ 0, /* @tp_as_mapping@ */ fe_pyhash, /* @tp_hash@ */ @@ -424,9 +424,9 @@ static PyTypeObject fe_pytype_skel = { 0, /* @tp_weaklistoffset@ */ 0, /* @tp_iter@ */ 0, /* @tp_iternext@ */ - fe_pymethods, /* @tp_methods@ */ + PYMETHODS(fe), /* @tp_methods@ */ 0, /* @tp_members@ */ - fe_pygetset, /* @tp_getset@ */ + PYGETSET(fe), /* @tp_getset@ */ 0, /* @tp_base@ */ 0, /* @tp_dict@ */ 0, /* @tp_descr_get@ */ @@ -472,6 +472,21 @@ static PyObject *fmeth__adopt(PyObject *me, PyObject *arg) return (fe_pywrap(me, xx)); } +static PyObject *meth__Field_parse(PyObject *me, PyObject *arg) +{ + field *f; + char *p; + PyObject *rc = 0; + qd_parse qd; + + if (!PyArg_ParseTuple(arg, "Os:parse", &me, &p)) goto end; + qd.p = p; qd.e = 0; + if ((f = field_parse(&qd)) == 0) VALERR(qd.e); + rc = Py_BuildValue("(Ns)", field_pywrap(f), qd.p); +end: + return (rc); +} + static void field_pydealloc(PyObject *me) { F_DESTROY(FIELD_F(me)); @@ -499,7 +514,7 @@ static PyObject *fget_name(PyObject *me, void *hunoz) static PyObject *fget_type(PyObject *me, void *hunoz) { return (PyInt_FromLong(F_TYPE(FIELD_F(me)))); } -static PyGetSetDef field_pygetset[] = { +static const PyGetSetDef field_pygetset[] = { #define GETSETNAME(op, name) f##op##_##name GET (zero, "F.zero -> field additive identity") GET (one, "F.one -> field multiplicative identity") @@ -512,7 +527,7 @@ static PyGetSetDef field_pygetset[] = { { 0 } }; -static PyMethodDef field_pymethods[] = { +static const PyMethodDef field_pymethods[] = { #define METHNAME(name) fmeth_##name METH (_adopt, "F._adopt(X) -> FE") KWMETH(rand, "F.rand([rng = rand]) -> FE, uniformly distributed") @@ -553,9 +568,9 @@ static PyTypeObject field_pytype_skel = { 0, /* @tp_weaklistoffset@ */ 0, /* @tp_iter@ */ 0, /* @tp_iternext@ */ - field_pymethods, /* @tp_methods@ */ + PYMETHODS(field), /* @tp_methods@ */ 0, /* @tp_members@ */ - field_pygetset, /* @tp_getset@ */ + PYGETSET(field), /* @tp_getset@ */ 0, /* @tp_base@ */ 0, /* @tp_dict@ */ 0, /* @tp_descr_get@ */ @@ -592,7 +607,7 @@ end: static PyObject *pfget_p(PyObject *me, void *hunoz) { return (mp_pywrap(MP_COPY(FIELD_F(me)->m))); } -static PyGetSetDef primefield_pygetset[] = { +static const PyGetSetDef primefield_pygetset[] = { #define GETSETNAME(op, name) pf##op##_##name GET (p, "F.p -> prime field characteristic") #undef GETSETNAME @@ -633,7 +648,7 @@ static PyTypeObject primefield_pytype_skel = { 0, /* @tp_iternext@ */ 0, /* @tp_methods@ */ 0, /* @tp_members@ */ - primefield_pygetset, /* @tp_getset@ */ + PYGETSET(primefield), /* @tp_getset@ */ 0, /* @tp_base@ */ 0, /* @tp_dict@ */ 0, /* @tp_descr_get@ */ @@ -721,7 +736,7 @@ static PyObject *bfget_m(PyObject *me, void *hunoz) static PyObject *bfget_p(PyObject *me, void *hunoz) { return (gf_pywrap(MP_COPY(FIELD_F(me)->m))); } -static PyGetSetDef binfield_pygetset[] = { +static const PyGetSetDef binfield_pygetset[] = { #define GETSETNAME(op, name) bf##op##_##name GET (m, "F.m -> field polynomial degree") GET (p, "F.p -> field polynomial") @@ -764,7 +779,7 @@ static PyTypeObject binfield_pytype_skel = { 0, /* @tp_iternext@ */ 0, /* @tp_methods@ */ 0, /* @tp_members@ */ - binfield_pygetset, /* @tp_getset@ */ + PYGETSET(binfield), /* @tp_getset@ */ 0, /* @tp_base@ */ 0, /* @tp_dict@ */ 0, /* @tp_descr_get@ */ @@ -867,7 +882,7 @@ static PyObject *bnfget_beta(PyObject *me, void *hunoz) return (gf_pywrap(MP_COPY(fc->ntop.r[fc->ntop.n - 1]))); } -static PyGetSetDef binnormfield_pygetset[] = { +static const PyGetSetDef binnormfield_pygetset[] = { #define GETSETNAME(op, name) bnf##op##_##name GET (beta, "F.beta -> conversion factor") #undef GETSETNAME @@ -909,7 +924,7 @@ static PyTypeObject binnormfield_pytype_skel = { 0, /* @tp_iternext@ */ 0, /* @tp_methods@ */ 0, /* @tp_members@ */ - binnormfield_pygetset, /* @tp_getset@ */ + PYGETSET(binnormfield), /* @tp_getset@ */ 0, /* @tp_base@ */ 0, /* @tp_dict@ */ 0, /* @tp_descr_get@ */ @@ -924,25 +939,7 @@ static PyTypeObject binnormfield_pytype_skel = { /*----- Setup -------------------------------------------------------------*/ -static PyObject *meth__Field_parse(PyObject *me, PyObject *arg) -{ - field *f; - char *p; - PyObject *rc = 0; - qd_parse qd; - - if (!PyArg_ParseTuple(arg, "Os:parse", &me, &p)) - goto end; - qd.p = p; - qd.e = 0; - if ((f = field_parse(&qd)) == 0) - VALERR(qd.e); - rc = Py_BuildValue("(Ns)", field_pywrap(f), qd.p); -end: - return (rc); -} - -static PyMethodDef methods[] = { +static const PyMethodDef methods[] = { #define METHNAME(func) meth_##func METH (_Field_parse, "parse(STR) -> F, REST") #undef METHNAME