[pypy-svn] rev 428 - pypy/trunk/src/pypy/objspace/std
pedronis at codespeak.net
pedronis at codespeak.net
Mon May 26 12:57:47 CEST 2003
Author: pedronis
Date: Mon May 26 12:57:47 2003
New Revision: 428
Modified:
pypy/trunk/src/pypy/objspace/std/dictobject.py
Log:
added cell retrieving method
Modified: pypy/trunk/src/pypy/objspace/std/dictobject.py
==============================================================================
--- pypy/trunk/src/pypy/objspace/std/dictobject.py (original)
+++ pypy/trunk/src/pypy/objspace/std/dictobject.py Mon May 26 12:57:47 2003
@@ -32,9 +32,21 @@
self.data = [ (w_key,Cell(w_value)) for w_key,w_value in list_pairs_w ]
def non_empties(self):
- return [ (w_key,cell) for w_key,cell in self.data if not cell.is_empty()]
-
+ return [ (w_key,cell) for w_key,cell in self.data if not cell.is_empty()]
+ def _cell(self,space,w_lookup):
+ data = self.data
+ for w_key, cell in data:
+ if space.is_true(space.eq(w_lookup, w_key)):
+ break
+ else:
+ cell = Cell()
+ data.append((w_lookup,cell))
+ return cell
+
+ def cell(self,space,w_lookup):
+ return space.wrap(self._cell(space,w_lookup))
+
def dict_is_true(space, w_dict):
return not not w_dict.non_empties()
@@ -58,13 +70,8 @@
StdObjSpace.getitem.register(getitem_dict_any, W_DictObject, W_ANY)
def setitem_dict_any_any(space, w_dict, w_newkey, w_newvalue):
- data = w_dict.data
- for w_key,cell in data:
- if space.is_true(space.eq(w_newkey, w_key)):
- cell.set(w_newvalue)
- return
- # add new (key,Cell(value)) pair
- data.append((w_newkey, Cell(w_newvalue)))
+ cell = w_dict._cell(space,w_newkey)
+ cell.set(w_newvalue)
StdObjSpace.setitem.register(setitem_dict_any_any, W_DictObject, W_ANY, W_ANY)
More information about the Pypy-commit
mailing list