Example #1
0
File: tools.py Project: jix/migen
def group_by_targets(sl):
    groups = []
    seen = set()
    for order, stmt in enumerate(flat_iteration(sl)):
        targets = set(list_targets(stmt))
        group = [(order, stmt)]
        disjoint = targets.isdisjoint(seen)
        seen |= targets
        if not disjoint:
            groups, old_groups = [], groups
            for old_targets, old_group in old_groups:
                if targets.isdisjoint(old_targets):
                    groups.append((old_targets, old_group))
                else:
                    targets |= old_targets
                    group += old_group
        groups.append((targets, group))
    return [(targets, _resort_statements(stmts)) for targets, stmts in groups]
Example #2
0
def group_by_targets(sl):
    groups = []
    seen = set()
    for order, stmt in enumerate(flat_iteration(sl)):
        targets = set(list_targets(stmt))
        group = [(order, stmt)]
        disjoint = targets.isdisjoint(seen)
        seen |= targets
        if not disjoint:
            groups, old_groups = [], groups
            for old_targets, old_group in old_groups:
                if targets.isdisjoint(old_targets):
                    groups.append((old_targets, old_group))
                else:
                    targets |= old_targets
                    group += old_group
        groups.append((targets, group))
    return [(targets, _resort_statements(stmts))
        for targets, stmts in groups]
Example #3
0
File: module.py Project: jix/migen
def _flat_list(e):
	if isinstance(e, collections.Iterable):
		return flat_iteration(e)
	else:
		return [e]
Example #4
0
	def __init__(self, *args):
		Value.__init__(self)
		self.l = list(flat_iteration(args))
Example #5
0
File: module.py Project: xobs/migen
def _flat_list(e):
    if isinstance(e, collections.Iterable):
        return flat_iteration(e)
    else:
        return [e]
Example #6
0
 def __init__(self, *args):
     Value.__init__(self)
     self.l = list(flat_iteration(args))