hdl.xfrm: Add on_AnyConst and on_AnySeq abstract methods for ValueVisitor and children.
This commit is contained in:
parent
6fdbc3d885
commit
77728c2dea
|
@ -87,6 +87,12 @@ class _RHSValueCompiler(_ValueCompiler):
|
||||||
def on_Const(self, value):
|
def on_Const(self, value):
|
||||||
return lambda state: value.value
|
return lambda state: value.value
|
||||||
|
|
||||||
|
def on_AnyConst(self, value):
|
||||||
|
raise NotImplementedError # :nocov:
|
||||||
|
|
||||||
|
def on_AnySeq(self, value):
|
||||||
|
raise NotImplementedError # :nocov:
|
||||||
|
|
||||||
def on_Signal(self, value):
|
def on_Signal(self, value):
|
||||||
if self.sensitivity is not None:
|
if self.sensitivity is not None:
|
||||||
self.sensitivity.add(value)
|
self.sensitivity.add(value)
|
||||||
|
@ -219,6 +225,12 @@ class _LHSValueCompiler(_ValueCompiler):
|
||||||
def on_Const(self, value):
|
def on_Const(self, value):
|
||||||
raise TypeError # :nocov:
|
raise TypeError # :nocov:
|
||||||
|
|
||||||
|
def on_AnyConst(self, value):
|
||||||
|
raise TypeError # :nocov:
|
||||||
|
|
||||||
|
def on_AnySeq(self, value):
|
||||||
|
raise TypeError # :nocov:
|
||||||
|
|
||||||
def on_Signal(self, value):
|
def on_Signal(self, value):
|
||||||
shape = value.shape()
|
shape = value.shape()
|
||||||
value_slot = self.signal_slots[value]
|
value_slot = self.signal_slots[value]
|
||||||
|
|
|
@ -23,6 +23,14 @@ class ValueVisitor(metaclass=ABCMeta):
|
||||||
def on_Const(self, value):
|
def on_Const(self, value):
|
||||||
pass # :nocov:
|
pass # :nocov:
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
def on_AnyConst(self, value):
|
||||||
|
pass # :nocov:
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
def on_AnySeq(self, value):
|
||||||
|
pass # :nocov:
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def on_Signal(self, value):
|
def on_Signal(self, value):
|
||||||
pass # :nocov:
|
pass # :nocov:
|
||||||
|
@ -69,6 +77,10 @@ class ValueVisitor(metaclass=ABCMeta):
|
||||||
def on_value(self, value):
|
def on_value(self, value):
|
||||||
if type(value) is Const:
|
if type(value) is Const:
|
||||||
new_value = self.on_Const(value)
|
new_value = self.on_Const(value)
|
||||||
|
elif type(value) is AnyConst:
|
||||||
|
new_value = self.on_AnyConst(value)
|
||||||
|
elif type(value) is AnySeq:
|
||||||
|
new_value = self.on_AnySeq(value)
|
||||||
elif type(value) is Signal:
|
elif type(value) is Signal:
|
||||||
new_value = self.on_Signal(value)
|
new_value = self.on_Signal(value)
|
||||||
elif type(value) is Record:
|
elif type(value) is Record:
|
||||||
|
@ -104,6 +116,12 @@ class ValueTransformer(ValueVisitor):
|
||||||
def on_Const(self, value):
|
def on_Const(self, value):
|
||||||
return value
|
return value
|
||||||
|
|
||||||
|
def on_AnyConst(self, value):
|
||||||
|
return value
|
||||||
|
|
||||||
|
def on_AnySeq(self, value):
|
||||||
|
return value
|
||||||
|
|
||||||
def on_Signal(self, value):
|
def on_Signal(self, value):
|
||||||
return value
|
return value
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue