~mdw
/
catacomb-python
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
*.c: Delete some pointless refcount twiddling.
[catacomb-python]
/
pgen.c
diff --git
a/pgen.c
b/pgen.c
index
58f6845
..
3c2a792
100644
(file)
--- a/
pgen.c
+++ b/
pgen.c
@@
-100,12
+100,12
@@
static PyObject *pfmeth_jump(PyObject *me, PyObject *arg)
RETURN_ME;
}
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;
{
mp *x = 0;
PyObject *rc = 0;
- if (!PyArg_ParseTuple(arg, "O
O&: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);
rc = PyInt_FromLong(pfilt_smallfactor(x));
end:
mp_drop(x);
@@
-125,8
+125,10
@@
static PyObject *pfilt_pyint(PyObject *me)
return (rc);
}
return (rc);
}
+#ifdef PY2
static PyObject *pfilt_pylong(PyObject *me)
{ return (mp_topylong(PFILT_F(me)->m)); }
static PyObject *pfilt_pylong(PyObject *me)
{ return (mp_topylong(PFILT_F(me)->m)); }
+#endif
static PyObject *pfget_x(PyObject *me, void *hunoz)
{ return (mp_pywrap(MP_COPY(PFILT_F(me)->m))); }
static PyObject *pfget_x(PyObject *me, void *hunoz)
{ return (mp_pywrap(MP_COPY(PFILT_F(me)->m))); }
@@
-134,7
+136,7
@@
static PyObject *pfget_x(PyObject *me, void *hunoz)
static PyObject *pfget_status(PyObject *me, void *hunoz)
{ return (PyInt_FromLong(PFILT_ST(me))); }
static PyObject *pfget_status(PyObject *me, void *hunoz)
{ return (PyInt_FromLong(PFILT_ST(me))); }
-static PyGetSetDef pfilt_pygetset[] = {
+static
const
PyGetSetDef pfilt_pygetset[] = {
#define GETSETNAME(op, name) pf##op##_##name
GET (x, "F.x -> current position of filter")
GET (status, "F.status -> primality status of filter")
#define GETSETNAME(op, name) pf##op##_##name
GET (x, "F.x -> current position of filter")
GET (status, "F.status -> primality status of filter")
@@
-142,20
+144,23
@@
static PyGetSetDef pfilt_pygetset[] = {
{ 0 }
};
{ 0 }
};
-static PyMethodDef pfilt_pymethods[] = {
+static
const
PyMethodDef pfilt_pymethods[] = {
#define METHNAME(name) pfmeth_##name
METH (step, "F.step(N)")
METH (muladd, "F.muladd(M, A)")
METH (jump, "F.jump(FF)")
#define METHNAME(name) pfmeth_##name
METH (step, "F.step(N)")
METH (muladd, "F.muladd(M, A)")
METH (jump, "F.jump(FF)")
+ SMTH (smallfactor, "smallfactor(X) -> PGST")
#undef METHNAME
{ 0 }
};
#undef METHNAME
{ 0 }
};
-static PyNumberMethods pfilt_pynumber = {
+static
const
PyNumberMethods pfilt_pynumber = {
0, /* @nb_add@ */
0, /* @nb_subtract@ */
0, /* @nb_multiply@ */
0, /* @nb_add@ */
0, /* @nb_subtract@ */
0, /* @nb_multiply@ */
+#ifdef PY2
0, /* @nb_divide@ */
0, /* @nb_divide@ */
+#endif
0, /* @nb_remainder@ */
0, /* @nb_divmod@ */
0, /* @nb_power@ */
0, /* @nb_remainder@ */
0, /* @nb_divmod@ */
0, /* @nb_power@ */
@@
-169,17
+174,23
@@
static PyNumberMethods pfilt_pynumber = {
0, /* @nb_and@ */
0, /* @nb_xor@ */
0, /* @nb_or@ */
0, /* @nb_and@ */
0, /* @nb_xor@ */
0, /* @nb_or@ */
+#ifdef PY2
0, /* @nb_coerce@ */
0, /* @nb_coerce@ */
+#endif
pfilt_pyint, /* @nb_int@ */
pfilt_pyint, /* @nb_int@ */
-
pfilt_pylong,
/* @nb_long@ */
+
PY23(pfilt_pylong, 0),
/* @nb_long@ */
0, /* @nb_float@ */
0, /* @nb_float@ */
+#ifdef PY2
0, /* @nb_oct@ */
0, /* @nb_hex@ */
0, /* @nb_oct@ */
0, /* @nb_hex@ */
+#endif
0, /* @nb_inplace_add@ */
0, /* @nb_inplace_subtract@ */
0, /* @nb_inplace_multiply@ */
0, /* @nb_inplace_add@ */
0, /* @nb_inplace_subtract@ */
0, /* @nb_inplace_multiply@ */
+#ifdef PY2
0, /* @nb_inplace_divide@ */
0, /* @nb_inplace_divide@ */
+#endif
0, /* @nb_inplace_remainder@ */
0, /* @nb_inplace_power@ */
0, /* @nb_inplace_lshift@ */
0, /* @nb_inplace_remainder@ */
0, /* @nb_inplace_power@ */
0, /* @nb_inplace_lshift@ */
@@
-194,8
+205,8
@@
static PyNumberMethods pfilt_pynumber = {
0, /* @nb_inplace_true_divide@ */
};
0, /* @nb_inplace_true_divide@ */
};
-static PyTypeObject pfilt_pytype_skel = {
- Py
Object_HEAD_INIT(0) 0,
/* Header */
+static
const
PyTypeObject pfilt_pytype_skel = {
+ Py
VarObject_HEAD_INIT(0, 0)
/* Header */
"PrimeFilter", /* @tp_name@ */
sizeof(pfilt_pyobj), /* @tp_basicsize@ */
0, /* @tp_itemsize@ */
"PrimeFilter", /* @tp_name@ */
sizeof(pfilt_pyobj), /* @tp_basicsize@ */
0, /* @tp_itemsize@ */
@@
-206,7
+217,7
@@
static PyTypeObject pfilt_pytype_skel = {
0, /* @tp_setattr@ */
0, /* @tp_compare@ */
0, /* @tp_repr@ */
0, /* @tp_setattr@ */
0, /* @tp_compare@ */
0, /* @tp_repr@ */
-
&pfilt_pynumber
, /* @tp_as_number@ */
+
PYNUMBER(pfilt)
, /* @tp_as_number@ */
0, /* @tp_as_sequence@ */
0, /* @tp_as_mapping@ */
0, /* @tp_hash@ */
0, /* @tp_as_sequence@ */
0, /* @tp_as_mapping@ */
0, /* @tp_hash@ */
@@
-227,9
+238,9
@@
static PyTypeObject pfilt_pytype_skel = {
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
-
pfilt_pymethods,
/* @tp_methods@ */
+
PYMETHODS(pfilt),
/* @tp_methods@ */
0, /* @tp_members@ */
0, /* @tp_members@ */
-
pfilt_pygetset,
/* @tp_getset@ */
+
PYGETSET(pfilt),
/* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
@@
-303,15
+314,15
@@
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 *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;
{
unsigned n;
- if (!PyArg_ParseTuple(arg, "O
O&:iters", &me
, convuint, &n)) return (0);
+ if (!PyArg_ParseTuple(arg, "O
&:iters"
, convuint, &n)) return (0);
return (PyInt_FromLong(rabin_iters(n)));
}
return (PyInt_FromLong(rabin_iters(n)));
}
-static PyGetSetDef rabin_pygetset[] = {
+static
const
PyGetSetDef rabin_pygetset[] = {
#define GETSETNAME(op, name) r##op##_##name
GET (x, "R.x -> number under test")
GET (niters, "R.niters -> suggested number of tests")
#define GETSETNAME(op, name) r##op##_##name
GET (x, "R.x -> number under test")
GET (niters, "R.niters -> suggested number of tests")
@@
-319,16
+330,17
@@
static PyGetSetDef rabin_pygetset[] = {
{ 0 }
};
{ 0 }
};
-static PyMethodDef rabin_pymethods[] = {
+static
const
PyMethodDef rabin_pymethods[] = {
#define METHNAME(name) rmeth_##name
METH (test, "R.test(W) -> PGST")
METH (rtest, "R.rtest(W) -> PGST")
#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 }
};
#undef METHNAME
{ 0 }
};
-static PyTypeObject rabin_pytype_skel = {
- Py
Object_HEAD_INIT(0) 0,
/* Header */
+static
const
PyTypeObject rabin_pytype_skel = {
+ Py
VarObject_HEAD_INIT(0, 0)
/* Header */
"RabinMiller", /* @tp_name@ */
sizeof(rabin_pyobj), /* @tp_basicsize@ */
0, /* @tp_itemsize@ */
"RabinMiller", /* @tp_name@ */
sizeof(rabin_pyobj), /* @tp_basicsize@ */
0, /* @tp_itemsize@ */
@@
-360,9
+372,9
@@
static PyTypeObject rabin_pytype_skel = {
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
-
rabin_pymethods,
/* @tp_methods@ */
+
PYMETHODS(rabin),
/* @tp_methods@ */
0, /* @tp_members@ */
0, /* @tp_members@ */
-
rabin_pygetset,
/* @tp_getset@ */
+
PYGETSET(rabin),
/* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
@@
-417,7
+429,7
@@
static void pgevent_pydealloc(PyObject *me)
} while (0)
static PyObject *peget_name(PyObject *me, void *hunoz)
} 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))); }
static PyObject *peget_x(PyObject *me, void *hunoz)
{ PGEVENT_CHECK(me); return (mp_pywrap(MP_COPY(PGEVENT_EV(me)->m))); }
@@
-453,7
+465,7
@@
end:
return (rc);
}
return (rc);
}
-static PyGetSetDef pgevent_pygetset[] = {
+static
const
PyGetSetDef pgevent_pygetset[] = {
#define GETSETNAME(op, name) pe##op##_##name
GET (name, "EV.name -> value being generated")
GETSET(x, "EV.x -> value under test")
#define GETSETNAME(op, name) pe##op##_##name
GET (name, "EV.name -> value being generated")
GETSET(x, "EV.x -> value under test")
@@
-464,8
+476,8
@@
static PyGetSetDef pgevent_pygetset[] = {
{ 0 }
};
{ 0 }
};
-static PyTypeObject pgevent_pytype_skel = {
- Py
Object_HEAD_INIT(0) 0,
/* Header */
+static
const
PyTypeObject pgevent_pytype_skel = {
+ Py
VarObject_HEAD_INIT(0, 0)
/* Header */
"PrimeGenEvent", /* @tp_name@ */
sizeof(pgevent_pyobj), /* @tp_basicsize@ */
0, /* @tp_itemsize@ */
"PrimeGenEvent", /* @tp_name@ */
sizeof(pgevent_pyobj), /* @tp_basicsize@ */
0, /* @tp_itemsize@ */
@@
-499,7
+511,7
@@
static PyTypeObject pgevent_pytype_skel = {
0, /* @tp_iternext@ */
0, /* @tp_methods@ */
0, /* @tp_members@ */
0, /* @tp_iternext@ */
0, /* @tp_methods@ */
0, /* @tp_members@ */
-
pgevent_pygetset,
/* @tp_getset@ */
+
PYGETSET(pgevent),
/* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
@@
-631,7
+643,7
@@
PGMETH(fail, FAIL)
static PyObject *pgev_stdev(pgen_proc *proc)
{ pgev pg; pg.proc = proc; pg.ctx = 0; return (pgev_pywrap(&pg)); }
static PyObject *pgev_stdev(pgen_proc *proc)
{ pgev pg; pg.proc = proc; pg.ctx = 0; return (pgev_pywrap(&pg)); }
-static PyMethodDef pgev_pymethods[] = {
+static
const
PyMethodDef pgev_pymethods[] = {
#define METHNAME(name) pgmeth_##name
METH (pg_abort, "E.pg_abort(EV) -> PGST -- prime generation aborted")
METH (pg_done, "E.pg_done(EV) -> PGST -- prime generation finished")
#define METHNAME(name) pgmeth_##name
METH (pg_abort, "E.pg_abort(EV) -> PGST -- prime generation aborted")
METH (pg_done, "E.pg_done(EV) -> PGST -- prime generation finished")
@@
-643,8
+655,8
@@
static PyMethodDef pgev_pymethods[] = {
{ 0 }
};
{ 0 }
};
-static PyTypeObject pgev_pytype_skel = {
- Py
Object_HEAD_INIT(0) 0,
/* Header */
+static
const
PyTypeObject pgev_pytype_skel = {
+ Py
VarObject_HEAD_INIT(0, 0)
/* Header */
"PrimeGenBuiltinHandler", /* @tp_name@ */
sizeof(pgev_pyobj), /* @tp_basicsize@ */
0, /* @tp_itemsize@ */
"PrimeGenBuiltinHandler", /* @tp_name@ */
sizeof(pgev_pyobj), /* @tp_basicsize@ */
0, /* @tp_itemsize@ */
@@
-676,7
+688,7
@@
static PyTypeObject pgev_pytype_skel = {
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
-
pgev_pymethods,
/* @tp_methods@ */
+
PYMETHODS(pgev),
/* @tp_methods@ */
0, /* @tp_members@ */
0, /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_members@ */
0, /* @tp_getset@ */
0, /* @tp_base@ */
@@
-710,15
+722,15
@@
end:
static PyObject *psget_step(PyObject *me, void *hunoz)
{ return (PyInt_FromLong(PGSTEP_STEP(me))); }
static PyObject *psget_step(PyObject *me, void *hunoz)
{ return (PyInt_FromLong(PGSTEP_STEP(me))); }
-static PyGetSetDef pgstep_pygetset[] = {
+static
const
PyGetSetDef pgstep_pygetset[] = {
#define GETSETNAME(op, name) ps##op##_##name
GET (step, "S.step -> step size for the stepper")
#undef GETSETNAME
{ 0 }
};
#define GETSETNAME(op, name) ps##op##_##name
GET (step, "S.step -> step size for the stepper")
#undef GETSETNAME
{ 0 }
};
-static PyTypeObject pgstep_pytype_skel = {
- Py
Object_HEAD_INIT(0) 0,
/* Header */
+static
const
PyTypeObject pgstep_pytype_skel = {
+ Py
VarObject_HEAD_INIT(0, 0)
/* Header */
"PrimeGenStepper", /* @tp_name@ */
sizeof(pgstep_pyobj), /* @tp_basicsize@ */
0, /* @tp_itemsize@ */
"PrimeGenStepper", /* @tp_name@ */
sizeof(pgstep_pyobj), /* @tp_basicsize@ */
0, /* @tp_itemsize@ */
@@
-752,7
+764,7
@@
static PyTypeObject pgstep_pytype_skel = {
0, /* @tp_iternext@ */
0, /* @tp_methods@ */
0, /* @tp_members@ */
0, /* @tp_iternext@ */
0, /* @tp_methods@ */
0, /* @tp_members@ */
-
pgstep_pygetset,
/* @tp_getset@ */
+
PYGETSET(pgstep),
/* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
@@
-792,15
+804,15
@@
static void pgjump_pydealloc(PyObject *me)
static PyObject *pjget_jump(PyObject *me, void *hunoz)
{ RETURN_OBJ(PGJUMP_FOBJ(me)); }
static PyObject *pjget_jump(PyObject *me, void *hunoz)
{ RETURN_OBJ(PGJUMP_FOBJ(me)); }
-static PyGetSetDef pgjump_pygetset[] = {
+static
const
PyGetSetDef pgjump_pygetset[] = {
#define GETSETNAME(op, name) pj##op##_##name
GET (jump, "S.jump -> jump size for the stepper")
#undef GETSETNAME
{ 0 }
};
#define GETSETNAME(op, name) pj##op##_##name
GET (jump, "S.jump -> jump size for the stepper")
#undef GETSETNAME
{ 0 }
};
-static PyTypeObject pgjump_pytype_skel = {
- Py
Object_HEAD_INIT(0) 0,
/* Header */
+static
const
PyTypeObject pgjump_pytype_skel = {
+ Py
VarObject_HEAD_INIT(0, 0)
/* Header */
"PrimeGenJumper", /* @tp_name@ */
sizeof(pgjump_pyobj), /* @tp_basicsize@ */
0, /* @tp_itemsize@ */
"PrimeGenJumper", /* @tp_name@ */
sizeof(pgjump_pyobj), /* @tp_basicsize@ */
0, /* @tp_itemsize@ */
@@
-835,7
+847,7
@@
static PyTypeObject pgjump_pytype_skel = {
0, /* @tp_iternext@ */
0, /* @tp_methods@ */
0, /* @tp_members@ */
0, /* @tp_iternext@ */
0, /* @tp_methods@ */
0, /* @tp_members@ */
-
pgjump_pygetset,
/* @tp_getset@ */
+
PYGETSET(pgjump),
/* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
@@
-861,8
+873,8
@@
end:
return ((PyObject *)rc);
}
return ((PyObject *)rc);
}
-static PyTypeObject pgtest_pytype_skel = {
- Py
Object_HEAD_INIT(0) 0,
/* Header */
+static
const
PyTypeObject pgtest_pytype_skel = {
+ Py
VarObject_HEAD_INIT(0, 0)
/* Header */
"PrimeGenTester", /* @tp_name@ */
sizeof(pgtest_pyobj), /* @tp_basicsize@ */
0, /* @tp_itemsize@ */
"PrimeGenTester", /* @tp_name@ */
sizeof(pgtest_pyobj), /* @tp_basicsize@ */
0, /* @tp_itemsize@ */
@@
-1049,10
+1061,14
@@
end:
/*----- Global stuff ------------------------------------------------------*/
/*----- Global stuff ------------------------------------------------------*/
-static PyMethodDef methods[] = {
+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
#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"
KWMETH(pgen,
"pgen(START, [name = 'p'], [stepper = PrimeGenStepper(2)],\n"
" [tester = PrimeGenTester()], [event = pgen_nullev],\n"
@@
-1098,6
+1114,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));
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 -------------------------------------------------*/
}
/*----- That's all, folks -------------------------------------------------*/