Consistently make keyword-lists be static and read-only.
[catacomb-python] / mp.c
diff --git a/mp.c b/mp.c
index b253dba..e0f72d4 100644 (file)
--- a/mp.c
+++ b/mp.c
@@ -527,9 +527,9 @@ static PyObject *mp_pynew(PyTypeObject *ty, PyObject *arg, PyObject *kw)
   mp *z;
   mp_pyobj *zz = 0;
   int radix = 0;
-  char *kwlist[] = { "x", "radix", 0 };
+  static const char *const kwlist[] = { "x", "radix", 0 };
 
-  if (!PyArg_ParseTupleAndKeywords(arg, kw, "O|i:new", kwlist, &x, &radix))
+  if (!PyArg_ParseTupleAndKeywords(arg, kw, "O|i:new", KWLIST, &x, &radix))
     goto end;
   if (MP_PYCHECK(x)) RETURN_OBJ(x);
   if (!good_radix_p(radix, 1)) VALERR("bad radix");
@@ -659,8 +659,8 @@ end:
 static PyObject *mpmeth_tostring(PyObject *me, PyObject *arg, PyObject *kw)
 {
   int radix = 10;
-  char *kwlist[] = { "radix", 0 };
-  if (!PyArg_ParseTupleAndKeywords(arg, kw, "|i:tostring", kwlist, &radix))
+  static const char *const kwlist[] = { "radix", 0 };
+  if (!PyArg_ParseTupleAndKeywords(arg, kw, "|i:tostring", KWLIST, &radix))
     goto end;
   if (!good_radix_p(radix, 0)) VALERR("bad radix");
   return (mp_topystring(MP_X(me), radix, 0, 0, 0));
@@ -700,11 +700,11 @@ end:
                                 PyObject *arg, PyObject *kw)           \
   {                                                                    \
     long len = -1;                                                     \
-    char *kwlist[] = { "len", 0 };                                     \
+    static const char *const kwlist[] = { "len", 0 };                                  \
     PyObject *rc = 0;                                                  \
                                                                        \
     if (!PyArg_ParseTupleAndKeywords(arg, kw, "|l:" #name,             \
-                                   kwlist, &len))                      \
+                                   KWLIST, &len))                      \
       goto end;                                                                \
     if (len < 0) {                                                     \
       len = mp_octets##c(MP_X(me));                                    \
@@ -763,10 +763,10 @@ static PyObject *mpmeth_tobuf(PyObject *me, PyObject *arg)
 static PyObject *mpmeth_primep(PyObject *me, PyObject *arg, PyObject *kw)
 {
   grand *r = &rand_global;
-  char *kwlist[] = { "rng", 0 };
+  static const char *const kwlist[] = { "rng", 0 };
   PyObject *rc = 0;
 
-  if (!PyArg_ParseTupleAndKeywords(arg, kw, "|O&", kwlist, convgrand, &r))
+  if (!PyArg_ParseTupleAndKeywords(arg, kw, "|O&", KWLIST, convgrand, &r))
     goto end;
   rc = getbool(pgen_primep(MP_X(me), r));
 end:
@@ -930,10 +930,10 @@ static PyObject *meth__MP_fromstring(PyObject *me,
   PyObject *z = 0;
   mp *zz;
   mptext_stringctx sc;
-  char *kwlist[] = { "class", "x", "radix", 0 };
+  static const char *const kwlist[] = { "class", "x", "radix", 0 };
 
   if (!PyArg_ParseTupleAndKeywords(arg, kw, "Os#|i:fromstring",
-                                  kwlist, &me, &p, &len, &r))
+                                  KWLIST, &me, &p, &len, &r))
     goto end;
   if (!good_radix_p(r, 1)) VALERR("bad radix");
   sc.buf = p; sc.lim = p + len;
@@ -1294,10 +1294,10 @@ static void mpmont_pydealloc(PyObject *me)
 static PyObject *mpmont_pynew(PyTypeObject *ty, PyObject *arg, PyObject *kw)
 {
   mpmont_pyobj *mm = 0;
-  char *kwlist[] = { "m", 0 };
+  static const char *const kwlist[] = { "m", 0 };
   mp *xx = 0;
 
-  if (!PyArg_ParseTupleAndKeywords(arg, kw, "O&:new", kwlist, convmp, &xx))
+  if (!PyArg_ParseTupleAndKeywords(arg, kw, "O&:new", KWLIST, convmp, &xx))
     goto end;
   if (!MP_POSP(xx) || !MP_ODDP(xx)) VALERR("m must be positive and odd");
   mm = (mpmont_pyobj *)ty->tp_alloc(ty, 0);
@@ -1448,10 +1448,10 @@ static PyObject *mpbarrett_pynew(PyTypeObject *ty,
                                 PyObject *arg, PyObject *kw)
 {
   mpbarrett_pyobj *mb = 0;
-  char *kwlist[] = { "m", 0 };
+  static const char *const kwlist[] = { "m", 0 };
   mp *xx = 0;
 
-  if (!PyArg_ParseTupleAndKeywords(arg, kw, "O&:new", kwlist, convmp, &xx))
+  if (!PyArg_ParseTupleAndKeywords(arg, kw, "O&:new", KWLIST, convmp, &xx))
     goto end;
   if (!MP_POSP(xx)) VALERR("m must be positive");
   mb = (mpbarrett_pyobj *)ty->tp_alloc(ty, 0);
@@ -1578,10 +1578,10 @@ static PyObject *mpreduce_pynew(PyTypeObject *ty,
 {
   mpreduce_pyobj *mr = 0;
   mpreduce r;
-  char *kwlist[] = { "m", 0 };
+  static const char *const kwlist[] = { "m", 0 };
   mp *xx = 0;
 
-  if (!PyArg_ParseTupleAndKeywords(arg, kw, "O&:new", kwlist, convmp, &xx))
+  if (!PyArg_ParseTupleAndKeywords(arg, kw, "O&:new", KWLIST, convmp, &xx))
     goto end;
   if (!MP_POSP(xx)) VALERR("m must be positive");
   if (mpreduce_create(&r, xx)) VALERR("bad modulus (must be 2^k - ...)");
@@ -1713,14 +1713,14 @@ static PyObject *mpcrt_pynew(PyTypeObject *ty, PyObject *arg, PyObject *kw)
 {
   mpcrt_mod *v = 0;
   int n, i = 0;
-  char *kwlist[] = { "mv", 0 };
+  static const char *const kwlist[] = { "mv", 0 };
   PyObject *q = 0, *x;
   mp *xx;
   mpcrt_pyobj *c = 0;
 
   if (PyTuple_Size(arg) > 1)
     q = arg;
-  else if (!PyArg_ParseTupleAndKeywords(arg, kw, "O:new", kwlist, &q))
+  else if (!PyArg_ParseTupleAndKeywords(arg, kw, "O:new", KWLIST, &q))
     goto end;
   Py_INCREF(q);
   if (!PySequence_Check(q)) TYERR("want a sequence of moduli");
@@ -1864,9 +1864,9 @@ static PyObject *gf_pynew(PyTypeObject *ty, PyObject *arg, PyObject *kw)
   mp *z;
   mp_pyobj *zz = 0;
   int radix = 0;
-  char *kwlist[] = { "x", "radix", 0 };
+  static const char *const kwlist[] = { "x", "radix", 0 };
 
-  if (!PyArg_ParseTupleAndKeywords(arg, kw, "O|i:gf", kwlist, &x, &radix))
+  if (!PyArg_ParseTupleAndKeywords(arg, kw, "O|i:gf", KWLIST, &x, &radix))
     goto end;
   if (GF_PYCHECK(x)) RETURN_OBJ(x);
   if (!good_radix_p(radix, 1)) VALERR("radix out of range");
@@ -2131,10 +2131,10 @@ static PyObject *meth__GF_fromstring(PyObject *me,
   PyObject *z = 0;
   mp *zz;
   mptext_stringctx sc;
-  char *kwlist[] = { "class", "x", "radix", 0 };
+  static const char *const kwlist[] = { "class", "x", "radix", 0 };
 
   if (!PyArg_ParseTupleAndKeywords(arg, kw, "Os#|i:fromstring",
-                                  kwlist, &me, &p, &len, &r))
+                                  KWLIST, &me, &p, &len, &r))
     goto end;
   if (!good_radix_p(r, 1)) VALERR("bad radix");
   sc.buf = p; sc.lim = p + len;
@@ -2249,10 +2249,10 @@ static PyObject *gfreduce_pynew(PyTypeObject *ty,
 {
   gfreduce_pyobj *mr = 0;
   gfreduce r;
-  char *kwlist[] = { "m", 0 };
+  static const char *const kwlist[] = { "m", 0 };
   mp *xx = 0;
 
-  if (!PyArg_ParseTupleAndKeywords(arg, kw, "O&:new", kwlist, convgf, &xx))
+  if (!PyArg_ParseTupleAndKeywords(arg, kw, "O&:new", KWLIST, convgf, &xx))
     goto end;
   if (MP_ZEROP(xx)) ZDIVERR("modulus is zero!");
   gfreduce_create(&r, xx);
@@ -2351,9 +2351,9 @@ static PyObject *gfn_pynew(PyTypeObject *ty, PyObject *arg, PyObject *kw)
 {
   mp *p = 0, *beta = 0;
   gfn_pyobj *gg = 0;
-  char *kwlist[] = { "p", "beta", 0 };
+  static const char *const kwlist[] = { "p", "beta", 0 };
 
-  if (!PyArg_ParseTupleAndKeywords(arg, kw, "O&O&:new", kwlist,
+  if (!PyArg_ParseTupleAndKeywords(arg, kw, "O&O&:new", KWLIST,
                                   convgf, &p, convgf, &beta))
     goto end;
   gg = PyObject_New(gfn_pyobj, ty);