/* -*-c-*-
- *
- * $Id$
*
* Definitions for Catacomb bindings
*
* (c) 2004 Straylight/Edgeware
*/
-/*----- Licensing notice --------------------------------------------------*
+/*----- Licensing notice --------------------------------------------------*
*
* This file is part of the Python interface to Catacomb.
*
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* Catacomb/Python is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public License
* along with Catacomb/Python; if not, write to the Free Software Foundation,
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include <mLib/dstr.h>
#include <mLib/macros.h>
#include <mLib/quis.h>
+#include <mLib/unihash.h>
#include <catacomb/buf.h>
#include <catacomb/mpmont.h>
#include <catacomb/mpbarrett.h>
#include <catacomb/mpreduce.h>
+#include <catacomb/mp-fibonacci.h>
#include <catacomb/pgen.h>
#include <catacomb/pfilt.h>
#define VALERR(str) EXCERR(PyExc_ValueError, str)
#define TYERR(str) EXCERR(PyExc_TypeError, str)
#define ZDIVERR(str) EXCERR(PyExc_ZeroDivisionError, str)
-#define SYNERR(str) EXCERR(PyExc_SyntaxError, str)
#define SYSERR(str) EXCERR(PyExc_SystemError, str)
#define NIERR(str) EXCERR(PyExc_NotImplementedError, str)
#define INDEXERR(idx) do { \
return (0); \
}
+#if PY_VERSION_HEX < 0x02050000 /* Compatibility hack */
+# define ht_name name
+# define ht_type type
+#endif
+
#define root_pytype 0
#define type_pytype &PyType_Type
#define INITTYPE(ty, base) do { \
#define INSERT(name, ob) do { \
PyObject *_o = (PyObject *)(ob); \
- Py_INCREF(_o); \
+ Py_INCREF(_o); \
PyModule_AddObject(mod, name, _o); \
} while (0)
{ #name, ty, offsetof(MEMBERSTRUCT, name), f, doc },
#define MODULES(_) \
+ _(util) \
_(bytestring) _(buffer) \
_(rand) _(algorithms) _(pubkey) _(pgen) \
_(mp) _(field) _(ec) _(group) \
extern int convbool(PyObject *, void *);
extern PyObject *abstract_pynew(PyTypeObject *, PyObject *, PyObject *);
extern PyObject *getbool(int);
-#define DECL_GETU_(n) extern PyObject *getu##n(uint##n);
-DOUINTSZ(DECL_GETU_)
+extern PyObject *getulong(unsigned long);
extern void *newtype(PyTypeObject *, const PyTypeObject *, const char *);
-extern PyObject * mkexc(PyObject *, PyObject *, const char *, PyMethodDef *);
+extern PyObject *mkexc(PyObject *, PyObject *, const char *, PyMethodDef *);
+extern void typeready(PyTypeObject *);
extern PyTypeObject *inittype(PyTypeObject *);
extern void addmethods(const PyMethodDef *);
extern PyMethodDef *donemethods(void);
METH (items, "D.items() -> LIST") \
METH (iterkeys, "D.iterkeys() -> ITER") \
METH (itervalues, "D.itervalues() -> ITER") \
- METH (iteritems, "D.iteritems() -> ITER") \
+ METH (iteritems, "D.iteritems() -> ITER") \
KWMETH(get, "D.get(KEY, [default = None]) -> VALUE") \
#define GMAP_DOMETHODS(METH, KWMETH) \
GMAP_DOMETHODS(GMAP_METHDECL, GMAP_KWMETHDECL)
#define GMAP_ROMETHODS GMAP_DOROMETHODS(GMAP_METH, GMAP_KWMETH)
#define GMAP_METHODS GMAP_DOMETHODS(GMAP_METH, GMAP_KWMETH)
-extern int gmap_pysize(PyObject *);
+extern Py_ssize_t gmap_pysize(PyObject *);
extern PySequenceMethods gmap_pysequence;
extern PyMethodDef gmap_pymethods[];
field *f;
mp *x;
} fe_pyobj;
-
+
extern PyTypeObject *field_pytype;
extern PyTypeObject *primefield_pytype;
extern PyTypeObject *niceprimefield_pytype;
ec_info ei;
PyObject *cobj;
} ecinfo_pyobj;
-
+
extern PyTypeObject *ecinfo_pytype;
#define ECINFO_PYCHECK(o) PyObject_TypeCheck((o), ecinfo_pytype)
#define ECINFO_EI(o) (&((ecinfo_pyobj *)(o))->ei)
extern int convgmac(PyObject *, void *);
/*----- Key generation ----------------------------------------------------*/
-
+
typedef struct pfilt_pyobj {
PyObject_HEAD
pfilt f;