X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/catacomb-python/blobdiff_plain/d7ab1bab81155baa763449d5afa81e16df98dbe7..f1b0cf0da6b3bcc530d7f72982278510d94f6456:/pgen.c diff --git a/pgen.c b/pgen.c index e201b62..108fa31 100644 --- a/pgen.c +++ b/pgen.c @@ -1,13 +1,11 @@ /* -*-c-*- - * - * $Id$ * * Prime number generation * * (c) 2005 Straylight/Edgeware */ -/*----- Licensing notice --------------------------------------------------* +/*----- Licensing notice --------------------------------------------------* * * This file is part of the Python interface to Catacomb. * @@ -15,12 +13,12 @@ * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. - * + * * Catacomb/Python is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public License * along with Catacomb/Python; if not, write to the Free Software Foundation, * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. @@ -40,7 +38,7 @@ static PyObject *pfilt_pywrap(pfilt *f) o = PyObject_New(pfilt_pyobj, pfilt_pytype); o->f = *f; o->st = pfilt_step(f, 0); - return ((PyObject *)o); + return ((PyObject *)o); } static PyObject *pfilt_pymake(PyTypeObject *ty, PyObject *xobj) @@ -68,7 +66,7 @@ static PyObject *pfilt_pynew(PyTypeObject *ty, PyObject *arg, PyObject *kw) } static void pfilt_pydealloc(PyObject *me) - { pfilt_destroy(PFILT_F(me)); PyObject_DEL(me); } + { pfilt_destroy(PFILT_F(me)); FREEOBJ(me); } static PyObject *pfmeth_step(PyObject *me, PyObject *arg) { @@ -122,14 +120,13 @@ static PyObject *pfilt_pyint(PyObject *me) long l; PyObject *rc = 0; - if (mp_tolong_checked(PFILT_F(me)->m, &l)) goto end; - rc = PyInt_FromLong(l); -end: + if (!mp_tolong_checked(PFILT_F(me)->m, &l, 0)) rc = PyInt_FromLong(l); + else rc = mp_topylong(PFILT_F(me)->m); return (rc); } static PyObject *pfilt_pylong(PyObject *me) - { return ((PyObject *)mp_topylong(PFILT_F(me)->m)); } + { return (mp_topylong(PFILT_F(me)->m)); } static PyObject *pfget_x(PyObject *me, void *hunoz) { return (mp_pywrap(MP_COPY(PFILT_F(me)->m))); } @@ -198,8 +195,8 @@ static PyNumberMethods pfilt_pynumber = { }; static PyTypeObject pfilt_pytype_skel = { - PyObject_HEAD_INIT(&PyType_Type) 0, /* Header */ - "catacomb.PrimeFilter", /* @tp_name@ */ + PyObject_HEAD_INIT(0) 0, /* Header */ + "PrimeFilter", /* @tp_name@ */ sizeof(pfilt_pyobj), /* @tp_basicsize@ */ 0, /* @tp_itemsize@ */ @@ -229,7 +226,7 @@ static PyTypeObject pfilt_pytype_skel = { 0, /* @tp_richcompare@ */ 0, /* @tp_weaklistoffset@ */ 0, /* @tp_iter@ */ - 0, /* @tp_iternexr@ */ + 0, /* @tp_iternext@ */ pfilt_pymethods, /* @tp_methods@ */ 0, /* @tp_members@ */ pfilt_pygetset, /* @tp_getset@ */ @@ -241,7 +238,7 @@ static PyTypeObject pfilt_pytype_skel = { 0, /* @tp_init@ */ PyType_GenericAlloc, /* @tp_alloc@ */ pfilt_pynew, /* @tp_new@ */ - _PyObject_Del, /* @tp_free@ */ + 0, /* @tp_free@ */ 0 /* @tp_is_gc@ */ }; @@ -273,7 +270,7 @@ end: static void rabin_pydealloc(PyObject *me) { rabin_destroy(RABIN_R(me)); - PyObject_DEL(me); + FREEOBJ(me); } static PyObject *rmeth_test(PyObject *me, PyObject *arg) @@ -331,8 +328,8 @@ static PyMethodDef rabin_pymethods[] = { }; static PyTypeObject rabin_pytype_skel = { - PyObject_HEAD_INIT(&PyType_Type) 0, /* Header */ - "catacomb.RabinMiller", /* @tp_name@ */ + PyObject_HEAD_INIT(0) 0, /* Header */ + "RabinMiller", /* @tp_name@ */ sizeof(rabin_pyobj), /* @tp_basicsize@ */ 0, /* @tp_itemsize@ */ @@ -362,7 +359,7 @@ static PyTypeObject rabin_pytype_skel = { 0, /* @tp_richcompare@ */ 0, /* @tp_weaklistoffset@ */ 0, /* @tp_iter@ */ - 0, /* @tp_iternexr@ */ + 0, /* @tp_iternext@ */ rabin_pymethods, /* @tp_methods@ */ 0, /* @tp_members@ */ rabin_pygetset, /* @tp_getset@ */ @@ -374,7 +371,7 @@ static PyTypeObject rabin_pytype_skel = { 0, /* @tp_init@ */ PyType_GenericAlloc, /* @tp_alloc@ */ rabin_pynew, /* @tp_new@ */ - _PyObject_Del, /* @tp_free@ */ + 0, /* @tp_free@ */ 0 /* @tp_is_gc@ */ }; @@ -398,7 +395,7 @@ static PyObject *pgevent_pywrap(pgen_event *ev) static CONVFUNC(pgevent, pgen_event *, PGEVENT_EV) static void pgevent_kill(PyObject *me) { PGEVENT_EV(me) = 0; } -static void pgevent_pydealloc(PyObject *me) { PyObject_DEL(me); } +static void pgevent_pydealloc(PyObject *me) { FREEOBJ(me); } #define PGEVENT_CHECK(me) do { \ if (!PGEVENT_EV(me)) { \ @@ -449,8 +446,8 @@ static PyGetSetDef pgevent_pygetset[] = { }; static PyTypeObject pgevent_pytype_skel = { - PyObject_HEAD_INIT(&PyType_Type) 0, /* Header */ - "catacomb.PrimeGenEvent", /* @tp_name@ */ + PyObject_HEAD_INIT(0) 0, /* Header */ + "PrimeGenEvent", /* @tp_name@ */ sizeof(pgevent_pyobj), /* @tp_basicsize@ */ 0, /* @tp_itemsize@ */ @@ -480,7 +477,7 @@ static PyTypeObject pgevent_pytype_skel = { 0, /* @tp_richcompare@ */ 0, /* @tp_weaklistoffset@ */ 0, /* @tp_iter@ */ - 0, /* @tp_iternexr@ */ + 0, /* @tp_iternext@ */ 0, /* @tp_methods@ */ 0, /* @tp_members@ */ pgevent_pygetset, /* @tp_getset@ */ @@ -492,7 +489,7 @@ static PyTypeObject pgevent_pytype_skel = { 0, /* @tp_init@ */ PyType_GenericAlloc, /* @tp_alloc@ */ abstract_pynew, /* @tp_new@ */ - _PyObject_Del, /* @tp_free@ */ + 0, /* @tp_free@ */ 0 /* @tp_is_gc@ */ }; @@ -548,7 +545,7 @@ static int pgev_python(int rq, pgen_event *ev, void *p) goto end; else if (l < PGEN_ABORT || l > PGEN_PASS) VALERR("return code out of range"); - else + else st = l; end: if (pyev) { @@ -630,12 +627,12 @@ static PyMethodDef pgev_pymethods[] = { }; static PyTypeObject pgev_pytype_skel = { - PyObject_HEAD_INIT(&PyType_Type) 0, /* Header */ - "catacomb.PrimeGenBuiltinHandler", /* @tp_name@ */ + PyObject_HEAD_INIT(0) 0, /* Header */ + "PrimeGenBuiltinHandler", /* @tp_name@ */ sizeof(pgev_pyobj), /* @tp_basicsize@ */ 0, /* @tp_itemsize@ */ - _PyObject_Del, /* @tp_dealloc@ */ + 0, /* @tp_dealloc@ */ 0, /* @tp_print@ */ 0, /* @tp_getattr@ */ 0, /* @tp_setattr@ */ @@ -661,7 +658,7 @@ static PyTypeObject pgev_pytype_skel = { 0, /* @tp_richcompare@ */ 0, /* @tp_weaklistoffset@ */ 0, /* @tp_iter@ */ - 0, /* @tp_iternexr@ */ + 0, /* @tp_iternext@ */ pgev_pymethods, /* @tp_methods@ */ 0, /* @tp_members@ */ 0, /* @tp_getset@ */ @@ -673,7 +670,7 @@ static PyTypeObject pgev_pytype_skel = { 0, /* @tp_init@ */ PyType_GenericAlloc, /* @tp_alloc@ */ abstract_pynew, /* @tp_new@ */ - _PyObject_Del, /* @tp_free@ */ + 0, /* @tp_free@ */ 0 /* @tp_is_gc@ */ }; @@ -698,14 +695,14 @@ static PyObject *psget_step(PyObject *me, void *hunoz) static PyGetSetDef pgstep_pygetset[] = { #define GETSETNAME(op, name) ps##op##_##name - GET (step, "S.step -> step size for the stepper") + GET (step, "S.step -> step size for the stepper") #undef GETSETNAME { 0 } }; static PyTypeObject pgstep_pytype_skel = { - PyObject_HEAD_INIT(&PyType_Type) 0, /* Header */ - "catacomb.PrimeGenStepper", /* @tp_name@ */ + PyObject_HEAD_INIT(0) 0, /* Header */ + "PrimeGenStepper", /* @tp_name@ */ sizeof(pgstep_pyobj), /* @tp_basicsize@ */ 0, /* @tp_itemsize@ */ @@ -735,7 +732,7 @@ static PyTypeObject pgstep_pytype_skel = { 0, /* @tp_richcompare@ */ 0, /* @tp_weaklistoffset@ */ 0, /* @tp_iter@ */ - 0, /* @tp_iternexr@ */ + 0, /* @tp_iternext@ */ 0, /* @tp_methods@ */ 0, /* @tp_members@ */ pgstep_pygetset, /* @tp_getset@ */ @@ -747,7 +744,7 @@ static PyTypeObject pgstep_pytype_skel = { 0, /* @tp_init@ */ PyType_GenericAlloc, /* @tp_alloc@ */ pgstep_pynew, /* @tp_new@ */ - _PyObject_Del, /* @tp_free@ */ + 0, /* @tp_free@ */ 0 /* @tp_is_gc@ */ }; @@ -772,7 +769,7 @@ end: static void pgjump_pydealloc(PyObject *me) { Py_DECREF(PGJUMP_FOBJ(me)); - _PyObject_Del(me); + FREEOBJ(me); } static PyObject *pjget_jump(PyObject *me, void *hunoz) @@ -780,14 +777,14 @@ static PyObject *pjget_jump(PyObject *me, void *hunoz) static PyGetSetDef pgjump_pygetset[] = { #define GETSETNAME(op, name) pj##op##_##name - GET (jump, "S.jump -> jump size for the stepper") + GET (jump, "S.jump -> jump size for the stepper") #undef GETSETNAME { 0 } }; static PyTypeObject pgjump_pytype_skel = { - PyObject_HEAD_INIT(&PyType_Type) 0, /* Header */ - "catacomb.PrimeGenJumper", /* @tp_name@ */ + PyObject_HEAD_INIT(0) 0, /* Header */ + "PrimeGenJumper", /* @tp_name@ */ sizeof(pgjump_pyobj), /* @tp_basicsize@ */ 0, /* @tp_itemsize@ */ @@ -817,7 +814,7 @@ static PyTypeObject pgjump_pytype_skel = { 0, /* @tp_richcompare@ */ 0, /* @tp_weaklistoffset@ */ 0, /* @tp_iter@ */ - 0, /* @tp_iternexr@ */ + 0, /* @tp_iternext@ */ 0, /* @tp_methods@ */ 0, /* @tp_members@ */ pgjump_pygetset, /* @tp_getset@ */ @@ -829,7 +826,7 @@ static PyTypeObject pgjump_pytype_skel = { 0, /* @tp_init@ */ PyType_GenericAlloc, /* @tp_alloc@ */ pgjump_pynew, /* @tp_new@ */ - _PyObject_Del, /* @tp_free@ */ + 0, /* @tp_free@ */ 0 /* @tp_is_gc@ */ }; @@ -847,8 +844,8 @@ end: } static PyTypeObject pgtest_pytype_skel = { - PyObject_HEAD_INIT(&PyType_Type) 0, /* Header */ - "catacomb.PrimeGenTester", /* @tp_name@ */ + PyObject_HEAD_INIT(0) 0, /* Header */ + "PrimeGenTester", /* @tp_name@ */ sizeof(pgtest_pyobj), /* @tp_basicsize@ */ 0, /* @tp_itemsize@ */ @@ -878,7 +875,7 @@ static PyTypeObject pgtest_pytype_skel = { 0, /* @tp_richcompare@ */ 0, /* @tp_weaklistoffset@ */ 0, /* @tp_iter@ */ - 0, /* @tp_iternexr@ */ + 0, /* @tp_iternext@ */ 0, /* @tp_methods@ */ 0, /* @tp_members@ */ 0, /* @tp_getset@ */ @@ -890,7 +887,7 @@ static PyTypeObject pgtest_pytype_skel = { 0, /* @tp_init@ */ PyType_GenericAlloc, /* @tp_alloc@ */ pgtest_pynew, /* @tp_new@ */ - _PyObject_Del, /* @tp_free@ */ + 0, /* @tp_free@ */ 0 /* @tp_is_gc@ */ }; @@ -933,7 +930,7 @@ static PyObject *meth_pgen(PyObject *me, PyObject *arg, PyObject *kw) end: mp_drop(r); mp_drop(x); droppgev(&step); droppgev(&test); droppgev(&evt); - return (rc); + return (rc); } static PyObject *meth_strongprime_setup(PyObject *me, @@ -1035,10 +1032,10 @@ pgen(START, [name = 'p', stepper = PrimeGenStepper(2),\n\ nsteps = 0, ntests = RabinMiller.iters(START.nbits)]) -> P") KWMETH(strongprime_setup, "\ strongprime_setup(NBITS, [name = 'p', event = pgen_nullev,\n\ - rng = rand, nsteps = 0]) -> (START, JUMP)") + rng = rand, nsteps = 0]) -> (START, JUMP)") KWMETH(strongprime, "\ -strongprime_setup(NBITS, [name = 'p', event = pgen_nullev,\n\ - rng = rand, nsteps = 0]) -> P") +strongprime(NBITS, [name = 'p', event = pgen_nullev,\n\ + rng = rand, nsteps = 0]) -> P") KWMETH(limlee, "\ limlee(PBITS, QBITS, [name = 'p', event = pgen_nullev,\n\ ievent = pgen_nullev, rng = rand, nsteps = 0]) -> (P, [Q, ...])")