[pypy-svn] r23833 - pypy/dist/pypy/lib/logic/computation_space

auc at codespeak.net auc at codespeak.net
Wed Mar 1 16:06:04 CET 2006


Author: auc
Date: Wed Mar  1 16:06:01 2006
New Revision: 23833

Modified:
   pypy/dist/pypy/lib/logic/computation_space/computationspace.py
   pypy/dist/pypy/lib/logic/computation_space/event.py
Log:
updated notification mecanism


Modified: pypy/dist/pypy/lib/logic/computation_space/computationspace.py
==============================================================================
--- pypy/dist/pypy/lib/logic/computation_space/computationspace.py	(original)
+++ pypy/dist/pypy/lib/logic/computation_space/computationspace.py	Wed Mar  1 16:06:01 2006
@@ -104,7 +104,6 @@
             self.root = self.var('__root__')
             # set up the problem
             self.bind(self.root, problem(self))
-            self._notify(event.NewSpace)
             self._init_choose_commit()
             self.distributor.start()
         else:
@@ -118,7 +117,6 @@
             self.copy_constraints(parent)
             # ...
             self.status = Unknown
-            self._notify(event.Clone)
             self.distributor = parent.distributor.__class__(self)
             self._init_choose_commit()
 
@@ -259,7 +257,6 @@
     def inject(self, restricting_problem):
         """add additional entities into a space"""
         restricting_problem(self)
-        self.changelog = [var for var in self.vars]
         self._process()
 
     def commit(self, choice):
@@ -397,6 +394,7 @@
 
     def _add_const(self, constraint):
         self.constraints.add(constraint)
+        self._notify(event.Inject(constraint))
         for var in constraint.affected_variables():
             self.var_const_map.setdefault(var, set())
             self.var_const_map[var].add(constraint)
@@ -495,14 +493,12 @@
     def _init_constraint_queue(self):
         cqueue = []
         init_const_set = set()
-        if event.Clone in self.event_set:
-            init_const_set = self.constraints
-        elif event.NewSpace in self.event_set:
-            init_const_set = self.constraints
-        else:
-            for ev in self.event_set:
-                if isinstance(event, event.Revise):
-                    init_const_set.add(self.var_const_map[ev.var])
+        for ev in self.event_set:
+            if isinstance(ev, event.Revise):
+                for const in self.var_const_map[ev.var]:
+                    init_const_set.add(const)
+            elif isinstance(ev, event.Inject):
+                init_const_set.add(ev.constraint)
                 
         cqueue = [(const.estimate_cost(), const)
                   for const in init_const_set]

Modified: pypy/dist/pypy/lib/logic/computation_space/event.py
==============================================================================
--- pypy/dist/pypy/lib/logic/computation_space/event.py	(original)
+++ pypy/dist/pypy/lib/logic/computation_space/event.py	Wed Mar  1 16:06:01 2006
@@ -1,7 +1,10 @@
-class NewSpace: pass
-
 class Clone: pass
 
+class Inject(object):
+
+    def __init__(self, constraint):
+        self.constraint = constraint
+
 class Revise(object):
 
     def __init__(self, var):



More information about the Pypy-commit mailing list