aboutsummaryrefslogtreecommitdiffstats
path: root/pyGHDL/dom/InterfaceItem.py
diff options
context:
space:
mode:
Diffstat (limited to 'pyGHDL/dom/InterfaceItem.py')
-rw-r--r--pyGHDL/dom/InterfaceItem.py176
1 files changed, 121 insertions, 55 deletions
diff --git a/pyGHDL/dom/InterfaceItem.py b/pyGHDL/dom/InterfaceItem.py
index f720e69b4..df62c8256 100644
--- a/pyGHDL/dom/InterfaceItem.py
+++ b/pyGHDL/dom/InterfaceItem.py
@@ -38,13 +38,15 @@ from pyVHDLModel.VHDLModel import (
ParameterConstantInterfaceItem as VHDLModel_ParameterConstantInterfaceItem,
ParameterVariableInterfaceItem as VHDLModel_ParameterVariableInterfaceItem,
ParameterSignalInterfaceItem as VHDLModel_ParameterSignalInterfaceItem,
+ ParameterFileInterfaceItem as VHDLModel_ParameterFileInterfaceItem,
Mode,
SubTypeOrSymbol,
Expression,
)
+from pyGHDL.libghdl._types import Iir
from pyGHDL.libghdl.vhdl import nodes
-from pyGHDL.libghdl.vhdl.nodes import Null_Iir
+from pyGHDL.dom import DOMMixin
from pyGHDL.dom._Utils import GetNameOfNode, GetModeOfNode
from pyGHDL.dom._Translate import GetSubTypeIndicationFromNode, GetExpressionFromNode
@@ -53,132 +55,196 @@ __all__ = []
@export
-class GenericConstantInterfaceItem(VHDLModel_GenericConstantInterfaceItem):
+class GenericConstantInterfaceItem(VHDLModel_GenericConstantInterfaceItem, DOMMixin):
+ def __init__(
+ self,
+ node: Iir,
+ name: str,
+ mode: Mode,
+ subType: SubTypeOrSymbol,
+ defaultExpression: Expression,
+ ):
+ super().__init__(name=name, mode=mode)
+ DOMMixin.__init__(self, node)
+
+ # TODO: move to model
+ self._subType = subType
+ self._defaultExpression = defaultExpression
+
@classmethod
- def parse(cls, generic):
- name = GetNameOfNode(generic)
- mode = GetModeOfNode(generic)
- subTypeIndication = GetSubTypeIndicationFromNode(generic, "generic", name)
- default = nodes.Get_Default_Value(generic)
+ def parse(cls, genericNode: Iir) -> "GenericConstantInterfaceItem":
+ name = GetNameOfNode(genericNode)
+ mode = GetModeOfNode(genericNode)
+ subTypeIndication = GetSubTypeIndicationFromNode(genericNode, "generic", name)
+ default = nodes.Get_Default_Value(genericNode)
value = GetExpressionFromNode(default) if default else None
- return cls(name, mode, subTypeIndication, value)
+ return cls(genericNode, name, mode, subTypeIndication, value)
+
+@export
+class PortSignalInterfaceItem(VHDLModel_PortSignalInterfaceItem, DOMMixin):
def __init__(
self,
+ node: Iir,
name: str,
mode: Mode,
subType: SubTypeOrSymbol,
- defaultExpression: Expression,
+ defaultExpression: Expression = None,
):
super().__init__(name=name, mode=mode)
+ DOMMixin.__init__(self, node)
+
+ # TODO: move to model
self._subType = subType
self._defaultExpression = defaultExpression
-
-@export
-class PortSignalInterfaceItem(VHDLModel_PortSignalInterfaceItem):
@classmethod
- def parse(cls, port):
- name = GetNameOfNode(port)
- mode = GetModeOfNode(port)
- subTypeIndication = GetSubTypeIndicationFromNode(port, "port", name)
+ def parse(cls, portNode: Iir) -> "PortSignalInterfaceItem":
+ name = GetNameOfNode(portNode)
+ mode = GetModeOfNode(portNode)
+ subTypeIndication = GetSubTypeIndicationFromNode(portNode, "port", name)
- defaultValue = nodes.Get_Default_Value(port)
+ defaultValue = nodes.Get_Default_Value(portNode)
value = (
- GetExpressionFromNode(defaultValue) if defaultValue != Null_Iir else None
+ GetExpressionFromNode(defaultValue)
+ if defaultValue != nodes.Null_Iir
+ else None
)
- return cls(name, mode, subTypeIndication, value)
+ return cls(portNode, name, mode, subTypeIndication, value)
+
+@export
+class ParameterConstantInterfaceItem(
+ VHDLModel_ParameterConstantInterfaceItem, DOMMixin
+):
def __init__(
self,
+ node: Iir,
name: str,
mode: Mode,
subType: SubTypeOrSymbol,
defaultExpression: Expression = None,
):
- super().__init__(name=name, mode=mode)
+ super().__init__(name, mode)
+ DOMMixin.__init__(self, node)
+
+ # TODO: move to model
self._subType = subType
self._defaultExpression = defaultExpression
-
-@export
-class ParameterConstantInterfaceItem(VHDLModel_ParameterConstantInterfaceItem):
@classmethod
- def parse(cls, parameter):
- name = GetNameOfNode(parameter)
- mode = GetModeOfNode(parameter)
- subTypeIndication = GetSubTypeIndicationFromNode(parameter, "parameter", name)
+ def parse(cls, parameterNode: Iir) -> "ParameterConstantInterfaceItem":
+ name = GetNameOfNode(parameterNode)
+ mode = GetModeOfNode(parameterNode)
+ subTypeIndication = GetSubTypeIndicationFromNode(
+ parameterNode, "parameter", name
+ )
- defaultValue = nodes.Get_Default_Value(parameter)
+ defaultValue = nodes.Get_Default_Value(parameterNode)
value = (
- GetExpressionFromNode(defaultValue) if defaultValue != Null_Iir else None
+ GetExpressionFromNode(defaultValue)
+ if defaultValue != nodes.Null_Iir
+ else None
)
- return cls(name, mode, subTypeIndication, value)
+ return cls(parameterNode, name, mode, subTypeIndication, value)
+
+@export
+class ParameterVariableInterfaceItem(
+ VHDLModel_ParameterVariableInterfaceItem, DOMMixin
+):
def __init__(
self,
+ node: Iir,
name: str,
mode: Mode,
subType: SubTypeOrSymbol,
defaultExpression: Expression = None,
):
- super().__init__(name=name, mode=mode)
+ super().__init__(name, mode)
+ DOMMixin.__init__(self, node)
+
+ # TODO: move to model
self._subType = subType
self._defaultExpression = defaultExpression
-
-@export
-class ParameterVariableInterfaceItem(VHDLModel_ParameterVariableInterfaceItem):
@classmethod
- def parse(cls, parameter):
- name = GetNameOfNode(parameter)
- mode = GetModeOfNode(parameter)
- subTypeIndication = GetSubTypeIndicationFromNode(parameter, "parameter", name)
+ def parse(cls, parameterNode: Iir) -> "ParameterVariableInterfaceItem":
+ name = GetNameOfNode(parameterNode)
+ mode = GetModeOfNode(parameterNode)
+ subTypeIndication = GetSubTypeIndicationFromNode(
+ parameterNode, "parameter", name
+ )
- defaultValue = nodes.Get_Default_Value(parameter)
+ defaultValue = nodes.Get_Default_Value(parameterNode)
value = (
- GetExpressionFromNode(defaultValue) if defaultValue != Null_Iir else None
+ GetExpressionFromNode(defaultValue)
+ if defaultValue != nodes.Null_Iir
+ else None
)
- return cls(name, mode, subTypeIndication, value)
+ return cls(parameterNode, name, mode, subTypeIndication, value)
+
+@export
+class ParameterSignalInterfaceItem(VHDLModel_ParameterSignalInterfaceItem, DOMMixin):
def __init__(
self,
+ node: Iir,
name: str,
mode: Mode,
subType: SubTypeOrSymbol,
defaultExpression: Expression = None,
):
- super().__init__(name=name, mode=mode)
+ super().__init__(name, mode)
+ DOMMixin.__init__(self, node)
+
+ # TODO: move to model
self._subType = subType
self._defaultExpression = defaultExpression
-
-@export
-class ParameterSignalInterfaceItem(VHDLModel_ParameterSignalInterfaceItem):
@classmethod
- def parse(cls, parameter):
- name = GetNameOfNode(parameter)
- mode = GetModeOfNode(parameter)
- subTypeIndication = GetSubTypeIndicationFromNode(parameter, "parameter", name)
+ def parse(cls, parameterNode: Iir) -> "ParameterSignalInterfaceItem":
+ name = GetNameOfNode(parameterNode)
+ mode = GetModeOfNode(parameterNode)
+ subTypeIndication = GetSubTypeIndicationFromNode(
+ parameterNode, "parameter", name
+ )
- defaultValue = nodes.Get_Default_Value(parameter)
+ defaultValue = nodes.Get_Default_Value(parameterNode)
value = (
- GetExpressionFromNode(defaultValue) if defaultValue != Null_Iir else None
+ GetExpressionFromNode(defaultValue)
+ if defaultValue != nodes.Null_Iir
+ else None
)
- return cls(name, mode, subTypeIndication, value)
+ return cls(parameterNode, name, mode, subTypeIndication, value)
+
+@export
+class ParameterFileInterfaceItem(VHDLModel_ParameterFileInterfaceItem, DOMMixin):
def __init__(
self,
+ node: Iir,
name: str,
mode: Mode,
subType: SubTypeOrSymbol,
- defaultExpression: Expression = None,
):
- super().__init__(name=name, mode=mode)
+ super().__init__(name, mode)
+ DOMMixin.__init__(self, node)
+
+ # TODO: move to model
self._subType = subType
- self._defaultExpression = defaultExpression
+
+ @classmethod
+ def parse(cls, parameterNode: Iir) -> "ParameterFileInterfaceItem":
+ name = GetNameOfNode(parameterNode)
+ mode = GetModeOfNode(parameterNode)
+ subTypeIndication = GetSubTypeIndicationFromNode(
+ parameterNode, "parameter", name
+ )
+
+ return cls(parameterNode, name, mode, subTypeIndication)