actorlib/structuring/Cast: support inversion
This commit is contained in:
parent
c4c4765a4e
commit
77a0f0a3bb
|
@ -8,14 +8,20 @@ def _rawbits_layout(l):
|
|||
return l
|
||||
|
||||
class Cast(CombinatorialActor):
|
||||
def __init__(self, layout_from, layout_to):
|
||||
def __init__(self, layout_from, layout_to, reverse_from=False, reverse_to=False):
|
||||
self.reverse_from = reverse_from
|
||||
self.reverse_to = reverse_to
|
||||
CombinatorialActor.__init__(self,
|
||||
("sink", Sink, _rawbits_layout(layout_from)),
|
||||
("source", Source, _rawbits_layout(layout_to)))
|
||||
|
||||
def get_process_fragment(self):
|
||||
sigs_from = self.token("sink").flatten()
|
||||
if self.reverse_from:
|
||||
sigs_from = list(reversed(sigs_from))
|
||||
sigs_to = self.token("source").flatten()
|
||||
if self.reverse_to:
|
||||
sigs_to = list(reversed(sigs_to))
|
||||
if sum(len(s) for s in sigs_from) != sum(len(s) for s in sigs_to):
|
||||
raise TypeError
|
||||
return Fragment([
|
||||
|
|
Loading…
Reference in New Issue