migen.fhdl.structure: have Cat() flat_iteration-ize its arguments

This commit is contained in:
Robert Jordens 2013-12-02 17:23:56 -07:00 committed by Sebastien Bourdeauducq
parent 1bf133755e
commit c71eb5778f
1 changed files with 5 additions and 4 deletions

View File

@ -4,6 +4,7 @@ import builtins
from collections import defaultdict
from migen.fhdl import tracer
from migen.util.misc import flat_iteration
class HUID:
__next_uid = 0
@ -87,7 +88,7 @@ class Value(HUID):
elif isinstance(key, slice):
start, stop, step = key.indices(flen(self))
if step != 1:
return Cat(*(self[i] for i in range(start, stop, step)))
return Cat(self[i] for i in range(start, stop, step))
return _Slice(self, start, stop)
else:
raise KeyError
@ -155,11 +156,11 @@ class Cat(Value):
meeting these properties. The bit length of the return value is the sum of
the bit lengths of the arguments::
flen(Cat(*args)) == sum(flen(arg) for arg in args)
flen(Cat(args)) == sum(flen(arg) for arg in args)
Parameters
----------
*args : Value, inout
*args : Values or iterables of Values, inout
`Value` s to be concatenated.
Returns
@ -169,7 +170,7 @@ class Cat(Value):
"""
def __init__(self, *args):
Value.__init__(self)
self.l = args
self.l = list(flat_iteration(args))
class Replicate(Value):
"""Replicate a value