X-Git-Url: https://git.distorted.org.uk/~mdw/mLib-python/blobdiff_plain/d8d81d1b049836f7d4fae7b0077a8ce9e2fc43ac..HEAD:/mapping.pyx diff --git a/mapping.pyx b/mapping.pyx index 551261e..b044ed6 100644 --- a/mapping.pyx +++ b/mapping.pyx @@ -1,29 +1,27 @@ -# -*-pyrex-*- -# -# $Id$ -# -# Common mapping stuff -# -# (c) 2005 Straylight/Edgeware -# +### -*-pyrex-*- +### +### Common mapping stuff +### +### (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. +###----- 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. cdef class Mapping @@ -50,13 +48,14 @@ cdef class Mapping: raise SystemError, 'unimplemented _iter' ## Initialization - def __new__(me, *hunoz, **hukairz): + def __cinit__(me, *hunoz, **hukairz): me._init() def __init__(me, stuff = None, **kw): me.update(stuff, kw) ## Bulk update def update(me, stuff = None, **kw): + """D.update([MAP], **KW): insert mappings from MAP and KW""" cdef unsigned f if stuff is None: pass @@ -91,12 +90,16 @@ cdef class Mapping: raise KeyError, key me._del(e) def get(me, key, default = None): + """D.get(KEY, [default = None]) -> VALUE: value at KEY, or DEFAULT""" cdef void *e e = me._find(key, NULL) if not e: return default return me._value(e) def setdefault(me, key, default = None): + """ + D.setdefault(KEY, [default = None]) -> VALUE: + return value at key, or store DEFAULT at key and return that""" cdef void *e cdef unsigned f e = me._find(key, &f) @@ -106,6 +109,9 @@ cdef class Mapping: me._setval(e, default) return default def pop(me, key, default = None): + """ + D.pop(KEY, [default = None]) -> VALUE: + return value at key or DEFAULT, and remove KEY""" cdef void *e e = me._find(key, NULL) if not e: @@ -114,6 +120,7 @@ cdef class Mapping: me._del(e) return rc def popitem(me): + """D.popitem() -> KEY, VALUE: return and remove an association pair""" cdef _MapIterator i cdef void *e i = me._iter() @@ -136,13 +143,17 @@ cdef class Mapping: return l def keys(me): + """D.keys() -> LIST: return a list of known keys""" return me._list(_map_key) def values(me): + """D.values() -> LIST: return a list of known values""" return me._list(_map_value) def items(me): + """D.values() -> LIST: return a list of known (KEY, VALUE) pairs""" return me._list(_map_item) def clear(me): + """D.clear(): remove all mappings""" cdef _MapIterator i cdef void *e i = me._iter() @@ -157,10 +168,13 @@ cdef class Mapping: def __iter__(me): return MapKeyIter(me) def iterkeys(me): + """D.iterkeys() -> ITER: return iterator over keys""" return MapKeyIter(me) def itervalues(me): + """D.itervalues() -> ITER: return iterator over values""" return MapValueIter(me) def iteritems(me): + """D.iteritems() -> ITER: return iterator over (KEY, VALUE) pairs""" return MapItemIter(me) cdef class MapIterBase: @@ -169,7 +183,7 @@ cdef class MapIterBase: cdef _MapIterator i cdef int _init(me) except -1: raise TypeError, 'abstract class' - def __new__(me): + def __cinit__(me): me.i = m._iter() me._init() def __iter__(me): @@ -200,4 +214,4 @@ cdef object _map_value(Mapping m, void *e): cdef object _map_item(Mapping m, void *e): return m._key(e), m._value(e) -#----- That's all, folks ---------------------------------------------------- +###----- That's all, folks --------------------------------------------------