Commit c71eb577 authored by Robert Jordens's avatar Robert Jordens Committed by Sebastien Bourdeauducq
Browse files

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

parent 1bf13375
...@@ -4,6 +4,7 @@ import builtins ...@@ -4,6 +4,7 @@ import builtins
from collections import defaultdict from collections import defaultdict
from migen.fhdl import tracer from migen.fhdl import tracer
from migen.util.misc import flat_iteration
class HUID: class HUID:
__next_uid = 0 __next_uid = 0
...@@ -87,7 +88,7 @@ class Value(HUID): ...@@ -87,7 +88,7 @@ class Value(HUID):
elif isinstance(key, slice): elif isinstance(key, slice):
start, stop, step = key.indices(flen(self)) start, stop, step = key.indices(flen(self))
if step != 1: 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) return _Slice(self, start, stop)
else: else:
raise KeyError raise KeyError
...@@ -155,11 +156,11 @@ class Cat(Value): ...@@ -155,11 +156,11 @@ class Cat(Value):
meeting these properties. The bit length of the return value is the sum of meeting these properties. The bit length of the return value is the sum of
the bit lengths of the arguments:: 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 Parameters
---------- ----------
*args : Value, inout *args : Values or iterables of Values, inout
`Value` s to be concatenated. `Value` s to be concatenated.
Returns Returns
...@@ -169,7 +170,7 @@ class Cat(Value): ...@@ -169,7 +170,7 @@ class Cat(Value):
""" """
def __init__(self, *args): def __init__(self, *args):
Value.__init__(self) Value.__init__(self)
self.l = args self.l = list(flat_iteration(args))
class Replicate(Value): class Replicate(Value):
"""Replicate a value """Replicate a value
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment