aboutsummaryrefslogtreecommitdiffstats
path: root/pyGHDL/dom/InterfaceItem.py
diff options
context:
space:
mode:
authorUnai Martinez-Corral <38422348+umarcor@users.noreply.github.com>2021-06-22 12:05:45 +0100
committerGitHub <noreply@github.com>2021-06-22 12:05:45 +0100
commitbf45d9939dc26d0d584dd549923b9962f83360ec (patch)
tree976beef99129705fa8d0e592dfba4fad61b80135 /pyGHDL/dom/InterfaceItem.py
parent15f447b1270a815748fdbcce46d97abd9eecc21d (diff)
parent0a69901be945dfb6c5372e657332d5e5ddfa10c7 (diff)
downloadghdl-bf45d9939dc26d0d584dd549923b9962f83360ec.tar.gz
ghdl-bf45d9939dc26d0d584dd549923b9962f83360ec.tar.bz2
ghdl-bf45d9939dc26d0d584dd549923b9962f83360ec.zip
More expression kinds and function calls (#1802)
Diffstat (limited to 'pyGHDL/dom/InterfaceItem.py')
-rw-r--r--pyGHDL/dom/InterfaceItem.py115
1 files changed, 102 insertions, 13 deletions
diff --git a/pyGHDL/dom/InterfaceItem.py b/pyGHDL/dom/InterfaceItem.py
index c2cd3a2c9..eac92c8a6 100644
--- a/pyGHDL/dom/InterfaceItem.py
+++ b/pyGHDL/dom/InterfaceItem.py
@@ -30,39 +30,41 @@
#
# SPDX-License-Identifier: GPL-2.0-or-later
# ============================================================================
-from pyGHDL.libghdl.vhdl.nodes import Null_Iir
-
-from pyGHDL.libghdl.vhdl import nodes
from pydecor import export
from pyVHDLModel.VHDLModel import (
GenericConstantInterfaceItem as VHDLModel_GenericConstantInterfaceItem,
PortSignalInterfaceItem as VHDLModel_PortSignalInterfaceItem,
+ ParameterConstantInterfaceItem as VHDLModel_ParameterConstantInterfaceItem,
+ ParameterVariableInterfaceItem as VHDLModel_ParameterVariableInterfaceItem,
+ ParameterSignalInterfaceItem as VHDLModel_ParameterSignalInterfaceItem,
Mode,
SubTypeOrSymbol,
Expression,
)
-from pyGHDL.dom._Utils import NodeToName, GetModeOfNode
+from pyGHDL.libghdl.vhdl import nodes
+from pyGHDL.libghdl.vhdl.nodes import Null_Iir
+from pyGHDL.dom._Utils import GetNameOfNode, GetModeOfNode
from pyGHDL.dom._Translate import GetSubtypeIndicationFromNode, GetExpressionFromNode
-from pyGHDL.dom.Common import GHDLMixin
+
__all__ = []
@export
-class GenericConstantInterfaceItem(VHDLModel_GenericConstantInterfaceItem, GHDLMixin):
+class GenericConstantInterfaceItem(VHDLModel_GenericConstantInterfaceItem):
@classmethod
def parse(cls, generic):
- name = NodeToName(generic)
+ name = GetNameOfNode(generic)
mode = GetModeOfNode(generic)
subTypeIndication = GetSubtypeIndicationFromNode(generic, "generic", name)
default = nodes.Get_Default_Value(generic)
value = GetExpressionFromNode(default) if default else None
- generic = cls(name, mode, subTypeIndication, value)
+ g = cls(name, mode, subTypeIndication, value)
- return generic
+ return g
def __init__(
self,
@@ -77,10 +79,10 @@ class GenericConstantInterfaceItem(VHDLModel_GenericConstantInterfaceItem, GHDLM
@export
-class PortSignalInterfaceItem(VHDLModel_PortSignalInterfaceItem, GHDLMixin):
+class PortSignalInterfaceItem(VHDLModel_PortSignalInterfaceItem):
@classmethod
def parse(cls, port):
- name = NodeToName(port)
+ name = GetNameOfNode(port)
mode = GetModeOfNode(port)
subTypeIndication = GetSubtypeIndicationFromNode(port, "port", name)
@@ -89,9 +91,96 @@ class PortSignalInterfaceItem(VHDLModel_PortSignalInterfaceItem, GHDLMixin):
GetExpressionFromNode(defaultValue) if defaultValue != Null_Iir else None
)
- port = cls(name, mode, subTypeIndication, value)
+ p = cls(name, mode, subTypeIndication, value)
+
+ return p
+
+ def __init__(
+ self,
+ name: str,
+ mode: Mode,
+ subType: SubTypeOrSymbol,
+ defaultExpression: Expression = None,
+ ):
+ super().__init__(name=name, mode=mode)
+ 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)
+
+ defaultValue = nodes.Get_Default_Value(parameter)
+ value = (
+ GetExpressionFromNode(defaultValue) if defaultValue != Null_Iir else None
+ )
+
+ param = cls(name, mode, subTypeIndication, value)
+
+ return param
+
+ def __init__(
+ self,
+ name: str,
+ mode: Mode,
+ subType: SubTypeOrSymbol,
+ defaultExpression: Expression = None,
+ ):
+ super().__init__(name=name, mode=mode)
+ 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)
+
+ defaultValue = nodes.Get_Default_Value(parameter)
+ value = (
+ GetExpressionFromNode(defaultValue) if defaultValue != Null_Iir else None
+ )
+
+ param = cls(name, mode, subTypeIndication, value)
+
+ return param
+
+ def __init__(
+ self,
+ name: str,
+ mode: Mode,
+ subType: SubTypeOrSymbol,
+ defaultExpression: Expression = None,
+ ):
+ super().__init__(name=name, mode=mode)
+ 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)
+
+ defaultValue = nodes.Get_Default_Value(parameter)
+ value = (
+ GetExpressionFromNode(defaultValue) if defaultValue != Null_Iir else None
+ )
+
+ param = cls(name, mode, subTypeIndication, value)
- return port
+ return param
def __init__(
self,