### -*-pyrex-*- ### ### Universal hashing interface ### ### (c) 2005 Straylight/Edgeware ### ###----- Licensing notice --------------------------------------------------- ### ### This file is part of the Python interface to mLib. ### ### mLib/Python is free software; you can redistribute it and/or modify ### 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. ### ### mLib/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 mLib/Python; if not, write to the Free Software Foundation, ### Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. def setglobalkey(uint32 k): unihash_setkey(&unihash_global, k) cdef class Key: cdef unihash_info _i cdef uint32 _k def __cinit__(me, uint32 k): unihash_setkey(&me._i, k) me._k = k property k: def __get__(me): return _u32(me._k) cdef class Unihash: cdef uint32 _a cdef readonly Key key cdef unihash_info *_i def __cinit__(me, key = None): cdef Key k me.key = key if key is None: me._i = &unihash_global else: k = key me._i = &k._i me._a = UNIHASH_INIT(me._i) def chunk(me, data): cdef void *p cdef int n PyObject_AsReadBuffer(data, &p, &n) me._a = unihash_hash(me._i, me._a, p, n) def done(me): return _u32(me._a) ###----- That's all, folks --------------------------------------------------