summaryrefslogtreecommitdiff
path: root/tools/dfagen/dfagen/automaton.py
diff options
context:
space:
mode:
authorNicolas Schodet2010-03-15 23:20:25 +0100
committerNicolas Schodet2010-03-15 23:20:25 +0100
commitc40ac55789ef7da23bc7baaf77e47944de0faccb (patch)
treeb4f9475b2b2a77903f278365b7a1268feba2cc0b /tools/dfagen/dfagen/automaton.py
parent77c575aa1fae9599e9e59fb1efad650960bfb675 (diff)
tools/dfagen: limit output using origin, refs #102
Diffstat (limited to 'tools/dfagen/dfagen/automaton.py')
-rw-r--r--tools/dfagen/dfagen/automaton.py23
1 files changed, 15 insertions, 8 deletions
diff --git a/tools/dfagen/dfagen/automaton.py b/tools/dfagen/dfagen/automaton.py
index 63a701f6..50a5dcd0 100644
--- a/tools/dfagen/dfagen/automaton.py
+++ b/tools/dfagen/dfagen/automaton.py
@@ -1,3 +1,10 @@
+def filter_origin_iter (list, origin):
+ if origin is None:
+ return iter (list)
+ else:
+ import itertools
+ return itertools.ifilter (lambda x: x.origin in origin, iter (list))
+
class Event:
"""Event definition."""
@@ -63,8 +70,8 @@ class Transition:
self.branches[branch.name] = branch
self.branches_list.append (branch)
- def iter_branches (self):
- return iter (self.branches_list)
+ def iter_branches (self, origin = None):
+ return filter_origin_iter (self.branches_list, origin)
def get_attributes (self):
return [ b.attributes for b in self.iter_branches ()
@@ -124,14 +131,14 @@ class Automaton:
self.events[event.name] = event
self.events_list.append (event)
- def iter_states (self):
- return iter (self.states_list)
+ def iter_states (self, origin = None):
+ return filter_origin_iter (self.states_list, origin)
- def iter_initials (self):
- return iter (self.initials)
+ def iter_initials (self, origin = None):
+ return filter_origin_iter (self.initials, origin)
- def iter_events (self):
- return iter (self.events_list)
+ def iter_events (self, origin = None):
+ return filter_origin_iter (self.events_list, origin)
def __str__ (self):
s = self.name + '\n'