[pypy-commit] pypy SpecialisedTuples: (mwp) use a tuple of types as parameter to make_specialised_class

mwp noreply at buildbot.pypy.org
Thu Nov 10 10:47:53 CET 2011


Author: Mark Pearse <mark.pearse at skynet.be>
Branch: SpecialisedTuples
Changeset: r49105:538c174c8197
Date: 2011-11-07 13:05 +0100
http://bitbucket.org/pypy/pypy/changeset/538c174c8197/

Log:	(mwp) use a tuple of types as parameter to make_specialised_class

diff --git a/pypy/objspace/std/specialisedtupleobject.py b/pypy/objspace/std/specialisedtupleobject.py
--- a/pypy/objspace/std/specialisedtupleobject.py
+++ b/pypy/objspace/std/specialisedtupleobject.py
@@ -64,11 +64,13 @@
     def unwrap(w_tuple, space):
         return tuple(self.tolist)
                         
-def make_specialised_class(class_name, type0, type1):
+
+def make_specialised_class(class_name, typelist):
     class cls(W_SpecialisedTupleObject):
         def __init__(self, space, val0, val1):
-            assert isinstance(val0, type0)
-            assert isinstance(val1, type1)
+            assert len(typelist) == 2
+            assert isinstance(val0, typelist[0])
+            assert isinstance(val1, typelist[1])
             self.space = space
             self.val0 = val0
             self.val1 = val1
@@ -160,13 +162,13 @@
                 return self.space.wrap(self.val1)
             raise IndexError
     cls.__name__ = class_name      
-    _specialisations.append((cls,(type0,type1)))
+    _specialisations.append((cls,typelist))
     return cls
     
     
-W_SpecialisedTupleObjectIntInt     = make_specialised_class('W_SpecialisedTupleObjectIntInt',     int,int)
-W_SpecialisedTupleObjectFloatFloat = make_specialised_class('W_SpecialisedTupleObjectFloatFloat', float,float)
-W_SpecialisedTupleObjectStrStr     = make_specialised_class('W_SpecialisedTupleObjectStrStr',     str, str)
+W_SpecialisedTupleObjectIntInt     = make_specialised_class('W_SpecialisedTupleObjectIntInt',     (int,int))
+W_SpecialisedTupleObjectFloatFloat = make_specialised_class('W_SpecialisedTupleObjectFloatFloat', (float,float))
+W_SpecialisedTupleObjectStrStr     = make_specialised_class('W_SpecialisedTupleObjectStrStr',     (str, str))
 
 registerimplementation(W_SpecialisedTupleObject)
 


More information about the pypy-commit mailing list