/* Conversions. */
extern int convmpw(PyObject *, void *);
-/* Make a dictionary of generic-crypto classes. */
-#define GEN(func, base) \
- static PyObject *func(void) \
- { \
- PyObject *d = PyDict_New(); \
- PyObject *o; \
- int i; \
- \
- for (i = 0; g##base##tab[i]; i++) { \
- o = gc##base##_pywrap(CONVERT_CAREFULLY(gc##base *, const gc##base *, \
- g##base##tab[i])); \
- PyDict_SetItemString(d, \
- (/*unconst*/ char *)g##base##tab[i]->name, \
- o); \
- Py_DECREF(o); \
- } \
- return (d); \
- }
+/* Building tables of things. */
+extern PyObject *make_algtab(const void *tab, size_t esz,
+ const char *(*namefn)(const void *),
+ PyObject *(*valfn)(const void *));
+extern PyObject *make_grouptab(const void *tab, size_t esz,
+ const char *(*namefn)(const void *),
+ int (*ixfn)(const void *),
+ PyObject *(*valfn)(int));
/* Common handling for simultaneous exponentiation. */
extern PyObject *mexp_common(PyObject *, PyObject *, size_t,