- return _eget(e)
- else:
- _eset(e, default)
- return default
- def pop(me, key, default = None):
- cdef entry *e
- e = _find(&me._t, key, NULL)
- if not e:
- return default
- rc = _eget(e)
- _edel(&me._t, e)
- return rc
- def popitem(me):
- cdef entry *e
- cdef sym_iter i
- sym_mkiter(&i, &me._t)
- e = <entry *>sym_next(&i)
- if not e:
- raise ValueError, 'popitem(): table is empty'
- return _key(e), _eget(e)
- def keys(me):
- cdef sym_iter i
- cdef entry *e
- l = []
- sym_mkiter(&i, &me._t)
- while 1:
- e = <entry *>sym_next(&i)
- if not e:
- break
- l.append(_key(e))
- return l
- def values(me):
- cdef sym_iter i
- cdef entry *e
- l = []
- sym_mkiter(&i, &me._t)
- while 1:
- e = <entry *>sym_next(&i)
- if not e:
- break
- l.append(_eget(e))
- return l
- def items(me):
- cdef sym_iter i
- cdef entry *e
- l = []
- sym_mkiter(&i, &me._t)
- while 1:
- e = <entry *>sym_next(&i)
- if not e:
- break
- l.append((_key(e), _eget(e)))
- return l
- def clear(me):
- cdef sym_iter i
- cdef entry *e
- sym_mkiter(&i, &me._t)
- while 1:
- e = <entry *>sym_next(&i)
- if not e:
- break
- _edel(&me._t, e)
- return me
- def __dealloc__(me):
- cdef sym_iter i
- cdef entry *e
- sym_mkiter(&i, &me._t)
- while 1:
- e = <entry *>sym_next(&i)
- if not e:
- break
- _edel(&me._t, e)
- sym_destroy(&me._t)
- def iterkeys(me):
- return KeyIter(me)
- def __iter__(me):
- return KeyIter(me)
- def itervalues(me):
- return ValueIter(me)
- def iteritems(me):
- return ItemIter(me)
- def update(me, stuff = None, **kw):
- cdef unsigned f
- if stuff is None:
- pass
- elif hasattr(stuff, 'itemiter'):
- for k, v in stuff.itemiter:
- _eset(_find(&me._t, k, &f), v)
- elif hasattr(stuff, 'keys'):
- for k in stuff.keys():
- _eset(_find(&me._t, k, &f), stuff[k])