X-Git-Url: https://git.distorted.org.uk/~mdw/catacomb-python/blobdiff_plain/8ddd7c8f0137996e42ff9970e99d036a465ce9e3..b115b0c0883c2af8170b0e733bb1c47b40f2647e:/catacomb-python.h diff --git a/catacomb-python.h b/catacomb-python.h index 4c7ced4..da6a8fe 100644 --- a/catacomb-python.h +++ b/catacomb-python.h @@ -136,24 +136,14 @@ MODULES(DECLARE_MODINIT) /* 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,