[pypy-commit] pypy dynamic-specialized-tuple: metaprogram

alex_gaynor noreply at buildbot.pypy.org
Thu Mar 15 17:58:55 CET 2012


Author: Alex Gaynor <alex.gaynor at gmail.com>
Branch: dynamic-specialized-tuple
Changeset: r53680:52c4765a9552
Date: 2012-03-15 09:58 -0700
http://bitbucket.org/pypy/pypy/changeset/52c4765a9552/

Log:	metaprogram

diff --git a/pypy/rlib/rerased_raw.py b/pypy/rlib/rerased_raw.py
--- a/pypy/rlib/rerased_raw.py
+++ b/pypy/rlib/rerased_raw.py
@@ -92,29 +92,20 @@
     def method_getshape(self):
         return annmodel.SomeString(can_be_None=False)
 
-    def method_getint(self, s_idx):
-        self._check_idx(s_idx)
-        return annmodel.SomeInteger()
+    def _typed_annotate_getset(s_type):
+        def method_get(self, s_idx):
+            self._check_idx(s_idx)
+            return s_type
+        def method_set(self, s_idx, s_v):
+            self._check_idx(s_idx)
+            assert s_type.contains(s_v)
+        return method_get, method_set
 
-    def method_setint(self, s_idx, s_v):
-        self._check_idx(s_idx)
-        assert annmodel.SomeInteger().contains(s_v)
-
-    def method_getbool(self, s_idx):
-        self._check_idx(s_idx)
-        return annmodel.SomeBool()
-
-    def method_setbool(self, s_idx, s_v):
-        self._check_idx(s_idx)
-        assert annmodel.SomeBool().contains(s_v)
-
-    def method_getfloat(self, s_idx):
-        self._check_idx(s_idx)
-        return annmodel.SomeFloat()
-
-    def method_setfloat(self, s_idx, s_f):
-        self._check_idx(s_idx)
-        assert annmodel.SomeFloat().contains(s_f)
+    method_getint, method_setint = _typed_annotate_getset(annmodel.SomeInteger())
+    method_getbool, method_setbool = _typed_annotate_getset(annmodel.SomeBool())
+    method_getfloat, method_setfloat = _typed_annotate_getset(annmodel.SomeFloat())
+    method_getstr, method_setstr = _typed_annotate_getset(annmodel.SomeString())
+    method_getunicode, method_setunicode = _typed_annotate_getset(annmodel.SomeUnicodeString())
 
     def method_getinstance(self, s_idx, s_cls):
         self._check_idx(s_idx)
@@ -127,29 +118,12 @@
         self._check_idx(s_idx)
         assert isinstance(s_obj, annmodel.SomeInstance)
 
-    def method_getstr(self, s_idx):
-        self._check_idx(s_idx)
-        return annmodel.SomeString()
-
-    def method_setstr(self, s_idx, s_s):
-        self._check_idx(s_idx)
-        assert annmodel.SomeString().contains(s_s)
-
-    def method_getunicode(self, s_idx):
-        self._check_idx(s_idx)
-        return annmodel.SomeUnicodeString()
-
-    def method_setunicode(self, s_idx, s_u):
-        self._check_idx(s_idx)
-        assert annmodel.SomeUnicodeString().contains(s_u)
-
 
 class __extend__(pairtype(SomeUntypedStorage, SomeUntypedStorage)):
     def union((self, other)):
         return SomeUntypedStorage()
 
 
-
 UNTYPEDSTORAGE = lltype.GcStruct("untypedstorage",
     ("shape", lltype.Ptr(STR)),
     ("data", lltype.Array(llmemory.Address)),


More information about the pypy-commit mailing list