[pypy-commit] pypy dict-strategies: rename AbstractUnwrappedStrategy to AbtractTypedStrategy. make ObjectStrategy an AbtractTypedStrategy.
cfbolz
noreply at buildbot.pypy.org
Wed May 25 18:05:24 CEST 2011
Author: Carl Friedrich Bolz <cfbolz at gmx.de>
Branch: dict-strategies
Changeset: r44474:8b801718efea
Date: 2011-05-25 18:16 +0200
http://bitbucket.org/pypy/pypy/changeset/8b801718efea/
Log: rename AbstractUnwrappedStrategy to AbtractTypedStrategy. make
ObjectStrategy an AbtractTypedStrategy.
diff --git a/pypy/objspace/std/dictmultiobject.py b/pypy/objspace/std/dictmultiobject.py
--- a/pypy/objspace/std/dictmultiobject.py
+++ b/pypy/objspace/std/dictmultiobject.py
@@ -281,7 +281,7 @@
# concrete subclasses of the above
-class AbstractUnwrappedStrategy(object):
+class AbtractTypedStrategy(object):
_mixin_ = True
@staticmethod
@@ -320,7 +320,7 @@
def setdefault(self, w_dict, w_key, w_default):
space = self.space
if self.is_correct_type(w_key):
- return self.unerase(w_dict.dstorage).setdefault(space.unwrap(w_key), w_default)
+ return self.unerase(w_dict.dstorage).setdefault(self.unwrap(w_key), w_default)
else:
self.switch_to_object_strategy(w_dict)
return w_dict.setdefault(w_key, w_default)
@@ -341,7 +341,7 @@
return len(self.unerase(w_dict.dstorage))
def getitem_str(self, w_dict, key):
- return None
+ return self.getitem(w_dict, self.space.wrap(key))
def getitem(self, w_dict, w_key):
space = self.space
@@ -383,55 +383,32 @@
w_dict.dstorage = strategy.erase(d_new)
-class ObjectDictStrategy(DictStrategy):
+class ObjectDictStrategy(AbtractTypedStrategy, DictStrategy):
erase, unerase = rerased.new_erasing_pair("object")
erase = staticmethod(erase)
unerase = staticmethod(unerase)
+ def wrap(self, unwrapped):
+ return unwrapped
+
+ def unwrap(self, wrapped):
+ return wrapped
+
+ def is_correct_type(self, w_obj):
+ return True
+
def get_empty_storage(self):
new_dict = r_dict(self.space.eq_w, self.space.hash_w)
return self.erase(new_dict)
- def setdefault(self, w_dict, w_key, w_default):
- return self.unerase(w_dict.dstorage).setdefault(w_key, w_default)
-
- def setitem(self, w_dict, w_key, w_value):
- self.unerase(w_dict.dstorage)[w_key] = w_value
-
- def setitem_str(self, w_dict, key, w_value):
- return w_dict.setitem(self.space.wrap(key), w_value)
-
- def delitem(self, w_dict, w_key):
- del self.unerase(w_dict.dstorage)[w_key]
-
- def length(self, w_dict):
- return len(self.unerase(w_dict.dstorage))
-
- def getitem(self, w_dict, w_key):
- return self.unerase(w_dict.dstorage).get(w_key, None)
-
- def getitem_str(self, w_dict, key):
- return self.getitem(w_dict, self.space.wrap(key))
-
def iter(self, w_dict):
return RDictIteratorImplementation(self.space, w_dict)
def keys(self, w_dict):
return self.unerase(w_dict.dstorage).keys()
- def values(self, w_dict):
- return self.unerase(w_dict.dstorage).values()
-
- def items(self, w_dict):
- return [self.space.newtuple([w_key, w_val])
- for w_key, w_val in self.unerase(w_dict.dstorage).iteritems()]
-
- def popitem(self, w_dict):
- return self.unerase(w_dict.dstorage).popitem()
-
-
-class StringDictStrategy(AbstractUnwrappedStrategy, DictStrategy):
+class StringDictStrategy(AbtractTypedStrategy, DictStrategy):
erase, unerase = rerased.new_erasing_pair("string")
erase = staticmethod(erase)
More information about the pypy-commit
mailing list