{ 0 }
};
-static PyTypeObject keysz_pytype_skel = {
+static const PyTypeObject keysz_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"KeySZ", /* @tp_name@ */
sizeof(keysz_pyobj), /* @tp_basicsize@ */
0 /* @tp_is_gc@ */
};
-static PyTypeObject keyszany_pytype_skel = {
+static const PyTypeObject keyszany_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"KeySZAny", /* @tp_name@ */
sizeof(keysz_pyobj), /* @tp_basicsize@ */
0 /* @tp_is_gc@ */
};
-static PyTypeObject keyszrange_pytype_skel = {
+static const PyTypeObject keyszrange_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"KeySZRange", /* @tp_name@ */
sizeof(keyszrange_pyobj), /* @tp_basicsize@ */
0 /* @tp_is_gc@ */
};
-static PyTypeObject keyszset_pytype_skel = {
+static const PyTypeObject keyszset_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"KeySZSet", /* @tp_name@ */
sizeof(keyszset_pyobj), /* @tp_basicsize@ */
{ 0 }
};
-static PyTypeObject gccipher_pytype_skel = {
+static const PyTypeObject gccipher_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"GCCipher", /* @tp_name@ */
sizeof(gccipher_pyobj), /* @tp_basicsize@ */
0 /* @tp_is_gc@ */
};
-static PyTypeObject gcipher_pytype_skel = {
+static const PyTypeObject gcipher_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"GCipher", /* @tp_name@ */
sizeof(gcipher_pyobj), /* @tp_basicsize@ */
{ 0 }
};
-static PyTypeObject gcaead_pytype_skel = {
+static const PyTypeObject gcaead_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"GCAEAD", /* @tp_name@ */
sizeof(gcaead_pyobj), /* @tp_basicsize@ */
0 /* @tp_is_gc@ */
};
-static PyTypeObject gaeadkey_pytype_skel = {
+static const PyTypeObject gaeadkey_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"GAEKey", /* @tp_name@ */
sizeof(gaeadkey_pyobj), /* @tp_basicsize@ */
0 /* @tp_is_gc@ */
};
-static PyTypeObject gcaeadaad_pytype_skel = {
+static const PyTypeObject gcaeadaad_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"GAEAADClass", /* @tp_name@ */
sizeof(gcaeadaad_pyobj), /* @tp_basicsize@ */
0 /* @tp_is_gc@ */
};
-static PyTypeObject gaeadaad_pytype_skel = {
+static const PyTypeObject gaeadaad_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"GAEAAD", /* @tp_name@ */
sizeof(gaeadaad_pyobj), /* @tp_basicsize@ */
0 /* @tp_is_gc@ */
};
-static PyTypeObject gcaeadenc_pytype_skel = {
+static const PyTypeObject gcaeadenc_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"GAEEncClass", /* @tp_name@ */
sizeof(gcaeadenc_pyobj), /* @tp_basicsize@ */
0 /* @tp_is_gc@ */
};
-static PyTypeObject gaeadenc_pytype_skel = {
+static const PyTypeObject gaeadenc_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"GAEEnc", /* @tp_name@ */
sizeof(gaeadenc_pyobj), /* @tp_basicsize@ */
0 /* @tp_is_gc@ */
};
-static PyTypeObject gcaeaddec_pytype_skel = {
+static const PyTypeObject gcaeaddec_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"GAEDecClass", /* @tp_name@ */
sizeof(gcaeaddec_pyobj), /* @tp_basicsize@ */
0 /* @tp_is_gc@ */
};
-static PyTypeObject gaeaddec_pytype_skel = {
+static const PyTypeObject gaeaddec_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"GAEDec", /* @tp_name@ */
sizeof(gaeaddec_pyobj), /* @tp_basicsize@ */
{ 0 }
};
-static PyTypeObject gchash_pytype_skel = {
+static const PyTypeObject gchash_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"GCHash", /* @tp_name@ */
sizeof(gchash_pyobj), /* @tp_basicsize@ */
0 /* @tp_is_gc@ */
};
-static PyTypeObject ghash_pytype_skel = {
+static const PyTypeObject ghash_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"GHash", /* @tp_name@ */
sizeof(ghash_pyobj), /* @tp_basicsize@ */
{ 0 }
};
-static PyTypeObject gcmac_pytype_skel = {
+static const PyTypeObject gcmac_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"GCMAC", /* @tp_name@ */
sizeof(gchash_pyobj), /* @tp_basicsize@ */
0 /* @tp_is_gc@ */
};
-static PyTypeObject gmac_pytype_skel = {
+static const PyTypeObject gmac_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"GMAC", /* @tp_name@ */
sizeof(gmac_pyobj), /* @tp_basicsize@ */
0 /* @tp_is_gc@ */
};
-static PyTypeObject gmhash_pytype_skel = {
+static const PyTypeObject gmhash_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"GMACHash", /* @tp_name@ */
sizeof(ghash_pyobj), /* @tp_basicsize@ */
{ 0 }
};
-static PyTypeObject poly1305cls_pytype_skel = {
+static const PyTypeObject poly1305cls_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"Poly1305Class", /* @tp_name@ */
sizeof(PyHeapTypeObject), /* @tp_basicsize@ */
0 /* @tp_is_gc@ */
};
-static PyTypeObject poly1305key_pytype_skel = {
+static const PyTypeObject poly1305key_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"poly1305", /* @tp_name@ */
sizeof(poly1305key_pyobj), /* @tp_basicsize@ */
0 /* @tp_is_gc@ */
};
-static PyTypeObject poly1305hash_pytype_skel = {
+static const PyTypeObject poly1305hash_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"Poly1305Hash", /* @tp_name@ */
sizeof(poly1305hash_pyobj), /* @tp_basicsize@ */
{ 0 }
};
-static PyTypeObject kxvik_pytype_skel = {
+static const PyTypeObject kxvik_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"Keccak1600", /* @tp_name@ */
sizeof(kxvik_pyobj), /* @tp_basicsize@ */
{ 0 }
};
-static PyTypeObject shake_pytype_skel = {
+static const PyTypeObject shake_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"Shake", /* @tp_name@ */
sizeof(shake_pyobj), /* @tp_basicsize@ */
0 /* @tp_is_gc@ */
};
-static PyTypeObject shake128_pytype_skel = {
+static const PyTypeObject shake128_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"Shake128", /* @tp_name@ */
0, /* @tp_basicsize@ */
0 /* @tp_is_gc@ */
};
-static PyTypeObject shake256_pytype_skel = {
+static const PyTypeObject shake256_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"Shake256", /* @tp_name@ */
0, /* @tp_basicsize@ */
{ 0 }
};
-static PyTypeObject gcprp_pytype_skel = {
+static const PyTypeObject gcprp_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"GCPRP", /* @tp_name@ */
sizeof(gcprp_pyobj), /* @tp_basicsize@ */
0 /* @tp_is_gc@ */
};
-static PyTypeObject gprp_pytype_skel = {
+static const PyTypeObject gprp_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"GPRP", /* @tp_name@ */
sizeof(gprp_pyobj), /* @tp_basicsize@ */
0 /* @bf_getcharbuffer@ */
};
-static PyTypeObject rbuf_pytype_skel = {
+static const PyTypeObject rbuf_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"ReadBuffer", /* @tp_name@ */
sizeof(buf_pyobj), /* @tp_basicsize@ */
0 /* @bf_getcharbuffer@ */
};
-static PyTypeObject wbuf_pytype_skel = {
+static const PyTypeObject wbuf_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"WriteBuffer", /* @tp_name@ */
sizeof(buf_pyobj), /* @tp_basicsize@ */
0, /* @mp_ass_subscript@ */
};
-static PyTypeObject bytestring_pytype_skel = {
+static const PyTypeObject bytestring_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"ByteString", /* @tp_name@ */
0, /* @tp_basicsize@ */
RETURN_NONE;
}
-static PyMethodDef methods[] = {
+static const PyMethodDef methods[] = {
#define METHNAME(func) meth_##func
METH (_ego, "_ego(ARGV0)")
#undef METHNAME
0, /* @nb_inplace_true_divide@ */
};
-static PyTypeObject ecpt_pytype_skel = {
+static const PyTypeObject ecpt_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"ECPt", /* @tp_name@ */
sizeof(ecpt_pyobj), /* @tp_basicsize@ */
0, /* @nb_inplace_true_divide@ */
};
-static PyTypeObject ecptcurve_pytype_skel = {
+static const PyTypeObject ecptcurve_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"ECPtCurve", /* @tp_name@ */
sizeof(ecpt_pyobj), /* @tp_basicsize@ */
{ 0 }
};
-static PyTypeObject eccurve_pytype_skel = {
+static const PyTypeObject eccurve_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"ECCurve", /* @tp_name@ */
sizeof(eccurve_pyobj), /* @tp_basicsize@ */
return (eccurve_pynew(ty, ec_prime, arg, kw));
}
-static PyTypeObject ecprimecurve_pytype_skel = {
+static const PyTypeObject ecprimecurve_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"ECPrimeCurve", /* @tp_name@ */
sizeof(eccurve_pyobj), /* @tp_basicsize@ */
return (eccurve_pynew(ty, ec_primeproj, arg, kw));
}
-static PyTypeObject ecprimeprojcurve_pytype_skel = {
+static const PyTypeObject ecprimeprojcurve_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"ECPrimeProjCurve", /* @tp_name@ */
sizeof(eccurve_pyobj), /* @tp_basicsize@ */
return (eccurve_pynew(ty, ec_bin, arg, kw));
}
-static PyTypeObject ecbincurve_pytype_skel = {
+static const PyTypeObject ecbincurve_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"ECBinCurve", /* @tp_name@ */
sizeof(eccurve_pyobj), /* @tp_basicsize@ */
return (eccurve_pynew(ty, ec_binproj, arg, kw));
}
-static PyTypeObject ecbinprojcurve_pytype_skel = {
+static const PyTypeObject ecbinprojcurve_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"ECBinProjCurve", /* @tp_name@ */
sizeof(eccurve_pyobj), /* @tp_basicsize@ */
{ 0 }
};
-static PyTypeObject ecinfo_pytype_skel = {
+static const PyTypeObject ecinfo_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"ECInfo", /* @tp_name@ */
sizeof(ecinfo_pyobj), /* @tp_basicsize@ */
0, /* @nb_inplace_true_divide@ */
};
-static PyTypeObject fe_pytype_skel = {
+static const PyTypeObject fe_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"FE", /* @tp_name@ */
sizeof(fe_pyobj), /* @tp_basicsize@ */
{ 0 }
};
-static PyTypeObject field_pytype_skel = {
+static const PyTypeObject field_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"Field", /* @tp_name@ */
sizeof(field_pyobj), /* @tp_basicsize@ */
#undef GETSETNAME
};
-static PyTypeObject primefield_pytype_skel = {
+static const PyTypeObject primefield_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"PrimeField", /* @tp_name@ */
sizeof(field_pyobj), /* @tp_basicsize@ */
return (0);
}
-static PyTypeObject niceprimefield_pytype_skel = {
+static const PyTypeObject niceprimefield_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"NicePrimeField", /* @tp_name@ */
sizeof(field_pyobj), /* @tp_basicsize@ */
{ 0 }
};
-static PyTypeObject binfield_pytype_skel = {
+static const PyTypeObject binfield_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"BinField", /* @tp_name@ */
sizeof(field_pyobj), /* @tp_basicsize@ */
return (0);
}
-static PyTypeObject binpolyfield_pytype_skel = {
+static const PyTypeObject binpolyfield_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"BinPolyField", /* @tp_name@ */
sizeof(field_pyobj), /* @tp_basicsize@ */
{ 0 }
};
-static PyTypeObject binnormfield_pytype_skel = {
+static const PyTypeObject binnormfield_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"BinNormField", /* @tp_name@ */
sizeof(field_pyobj), /* @tp_basicsize@ */
{ 0 }
};
-static PyTypeObject fginfo_pytype_skel = {
+static const PyTypeObject fginfo_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"FGInfo", /* @tp_name@ */
sizeof(fginfo_pyobj), /* @tp_basicsize@ */
0 /* @tp_is_gc@ */
};
-static PyTypeObject dhinfo_pytype_skel = {
+static const PyTypeObject dhinfo_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"DHInfo", /* @tp_name@ */
sizeof(fginfo_pyobj), /* @tp_basicsize@ */
0 /* @tp_is_gc@ */
};
-static PyTypeObject bindhinfo_pytype_skel = {
+static const PyTypeObject bindhinfo_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"BinDHInfo", /* @tp_name@ */
sizeof(fginfo_pyobj), /* @tp_basicsize@ */
0, /* @nb_inplace_true_divide@ */
};
-static PyTypeObject ge_pytype_skel = {
+static const PyTypeObject ge_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"GE", /* @tp_name@ */
sizeof(ge_pyobj), /* @tp_basicsize@ */
{ 0 }
};
-static PyTypeObject group_pytype_skel = {
+static const PyTypeObject group_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"Group", /* @tp_name@ */
sizeof(group_pyobj), /* @tp_basicsize@ */
return (group_dopywrap(ty, group_prime(FGINFO_DP(i))));
}
-static PyTypeObject primegroup_pytype_skel = {
+static const PyTypeObject primegroup_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"PrimeGroup", /* @tp_name@ */
sizeof(group_pyobj), /* @tp_basicsize@ */
return (group_dopywrap(ty, group_binary(FGINFO_DP(i))));
}
-static PyTypeObject bingroup_pytype_skel = {
+static const PyTypeObject bingroup_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"BinGroup", /* @tp_name@ */
sizeof(group_pyobj), /* @tp_basicsize@ */
return (group_dopywrap(ty, group_ec(&ei)));
}
-static PyTypeObject ecgroup_pytype_skel = {
+static const PyTypeObject ecgroup_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"ECGroup", /* @tp_name@ */
sizeof(group_pyobj), /* @tp_basicsize@ */
{ 0 }
};
-static PyTypeObject keydata_pytype_skel = {
+static const PyTypeObject keydata_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"KeyData", /* @tp_name@ */
sizeof(keydata_pyobj), /* @tp_basicsize@ */
{ 0 }
};
-static PyTypeObject keydatabin_pytype_skel = {
+static const PyTypeObject keydatabin_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"KeyDataBinary", /* @tp_name@ */
sizeof(keydata_pyobj), /* @tp_basicsize@ */
{ 0 }
};
-static PyTypeObject keydataenc_pytype_skel = {
+static const PyTypeObject keydataenc_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"KeyDataEncrypted", /* @tp_name@ */
sizeof(keydata_pyobj), /* @tp_basicsize@ */
{ 0 }
};
-static PyTypeObject keydatamp_pytype_skel = {
+static const PyTypeObject keydatamp_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"KeyDataMP", /* @tp_name@ */
sizeof(keydata_pyobj), /* @tp_basicsize@ */
{ 0 }
};
-static PyTypeObject keydatastr_pytype_skel = {
+static const PyTypeObject keydatastr_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"KeyDataString", /* @tp_name@ */
sizeof(keydata_pyobj), /* @tp_basicsize@ */
{ 0 }
};
-static PyTypeObject keydataec_pytype_skel = {
+static const PyTypeObject keydataec_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"KeyDataECPt", /* @tp_name@ */
sizeof(keydata_pyobj), /* @tp_basicsize@ */
FREEOBJ(me);
}
-static PyTypeObject subkeyiter_pytype_skel = {
+static const PyTypeObject subkeyiter_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"SubKeyIter", /* @tp_name@ */
sizeof(subkeyiter_pyobj), /* @tp_basicsize@ */
keydatastruct_pystore /* @mp_ass_subscript@ */
};
-static PyTypeObject keydatastruct_pytype_skel = {
+static const PyTypeObject keydatastruct_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"KeyDataStructured", /* @tp_name@ */
sizeof(keydata_pyobj), /* @tp_basicsize@ */
FREEOBJ(me);
}
-static PyTypeObject keyattriter_pytype_skel = {
+static const PyTypeObject keyattriter_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"KeyAttributeIter", /* @tp_name@ */
sizeof(keyattriter_pyobj), /* @tp_basicsize@ */
keyattrs_pystore /* @mp_ass_subscript@ */
};
-static PyTypeObject keyattrs_pytype_skel = {
+static const PyTypeObject keyattrs_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"KeyAttributes", /* @tp_name@ */
sizeof(keyattrs_pyobj), /* @tp_basicsize@ */
{ 0 }
};
-static PyTypeObject key_pytype_skel = {
+static const PyTypeObject key_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"Key", /* @tp_name@ */
sizeof(key_pyobj), /* @tp_basicsize@ */
FREEOBJ(me);
}
-static PyTypeObject keyiter_pytype_skel = {
+static const PyTypeObject keyiter_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"KeyFileIter", /* @tp_name@ */
sizeof(keyiter_pyobj), /* @tp_basicsize@ */
0
};
-static PyTypeObject keyfile_pytype_skel = {
+static const PyTypeObject keyfile_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"KeyFile", /* @tp_name@ */
sizeof(keyfile_pyobj), /* @tp_basicsize@ */
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@ */
{ 0 }
};
-static PyTypeObject pixie_pytype_skel = {
+static const PyTypeObject pixie_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"Pixie", /* @tp_name@ */
sizeof(pixie_pyobj), /* @tp_basicsize@ */
0, /* @nb_inplace_true_divide@ */
};
-static PyTypeObject pfilt_pytype_skel = {
+static const PyTypeObject pfilt_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"PrimeFilter", /* @tp_name@ */
sizeof(pfilt_pyobj), /* @tp_basicsize@ */
{ 0 }
};
-static PyTypeObject rabin_pytype_skel = {
+static const PyTypeObject rabin_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"RabinMiller", /* @tp_name@ */
sizeof(rabin_pyobj), /* @tp_basicsize@ */
{ 0 }
};
-static PyTypeObject pgevent_pytype_skel = {
+static const PyTypeObject pgevent_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"PrimeGenEvent", /* @tp_name@ */
sizeof(pgevent_pyobj), /* @tp_basicsize@ */
{ 0 }
};
-static PyTypeObject pgev_pytype_skel = {
+static const PyTypeObject pgev_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"PrimeGenBuiltinHandler", /* @tp_name@ */
sizeof(pgev_pyobj), /* @tp_basicsize@ */
{ 0 }
};
-static PyTypeObject pgstep_pytype_skel = {
+static const PyTypeObject pgstep_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"PrimeGenStepper", /* @tp_name@ */
sizeof(pgstep_pyobj), /* @tp_basicsize@ */
{ 0 }
};
-static PyTypeObject pgjump_pytype_skel = {
+static const PyTypeObject pgjump_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"PrimeGenJumper", /* @tp_name@ */
sizeof(pgjump_pyobj), /* @tp_basicsize@ */
return ((PyObject *)rc);
}
-static PyTypeObject pgtest_pytype_skel = {
+static const PyTypeObject pgtest_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"PrimeGenTester", /* @tp_name@ */
sizeof(pgtest_pyobj), /* @tp_basicsize@ */
{ 0 }
};
-static PyTypeObject dsapub_pytype_skel = {
+static const PyTypeObject dsapub_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"DSAPub", /* @tp_name@ */
sizeof(dsa_pyobj), /* @tp_basicsize@ */
0 /* @tp_is_gc@ */
};
-static PyTypeObject dsapriv_pytype_skel = {
+static const PyTypeObject dsapriv_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"DSAPriv", /* @tp_name@ */
sizeof(dsa_pyobj), /* @tp_basicsize@ */
{ 0 }
};
-static PyTypeObject kcdsapub_pytype_skel = {
+static const PyTypeObject kcdsapub_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"KCDSAPub", /* @tp_name@ */
sizeof(dsa_pyobj), /* @tp_basicsize@ */
0 /* @tp_is_gc@ */
};
-static PyTypeObject kcdsapriv_pytype_skel = {
+static const PyTypeObject kcdsapriv_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"KCDSAPriv", /* @tp_name@ */
sizeof(dsa_pyobj), /* @tp_basicsize@ */
{ 0 }
};
-static PyTypeObject rsapub_pytype_skel = {
+static const PyTypeObject rsapub_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"RSAPub", /* @tp_name@ */
sizeof(rsapub_pyobj), /* @tp_basicsize@ */
0 /* @tp_is_gc@ */
};
-static PyTypeObject rsapriv_pytype_skel = {
+static const PyTypeObject rsapriv_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"RSAPriv", /* @tp_name@ */
sizeof(rsapriv_pyobj), /* @tp_basicsize@ */
return (rc);
}
-static PyTypeObject itemiter_pytype_skel = {
+static const PyTypeObject itemiter_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"ItemIter", /* @tp_name@ */
sizeof(iter_pyobj), /* @tp_basicsize@ */
return (rc);
}
-static PyTypeObject valiter_pytype_skel = {
+static const PyTypeObject valiter_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"ValueIter", /* @tp_name@ */
sizeof(iter_pyobj), /* @tp_basicsize@ */
(PyHeapTypeObject *)_PyObject_GC_Malloc(_PyObject_VAR_SIZE(metaty, 0));
if (!skel) skel = &emptytype;
memcpy(ty, skel, sizeof(*skel));
- if (ty->ht_type.tp_base) Py_INCREF(ty->ht_type.tp_base);
#define COPY(blah) do { \
if (ty->ht_type.tp_as_##blah) { \
memcpy(&ty->as_##blah, \
PyDict_SetItemString(ty->tp_dict, "__module__", modname);
}
-PyTypeObject *inittype(PyTypeObject *tyskel, PyTypeObject *meta)
+PyTypeObject *inittype(const PyTypeObject *tyskel,
+ PyTypeObject *base, PyTypeObject *meta)
{
PyTypeObject *ty = newtype(meta, tyskel, 0);
+ if (base) { ty->tp_base = base; Py_INCREF(base); }
ty->tp_flags |= Py_TPFLAGS_HEAPTYPE;
typeready(ty);
return (ty);
extern void typeready(PyTypeObject *);
/* The type object is now ready to be used. */
-extern PyTypeObject *inittype(PyTypeObject */*skel*/,
+extern PyTypeObject *inittype(const PyTypeObject */*skel*/,
+ PyTypeObject */*base*/,
PyTypeObject */*meta*/);
/* All-in-one function to construct a working type from a type skeleton
- * SKEL, with metaclass META. The caller is expected to have filled in the
- * direct superclass in SKEL->tp_base.
+ * SKEL, with known base type BASE (null for `object') and metaclass.
*/
/* Alias for built-in types, to fit in with Pyke naming conventions. */
#define type_pytype &PyType_Type
#define INITTYPE_META(ty, base, meta) do { \
- ty##_pytype_skel.tp_base = base##_pytype; \
- ty##_pytype = inittype(&ty##_pytype_skel, meta##_pytype); \
+ ty##_pytype = inittype(&ty##_pytype_skel, base##_pytype, meta##_pytype); \
} while (0)
#define INITTYPE(ty, base) INITTYPE_META(ty, base, type)
/* Macros to initialize a type from its skeleton. */
{ 0 }
};
-static PyTypeObject grand_pytype_skel = {
+static const PyTypeObject grand_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"GRand", /* @tp_name@ */
sizeof(grand_pyobj), /* @tp_basicsize@ */
return (grand_dopywrap(lcrand_pytype, lcrand_create(n), f_freeme));
}
-static PyTypeObject lcrand_pytype_skel = {
+static const PyTypeObject lcrand_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"LCRand", /* @tp_name@ */
sizeof(grand_pyobj), /* @tp_basicsize@ */
return (grand_dopywrap(fibrand_pytype, fibrand_create(n), f_freeme));
}
-static PyTypeObject fibrand_pytype_skel = {
+static const PyTypeObject fibrand_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"FibRand", /* @tp_name@ */
sizeof(grand_pyobj), /* @tp_basicsize@ */
{ 0 }
};
-static PyTypeObject truerand_pytype_skel = {
+static const PyTypeObject truerand_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"TrueRand", /* @tp_name@ */
sizeof(grand_pyobj), /* @tp_basicsize@ */
{ 0 }
};
-static PyTypeObject gccrand_pytype_skel = {
+static const PyTypeObject gccrand_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"GCCRand", /* @tp_name@ */
sizeof(gccrand_pyobj), /* @tp_basicsize@ */
0 /* @tp_is_gc@ */
};
-static PyTypeObject gcrand_pytype_skel = {
+static const PyTypeObject gcrand_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"GCRand", /* @tp_name@ */
sizeof(grand_pyobj), /* @tp_basicsize@ */
0 /* @tp_is_gc@ */
};
-static PyTypeObject gclatinrand_pytype_skel = {
+static const PyTypeObject gclatinrand_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"GCLatinRand", /* @tp_name@ */
sizeof(grand_pyobj), /* @tp_basicsize@ */
return (rc);
}
-static PyTypeObject sslprf_pytype_skel = {
+static const PyTypeObject sslprf_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"SSLRand", /* @tp_name@ */
sizeof(grand_pyobj), /* @tp_basicsize@ */
0 /* @tp_is_gc@ */
};
-static PyTypeObject tlsdx_pytype_skel = {
+static const PyTypeObject tlsdx_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"TLSDataExpansion", /* @tp_name@ */
sizeof(grand_pyobj), /* @tp_basicsize@ */
0 /* @tp_is_gc@ */
};
-static PyTypeObject tlsprf_pytype_skel = {
+static const PyTypeObject tlsprf_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"TLSPRF", /* @tp_name@ */
sizeof(grand_pyobj), /* @tp_basicsize@ */
{ 0 }
};
-static PyTypeObject dsarand_pytype_skel = {
+static const PyTypeObject dsarand_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"DSARand", /* @tp_name@ */
sizeof(grand_pyobj), /* @tp_basicsize@ */
{ 0 }
};
-static PyTypeObject bbs_pytype_skel = {
+static const PyTypeObject bbs_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"BlumBlumShub", /* @tp_name@ */
sizeof(grand_pyobj), /* @tp_basicsize@ */
{ 0 }
};
-static PyTypeObject bbspriv_pytype_skel = {
+static const PyTypeObject bbspriv_pytype_skel = {
PyObject_HEAD_INIT(0) 0, /* Header */
"BBSPriv", /* @tp_name@ */
sizeof(bbspriv_pyobj), /* @tp_basicsize@ */
{ 0 }
};
-static PyTypeObject gfshare_pytype_skel = {
+static const PyTypeObject gfshare_pytype_skel = {
PyObject_HEAD_INIT(&PyType_Type) 0, /* Header */
"GFShare", /* @tp_name@ */
sizeof(gfshare_pyobj), /* @tp_basicsize@ */
{ 0 }
};
-static PyTypeObject gfsharesplit_pytype_skel = {
+static const PyTypeObject gfsharesplit_pytype_skel = {
PyObject_HEAD_INIT(&PyType_Type) 0, /* Header */
"GFShareSplit", /* @tp_name@ */
sizeof(gfshare_pyobj), /* @tp_basicsize@ */
{ 0 }
};
-static PyTypeObject gfsharejoin_pytype_skel = {
+static const PyTypeObject gfsharejoin_pytype_skel = {
PyObject_HEAD_INIT(&PyType_Type) 0, /* Header */
"GFShareJoin", /* @tp_name@ */
sizeof(gfshare_pyobj), /* @tp_basicsize@ */
{ 0 }
};
-static PyTypeObject share_pytype_skel = {
+static const PyTypeObject share_pytype_skel = {
PyObject_HEAD_INIT(&PyType_Type) 0, /* Header */
"Share", /* @tp_name@ */
sizeof(share_pyobj), /* @tp_basicsize@ */
{ 0 }
};
-static PyTypeObject sharesplit_pytype_skel = {
+static const PyTypeObject sharesplit_pytype_skel = {
PyObject_HEAD_INIT(&PyType_Type) 0, /* Header */
"ShareSplit", /* @tp_name@ */
sizeof(share_pyobj), /* @tp_basicsize@ */
{ 0 }
};
-static PyTypeObject sharejoin_pytype_skel = {
+static const PyTypeObject sharejoin_pytype_skel = {
PyObject_HEAD_INIT(&PyType_Type) 0, /* Header */
"ShareJoin", /* @tp_name@ */
sizeof(share_pyobj), /* @tp_basicsize@ */