back.pysim: implement ArrayProxy.
This commit is contained in:
parent
80c5343600
commit
54fb999c99
4 changed files with 39 additions and 2 deletions
|
|
@ -776,10 +776,12 @@ class ArrayProxy(Value):
|
|||
return bits, sign
|
||||
|
||||
def _lhs_signals(self):
|
||||
return union((elem._lhs_signals() for elem in self._iter_as_values()), start=ValueSet())
|
||||
signals = union((elem._lhs_signals() for elem in self._iter_as_values()), start=ValueSet())
|
||||
return signals
|
||||
|
||||
def _rhs_signals(self):
|
||||
return union((elem._rhs_signals() for elem in self._iter_as_values()), start=ValueSet())
|
||||
signals = union((elem._rhs_signals() for elem in self._iter_as_values()), start=ValueSet())
|
||||
return self.index._rhs_signals() | signals
|
||||
|
||||
def __repr__(self):
|
||||
return "(proxy (array [{}]) {!r})".format(", ".join(map(repr, self.elems)), self.index)
|
||||
|
|
|
|||
|
|
@ -40,6 +40,10 @@ class ValueTransformer:
|
|||
def on_Repl(self, value):
|
||||
return Repl(self.on_value(value.value), value.count)
|
||||
|
||||
def on_ArrayProxy(self, value):
|
||||
return ArrayProxy([self.on_value(elem) for elem in value._iter_as_values()],
|
||||
self.on_value(value.index))
|
||||
|
||||
def on_unknown_value(self, value):
|
||||
raise TypeError("Cannot transform value '{!r}'".format(value)) # :nocov:
|
||||
|
||||
|
|
@ -62,6 +66,8 @@ class ValueTransformer:
|
|||
new_value = self.on_Cat(value)
|
||||
elif isinstance(value, Repl):
|
||||
new_value = self.on_Repl(value)
|
||||
elif isinstance(value, ArrayProxy):
|
||||
new_value = self.on_ArrayProxy(value)
|
||||
else:
|
||||
new_value = self.on_unknown_value(value)
|
||||
if isinstance(new_value, Value):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue