X-Git-Url: https://git.distorted.org.uk/~mdw/catacomb-python/blobdiff_plain/c90f712e989f2ee557842c18fdb9a4df469c1859..1c7419c9920b70c22bbeefe00f3e11aed6c6ffbd:/pgen.c diff --git a/pgen.c b/pgen.c index dd2d827..777ec32 100644 --- a/pgen.c +++ b/pgen.c @@ -100,12 +100,12 @@ static PyObject *pfmeth_jump(PyObject *me, PyObject *arg) RETURN_ME; } -static PyObject *meth__PrimeFilter_smallfactor(PyObject *me, PyObject *arg) +static PyObject *pfmeth_smallfactor(PyObject *me, PyObject *arg) { mp *x = 0; PyObject *rc = 0; - if (!PyArg_ParseTuple(arg, "OO&:smallfactor", &me, convmp, &x)) goto end; + if (!PyArg_ParseTuple(arg, "O&:smallfactor", convmp, &x)) goto end; rc = PyInt_FromLong(pfilt_smallfactor(x)); end: mp_drop(x); @@ -147,6 +147,7 @@ static const PyMethodDef pfilt_pymethods[] = { METH (step, "F.step(N)") METH (muladd, "F.muladd(M, A)") METH (jump, "F.jump(FF)") + SMTH (smallfactor, "smallfactor(X) -> PGST") #undef METHNAME { 0 } }; @@ -194,8 +195,8 @@ static const PyNumberMethods pfilt_pynumber = { 0, /* @nb_inplace_true_divide@ */ }; -static PyTypeObject pfilt_pytype_skel = { - PyObject_HEAD_INIT(0) 0, /* Header */ +static const PyTypeObject pfilt_pytype_skel = { + PyVarObject_HEAD_INIT(0, 0) /* Header */ "PrimeFilter", /* @tp_name@ */ sizeof(pfilt_pyobj), /* @tp_basicsize@ */ 0, /* @tp_itemsize@ */ @@ -303,11 +304,11 @@ static PyObject *rget_niters(PyObject *me, void *hunoz) static PyObject *rget_x(PyObject *me, void *hunoz) { return (mp_pywrap(MP_COPY(RABIN_R(me)->mm.m))); } -static PyObject *meth__RabinMiller_iters(PyObject *me, PyObject *arg) +static PyObject *rmeth_iters(PyObject *me, PyObject *arg) { unsigned n; - if (!PyArg_ParseTuple(arg, "OO&:iters", &me, convuint, &n)) return (0); + if (!PyArg_ParseTuple(arg, "O&:iters", convuint, &n)) return (0); return (PyInt_FromLong(rabin_iters(n))); } @@ -323,12 +324,13 @@ static const PyMethodDef rabin_pymethods[] = { #define METHNAME(name) rmeth_##name METH (test, "R.test(W) -> PGST") METH (rtest, "R.rtest(W) -> PGST") + SMTH (iters, "iters(NBITS) -> NITERS") #undef METHNAME { 0 } }; -static PyTypeObject rabin_pytype_skel = { - PyObject_HEAD_INIT(0) 0, /* Header */ +static const PyTypeObject rabin_pytype_skel = { + PyVarObject_HEAD_INIT(0, 0) /* Header */ "RabinMiller", /* @tp_name@ */ sizeof(rabin_pyobj), /* @tp_basicsize@ */ 0, /* @tp_itemsize@ */ @@ -417,7 +419,7 @@ static void pgevent_pydealloc(PyObject *me) } while (0) static PyObject *peget_name(PyObject *me, void *hunoz) - { PGEVENT_CHECK(me); return (PyString_FromString(PGEVENT_EV(me)->name)); } + { PGEVENT_CHECK(me); return (TEXT_FROMSTR(PGEVENT_EV(me)->name)); } static PyObject *peget_x(PyObject *me, void *hunoz) { PGEVENT_CHECK(me); return (mp_pywrap(MP_COPY(PGEVENT_EV(me)->m))); } @@ -464,8 +466,8 @@ static const PyGetSetDef pgevent_pygetset[] = { { 0 } }; -static PyTypeObject pgevent_pytype_skel = { - PyObject_HEAD_INIT(0) 0, /* Header */ +static const PyTypeObject pgevent_pytype_skel = { + PyVarObject_HEAD_INIT(0, 0) /* Header */ "PrimeGenEvent", /* @tp_name@ */ sizeof(pgevent_pyobj), /* @tp_basicsize@ */ 0, /* @tp_itemsize@ */ @@ -643,8 +645,8 @@ static const PyMethodDef pgev_pymethods[] = { { 0 } }; -static PyTypeObject pgev_pytype_skel = { - PyObject_HEAD_INIT(0) 0, /* Header */ +static const PyTypeObject pgev_pytype_skel = { + PyVarObject_HEAD_INIT(0, 0) /* Header */ "PrimeGenBuiltinHandler", /* @tp_name@ */ sizeof(pgev_pyobj), /* @tp_basicsize@ */ 0, /* @tp_itemsize@ */ @@ -717,8 +719,8 @@ static const PyGetSetDef pgstep_pygetset[] = { { 0 } }; -static PyTypeObject pgstep_pytype_skel = { - PyObject_HEAD_INIT(0) 0, /* Header */ +static const PyTypeObject pgstep_pytype_skel = { + PyVarObject_HEAD_INIT(0, 0) /* Header */ "PrimeGenStepper", /* @tp_name@ */ sizeof(pgstep_pyobj), /* @tp_basicsize@ */ 0, /* @tp_itemsize@ */ @@ -799,8 +801,8 @@ static const PyGetSetDef pgjump_pygetset[] = { { 0 } }; -static PyTypeObject pgjump_pytype_skel = { - PyObject_HEAD_INIT(0) 0, /* Header */ +static const PyTypeObject pgjump_pytype_skel = { + PyVarObject_HEAD_INIT(0, 0) /* Header */ "PrimeGenJumper", /* @tp_name@ */ sizeof(pgjump_pyobj), /* @tp_basicsize@ */ 0, /* @tp_itemsize@ */ @@ -861,8 +863,8 @@ end: return ((PyObject *)rc); } -static PyTypeObject pgtest_pytype_skel = { - PyObject_HEAD_INIT(0) 0, /* Header */ +static const PyTypeObject pgtest_pytype_skel = { + PyVarObject_HEAD_INIT(0, 0) /* Header */ "PrimeGenTester", /* @tp_name@ */ sizeof(pgtest_pyobj), /* @tp_basicsize@ */ 0, /* @tp_itemsize@ */ @@ -1049,10 +1051,14 @@ end: /*----- Global stuff ------------------------------------------------------*/ +static const struct nameval consts[] = { + CONST(PGEN_PASS), CONST(PGEN_FAIL), CONST(PGEN_BEGIN), CONST(PGEN_TRY), + CONST(PGEN_DONE), CONST(PGEN_ABORT), + { 0 } +}; + static const PyMethodDef methods[] = { #define METHNAME(name) meth_##name - METH (_PrimeFilter_smallfactor, "smallfactor(X) -> PGRC") - METH (_RabinMiller_iters, "iters(NBITS) -> NITERS") KWMETH(pgen, "pgen(START, [name = 'p'], [stepper = PrimeGenStepper(2)],\n" " [tester = PrimeGenTester()], [event = pgen_nullev],\n" @@ -1098,6 +1104,7 @@ void pgen_pyinsert(PyObject *mod) INSERT("pgen_stdev", pgev_stdev(pgen_ev)); INSERT("pgen_spinev", pgev_stdev(pgen_evspin)); INSERT("pgen_subev", pgev_stdev(pgen_subev)); + setconstants(mod, consts); } /*----- That's all, folks -------------------------------------------------*/