0, /* @nb_inplace_true_divide@ */
};
-static PyTypeObject mp_pytype_skel = {
+static const PyTypeObject mp_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"MP", /* @tp_name@ */
sizeof(mp_pyobj), /* @tp_basicsize@ */
/*----- Products of small integers ----------------------------------------*/
+static PyTypeObject *mpmul_pytype;
+
typedef struct mpmul_pyobj {
PyObject_HEAD
int livep;
{ 0 }
};
-static PyTypeObject *mpmul_pytype, mpmul_pytype_skel = {
+static const PyTypeObject mpmul_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"MPMul", /* @tp_name@ */
sizeof(mpmul_pyobj), /* @tp_basicsize@ */
/*----- Montgomery reduction ----------------------------------------------*/
+static PyTypeObject *mpmont_pytype;
+
typedef struct mpmont_pyobj {
PyObject_HEAD
mpmont mm;
{ 0 }
};
-static PyTypeObject *mpmont_pytype, mpmont_pytype_skel = {
+static const PyTypeObject mpmont_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"MPMont", /* @tp_name@ */
sizeof(mpmont_pyobj), /* @tp_basicsize@ */
/*----- Barrett reduction -------------------------------------------------*/
+static PyTypeObject *mpbarrett_pytype;
+
typedef struct mpbarrett_pyobj {
PyObject_HEAD
mpbarrett mb;
{ 0 }
};
-static PyTypeObject *mpbarrett_pytype, mpbarrett_pytype_skel = {
+static const PyTypeObject mpbarrett_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"MPBarrett", /* @tp_name@ */
sizeof(mpbarrett_pyobj), /* @tp_basicsize@ */
/*----- Nice prime reduction ----------------------------------------------*/
+static PyTypeObject *mpreduce_pytype;
+
typedef struct mpreduce_pyobj {
PyObject_HEAD
mpreduce mr;
{ 0 }
};
-static PyTypeObject *mpreduce_pytype, mpreduce_pytype_skel = {
+static const PyTypeObject mpreduce_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"MPReduce", /* @tp_name@ */
sizeof(mpreduce_pyobj), /* @tp_basicsize@ */
/*----- Chinese Remainder Theorem solution --------------------------------*/
+static PyTypeObject *mpcrt_pytype;
+
typedef struct mpcrt_pyobj {
PyObject_HEAD
mpcrt c;
{ 0 }
};
-static PyTypeObject *mpcrt_pytype, mpcrt_pytype_skel = {
+static const PyTypeObject mpcrt_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"MPCRT", /* @tp_name@ */
sizeof(mpcrt_pyobj), /* @tp_basicsize@ */
0, /* @nb_inplace_true_divide@ */
};
-static PyTypeObject gf_pytype_skel = {
+static const PyTypeObject gf_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"GF", /* @tp_name@ */
sizeof(mp_pyobj), /* @tp_basicsize@ */
/*----- Sparse poly reduction ---------------------------------------------*/
+static PyTypeObject *gfreduce_pytype;
+
typedef struct gfreduce_pyobj {
PyObject_HEAD
gfreduce mr;
{ 0 }
};
-static PyTypeObject *gfreduce_pytype, gfreduce_pytype_skel = {
+static const PyTypeObject gfreduce_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"GFReduce", /* @tp_name@ */
sizeof(gfreduce_pyobj), /* @tp_basicsize@ */
/*----- Normal/poly transformation ----------------------------------------*/
+static PyTypeObject *gfn_pytype;
+
typedef struct gfn_pyobj {
PyObject_HEAD
mp *p;
gfn ntop, pton;
} gfn_pyobj;
-static PyTypeObject *gfn_pytype, gfn_pytype_skel;
-
#define GFN_P(o) (((gfn_pyobj *)(o))->p)
#define GFN_PTON(o) (&((gfn_pyobj *)(o))->pton)
#define GFN_NTOP(o) (&((gfn_pyobj *)(o))->ntop)
{ 0 }
};
-static PyTypeObject gfn_pytype_skel = {
+static const PyTypeObject gfn_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"GFN", /* @tp_name@ */
sizeof(gfn_pyobj), /* @tp_basicsize@ */
/*----- Glue --------------------------------------------------------------*/
+static const struct nameval consts[] = {
+ CONST(MPW_MAX),
+ { 0 }
+};
+
void mp_pyinit(void)
{
INITTYPE(mp, root);
INSERT("GF", gf_pytype);
INSERT("GFReduce", gfreduce_pytype);
INSERT("GFN", gfn_pytype);
+ setconstants(mod, consts);
}
/*----- That's all, folks -------------------------------------------------*/