[pypy-svn] r40417 - in pypy/dist/pypy/module/cclp: . constraint

ale at codespeak.net ale at codespeak.net
Tue Mar 13 10:48:16 CET 2007


Author: ale
Date: Tue Mar 13 10:48:15 2007
New Revision: 40417

Modified:
   pypy/dist/pypy/module/cclp/constraint/constraint.py
   pypy/dist/pypy/module/cclp/constraint/domain.py
   pypy/dist/pypy/module/cclp/constraint/variable.py
   pypy/dist/pypy/module/cclp/variable.py
Log:
Fixes for not demoting methods - still not translatable with --faasen

Modified: pypy/dist/pypy/module/cclp/constraint/constraint.py
==============================================================================
--- pypy/dist/pypy/module/cclp/constraint/constraint.py	(original)
+++ pypy/dist/pypy/module/cclp/constraint/constraint.py	Tue Mar 13 10:48:15 2007
@@ -10,7 +10,7 @@
 from pypy.objspace.std.dictobject import W_DictObject
 
 from pypy.module.cclp.types import W_Constraint, W_AbstractDomain, W_Root, \
-     W_CVar as W_Variable
+     W_Var, W_CVar as W_Variable
 
 from pypy.objspace.std.model import StdObjSpaceMultiMethod
 
@@ -30,6 +30,7 @@
                                                   self._space.newint(1)))
         self._names_to_vars = {}
         for var in w_variables.wrappeditems:
+            assert isinstance(var, W_Var)
             self._names_to_vars[var.name_w()] = var
         self._variables = w_variables.wrappeditems #unwrap once ...
 
@@ -57,10 +58,12 @@
     assert isinstance(w_variables, W_ListObject)
     assert isinstance(w_formula, W_StringObject)
     items = object_space.unpackiterable(w_variables)
+    lst = []
     for it in items:
         assert isinstance(it, W_Variable)
-    var_ids = ','.join([var.name_w()
-                        for var in items]) 
+        lst.append(it.name_w())
+    var_ids = ','.join(lst) #[var.name_w()
+                        # for var in items]) 
     func_head = 'lambda ' + var_ids + ':'
     expr = func_head + object_space.str_w(w_formula)
     func_obj = ev(object_space, object_space.wrap(expr), object_space.newdict(),
@@ -103,7 +106,7 @@
         result_cache = self._space.newdict()
         for var in self._variables:
             assert isinstance(var, W_Variable)
-            result_cache.content[var.w_name()] = self._space.newdict()
+            self._space.setitem(result_cache, var.w_name(), self._space.newdict())
         return result_cache
 
     def _assign_values(self):

Modified: pypy/dist/pypy/module/cclp/constraint/domain.py
==============================================================================
--- pypy/dist/pypy/module/cclp/constraint/domain.py	(original)
+++ pypy/dist/pypy/module/cclp/constraint/domain.py	Tue Mar 13 10:48:15 2007
@@ -75,7 +75,7 @@
     def remove_value(self, w_value):
         """Remove value of domain and check for consistency"""
         assert isinstance(w_value, baseobjspace.W_Root)
-        del self._values.content[w_value]
+        self._space.delitem(self._values, w_value)
         self._value_removed()
 
     def w_remove_values(self, w_values):
@@ -91,7 +91,7 @@
         assert isinstance(values, list)
         if len(values) > 0:
             for w_val in values:
-                del self._values.content[w_val]
+                self._space.delitem(self._values,w_val)
             self._value_removed()
 
     def w_size(self):
@@ -110,7 +110,7 @@
         return self._space.newlist(self.get_values())
 
     def get_values(self):
-        return [x for x in self._values.content.keys()]
+        return [x for x in self._space.unpackiterable(self._values)]
         
     def __repr__(self):
         return '<FD %s>' % str(self.w_get_values())
@@ -143,8 +143,8 @@
 
 
 def intersection__FiniteDomain_FiniteDomain(space, w_fd1, w_fd2):
-    w_v1 = w_fd1._values.content
-    res = [w_v for w_v in w_fd2._values.content
+    w_v1 = space.unpackiterable(w_fd1._values)
+    res = [w_v for w_v in space.unpackiterable(w_fd2._values)
              if w_v in w_v1]
     return make_fd(space, space.newlist(res))
 

Modified: pypy/dist/pypy/module/cclp/constraint/variable.py
==============================================================================
--- pypy/dist/pypy/module/cclp/constraint/variable.py	(original)
+++ pypy/dist/pypy/module/cclp/constraint/variable.py	Tue Mar 13 10:48:15 2007
@@ -24,7 +24,7 @@
 def bind__CVar_Root(space, w_cvar, w_obj):
     #XXX we should (want to) be able to test membership
     #    in a wrapped against wrappeds into a non-wrapped dict
-    if [True for elt in w_cvar.w_dom._values.content
+    if [True for elt in space.unpackiterable(w_cvar.w_dom._values)
         if space.is_true(space.eq(w_obj, elt))]:
         return bind__Var_Root(space, w_cvar, w_obj)
     raise_unification_failure(space, "value not in variable domain")

Modified: pypy/dist/pypy/module/cclp/variable.py
==============================================================================
--- pypy/dist/pypy/module/cclp/variable.py	(original)
+++ pypy/dist/pypy/module/cclp/variable.py	Tue Mar 13 10:48:15 2007
@@ -289,7 +289,7 @@
 def _assign(space, w_var, w_val):
     assert isinstance(w_var, W_Var)
     if isinstance(w_var, W_CVar):
-        if not w_val in w_var.w_dom._values.content:
+        if not w_val in space.unpackiterable(w_var.w_dom._values):
             raise_unification_failure(space, "assignment out of domain")
     w_var.w_bound_to = w_val
 
@@ -402,7 +402,7 @@
     assert isinstance(w_m1, W_DictObject)
     assert isinstance(w_m2, W_DictObject)
     #print " :unify mappings", w_m1, w_m2
-    for w_xk in w_m1.content.keys():
+    for w_xk in space.unpackiterable(w_m1):
         w_xi = space.getitem(w_m1, w_xk)
         w_yi = space.getitem(w_m2, w_xk)
         if space.is_true(space.is_nb_(w_xi, w_yi)):



More information about the Pypy-commit mailing list