field.c: Return the binary-field polynomial as, err, a polynomial.
[catacomb-python] / field.c
diff --git a/field.c b/field.c
index 0a5d908..024c578 100644 (file)
--- a/field.c
+++ b/field.c
@@ -229,15 +229,7 @@ end:
 }
 
 static long fe_pyhash(PyObject *me)
-{
-  size_t sz = FE_F(me)->noctets;
-  uint32 h = 0xe0c127ca + FE_F(me)->ops->ty;
-  octet *p = xmalloc(sz);
-  mp_storeb(FE_X(me), p, sz);
-  h = unihash_hash(&unihash_global, h, p, sz);
-  xfree(p);
-  return (h % LONG_MAX);
-}
+  { return (mphash(FE_X(me))); }
 
 static int fe_pycoerce(PyObject **x, PyObject **y)
 {
@@ -345,8 +337,8 @@ static PyObject *feget__value(PyObject *me, void *hunoz)
 static PyGetSetDef fe_pygetset[] = {
 #define GETSETNAME(op, name) fe##op##_##name
   GET  (field,         "X.field -> field containing X")
-  GET  (value,         "X.value -> `natural' integer representation of X")
-  GET  (_value,        "X._value -> internal integer representation of X")
+  GET  (value,         "X.value -> `natural' MP/GF representation of X")
+  GET  (_value,        "X._value -> internal MP/GF representation of X")
 #undef GETSETNAME
   { 0 }
 };
@@ -533,7 +525,7 @@ static PyGetSetDef field_pygetset[] = {
 static PyMethodDef field_pymethods[] = {
 #define METHNAME(name) fmeth_##name
   METH (_adopt,        "F._adopt(X) -> FE")
-  KWMETH(rand,         "F.rand(rng = rand) -> FE, uniformly distributed")
+  KWMETH(rand,         "F.rand([rng = rand]) -> FE, uniformly distributed")
 #undef METHNAME
   { 0 }
 };
@@ -809,8 +801,11 @@ end:
   return (0);
 }
 
+static PyObject *bfget_p(PyObject *me, void *hunoz)
+  { return (gf_pywrap(MP_COPY(FIELD_F(me)->m))); }
+
 static PyGetSetDef binpolyfield_pygetset[] = {
-#define GETSETNAME(op, name) pf##op##_##name
+#define GETSETNAME(op, name) bf##op##_##name
   GET  (p,             "F.p -> field polynomial")
 #undef GETSETNAME
   { 0 }
@@ -889,7 +884,7 @@ static PyObject *bnfget_beta(PyObject *me, void *hunoz)
 }
 
 static PyGetSetDef binnormfield_pygetset[] = {
-#define GETSETNAME(op, name) pf##op##_##name
+#define GETSETNAME(op, name) bf##op##_##name
   GET  (p,             "F.p -> field polynomial")
 #undef GETSETNAME
 #define GETSETNAME(op, name) bnf##op##_##name