diff options
Diffstat (limited to 'statemachine.py')
-rw-r--r-- | statemachine.py | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/statemachine.py b/statemachine.py index 5cdbadf..7d42c2e 100644 --- a/statemachine.py +++ b/statemachine.py @@ -14,7 +14,7 @@ class StateMachine: """ Create a new state machine """ - self.holds = {} + self.up = set() self.deps = [] def assert_state(self, cat): @@ -31,11 +31,11 @@ class StateMachine: else: found.append(res) if found == None: - self.add_hold(cat) + self.up.add(cat) return True to_add = self.cat_cross(found) for x in to_add: - self.add_hold(x) + self.up.add(x) return True def cat_cross(self, found): @@ -76,10 +76,10 @@ class StateMachine: """ Add a hold to a state. Does not check dependencies. """ - if self.holds.has_key(cat): - self.holds[cat] = self.holds[cat] + 1 - else: - self.holds[cat] = 1 + for x in self.up: + if cat.subset_of(x): + return + self.up.add(cat) def get_satisfied_states(self, dependents, dependencies): """ @@ -88,9 +88,9 @@ class StateMachine: could match states in `dependencies`. """ retval = [] - for key, val in self.holds.iteritems(): - if dependencies.equiv(key) and val > 0: - retval.append(dependents.fill(key.args)) + for cat in self.up: + if dependencies.equiv(cat): + retval.append(dependents.fill(cat.args)) return set(retval) | dependents.inverse_set() def get_applicable_deps(self, cat): @@ -105,7 +105,7 @@ class StateMachine: return retval def __str__(self): - return "\n".join(["%s: %s" % (v, k) for k, v in self.holds.iteritems()]) + return "\n".join(["%s" % k for k in self.up]) def __repr__(self): return str(self) |