return (PyInt_FromLong(x));
}
-static PyMemberDef keysz_pymembers[] = {
+static const PyMemberDef keysz_pymembers[] = {
#define MEMBERSTRUCT keysz_pyobj
#define default dfl /* ugh! */
MEMBER(default, T_INT, READONLY, "KSZ.default -> default key size")
{ 0 }
};
-static PyGetSetDef keyszany_pygetset[] = {
+static const PyGetSetDef keyszany_pygetset[] = {
#define GETSETNAME(op, name) ka##op##_##name
GET (min, "KSZ.min -> smallest allowed key size")
GET (max, "KSZ.max -> largest allowed key size")
{ 0 }
};
-static PyMemberDef keyszrange_pymembers[] = {
+static const PyMemberDef keyszrange_pymembers[] = {
#define MEMBERSTRUCT keyszrange_pyobj
MEMBER(min, T_INT, READONLY, "KSZ.min -> smallest allowed key size")
MEMBER(max, T_INT, READONLY, "KSZ.max -> largest allowed key size")
{ 0 }
};
-static PyGetSetDef keyszset_pygetset[] = {
+static const PyGetSetDef keyszset_pygetset[] = {
#define GETSETNAME(op, name) ks##op##_##name
GET (min, "KSZ.min -> smallest allowed key size")
GET (max, "KSZ.max -> largest allowed key size")
{ 0 }
};
-static PyMemberDef keyszset_pymembers[] = {
+static const PyMemberDef keyszset_pymembers[] = {
#define MEMBERSTRUCT keyszset_pyobj
MEMBER(set, T_OBJECT, READONLY, "KSZ.set -> allowed key sizes")
#undef MEMBERSTRUCT
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
0, /* @tp_methods@ */
- keysz_pymembers, /* @tp_members@ */
+ PYMEMBERS(keysz), /* @tp_members@ */
0, /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_iternext@ */
0, /* @tp_methods@ */
0, /* @tp_members@ */
- keyszany_pygetset, /* @tp_getset@ */
+ PYGETSET(keyszany), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
0, /* @tp_methods@ */
- keyszrange_pymembers, /* @tp_members@ */
+ PYMEMBERS(keyszrange), /* @tp_members@ */
0, /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
0, /* @tp_methods@ */
- keyszset_pymembers, /* @tp_members@ */
- keyszset_pygetset, /* @tp_getset@ */
+ PYMEMBERS(keyszset), /* @tp_members@ */
+ PYGETSET(keyszset), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
return (0);
}
-static PyGetSetDef gccipher_pygetset[] = {
+static const PyGetSetDef gccipher_pygetset[] = {
#define GETSETNAME(op, name) gcc##op##_##name
GET (keysz, "CC.keysz -> acceptable key sizes")
GET (blksz, "CC.blksz -> block size, or zero")
{ 0 }
};
-static PyMethodDef gcipher_pymethods[] = {
+static const PyMethodDef gcipher_pymethods[] = {
#define METHNAME(name) gcmeth_##name
METH (encrypt, "C.encrypt(PT) -> CT")
METH (enczero, "C.enczero(N) -> CT")
0, /* @tp_iternext@ */
0, /* @tp_methods@ */
0, /* @tp_members@ */
- gccipher_pygetset, /* @tp_getset@ */
+ PYGETSET(gccipher), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- gcipher_pymethods, /* @tp_methods@ */
+ PYMETHODS(gcipher), /* @tp_methods@ */
0, /* @tp_members@ */
0, /* @tp_getset@ */
0, /* @tp_base@ */
static PyObject *gcaeget_flags(PyObject *me, void *hunoz)
{ return (PyInt_FromLong(GCAEAD_AEC(me)->f)); }
-static PyGetSetDef gcaead_pygetset[] = {
+static const PyGetSetDef gcaead_pygetset[] = {
#define GETSETNAME(op, name) gcae##op##_##name
GET (keysz, "AEC.keysz -> acceptable key sizes")
GET (noncesz, "AEC.noncesz -> acceptable nonce sizes")
return (rc);
}
-static PyMethodDef gaeadkey_pymethods[] = {
+static const PyMethodDef gaeadkey_pymethods[] = {
#define METHNAME(name) gaekmeth_##name
METH (aad, "KEY.aad() -> AAD")
KWMETH(enc, "KEY.enc(NONCE, [hsz], [msz], [tsz]) -> ENC")
static PyObject *gaeaget_hlen(PyObject *me, void *hunoz)
{ return (gaea_check(me) ? 0 : getulong(GAEADAAD_HLEN(me))); }
-static PyGetSetDef gaeadaad_pygetset[] = {
+static const PyGetSetDef gaeadaad_pygetset[] = {
#define GETSETNAME(op, name) gaea##op##_##name
GET (hsz, "AAD.hsz -> precommitted header length or `None'")
GET (hlen, "AAD.hlen -> header length so far")
RETURN_ME;
}
-static PyMethodDef gaeadaad_pymethods[] = {
+static const PyMethodDef gaeadaad_pymethods[] = {
#define METHNAME(name) gaeameth_##name
METH (copy, "AAD.copy() -> AAD'")
METH (hash, "AAD.hash(H)")
static PyObject *gaeeget_mlen(PyObject *me, void *hunoz)
{ return getulong(GAEADENC_MLEN(me)); }
-static PyGetSetDef gaeadenc_pygetset[] = {
+static const PyGetSetDef gaeadenc_pygetset[] = {
#define GETSETNAME(op, name) gaee##op##_##name
GET (hsz, "ENC.hsz -> precommitted header length or `None'")
GET (msz, "ENC.msz -> precommitted message length or `None'")
return (rc);
}
-static PyMethodDef gaeadenc_pymethods[] = {
+static const PyMethodDef gaeadenc_pymethods[] = {
#define METHNAME(name) gaeemeth_##name
METH (aad, "ENC.aad() -> AAD")
KWMETH(reinit, "ENC.reinit(NONCE, [hsz], [msz], [tsz])")
static PyObject *gaedget_clen(PyObject *me, void *hunoz)
{ return getulong(GAEADDEC_CLEN(me)); }
-static PyGetSetDef gaeaddec_pygetset[] = {
+static const PyGetSetDef gaeaddec_pygetset[] = {
#define GETSETNAME(op, name) gaed##op##_##name
GET (hsz, "DEC.hsz -> precommitted header length or `None'")
GET (csz, "DEC.csz -> precommitted ciphertext length or `None'")
return (rc);
}
-static PyMethodDef gaeaddec_pymethods[] = {
+static const PyMethodDef gaeaddec_pymethods[] = {
#define METHNAME(name) gaedmeth_##name
METH (aad, "DEC.aad() -> AAD")
KWMETH(reinit, "DEC.reinit(NONCE, [hsz], [csz], [tsz])")
0, /* @tp_iternext@ */
0, /* @tp_methods@ */
0, /* @tp_members@ */
- gcaead_pygetset, /* @tp_getset@ */
+ PYGETSET(gcaead), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- gaeadkey_pymethods, /* @tp_methods@ */
+ PYMETHODS(gaeadkey), /* @tp_methods@ */
0, /* @tp_members@ */
0, /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- gaeadaad_pymethods, /* @tp_methods@ */
+ PYMETHODS(gaeadaad), /* @tp_methods@ */
0, /* @tp_members@ */
- gaeadaad_pygetset, /* @tp_getset@ */
+ PYGETSET(gaeadaad), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- gaeadenc_pymethods, /* @tp_methods@ */
+ PYMETHODS(gaeadenc), /* @tp_methods@ */
0, /* @tp_members@ */
- gaeadenc_pygetset, /* @tp_getset@ */
+ PYGETSET(gaeadenc), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- gaeaddec_pymethods, /* @tp_methods@ */
+ PYMETHODS(gaeaddec), /* @tp_methods@ */
0, /* @tp_members@ */
- gaeaddec_pygetset, /* @tp_getset@ */
+ PYGETSET(gaeaddec), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
return (rc);
}
-static PyGetSetDef gchash_pygetset[] = {
+static const PyGetSetDef gchash_pygetset[] = {
#define GETSETNAME(op, name) gch##op##_##name
GET (bufsz, "CH.bufsz -> hash buffer size, or zero")
GET (hashsz, "CH.hashsz -> hash output size")
{ 0 }
};
-static PyMethodDef ghash_pymethods[] = {
+static const PyMethodDef ghash_pymethods[] = {
#define METHNAME(name) ghmeth_##name
METH (copy, "H.copy() -> HH")
METH (hash, "H.hash(M)")
0, /* @tp_iternext@ */
0, /* @tp_methods@ */
0, /* @tp_members@ */
- gchash_pygetset, /* @tp_getset@ */
+ PYGETSET(gchash), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- ghash_pymethods, /* @tp_methods@ */
+ PYMETHODS(ghash), /* @tp_methods@ */
0, /* @tp_members@ */
0, /* @tp_getset@ */
0, /* @tp_base@ */
static PyObject *gcmget_tagsz(PyObject *me, void *hunoz)
{ return (PyInt_FromLong(GCMAC_CM(me)->hashsz)); }
-static PyGetSetDef gcmac_pygetset[] = {
+static const PyGetSetDef gcmac_pygetset[] = {
#define GETSETNAME(op, name) gcm##op##_##name
GET (keysz, "CM.keysz -> acceptable key sizes")
GET (tagsz, "CM.tagsz -> MAC output size")
0, /* @tp_iternext@ */
0, /* @tp_methods@ */
0, /* @tp_members@ */
- gcmac_pygetset, /* @tp_getset@ */
+ PYGETSET(gcmac), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
return (0);
}
-static PyGetSetDef poly1305cls_pygetset[] = {
+static const PyGetSetDef poly1305cls_pygetset[] = {
#define GETSETNAME(op, name) poly1305cls##op##_##name
GET (keysz, "PC.keysz -> acceptable key sizes")
GET (masksz, "PC.masksz -> mask size")
{ 0 }
};
-static PyMethodDef poly1305hash_pymethods[] = {
+static const PyMethodDef poly1305hash_pymethods[] = {
#define METHNAME(name) polymeth_##name
METH (copy, "P.copy() -> PP")
METH (hash, "P.hash(M)")
0, /* @tp_iternext@ */
0, /* @tp_methods@ */
0, /* @tp_members@ */
- poly1305cls_pygetset, /* @tp_getset@ */
+ PYGETSET(poly1305cls), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- poly1305hash_pymethods, /* @tp_methods@ */
+ PYMETHODS(poly1305hash), /* @tp_methods@ */
0, /* @tp_members@ */
0, /* @tp_getset@ */
0, /* @tp_base@ */
return (rc);
}
-static PyGetSetDef kxvik_pygetset[] = {
+static const PyGetSetDef kxvik_pygetset[] = {
#define GETSETNAME(op, name) kxvik##op##_##name
GETSET(nround, "KECCAK.nround -> number of rounds")
#undef GETSETNAME
{ 0 }
};
-static PyMethodDef kxvik_pymethods[] = {
+static const PyMethodDef kxvik_pymethods[] = {
#define METHNAME(func) kxvikmeth_##func
METH (copy, "KECCAK.copy() -> KECCAK'")
METH (mix, "KECCAK.mix(DATA)")
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- kxvik_pymethods, /* @tp_methods@ */
+ PYMETHODS(kxvik), /* @tp_methods@ */
0, /* @tp_members@ */
- kxvik_pygetset, /* @tp_getset@ */
+ PYGETSET(kxvik), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
st == 1 ? "squeeze" : "dead"));
}
-static PyGetSetDef shake_pygetset[] = {
+static const PyGetSetDef shake_pygetset[] = {
#define GETSETNAME(op, name) shake##op##_##name
GET (rate, "S.rate -> rate, in bytes")
GET (buffered, "S.buffered -> amount currently buffered")
{ 0 }
};
-static PyMethodDef shake_pymethods[] = {
+static const PyMethodDef shake_pymethods[] = {
#define METHNAME(func) shakemeth_##func
METH (copy, "S.copy() -> SS")
METH (hash, "S.hash(M)")
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- shake_pymethods, /* @tp_methods@ */
+ PYMETHODS(shake), /* @tp_methods@ */
0, /* @tp_members@ */
- shake_pygetset, /* @tp_getset@ */
+ PYGETSET(shake), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
return (rc);
}
-static PyGetSetDef gcprp_pygetset[] = {
+static const PyGetSetDef gcprp_pygetset[] = {
#define GETSETNAME(op, name) gcp##op##_##name
GET (keysz, "CP.keysz -> acceptable key sizes")
GET (blksz, "CP.blksz -> block size")
{ 0 }
};
-static PyMethodDef gprp_pymethods[] = {
+static const PyMethodDef gprp_pymethods[] = {
#define METHNAME(name) gpmeth_##name
METH (encrypt, "P.encrypt(PT) -> CT")
METH (decrypt, "P.decrypt(CT) -> PT")
0, /* @tp_iternext@ */
0, /* @tp_methods@ */
0, /* @tp_members@ */
- gcprp_pygetset, /* @tp_getset@ */
+ PYGETSET(gcprp), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- gprp_pymethods, /* @tp_methods@ */
+ PYMETHODS(gprp), /* @tp_methods@ */
0, /* @tp_members@ */
0, /* @tp_getset@ */
0, /* @tp_base@ */
/*----- Main code ---------------------------------------------------------*/
-static PyMethodDef methods[] = {
+static const PyMethodDef methods[] = {
#define METHNAME(func) meth_##func
METH (_KeySZ_fromdl, "fromdl(N) -> M: "
"convert integer discrete log field size to work factor")
return (-1);
}
-static PyGetSetDef rbuf_pygetset[] = {
+static const PyGetSetDef rbuf_pygetset[] = {
#define GETSETNAME(op, name) rb##op##_##name
GET (size, "RBUF.size -> SIZE")
GET (left, "RBUF.left -> REMAINDER")
{ 0 }
};
-static PyMethodDef rbuf_pymethods[] = {
+static const PyMethodDef rbuf_pymethods[] = {
#define METHNAME(func) rbmeth_##func
METH (skip, "RBUF.skip(N)")
METH (get, "RBUF.get(N) -> BYTES")
{ 0 }
};
-static PyBufferProcs rbuf_pybuffer = {
+static const PyBufferProcs rbuf_pybuffer = {
rbuf_pyreadbuf, /* @bf_getreadbuffer@ */
0, /* @bf_getwritebuffer@ */
rbuf_pysegcount, /* @bf_getsegcount@ */
0, /* @tp_str@ */
0, /* @tp_getattro@ */
0, /* @tp_setattro@ */
- &rbuf_pybuffer, /* @tp_as_buffer@ */
+ PYBUFFER(rbuf), /* @tp_as_buffer@ */
Py_TPFLAGS_DEFAULT | /* @tp_flags@ */
Py_TPFLAGS_BASETYPE,
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- rbuf_pymethods, /* @tp_methods@ */
+ PYMETHODS(rbuf), /* @tp_methods@ */
0, /* @tp_members@ */
- rbuf_pygetset, /* @tp_getset@ */
+ PYGETSET(rbuf), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
static PyObject *wbget_contents(PyObject *me, void *hunoz)
{ return (bytestring_pywrap(BBASE(BUF_B(me)), BLEN(BUF_B(me)))); }
-static PyGetSetDef wbuf_pygetset[] = {
+static const PyGetSetDef wbuf_pygetset[] = {
#define GETSETNAME(op, name) wb##op##_##name
GET (size, "WBUF.size -> SIZE")
GET (contents, "WBUF.contents -> STR")
{ 0 }
};
-static PyMethodDef wbuf_pymethods[] = {
+static const PyMethodDef wbuf_pymethods[] = {
#define METHNAME(func) wbmeth_##func
METH (zero, "WBUF.zero(N)")
METH (put, "WBUF.put(BYTES)")
{ 0 }
};
-static PyBufferProcs wbuf_pybuffer = {
+static const PyBufferProcs wbuf_pybuffer = {
wbuf_pyreadbuf, /* @bf_getreadbuffer@ */
0, /* @bf_getwritebuffer@ */
wbuf_pysegcount, /* @bf_getsegcount@ */
0, /* @tp_str@ */
0, /* @tp_getattro@ */
0, /* @tp_setattro@ */
- &wbuf_pybuffer, /* @tp_as_buffer@ */
+ PYBUFFER(wbuf), /* @tp_as_buffer@ */
Py_TPFLAGS_DEFAULT | /* @tp_flags@ */
Py_TPFLAGS_BASETYPE,
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- wbuf_pymethods, /* @tp_methods@ */
+ PYMETHODS(wbuf), /* @tp_methods@ */
0, /* @tp_members@ */
- wbuf_pygetset, /* @tp_getset@ */
+ PYGETSET(wbuf), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
}
UNOP(not, ~)
-static PyNumberMethods bytestring_pynumber = {
+static const PyNumberMethods bytestring_pynumber = {
0, /* @nb_add@ */
0, /* @nb_subtract@ */
0, /* @nb_multiply@ */
0, /* @nb_hex@ */
};
-static PySequenceMethods bytestring_pysequence = {
+static const PySequenceMethods bytestring_pysequence = {
0, /* @sq_length@ */
bytestring_pyconcat, /* @sq_concat@ */
bytestring_pyrepeat, /* @sq_repeat@ */
0, /* @sq_inplace_repeat@ */
};
-static PyMappingMethods bytestring_pymapping = {
+static const PyMappingMethods bytestring_pymapping = {
0, /* @mp_length@ */
bytestring_pysubscript, /* @mp_subscript@ */
0, /* @mp_ass_subscript@ */
0, /* @tp_setattr@ */
0, /* @tp_compare@ */
0, /* @tp_repr@ */
- &bytestring_pynumber, /* @tp_as_number@ */
- &bytestring_pysequence, /* @tp_as_sequence@ */
- &bytestring_pymapping, /* @tp_as_mapping@ */
+ PYNUMBER(bytestring), /* @tp_as_number@ */
+ PYSEQUENCE(bytestring), /* @tp_as_sequence@ */
+ PYMAPPING(bytestring), /* @tp_as_mapping@ */
0, /* @tp_hash@ */
0, /* @tp_call@ */
0, /* @tp_str@ */
/*----- Initialization ----------------------------------------------------*/
-static PyMethodDef methods[] = {
+static const PyMethodDef methods[] = {
#define METHNAME(func) meth_##func
METH (ctstreq, "ctstreq(S, T) -> BOOL")
METH (_ByteString_zero, "zero(N) -> 0000...00")
return (0);
}
-static PyGetSetDef ecptnc_pygetset[] = {
+static const PyGetSetDef ecptnc_pygetset[] = {
#define GETSETNAME(op, name) epnc##op##_##name
GET (ix, "P.ix -> integer x coordinate of P")
GET (iy, "P.iy -> integer y coordinate of P")
{ 0 }
};
-static PyMethodDef ecptnc_pymethods[] = {
+static const PyMethodDef ecptnc_pymethods[] = {
#define METHNAME(func) epmeth_##func
METH (tobuf, "X.tobuf() -> BIN")
#undef METHNAME
{ 0 }
};
-static PyNumberMethods ecpt_pynumber = {
+static const PyNumberMethods ecpt_pynumber = {
0, /* @nb_add@ */
0, /* @nb_subtract@ */
0, /* @nb_multiply@ */
0, /* @tp_setattr@ */
0, /* @tp_compare@ */
0, /* @tp_repr@ */
- &ecpt_pynumber, /* @tp_as_number@ */
+ PYNUMBER(ecpt), /* @tp_as_number@ */
0, /* @tp_as_sequence@ */
0, /* @tp_as_mapping@ */
ecpt_pyhash, /* @tp_hash@ */
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- ecptnc_pymethods, /* @tp_methods@ */
+ PYMETHODS(ecptnc), /* @tp_methods@ */
0, /* @tp_members@ */
- ecptnc_pygetset, /* @tp_getset@ */
+ PYGETSET(ecptnc), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
0 /* @tp_is_gc@ */
};
-static PyGetSetDef ecpt_pygetset[] = {
+static const PyGetSetDef ecpt_pygetset[] = {
#define GETSETNAME(op, name) ep##op##_##name
GET (curve, "P.curve -> elliptic curve containing P")
GET (point, "P.point -> standalone curve point")
{ 0 }
};
-static PyMethodDef ecpt_pymethods[] = {
+static const PyMethodDef ecpt_pymethods[] = {
#define METHNAME(func) epmeth_##func
METH (toraw, "X.toraw() -> BIN")
KWMETH(ec2osp, "X.ec2osp([flags = EC_EXPLY]) -> BIN")
{ 0 }
};
-static PyNumberMethods ecptcurve_pynumber = {
+static const PyNumberMethods ecptcurve_pynumber = {
ecpt_pyadd, /* @nb_add@ */
ecpt_pysub, /* @nb_subtract@ */
ecpt_pymul, /* @nb_multiply@ */
0, /* @tp_setattr@ */
0, /* @tp_compare@ */
0, /* @tp_repr@ */
- &ecptcurve_pynumber, /* @tp_as_number@ */
+ PYNUMBER(ecptcurve), /* @tp_as_number@ */
0, /* @tp_as_sequence@ */
0, /* @tp_as_mapping@ */
0, /* @tp_hash@ */
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- ecpt_pymethods, /* @tp_methods@ */
+ PYMETHODS(ecpt), /* @tp_methods@ */
0, /* @tp_members@ */
- ecpt_pygetset, /* @tp_getset@ */
+ PYGETSET(ecpt), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
static PyObject *ecget_inf(PyObject *me, void *hunoz)
{ ec inf = EC_INIT; return (ecpt_pywrap(me, &inf)); }
-static PyGetSetDef eccurve_pygetset[] = {
+static const PyGetSetDef eccurve_pygetset[] = {
#define GETSETNAME(op, name) ec##op##_##name
GET (name, "E.name -> name of this kind of curve")
GET (a, "E.a -> first parameter of curve")
{ 0 }
};
-static PyMethodDef eccurve_pymethods[] = {
+static const PyMethodDef eccurve_pymethods[] = {
#define METHNAME(name) ecmeth_##name
METH (mmul, "E.mmul([(P0, N0), (P1, N1), ...]) = N0 P0 + N1 P1 + ...")
METH (find, "E.find(X) -> P")
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- eccurve_pymethods, /* @tp_methods@ */
+ PYMETHODS(eccurve), /* @tp_methods@ */
0, /* @tp_members@ */
- eccurve_pygetset, /* @tp_getset@ */
+ PYGETSET(eccurve), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
static PyObject *eiget_h(PyObject *me, void *hunoz)
{ return (mp_pywrap(MP_COPY(ECINFO_EI(me)->h))); }
-static PyGetSetDef ecinfo_pygetset[] = {
+static const PyGetSetDef ecinfo_pygetset[] = {
#define GETSETNAME(op, name) ei##op##_##name
GET (curve, "I.curve -> the elliptic curve")
GET (G, "I.G -> generator point for the group")
{ 0 }
};
-static PyMethodDef ecinfo_pymethods[] = {
+static const PyMethodDef ecinfo_pymethods[] = {
#define METHNAME(name) eimeth_##name
KWMETH(check, "I.check([rng = rand]) -> None")
#undef METHNAME
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- ecinfo_pymethods, /* @tp_methods@ */
+ PYMETHODS(ecinfo), /* @tp_methods@ */
0, /* @tp_members@ */
- ecinfo_pygetset, /* @tp_getset@ */
+ PYGETSET(ecinfo), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
/*----- Setup -------------------------------------------------------------*/
-static PyMethodDef methods[] = {
+static const PyMethodDef methods[] = {
#define METHNAME(func) meth_##func
METH (_ECPt_frombuf, "frombuf(E, STR) -> (P, REST)")
METH (_ECPtCurve_fromraw, "fromraw(E, STR) -> (P, REST)")
return (mp_pywrap(x));
}
-static PyGetSetDef fe_pygetset[] = {
+static const PyGetSetDef fe_pygetset[] = {
#define GETSETNAME(op, name) fe##op##_##name
GET (field, "X.field -> field containing X")
GET (value, "X.value -> `natural' MP/GF representation of X")
{ 0 }
};
-static PyMethodDef fe_pymethods[] = {
+static const PyMethodDef fe_pymethods[] = {
#define METHNAME(func) femeth_##func
METH (inv, "X.inv() -> X^{-1}")
METH (sqr, "X.sqr() -> X^2")
{ 0 }
};
-static PyNumberMethods fe_pynumber = {
+static const PyNumberMethods fe_pynumber = {
fe_pyadd, /* @nb_add@ */
fe_pysub, /* @nb_subtract@ */
fe_pymul, /* @nb_multiply@ */
0, /* @tp_setattr@ */
0, /* @tp_compare@ */
0, /* @tp_repr@ */
- &fe_pynumber, /* @tp_as_number@ */
+ PYNUMBER(fe), /* @tp_as_number@ */
0, /* @tp_as_sequence@ */
0, /* @tp_as_mapping@ */
fe_pyhash, /* @tp_hash@ */
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- fe_pymethods, /* @tp_methods@ */
+ PYMETHODS(fe), /* @tp_methods@ */
0, /* @tp_members@ */
- fe_pygetset, /* @tp_getset@ */
+ PYGETSET(fe), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
static PyObject *fget_type(PyObject *me, void *hunoz)
{ return (PyInt_FromLong(F_TYPE(FIELD_F(me)))); }
-static PyGetSetDef field_pygetset[] = {
+static const PyGetSetDef field_pygetset[] = {
#define GETSETNAME(op, name) f##op##_##name
GET (zero, "F.zero -> field additive identity")
GET (one, "F.one -> field multiplicative identity")
{ 0 }
};
-static PyMethodDef field_pymethods[] = {
+static const PyMethodDef field_pymethods[] = {
#define METHNAME(name) fmeth_##name
METH (_adopt, "F._adopt(X) -> FE")
KWMETH(rand, "F.rand([rng = rand]) -> FE, uniformly distributed")
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- field_pymethods, /* @tp_methods@ */
+ PYMETHODS(field), /* @tp_methods@ */
0, /* @tp_members@ */
- field_pygetset, /* @tp_getset@ */
+ PYGETSET(field), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
static PyObject *pfget_p(PyObject *me, void *hunoz)
{ return (mp_pywrap(MP_COPY(FIELD_F(me)->m))); }
-static PyGetSetDef primefield_pygetset[] = {
+static const PyGetSetDef primefield_pygetset[] = {
#define GETSETNAME(op, name) pf##op##_##name
GET (p, "F.p -> prime field characteristic")
#undef GETSETNAME
0, /* @tp_iternext@ */
0, /* @tp_methods@ */
0, /* @tp_members@ */
- primefield_pygetset, /* @tp_getset@ */
+ PYGETSET(primefield), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
static PyObject *bfget_p(PyObject *me, void *hunoz)
{ return (gf_pywrap(MP_COPY(FIELD_F(me)->m))); }
-static PyGetSetDef binfield_pygetset[] = {
+static const PyGetSetDef binfield_pygetset[] = {
#define GETSETNAME(op, name) bf##op##_##name
GET (m, "F.m -> field polynomial degree")
GET (p, "F.p -> field polynomial")
0, /* @tp_iternext@ */
0, /* @tp_methods@ */
0, /* @tp_members@ */
- binfield_pygetset, /* @tp_getset@ */
+ PYGETSET(binfield), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
return (gf_pywrap(MP_COPY(fc->ntop.r[fc->ntop.n - 1])));
}
-static PyGetSetDef binnormfield_pygetset[] = {
+static const PyGetSetDef binnormfield_pygetset[] = {
#define GETSETNAME(op, name) bnf##op##_##name
GET (beta, "F.beta -> conversion factor")
#undef GETSETNAME
0, /* @tp_iternext@ */
0, /* @tp_methods@ */
0, /* @tp_members@ */
- binnormfield_pygetset, /* @tp_getset@ */
+ PYGETSET(binnormfield), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
return (rc);
}
-static PyMethodDef methods[] = {
+static const PyMethodDef methods[] = {
#define METHNAME(func) meth_##func
METH (_Field_parse, "parse(STR) -> F, REST")
#undef METHNAME
static PyObject *meth__BinDHInfo_parse(PyObject *me, PyObject *arg)
{ return (meth__parse(me, arg, bindhinfo_pytype, dhbin_parse)); }
-static PyGetSetDef fginfo_pygetset[] = {
+static const PyGetSetDef fginfo_pygetset[] = {
#define GETSETNAME(op, name) fi##op##_##name
GET (r, "I.r -> group order")
#undef GETSETNAME
{ 0 }
};
-static PyGetSetDef dhinfo_pygetset[] = {
+static const PyGetSetDef dhinfo_pygetset[] = {
#define GETSETNAME(op, name) di##op##_##name
GET (p, "I.p -> prime")
GET (g, "I.g -> generator")
{ 0 }
};
-static PyGetSetDef bindhinfo_pygetset[] = {
+static const PyGetSetDef bindhinfo_pygetset[] = {
#define GETSETNAME(op, name) bi##op##_##name
GET (p, "I.p -> irreducible polynomial")
GET (m, "I.m -> degree of polynomial")
0, /* @tp_iternext@ */
0, /* @tp_methods@ */
0, /* @tp_members@ */
- fginfo_pygetset, /* @tp_getset@ */
+ PYGETSET(fginfo), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
0, /* @tp_iternext@ */
0, /* @tp_methods@ */
0, /* @tp_members@ */
- dhinfo_pygetset, /* @tp_getset@ */
+ PYGETSET(dhinfo), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
0, /* @tp_iternext@ */
0, /* @tp_methods@ */
0, /* @tp_members@ */
- bindhinfo_pygetset, /* @tp_getset@ */
+ PYGETSET(bindhinfo), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
static PyObject *gget_h(PyObject *me, void *hunoz)
{ return (mp_pywrap(MP_COPY(GROUP_G(me)->h))); }
-static PyGetSetDef ge_pygetset[] = {
+static const PyGetSetDef ge_pygetset[] = {
#define GETSETNAME(op, name) ge##op##_##name
GET (group, "X.group -> group containing X")
#undef GETSETNAME
{ 0 }
};
-static PyMethodDef ge_pymethods[] = {
+static const PyMethodDef ge_pymethods[] = {
#define METHNAME(name) gemeth_##name
METH (inv, "X.inv() -> inverse element of X")
METH (sqr, "X.sqr() -> X^2 = X * X")
{ 0 }
};
-static PyNumberMethods ge_pynumber = {
+static const PyNumberMethods ge_pynumber = {
0, /* @nb_add@ */
0, /* @nb_subtract@ */
ge_pymul, /* @nb_multiply@ */
0, /* @tp_setattr@ */
0, /* @tp_compare@ */
0, /* @tp_repr@ */
- &ge_pynumber, /* @tp_as_number@ */
+ PYNUMBER(ge), /* @tp_as_number@ */
0, /* @tp_as_sequence@ */
0, /* @tp_as_mapping@ */
ge_pyhash, /* @tp_hash@ */
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- ge_pymethods, /* @tp_methods@ */
+ PYMETHODS(ge), /* @tp_methods@ */
0, /* @tp_members@ */
- ge_pygetset, /* @tp_getset@ */
+ PYGETSET(ge), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
0 /* @tp_is_gc@ */
};
-static PyGetSetDef group_pygetset[] = {
+static const PyGetSetDef group_pygetset[] = {
#define GETSETNAME(op, name) g##op##_##name
GET (noctets, "G.noctets -> size in octets of element")
GET (nbits, "G.nbits -> size in bits of element")
{ 0 }
};
-static PyMethodDef group_pymethods[] = {
+static const PyMethodDef group_pymethods[] = {
#define METHNAME(name) gmeth_##name
METH (mexp, "G.mexp([(X0, N0), (X1, N1), ...]) -> X0^N0 X1^N1 ...")
KWMETH(checkgroup, "G.checkgroup([rng = rand]): check group is good")
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- group_pymethods, /* @tp_methods@ */
+ PYMETHODS(group), /* @tp_methods@ */
0, /* @tp_members@ */
- group_pygetset, /* @tp_getset@ */
+ PYGETSET(group), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
return (fginfo_pywrap(&dp, dhinfo_pytype));
}
-static PyGetSetDef primegroup_pygetset[] = {
+static const PyGetSetDef primegroup_pygetset[] = {
#define GETSETNAME(op, name) pg##op##_##name
GET (info, "G.info -> information about the group")
#undef GETSETNAME
0, /* @tp_iternext@ */
0, /* @tp_methods@ */
0, /* @tp_members@ */
- primegroup_pygetset, /* @tp_getset@ */
+ PYGETSET(primegroup), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
return (fginfo_pywrap(&dp, bindhinfo_pytype));
}
-static PyGetSetDef bingroup_pygetset[] = {
+static const PyGetSetDef bingroup_pygetset[] = {
#define GETSETNAME(op, name) bg##op##_##name
GET (info, "G.info -> information about the group")
#undef GETSETNAME
0, /* @tp_iternext@ */
0, /* @tp_methods@ */
0, /* @tp_members@ */
- bingroup_pygetset, /* @tp_getset@ */
+ PYGETSET(bingroup), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
return (ecinfo_pywrap(&ei));
}
-static PyGetSetDef ecgroup_pygetset[] = {
+static const PyGetSetDef ecgroup_pygetset[] = {
#define GETSETNAME(op, name) eg##op##_##name
GET (info, "G.info -> information about the group")
#undef GETSETNAME
0, /* @tp_iternext@ */
0, /* @tp_methods@ */
0, /* @tp_members@ */
- ecgroup_pygetset, /* @tp_getset@ */
+ PYGETSET(ecgroup), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
/*----- Global stuff ------------------------------------------------------*/
-static PyMethodDef methods[] = {
+static const PyMethodDef methods[] = {
#define METHNAME(name) meth_##name
METH (_GE_frombuf, "frombuf(BUF) -> X, REST")
METH (_GE_fromraw, "fromraw(BUF) -> X, REST")
return (rc);
}
-static PyMethodDef keyexc_pymethods[] = {
+static const PyMethodDef keyexc_pymethods[] = {
#define METHNAME(func) kxmeth_##func
METH (__init__, "KeyError(CODE)")
METH (__str__, "E.__str__() -> STRING")
static PyObject *kdget_flags(PyObject *me, void *hunoz)
{ return (getulong(KEYDATA_KD(me)->e)); }
-static PyMethodDef keydata_pymethods[] = {
+static const PyMethodDef keydata_pymethods[] = {
#define METHNAME(func) kdmeth_##func
METH (matchp, "KD.matchp(FILTER) -> BOOL")
METH (split, "KD.split()")
{ 0 }
};
-static PyGetSetDef keydata_pygetset[] = {
+static const PyGetSetDef keydata_pygetset[] = {
#define GETSETNAME(op, name) kd##op##_##name
GET (flags, "KD.flags -> FLAGS")
#undef GETSETNAME
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- keydata_pymethods, /* @tp_methods@ */
+ PYMETHODS(keydata), /* @tp_methods@ */
0, /* @tp_members@ */
- keydata_pygetset, /* @tp_getset@ */
+ PYGETSET(keydata), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
{ return (bytestring_pywrap(KEYDATA_KD(me)->u.k.k,
KEYDATA_KD(me)->u.k.sz)); }
-static PyGetSetDef keydatabin_pygetset[] = {
+static const PyGetSetDef keydatabin_pygetset[] = {
#define GETSETNAME(op, name) kdb##op##_##name
GET (bin, "KD.bin -> BYTES")
#undef GETSETNAME
0, /* @tp_iternext@ */
0, /* @tp_methods@ */
0, /* @tp_members@ */
- keydatabin_pygetset, /* @tp_getset@ */
+ PYGETSET(keydatabin), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
#define kdeget_ct kdbget_bin
-static PyMethodDef keydataenc_pymethods[] = {
+static const PyMethodDef keydataenc_pymethods[] = {
#define METHNAME(func) kdemeth_##func
METH (plock, "KD.plock(TAG) -> ENCRYPTED-KD")
METH (lock, "KD.lock(KEY) -> ENCRYPTED-KD")
{ 0 }
};
-static PyGetSetDef keydataenc_pygetset[] = {
+static const PyGetSetDef keydataenc_pygetset[] = {
#define GETSETNAME(op, name) kde##op##_##name
GET (ct, "KD.ct -> BYTES")
#undef GETSETNAME
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- keydataenc_pymethods, /* @tp_methods@ */
+ PYMETHODS(keydataenc), /* @tp_methods@ */
0, /* @tp_members@ */
- keydataenc_pygetset, /* @tp_getset@ */
+ PYGETSET(keydataenc), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
static PyObject *kdmget_mp(PyObject *me, void *hunoz)
{ return (mp_pywrap(MP_COPY(KEYDATA_KD(me)->u.m))); }
-static PyGetSetDef keydatamp_pygetset[] = {
+static const PyGetSetDef keydatamp_pygetset[] = {
#define GETSETNAME(op, name) kdm##op##_##name
GET (mp, "KD.mp -> X")
#undef GETSETNAME
0, /* @tp_iternext@ */
0, /* @tp_methods@ */
0, /* @tp_members@ */
- keydatamp_pygetset, /* @tp_getset@ */
+ PYGETSET(keydatamp), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
static PyObject *kdsget_str(PyObject *me, void *hunoz)
{ return (PyString_FromString(KEYDATA_KD(me)->u.p)); }
-static PyGetSetDef keydatastr_pygetset[] = {
+static const PyGetSetDef keydatastr_pygetset[] = {
#define GETSETNAME(op, name) kds##op##_##name
GET (str, "KD.str -> STRING")
#undef GETSETNAME
0, /* @tp_iternext@ */
0, /* @tp_methods@ */
0, /* @tp_members@ */
- keydatastr_pygetset, /* @tp_getset@ */
+ PYGETSET(keydatastr), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
return (ecpt_pywrapout(ecpt_pytype, &pt));
}
-static PyGetSetDef keydataec_pygetset[] = {
+static const PyGetSetDef keydataec_pygetset[] = {
#define GETSETNAME(op, name) kde##op##_##name
GET (ecpt, "KD.ecpt -> ECPT")
#undef GETSETNAME
0, /* @tp_iternext@ */
0, /* @tp_methods@ */
0, /* @tp_members@ */
- keydataec_pygetset, /* @tp_getset@ */
+ PYGETSET(keydataec), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
return (rc);
}
-static PyMappingMethods keydatastruct_pymapping = {
+static const PyMappingMethods keydatastruct_pymapping = {
gmap_pysize, /* @mp_length@ */
keydatastruct_pylookup, /* @mp_subscript@ */
keydatastruct_pystore /* @mp_ass_subscript@ */
0, /* @tp_repr@ */
0, /* @tp_as_number@ */
0, /* @tp_as_sequence@ */
- &keydatastruct_pymapping, /* @tp_as_mapping@ */
+ PYMAPPING(keydatastruct), /* @tp_as_mapping@ */
0, /* @tp_hash@ */
0, /* @tp_call@ */
0, /* @tp_str@ */
0, /* @tp_weaklistoffset@ */
subkeyiter_make, /* @tp_iter@ */
0, /* @tp_iternext@ */
- gmap_pymethods, /* @tp_methods@ */
+ PYMETHODS(gmap), /* @tp_methods@ */
0, /* @tp_members@ */
0, /* @tp_getset@ */
0, /* @tp_base@ */
FREEOBJ(me);
}
-static PyMappingMethods keyattrs_pymapping = {
+static const PyMappingMethods keyattrs_pymapping = {
gmap_pysize, /* @mp_length@ */
keyattrs_pylookup, /* @mp_subscript@ */
keyattrs_pystore /* @mp_ass_subscript@ */
0, /* @tp_compare@ */
0, /* @tp_repr@ */
0, /* @tp_as_number@ */
- &gmap_pysequence, /* @tp_as_sequence@ */
- &keyattrs_pymapping, /* @tp_as_mapping@ */
+ PYSEQUENCE(gmap), /* @tp_as_sequence@ */
+ PYMAPPING(keyattrs), /* @tp_as_mapping@ */
0, /* @tp_hash@ */
0, /* @tp_call@ */
0, /* @tp_str@ */
0, /* @tp_weaklistoffset@ */
keyattriter_make, /* @tp_iter@ */
0, /* @tp_iternext@ */
- gmap_pymethods, /* @tp_methods@ */
+ PYMETHODS(gmap), /* @tp_methods@ */
0, /* @tp_members@ */
0, /* @tp_getset@ */
0, /* @tp_base@ */
return (-1);
}
-static PyMethodDef key_pymethods[] = {
+static const PyMethodDef key_pymethods[] = {
#define METHNAME(func) kmeth_##func
METH (delete, "KEY.delete()")
METH (expire, "KEY.expire()")
{ 0 }
};
-static PyGetSetDef key_pygetset[] = {
+static const PyGetSetDef key_pygetset[] = {
#define GETSETNAME(op, name) k##op##_##name
GET (file, "KEY.file -> KF")
GET (id, "KEY.id -> ID")
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- key_pymethods, /* @tp_methods@ */
+ PYMETHODS(key), /* @tp_methods@ */
0, /* @tp_members@ */
- key_pygetset, /* @tp_getset@ */
+ PYGETSET(key), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
static PyObject *kfget_filep(PyObject *me, void *hunoz)
{ return (getbool(!!KEYFILE_KF(me)->fp)); }
-static PyMethodDef keyfile_pymethods[] = {
+static const PyMethodDef keyfile_pymethods[] = {
#define METHNAME(func) kfmeth_##func
METH (save, "KF.save()")
KWMETH(merge, "KF.merge(FILE, [report = <built-in-reporter>])")
{ 0 }
};
-static PyGetSetDef keyfile_pygetset[] = {
+static const PyGetSetDef keyfile_pygetset[] = {
#define GETSETNAME(op, name) kf##op##_##name
GET (name, "KF.name -> file name")
GET (modifiedp, "KF.modifiedp -> has keyring been modified?")
{ 0 }
};
-static PyMappingMethods keyfile_pymapping = {
+static const PyMappingMethods keyfile_pymapping = {
gmap_pysize,
keyfile_pylookup,
0
0, /* @tp_compare@ */
0, /* @tp_repr@ */
0, /* @tp_as_number@ */
- &gmap_pysequence, /* @tp_as_sequence@ */
- &keyfile_pymapping, /* @tp_as_mapping@ */
+ PYSEQUENCE(gmap), /* @tp_as_sequence@ */
+ PYMAPPING(keyfile), /* @tp_as_mapping@ */
0, /* @tp_hash@ */
0, /* @tp_call@ */
0, /* @tp_str@ */
0, /* @tp_weaklistoffset@ */
keyiter_new, /* @tp_iter@ */
0, /* @tp_iternext@ */
- keyfile_pymethods, /* @tp_methods@ */
+ PYMETHODS(keyfile), /* @tp_methods@ */
0, /* @tp_members@ */
- keyfile_pygetset, /* @tp_getset@ */
+ PYGETSET(keyfile), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
static PyObject *mpget_noctets2c(PyObject *me, void *hunoz)
{ return (PyInt_FromLong(mp_octets2c(MP_X(me)))); }
-static PyGetSetDef mp_pygetset[] = {
+static const PyGetSetDef mp_pygetset[] = {
#define GETSETNAME(op, func) mp##op##_##func
GET (nbits, "X.nbits -> bit length of X")
GET (noctets, "X.noctets -> octet length of X")
{ 0 }
};
-static PyMethodDef mp_pymethods[] = {
+static const PyMethodDef mp_pymethods[] = {
#define METHNAME(func) mpmeth_##func
METH (jacobi, "X.jacobi(Y) -> Jacobi symbol (Y|X) (NB inversion!)")
METH (setbit, "X.setbit(N) -> X with bit N set")
{ 0 }
};
-static PyNumberMethods mp_pynumber = {
+static const PyNumberMethods mp_pynumber = {
mp_pyadd, /* @nb_add@ */
mp_pysub, /* @nb_subtract@ */
mp_pymul, /* @nb_multiply@ */
0, /* @tp_setattr@ */
mp_pycompare, /* @tp_compare@ */
mp_pyrepr, /* @tp_repr@ */
- &mp_pynumber, /* @tp_as_number@ */
+ PYNUMBER(mp), /* @tp_as_number@ */
0, /* @tp_as_sequence@ */
0, /* @tp_as_mapping@ */
mp_pyhash, /* @tp_hash@ */
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- mp_pymethods, /* @tp_methods@ */
+ PYMETHODS(mp), /* @tp_methods@ */
0, /* @tp_members@ */
- mp_pygetset, /* @tp_getset@ */
+ PYGETSET(mp), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
static PyObject *mmget_livep(PyObject *me, void *hunoz)
{ return (getbool(MPMUL_LIVEP(me))); }
-static PyGetSetDef mpmul_pygetset[] = {
+static const PyGetSetDef mpmul_pygetset[] = {
#define GETSETNAME(op, name) mm##op##_##name
GET (livep, "MM.livep -> flag: object still valid?")
#undef GETSETNAME
{ 0 }
};
-static PyMethodDef mpmul_pymethods[] = {
+static const PyMethodDef mpmul_pymethods[] = {
#define METHNAME(name) mmmeth_##name
METH (factor, "MM.factor(ITERABLE) or MM.factor(I, ...)")
METH (done, "MM.done() -> PRODUCT")
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- mpmul_pymethods, /* @tp_methods@ */
+ PYMETHODS(mpmul), /* @tp_methods@ */
0, /* @tp_members@ */
- mpmul_pygetset, /* @tp_getset@ */
+ PYGETSET(mpmul), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
static PyObject *mmget_r2(PyObject *me, void *hunoz)
{ return (mp_pywrap(MP_COPY(MPMONT_PY(me)->r2))); }
-static PyGetSetDef mpmont_pygetset[] = {
+static const PyGetSetDef mpmont_pygetset[] = {
#define GETSETNAME(op, name) mm##op##_##name
GET (m, "M.m -> modulus for reduction")
GET (r, "M.r -> multiplicative identity")
{ 0 }
};
-static PyMethodDef mpmont_pymethods[] = {
+static const PyMethodDef mpmont_pymethods[] = {
#define METHNAME(name) mmmeth_##name
METH (int, "M.int(X) -> XR")
METH (mul, "M.mul(XR, YR) -> ZR where Z = X Y")
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- mpmont_pymethods, /* @tp_methods@ */
+ PYMETHODS(mpmont), /* @tp_methods@ */
0, /* @tp_members@ */
- mpmont_pygetset, /* @tp_getset@ */
+ PYGETSET(mpmont), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
static PyObject *mbget_m(PyObject *me, void *hunoz)
{ return (mp_pywrap(MP_COPY(MPBARRETT_PY(me)->m))); }
-static PyGetSetDef mpbarrett_pygetset[] = {
+static const PyGetSetDef mpbarrett_pygetset[] = {
#define GETSETNAME(op, name) mb##op##_##name
GET (m, "B.m -> modulus for reduction")
#undef GETSETNAME
{ 0 }
};
-static PyMethodDef mpbarrett_pymethods[] = {
+static const PyMethodDef mpbarrett_pymethods[] = {
#define METHNAME(name) mbmeth_##name
METH (reduce, "B.reduce(X) -> X mod B.m")
METH (exp, "B.exp(X, N) -> X^N mod B.m")
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- mpbarrett_pymethods, /* @tp_methods@ */
+ PYMETHODS(mpbarrett), /* @tp_methods@ */
0, /* @tp_members@ */
- mpbarrett_pygetset, /* @tp_getset@ */
+ PYGETSET(mpbarrett), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
static PyObject *mrget_m(PyObject *me, void *hunoz)
{ return (mp_pywrap(MP_COPY(MPREDUCE_PY(me)->p))); }
-static PyGetSetDef mpreduce_pygetset[] = {
+static const PyGetSetDef mpreduce_pygetset[] = {
#define GETSETNAME(op, name) mr##op##_##name
GET (m, "R.m -> modulus for reduction")
#undef GETSETNAME
{ 0 }
};
-static PyMethodDef mpreduce_pymethods[] = {
+static const const PyMethodDef mpreduce_pymethods[] = {
#define METHNAME(name) mrmeth_##name
METH (reduce, "R.reduce(X) -> X mod B.m")
METH (exp, "R.exp(X, N) -> X^N mod B.m")
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- mpreduce_pymethods, /* @tp_methods@ */
+ PYMETHODS(mpreduce), /* @tp_methods@ */
0, /* @tp_members@ */
- mpreduce_pygetset, /* @tp_getset@ */
+ PYGETSET(mpreduce), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
return (q);
}
-static PyGetSetDef mpcrt_pygetset[] = {
+static const PyGetSetDef mpcrt_pygetset[] = {
#define GETSETNAME(op, name) mc##op##_##name
GET (product, "C.product -> product of moduli")
GET (moduli, "C.moduli -> list of individual moduli")
{ 0 }
};
-static PyMethodDef mpcrt_pymethods[] = {
+static const PyMethodDef mpcrt_pymethods[] = {
#define METHNAME(name) mcmeth_##name
METH (solve, "C.solve([R0, R1]) -> X mod C.product")
#undef METHNAME
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- mpcrt_pymethods, /* @tp_methods@ */
+ PYMETHODS(mpcrt), /* @tp_methods@ */
0, /* @tp_members@ */
- mpcrt_pygetset, /* @tp_getset@ */
+ PYGETSET(mpcrt), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
static PyObject *gfget_degree(PyObject *me, void *hunoz)
{ return (PyInt_FromLong(mp_bits(MP_X(me)) - 1)); }
-static PyGetSetDef gf_pygetset[] = {
+static const PyGetSetDef gf_pygetset[] = {
#define GETSETNAME(op, name) gf##op##_##name
GET (degree, "X.degree -> polynomial degree of X")
#undef GETSETNAME
{ 0 }
};
-static PyMethodDef gf_pymethods[] = {
+static const PyMethodDef gf_pymethods[] = {
#define METHNAME(func) gfmeth_##func
METH (setbit, "X.setbit(N) -> X with bit N set")
METH (clearbit, "X.clearbit(N) -> X with bit N clear")
{ 0 }
};
-static PyNumberMethods gf_pynumber = {
+static const PyNumberMethods gf_pynumber = {
gf_pyadd, /* @nb_add@ */
gf_pysub, /* @nb_subtract@ */
gf_pymul, /* @nb_multiply@ */
0, /* @tp_setattr@ */
0, /* @tp_compare@ */
gf_pyrepr, /* @tp_repr@ */
- &gf_pynumber, /* @tp_as_number@ */
+ PYNUMBER(gf), /* @tp_as_number@ */
0, /* @tp_as_sequence@ */
0, /* @tp_as_mapping@ */
mp_pyhash, /* @tp_hash@ */
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- gf_pymethods, /* @tp_methods@ */
+ PYMETHODS(gf), /* @tp_methods@ */
0, /* @tp_members@ */
- gf_pygetset, /* @tp_getset@ */
+ PYGETSET(gf), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
static PyObject *grget_m(PyObject *me, void *hunoz)
{ return (gf_pywrap(MP_COPY(GFREDUCE_PY(me)->p))); }
-static PyGetSetDef gfreduce_pygetset[] = {
+static const PyGetSetDef gfreduce_pygetset[] = {
#define GETSETNAME(op, name) gr##op##_##name
GET (m, "R.m -> reduction polynomial")
#undef GETSETNAME
{ 0 }
};
-static PyMethodDef gfreduce_pymethods[] = {
+static const PyMethodDef gfreduce_pymethods[] = {
#define METHNAME(name) grmeth_##name
METH (reduce, "R.reduce(X) -> X mod B.m")
METH (trace, "R.trace(X) -> Tr(X) = x + x^2 + ... + x^{2^{m - 1}}")
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- gfreduce_pymethods, /* @tp_methods@ */
+ PYMETHODS(gfreduce), /* @tp_methods@ */
0, /* @tp_members@ */
- gfreduce_pygetset, /* @tp_getset@ */
+ PYGETSET(gfreduce), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
FREEOBJ(me);
}
-static PyGetSetDef gfn_pygetset[] = {
+static const PyGetSetDef gfn_pygetset[] = {
#define GETSETNAME(op, name) gfn##op##_##name
GET (p, "X.p -> polynomial basis, as polynomial")
GET (beta, "X.beta -> normal basis element, in poly form")
{ 0 }
};
-static PyMethodDef gfn_pymethods[] = {
+static const PyMethodDef gfn_pymethods[] = {
#define METHNAME(name) gfnmeth_##name
METH (pton, "X.pton(A) -> normal-basis representation of A")
METH (ntop, "X.ntop(A) -> polynomial-basis representation of A")
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- gfn_pymethods, /* @tp_methods@ */
+ PYMETHODS(gfn), /* @tp_methods@ */
0, /* @tp_members@ */
- gfn_pygetset, /* @tp_getset@ */
+ PYGETSET(gfn), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
/*----- Glue --------------------------------------------------------------*/
-static PyMethodDef methods[] = {
+static const PyMethodDef methods[] = {
#define METHNAME(func) meth_##func
KWMETH(_MP_fromstring, "fromstring(STR, [radix = 0]) -> (X, REST)\n"
" Parse STR as a large integer, according to RADIX. If RADIX is\n"
RETURN_ME;
}
-static PyMethodDef pixie_pymethods[] = {
+static const PyMethodDef pixie_pymethods[] = {
#define METHNAME(name) pixmeth_##name
KWMETH(read, "P.read(TAG, [mode = PMODE_READ]) -> STRING")
METH (set, "P.set(TAG, PHRASE)")
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- pixie_pymethods, /* @tp_methods@ */
+ PYMETHODS(pixie), /* @tp_methods@ */
0, /* @tp_members@ */
0, /* @tp_getset@ */
0, /* @tp_base@ */
return (rc);
}
-static PyMethodDef methods[] = {
+static const PyMethodDef methods[] = {
#define METHNAME(name) meth_##name
KWMETH(ppread, "ppread(TAG, [mode = PMODE_READ]) -> STRING")
METH (ppcancel, "ppcancel(TAG)")
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")
{ 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)")
{ 0 }
};
-static PyNumberMethods pfilt_pynumber = {
+static const PyNumberMethods pfilt_pynumber = {
0, /* @nb_add@ */
0, /* @nb_subtract@ */
0, /* @nb_multiply@ */
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_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- pfilt_pymethods, /* @tp_methods@ */
+ PYMETHODS(pfilt), /* @tp_methods@ */
0, /* @tp_members@ */
- pfilt_pygetset, /* @tp_getset@ */
+ PYGETSET(pfilt), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
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")
{ 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")
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- rabin_pymethods, /* @tp_methods@ */
+ PYMETHODS(rabin), /* @tp_methods@ */
0, /* @tp_members@ */
- rabin_pygetset, /* @tp_getset@ */
+ PYGETSET(rabin), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
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")
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@ */
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")
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@ */
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, /* @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@ */
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, /* @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@ */
/*----- Global stuff ------------------------------------------------------*/
-static PyMethodDef methods[] = {
+static const PyMethodDef methods[] = {
#define METHNAME(name) meth_##name
METH (_PrimeFilter_smallfactor, "smallfactor(X) -> PGRC")
METH (_RabinMiller_iters, "iters(NBITS) -> NITERS")
return (rc);
}
-static PyMethodDef dsapub_pymethods[] = {
+static const PyMethodDef dsapub_pymethods[] = {
#define METHNAME(name) dsameth_##name
METH (beginhash, "D.beginhash() -> hash object")
METH (endhash, "D.endhash(H) -> BYTES")
{ 0 }
};
-static PyMethodDef dsapriv_pymethods[] = {
+static const PyMethodDef dsapriv_pymethods[] = {
#define METHNAME(name) dsameth_##name
KWMETH(sign, "D.sign(MSG, [k = K]) -> R, S")
#undef METHNAME
{ 0 }
};
-static PyMemberDef dsapub_pymembers[] = {
+static const PyMemberDef dsapub_pymembers[] = {
#define MEMBERSTRUCT dsa_pyobj
MEMBER(G, T_OBJECT, READONLY, "D.G -> group to work in")
MEMBER(p, T_OBJECT, READONLY, "D.p -> public key (group element")
{ 0 }
};
-static PyMemberDef dsapriv_pymembers[] = {
+static const PyMemberDef dsapriv_pymembers[] = {
#define MEMBERSTRUCT dsa_pyobj
MEMBER(u, T_OBJECT, READONLY, "D.u -> private key (exponent)")
#undef MEMBERSTRUCT
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- dsapub_pymethods, /* @tp_methods@ */
- dsapub_pymembers, /* @tp_members@ */
+ PYMETHODS(dsapub), /* @tp_methods@ */
+ PYMEMBERS(dsapub), /* @tp_members@ */
0, /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- dsapriv_pymethods, /* @tp_methods@ */
- dsapriv_pymembers, /* @tp_members@ */
+ PYMETHODS(dsapriv), /* @tp_methods@ */
+ PYMEMBERS(dsapriv), /* @tp_members@ */
0, /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
return (rc);
}
-static PyMethodDef kcdsapub_pymethods[] = {
+static const PyMethodDef kcdsapub_pymethods[] = {
#define METHNAME(name) kcdsameth_##name
METH (beginhash, "D.beginhash() -> hash object")
METH (endhash, "D.endhash(H) -> BYTES")
{ 0 }
};
-static PyMethodDef kcdsapriv_pymethods[] = {
+static const PyMethodDef kcdsapriv_pymethods[] = {
#define METHNAME(name) kcdsameth_##name
KWMETH(sign, "D.sign(MSG, [k = K]) -> R, S")
#undef METHNAME
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- kcdsapub_pymethods, /* @tp_methods@ */
- dsapub_pymembers, /* @tp_members@ */
+ PYMETHODS(kcdsapub), /* @tp_methods@ */
+ PYMEMBERS(dsapub), /* @tp_members@ */
0, /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- kcdsapriv_pymethods, /* @tp_methods@ */
- dsapriv_pymembers, /* @tp_members@ */
+ PYMETHODS(kcdsapriv), /* @tp_methods@ */
+ PYMEMBERS(dsapriv), /* @tp_members@ */
0, /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
return (rc);
}
-static PyGetSetDef rsapub_pygetset[] = {
+static const PyGetSetDef rsapub_pygetset[] = {
#define GETSETNAME(op, name) rsa##op##_##name
GET (n, "R.n -> N")
GET (e, "R.e -> E")
{ 0 }
};
-static PyMethodDef rsapub_pymethods[] = {
+static const PyMethodDef rsapub_pymethods[] = {
#define METHNAME(name) rsameth_##name
METH (pubop, "R.pubop(X) -> X^E (mod N)")
#undef METHNAME
{ 0 }
};
-static PyGetSetDef rsapriv_pygetset[] = {
+static const PyGetSetDef rsapriv_pygetset[] = {
#define GETSETNAME(op, name) rsa##op##_##name
GET (d, "R.d -> D")
GET (p, "R.p -> P")
{ 0 }
};
-static PyMethodDef rsapriv_pymethods[] = {
+static const PyMethodDef rsapriv_pymethods[] = {
#define METHNAME(name) rsameth_##name
KWMETH(privop, "R.privop(X, [rng = None]) -> X^D (mod N)")
#undef METHNAME
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- rsapub_pymethods, /* @tp_methods@ */
+ PYMETHODS(rsapub), /* @tp_methods@ */
0, /* @tp_members@ */
- rsapub_pygetset, /* @tp_getset@ */
+ PYGETSET(rsapub), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- rsapriv_pymethods, /* @tp_methods@ */
+ PYMETHODS(rsapriv), /* @tp_methods@ */
0, /* @tp_members@ */
- rsapriv_pygetset, /* @tp_getset@ */
+ PYGETSET(rsapriv), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
/*----- Global stuff ------------------------------------------------------*/
-static PyMethodDef methods[] = {
+static const PyMethodDef methods[] = {
#define METHNAME(name) meth_##name
KWMETH(_p1crypt_encode, 0)
KWMETH(_p1crypt_decode, 0)
0 /* @tp_is_gc@ */
};
-PySequenceMethods gmap_pysequence = {
+const PySequenceMethods gmap_pysequence = {
0, /* @sq_length@ */
0, /* @sq_concat@ */
0, /* @sq_repeat@ */
return (rc);
}
-PyMethodDef gmap_pymethods[] = {
+const PyMethodDef gmap_pymethods[] = {
GMAP_METHODS
{ 0 }
};
/*----- Populating modules ------------------------------------------------*/
PyObject *mkexc(PyObject *mod, PyObject *base,
- const char *name, PyMethodDef *mm)
+ const char *name, const PyMethodDef *mm)
{
PyObject *nameobj = 0;
PyObject *dict = 0;
if (mm) {
while (mm->ml_name) {
- if ((func = PyCFunction_NewEx(mm, 0, mod)) == 0 ||
+ if ((func = PyCFunction_NewEx((/*unconst*/ PyMethodDef *)mm,
+ 0, mod)) == 0 ||
(meth = PyMethod_New(func, 0, exc)) == 0 ||
PyDict_SetItemString(dict, mm->ml_name, meth))
goto fail;
#define MEMBER(name, ty, f, doc) \
{ #name, ty, offsetof(MEMBERSTRUCT, name), f, doc },
+/* Wrappers for filling in pointers in a `PyTypeObject' structure, (a)
+ * following Pyke naming convention, and (b) stripping `const' from the types
+ * without losing type safety.
+ */
+#define UNCONST_TYPE_SLOT(type, suffix, op, ty) \
+ CONVERT_CAREFULLY(type *, const type *, op ty##_py##suffix)
+#define PYGETSET(ty) UNCONST_TYPE_SLOT(PyGetSetDef, getset, NOTHING, ty)
+#define PYMETHODS(ty) UNCONST_TYPE_SLOT(PyMethodDef, methods, NOTHING, ty)
+#define PYMEMBERS(ty) UNCONST_TYPE_SLOT(PyMemberDef, members, NOTHING, ty)
+#define PYNUMBER(ty) UNCONST_TYPE_SLOT(PyNumberMethods, number, &, ty)
+#define PYSEQUENCE(ty) UNCONST_TYPE_SLOT(PySequenceMethods, sequence, &, ty)
+#define PYMAPPING(ty) UNCONST_TYPE_SLOT(PyMappingMethods, mapping, &, ty)
+#define PYBUFFER(ty) UNCONST_TYPE_SLOT(PyBufferProcs, buffer, &, ty)
+
/*----- Populating modules ------------------------------------------------*/
extern PyObject *modname;
/* The overall module object. */
extern PyObject *mkexc(PyObject */*mod*/, PyObject */*base*/,
- const char */*name*/, PyMethodDef */*methods*/);
+ const char */*name*/, const PyMethodDef */*methods*/);
/* Make and return an exception class called NAME, which will end up in
* module MOD (though it is not added at this time). The new class is a
* subclass of BASE. Attach the METHODS to it.
/* Mapping protocol implementation. */
extern Py_ssize_t gmap_pysize(PyObject *); /* for `mp_length' */
-extern PySequenceMethods gmap_pysequence; /* for `tp_as_sequence' */
-extern PyMethodDef gmap_pymethods[]; /* all the standard methods */
+extern const PySequenceMethods gmap_pysequence; /* for `tp_as_sequence' */
+extern const PyMethodDef gmap_pymethods[]; /* all the standard methods */
/*----- That's all, folks -------------------------------------------------*/
static PyObject *grget_cryptop(PyObject *me, void *hunoz)
{ return (grand_check(me) ? 0 : getbool(GRAND_R(me)->ops->f & GRAND_CRYPTO)); }
-static PyGetSetDef grand_pygetset[] = {
+static const PyGetSetDef grand_pygetset[] = {
#define GETSETNAME(op, name) gr##op##_##name
GET (name, "R.name -> name of this kind of generator")
GET (cryptop, "R.cryptop -> flag: cryptographically strong?")
{ 0 }
};
-static PyMethodDef grand_pymethods[] = {
+static const PyMethodDef grand_pymethods[] = {
#define METHNAME(name) grmeth_##name
METH (byte, "R.byte() -> BYTE")
METH (word, "R.word() -> WORD")
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- grand_pymethods, /* @tp_methods@ */
+ PYMETHODS(grand), /* @tp_methods@ */
0, /* @tp_members@ */
- grand_pygetset, /* @tp_getset@ */
+ PYGETSET(grand), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
return (rc);
}
-static PyMethodDef truerand_pymethods[] = {
+static const PyMethodDef truerand_pymethods[] = {
#define METHNAME(name) trmeth_##name
METH (gate, "R.gate()")
METH (stretch, "R.stretch()")
return (PyInt_FromLong(r->ops->misc(r, RAND_GOODBITS)));
}
-static PyGetSetDef truerand_pygetset[] = {
+static const PyGetSetDef truerand_pygetset[] = {
#define GETSETNAME(op, name) tr##op##_##name
GET (goodbits, "R.goodbits -> good bits of entropy remaining")
#undef GETSETNAME
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- truerand_pymethods, /* @tp_methods@ */
+ PYMETHODS(truerand), /* @tp_methods@ */
0, /* @tp_members@ */
- truerand_pygetset, /* @tp_getset@ */
+ PYGETSET(truerand), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
RETURN_ME;
}
-static PyGetSetDef gccrand_pygetset[] = {
+static const PyGetSetDef gccrand_pygetset[] = {
#define GETSETNAME(op, name) gccr##op##_##name
GET (keysz, "CR.keysz -> acceptable key sizes")
GET (name, "CR.name -> name of this kind of generator")
{ 0 }
};
-static PyMethodDef gclatinrand_pymethods[] = {
+static const PyMethodDef gclatinrand_pymethods[] = {
#define METHNAME(name) gclrmeth_##name
METH (tell, "R.tell() -> OFF")
METH (seek, "R.seek(OFF)")
0, /* @tp_iternext@ */
0, /* @tp_methods@ */
0, /* @tp_members@ */
- gccrand_pygetset, /* @tp_getset@ */
+ PYGETSET(gccrand), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- gclatinrand_pymethods, /* @tp_methods@ */
+ PYMETHODS(gclatinrand), /* @tp_methods@ */
0, /* @tp_members@ */
0, /* @tp_getset@ */
0, /* @tp_base@ */
return (rc);
}
-static PyGetSetDef dsarand_pygetset[] = {
+static const PyGetSetDef dsarand_pygetset[] = {
#define GETSETNAME(op, name) dr##op##_##name
GET (seed, "R.seed -> current generator seed")
#undef GETSETNAME
0, /* @tp_iternext@ */
0, /* @tp_methods@ */
0, /* @tp_members@ */
- dsarand_pygetset, /* @tp_getset@ */
+ PYGETSET(dsarand), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
return (PyInt_FromLong(r->ops->misc(r, BBS_STEPSZ)));
}
-static PyMethodDef bbs_pymethods[] = {
+static const PyMethodDef bbs_pymethods[] = {
#define METHNAME(name) bbsmeth_##name
METH (step, "R.step(): steps the generator (not useful)")
METH (bits, "R.bits(N) -> W: returns N bits (<= 32) from the generator")
{ 0 }
};
-static PyGetSetDef bbs_pygetset[] = {
+static const PyGetSetDef bbs_pygetset[] = {
#define GETSETNAME(op, name) bbs##op##_##name
GET (n, "R.n -> Blum modulus")
GETSET(x, "R.x -> current seed value")
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- bbs_pymethods, /* @tp_methods@ */
+ PYMETHODS(bbs), /* @tp_methods@ */
0, /* @tp_members@ */
- bbs_pygetset, /* @tp_getset@ */
+ PYGETSET(bbs), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
static PyObject *bpget_q(PyObject *me, void *hunoz)
{ return (mp_pywrap(MP_COPY(BBSPRIV_BP(me)->q))); }
-static PyMethodDef bbspriv_pymethods[] = {
+static const PyMethodDef bbspriv_pymethods[] = {
#define METHNAME(name) bpmeth_##name
METH (ff, "R.ff(N): fast-forward N places")
METH (rew, "R.rew(N): rewind N places")
{ 0 }
};
-static PyGetSetDef bbspriv_pygetset[] = {
+static const PyGetSetDef bbspriv_pygetset[] = {
#define GETSETNAME(op, name) bp##op##_##name
GET (n, "R.n -> Blum modulus")
GET (p, "R.p -> one of the factors of the modulus")
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- bbspriv_pymethods, /* @tp_methods@ */
+ PYMETHODS(bbspriv), /* @tp_methods@ */
0, /* @tp_members@ */
- bbspriv_pygetset, /* @tp_getset@ */
+ PYGETSET(bbspriv), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
/*----- Global stuff ------------------------------------------------------*/
-static PyMethodDef methods[] = {
+static const PyMethodDef methods[] = {
#define METHNAME(name) meth_##name
KWMETH(_BBSPriv_generate, "generate(NBITS, [event = pgen_nullev], "
"[rng = rand], [nsteps = 0], [seed = 2]) -> R")
static PyObject *gfsget_size(PyObject *me, void *hunoz)
{ return (PyInt_FromLong(GFSHARE_S(me)->sz)); }
-static PyGetSetDef gfshare_pygetset[]= {
+static const PyGetSetDef gfshare_pygetset[]= {
#define GETSETNAME(op, name) gfs##op##_##name
GET (threshold, "S.threshold -> THRESHOLD")
GET (size, "S.size -> SECRETSZ")
0, /* @tp_iternext@ */
0, /* @tp_methods@ */
0, /* @tp_members@ */
- gfshare_pygetset, /* @tp_getset@ */
+ PYGETSET(gfshare), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
return (rc);
}
-static PyMethodDef gfsharesplit_pymethods[] = {
+static const PyMethodDef gfsharesplit_pymethods[] = {
#define METHNAME(name) gfsmeth_##name
METH (get, "S.get(I) -> SHARE")
#undef METHNAME
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- gfsharesplit_pymethods, /* @tp_methods@ */
+ PYMETHODS(gfsharesplit), /* @tp_methods@ */
0, /* @tp_members@ */
0, /* @tp_getset@ */
0, /* @tp_base@ */
return (rc);
}
-static PyMethodDef gfsharejoin_pymethods[] = {
+static const PyMethodDef gfsharejoin_pymethods[] = {
#define METHNAME(name) gfsmeth_##name
METH (addedp, "S.addedp(I) -> BOOL")
METH (add, "S.add(I, SHARE) -> REMAIN")
static PyObject *gfsget_remain(PyObject *me, void *hunoz)
{ return (PyInt_FromLong(GFSHARE_S(me)->t - GFSHARE_S(me)->i)); }
-static PyGetSetDef gfsharejoin_pygetset[]= {
+static const PyGetSetDef gfsharejoin_pygetset[]= {
#define GETSETNAME(op, name) gfs##op##_##name
GET (remain, "S.remain -> REMAIN")
#undef GETSETNAME
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- gfsharejoin_pymethods, /* @tp_methods@ */
+ PYMETHODS(gfsharejoin), /* @tp_methods@ */
0, /* @tp_members@ */
- gfsharejoin_pygetset, /* @tp_getset@ */
+ PYGETSET(gfsharejoin), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
static PyObject *sget_modulus(PyObject *me, void *hunoz)
{ return (mp_pywrap(SHARE_S(me)->p)); }
-static PyGetSetDef share_pygetset[]= {
+static const PyGetSetDef share_pygetset[]= {
#define GETSETNAME(op, name) s##op##_##name
GET (threshold, "S.threshold -> THRESHOLD")
GET (modulus, "S.modulus -> MODULUS")
0, /* @tp_iternext@ */
0, /* @tp_methods@ */
0, /* @tp_members@ */
- share_pygetset, /* @tp_getset@ */
+ PYGETSET(share), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */
return (rc);
}
-static PyMethodDef sharesplit_pymethods[] = {
+static const PyMethodDef sharesplit_pymethods[] = {
#define METHNAME(name) smeth_##name
METH (get, "S.get(I) -> SHARE")
#undef METHNAME
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- sharesplit_pymethods, /* @tp_methods@ */
+ PYMETHODS(sharesplit), /* @tp_methods@ */
0, /* @tp_members@ */
0, /* @tp_getset@ */
0, /* @tp_base@ */
return (rc);
}
-static PyMethodDef sharejoin_pymethods[] = {
+static const PyMethodDef sharejoin_pymethods[] = {
#define METHNAME(name) smeth_##name
METH (addedp, "S.addedp(I) -> BOOL")
METH (add, "S.add(I, SHARE) -> REMAIN")
static PyObject *sget_remain(PyObject *me, void *hunoz)
{ return (PyInt_FromLong(SHARE_S(me)->t - SHARE_S(me)->i)); }
-static PyGetSetDef sharejoin_pygetset[]= {
+static const PyGetSetDef sharejoin_pygetset[]= {
#define GETSETNAME(op, name) s##op##_##name
GET (remain, "S.remain -> REMAIN")
#undef GETSETNAME
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- sharejoin_pymethods, /* @tp_methods@ */
+ PYMETHODS(sharejoin), /* @tp_methods@ */
0, /* @tp_members@ */
- sharejoin_pygetset, /* @tp_getset@ */
+ PYGETSET(sharejoin), /* @tp_getset@ */
0, /* @tp_base@ */
0, /* @tp_dict@ */
0, /* @tp_descr_get@ */