chiark / gitweb /
pock: Use floor division on integers.
[catacomb-python] / field.c
diff --git a/field.c b/field.c
index 1ff5ed288b3378197064df7fbdd4a89bc808f931..fa424df422235551726bfa22d58e6535fbf290b9 100644 (file)
--- a/field.c
+++ b/field.c
@@ -218,7 +218,7 @@ end:
   return (rc);
 }
 
-static long fe_pyhash(PyObject *me)
+static Py_hash_t fe_pyhash(PyObject *me)
   { return (mphash(FE_X(me))); }
 
 static int fe_pycoerce(PyObject **x, PyObject **y)
@@ -393,8 +393,8 @@ static const PyNumberMethods fe_pynumber = {
   0,                                   /* @nb_inplace_true_divide@ */
 };
 
-static PyTypeObject fe_pytype_skel = {
-  PyObject_HEAD_INIT(0) 0,             /* Header */
+static const PyTypeObject fe_pytype_skel = {
+  PyVarObject_HEAD_INIT(0, 0)          /* Header */
   "FE",                                        /* @tp_name@ */
   sizeof(fe_pyobj),                    /* @tp_basicsize@ */
   0,                                   /* @tp_itemsize@ */
@@ -512,7 +512,7 @@ static PyObject *fget_noctets(PyObject *me, void *hunoz)
   { return (PyInt_FromLong(FIELD_F(me)->noctets)); }
 
 static PyObject *fget_name(PyObject *me, void *hunoz)
-  { return (PyString_FromString(F_NAME(FIELD_F(me)))); }
+  { return (TEXT_FROMSTR(F_NAME(FIELD_F(me)))); }
 
 static PyObject *fget_type(PyObject *me, void *hunoz)
   { return (PyInt_FromLong(F_TYPE(FIELD_F(me)))); }
@@ -539,8 +539,8 @@ static const PyMethodDef field_pymethods[] = {
   { 0 }
 };
 
-static PyTypeObject field_pytype_skel = {
-  PyObject_HEAD_INIT(0) 0,             /* Header */
+static const PyTypeObject field_pytype_skel = {
+  PyVarObject_HEAD_INIT(0, 0)          /* Header */
   "Field",                             /* @tp_name@ */
   sizeof(field_pyobj),                 /* @tp_basicsize@ */
   0,                                   /* @tp_itemsize@ */
@@ -617,8 +617,8 @@ static const PyGetSetDef primefield_pygetset[] = {
 #undef GETSETNAME
 };
 
-static PyTypeObject primefield_pytype_skel = {
-  PyObject_HEAD_INIT(0) 0,             /* Header */
+static const PyTypeObject primefield_pytype_skel = {
+  PyVarObject_HEAD_INIT(0, 0)          /* Header */
   "PrimeField",                                /* @tp_name@ */
   sizeof(field_pyobj),                 /* @tp_basicsize@ */
   0,                                   /* @tp_itemsize@ */
@@ -684,8 +684,8 @@ end:
   return (0);
 }
 
-static PyTypeObject niceprimefield_pytype_skel = {
-  PyObject_HEAD_INIT(0) 0,             /* Header */
+static const PyTypeObject niceprimefield_pytype_skel = {
+  PyVarObject_HEAD_INIT(0, 0)          /* Header */
   "NicePrimeField",                    /* @tp_name@ */
   sizeof(field_pyobj),                 /* @tp_basicsize@ */
   0,                                   /* @tp_itemsize@ */
@@ -748,8 +748,8 @@ static const PyGetSetDef binfield_pygetset[] = {
   { 0 }
 };
 
-static PyTypeObject binfield_pytype_skel = {
-  PyObject_HEAD_INIT(0) 0,             /* Header */
+static const PyTypeObject binfield_pytype_skel = {
+  PyVarObject_HEAD_INIT(0, 0)          /* Header */
   "BinField",                          /* @tp_name@ */
   sizeof(field_pyobj),                 /* @tp_basicsize@ */
   0,                                   /* @tp_itemsize@ */
@@ -814,8 +814,8 @@ end:
   return (0);
 }
 
-static PyTypeObject binpolyfield_pytype_skel = {
-  PyObject_HEAD_INIT(0) 0,             /* Header */
+static const PyTypeObject binpolyfield_pytype_skel = {
+  PyVarObject_HEAD_INIT(0, 0)          /* Header */
   "BinPolyField",                      /* @tp_name@ */
   sizeof(field_pyobj),                 /* @tp_basicsize@ */
   0,                                   /* @tp_itemsize@ */
@@ -893,8 +893,8 @@ static const PyGetSetDef binnormfield_pygetset[] = {
   { 0 }
 };
 
-static PyTypeObject binnormfield_pytype_skel = {
-  PyObject_HEAD_INIT(0) 0,             /* Header */
+static const PyTypeObject binnormfield_pytype_skel = {
+  PyVarObject_HEAD_INIT(0, 0)          /* Header */
   "BinNormField",                      /* @tp_name@ */
   sizeof(field_pyobj),                 /* @tp_basicsize@ */
   0,                                   /* @tp_itemsize@ */
@@ -943,6 +943,11 @@ static PyTypeObject binnormfield_pytype_skel = {
 
 /*----- Setup -------------------------------------------------------------*/
 
+static const struct nameval consts[] = {
+  CONST(FTY_PRIME), CONST(FTY_BINARY),
+  { 0 }
+};
+
 void field_pyinit(void)
 {
   INITTYPE(fe, root);
@@ -963,6 +968,7 @@ void field_pyinsert(PyObject *mod)
   INSERT("BinField", binfield_pytype);
   INSERT("BinPolyField", binpolyfield_pytype);
   INSERT("BinNormField", binnormfield_pytype);
+  setconstants(mod, consts);
 }
 
 /*----- That's all, folks -------------------------------------------------*/