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.py168
1 files changed, 67 insertions, 101 deletions
diff --git a/pyGHDL/dom/InterfaceItem.py b/pyGHDL/dom/InterfaceItem.py
index 66a8fe37b..aa63f3094 100644
--- a/pyGHDL/dom/InterfaceItem.py
+++ b/pyGHDL/dom/InterfaceItem.py
@@ -13,7 +13,7 @@
#
# License:
# ============================================================================
-# Copyright (C) 2019-2021 Tristan Gingold
+# Copyright (C) 2019-2022 Tristan Gingold
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -30,7 +30,7 @@
#
# SPDX-License-Identifier: GPL-2.0-or-later
# ============================================================================
-from typing import List
+from typing import List, Iterable
from pyTooling.Decorators import export
@@ -53,7 +53,7 @@ from pyVHDLModel.SyntaxModel import (
from pyGHDL.libghdl._types import Iir
from pyGHDL.libghdl.vhdl import nodes
from pyGHDL.dom import DOMMixin
-from pyGHDL.dom._Utils import GetNameOfNode, GetModeOfNode
+from pyGHDL.dom._Utils import GetNameOfNode, GetModeOfNode, GetDocumentationOfNode
from pyGHDL.dom._Translate import GetSubtypeIndicationFromNode, GetExpressionFromNode
@@ -69,95 +69,80 @@ class GenericConstantInterfaceItem(VHDLModel_GenericConstantInterfaceItem, DOMMi
mode: Mode,
subtype: SubtypeOrSymbol,
defaultExpression: ExpressionUnion,
+ documentation: str = None,
):
- super().__init__(identifiers, mode, subtype, defaultExpression)
+ super().__init__(identifiers, mode, subtype, defaultExpression, documentation)
DOMMixin.__init__(self, node)
@classmethod
- def parse(cls, genericNode: Iir) -> "GenericConstantInterfaceItem":
+ def parse(cls, genericNode: Iir, furtherIdentifiers: Iterable[str] = None) -> "GenericConstantInterfaceItem":
name = GetNameOfNode(genericNode)
+ documentation = GetDocumentationOfNode(genericNode)
+ identifiers = [name]
+ if furtherIdentifiers is not None:
+ identifiers.extend(furtherIdentifiers)
mode = GetModeOfNode(genericNode)
subtypeIndication = GetSubtypeIndicationFromNode(genericNode, "generic", name)
default = nodes.Get_Default_Value(genericNode)
value = GetExpressionFromNode(default) if default else None
- return cls(
- genericNode,
- [
- name,
- ],
- mode,
- subtypeIndication,
- value,
- )
+ return cls(genericNode, identifiers, mode, subtypeIndication, value, documentation)
@export
class GenericTypeInterfaceItem(VHDLModel_GenericTypeInterfaceItem, DOMMixin):
- def __init__(
- self,
- node: Iir,
- identifier: str,
- ):
- super().__init__(identifier)
+ def __init__(self, node: Iir, identifier: str, documentation: str = None):
+ super().__init__(identifier, documentation)
DOMMixin.__init__(self, node)
@classmethod
def parse(cls, genericNode: Iir) -> "GenericTypeInterfaceItem":
name = GetNameOfNode(genericNode)
+ documentation = GetDocumentationOfNode(genericNode)
- return cls(genericNode, name)
+ return cls(genericNode, name, documentation)
@export
class GenericPackageInterfaceItem(VHDLModel_GenericPackageInterfaceItem, DOMMixin):
- def __init__(
- self,
- node: Iir,
- name: str,
- ):
- super().__init__(name)
+ def __init__(self, node: Iir, name: str, documentation: str = None):
+ super().__init__(name, documentation)
DOMMixin.__init__(self, node)
@classmethod
def parse(cls, genericNode: Iir) -> "GenericPackageInterfaceItem":
name = GetNameOfNode(genericNode)
+ documentation = GetDocumentationOfNode(genericNode)
- return cls(genericNode, name)
+ return cls(genericNode, name, documentation)
@export
class GenericProcedureInterfaceItem(VHDLModel_GenericProcedureInterfaceItem, DOMMixin):
- def __init__(
- self,
- node: Iir,
- identifier: str,
- ):
- super().__init__(identifier)
+ def __init__(self, node: Iir, identifier: str, documentation: str = None):
+ super().__init__(identifier, documentation)
DOMMixin.__init__(self, node)
@classmethod
def parse(cls, genericNode: Iir) -> "GenericProcedureInterfaceItem":
name = GetNameOfNode(genericNode)
+ documentation = GetDocumentationOfNode(genericNode)
- return cls(genericNode, name)
+ return cls(genericNode, name, documentation)
@export
class GenericFunctionInterfaceItem(VHDLModel_GenericFunctionInterfaceItem, DOMMixin):
- def __init__(
- self,
- node: Iir,
- identifier: str,
- ):
- super().__init__(identifier)
+ def __init__(self, node: Iir, identifier: str, documentation: str = None):
+ super().__init__(identifier, documentation)
DOMMixin.__init__(self, node)
@classmethod
def parse(cls, genericNode: Iir) -> "GenericFunctionInterfaceItem":
name = GetNameOfNode(genericNode)
+ documentation = GetDocumentationOfNode(genericNode)
- return cls(genericNode, name)
+ return cls(genericNode, name, documentation)
@export
@@ -169,28 +154,25 @@ class PortSignalInterfaceItem(VHDLModel_PortSignalInterfaceItem, DOMMixin):
mode: Mode,
subtype: SubtypeOrSymbol,
defaultExpression: ExpressionUnion = None,
+ documentation: str = None,
):
- super().__init__(identifiers, mode, subtype, defaultExpression)
+ super().__init__(identifiers, mode, subtype, defaultExpression, documentation)
DOMMixin.__init__(self, node)
@classmethod
- def parse(cls, portNode: Iir) -> "PortSignalInterfaceItem":
+ def parse(cls, portNode: Iir, furtherIdentifiers: Iterable[str] = None) -> "PortSignalInterfaceItem":
name = GetNameOfNode(portNode)
+ documentation = GetDocumentationOfNode(portNode)
+ identifiers = [name]
+ if furtherIdentifiers is not None:
+ identifiers.extend(furtherIdentifiers)
mode = GetModeOfNode(portNode)
subtypeIndication = GetSubtypeIndicationFromNode(portNode, "port", name)
defaultValue = nodes.Get_Default_Value(portNode)
value = GetExpressionFromNode(defaultValue) if defaultValue != nodes.Null_Iir else None
- return cls(
- portNode,
- [
- name,
- ],
- mode,
- subtypeIndication,
- value,
- )
+ return cls(portNode, identifiers, mode, subtypeIndication, value, documentation)
@export
@@ -202,28 +184,25 @@ class ParameterConstantInterfaceItem(VHDLModel_ParameterConstantInterfaceItem, D
mode: Mode,
subtype: SubtypeOrSymbol,
defaultExpression: ExpressionUnion = None,
+ documentation: str = None,
):
- super().__init__(identifiers, mode, subtype, defaultExpression)
+ super().__init__(identifiers, mode, subtype, defaultExpression, documentation)
DOMMixin.__init__(self, node)
@classmethod
- def parse(cls, parameterNode: Iir) -> "ParameterConstantInterfaceItem":
+ def parse(cls, parameterNode: Iir, furtherIdentifiers: Iterable[str] = None) -> "ParameterConstantInterfaceItem":
name = GetNameOfNode(parameterNode)
+ documentation = GetDocumentationOfNode(parameterNode)
+ identifiers = [name]
+ if furtherIdentifiers is not None:
+ identifiers.extend(furtherIdentifiers)
mode = GetModeOfNode(parameterNode)
subtypeIndication = GetSubtypeIndicationFromNode(parameterNode, "parameter", name)
defaultValue = nodes.Get_Default_Value(parameterNode)
value = GetExpressionFromNode(defaultValue) if defaultValue != nodes.Null_Iir else None
- return cls(
- parameterNode,
- [
- name,
- ],
- mode,
- subtypeIndication,
- value,
- )
+ return cls(parameterNode, identifiers, mode, subtypeIndication, value, documentation)
@export
@@ -235,28 +214,25 @@ class ParameterVariableInterfaceItem(VHDLModel_ParameterVariableInterfaceItem, D
mode: Mode,
subtype: SubtypeOrSymbol,
defaultExpression: ExpressionUnion = None,
+ documentation: str = None,
):
- super().__init__(identifiers, mode, subtype, defaultExpression)
+ super().__init__(identifiers, mode, subtype, defaultExpression, documentation)
DOMMixin.__init__(self, node)
@classmethod
- def parse(cls, parameterNode: Iir) -> "ParameterVariableInterfaceItem":
+ def parse(cls, parameterNode: Iir, furtherIdentifiers: Iterable[str] = None) -> "ParameterVariableInterfaceItem":
name = GetNameOfNode(parameterNode)
+ documentation = GetDocumentationOfNode(parameterNode)
+ identifiers = [name]
+ if furtherIdentifiers is not None:
+ identifiers.extend(furtherIdentifiers)
mode = GetModeOfNode(parameterNode)
subtypeIndication = GetSubtypeIndicationFromNode(parameterNode, "parameter", name)
defaultValue = nodes.Get_Default_Value(parameterNode)
value = GetExpressionFromNode(defaultValue) if defaultValue != nodes.Null_Iir else None
- return cls(
- parameterNode,
- [
- name,
- ],
- mode,
- subtypeIndication,
- value,
- )
+ return cls(parameterNode, identifiers, mode, subtypeIndication, value, documentation)
@export
@@ -268,50 +244,40 @@ class ParameterSignalInterfaceItem(VHDLModel_ParameterSignalInterfaceItem, DOMMi
mode: Mode,
subtype: SubtypeOrSymbol,
defaultExpression: ExpressionUnion = None,
+ documentation: str = None,
):
- super().__init__(identifiers, mode, subtype, defaultExpression)
+ super().__init__(identifiers, mode, subtype, defaultExpression, documentation)
DOMMixin.__init__(self, node)
@classmethod
- def parse(cls, parameterNode: Iir) -> "ParameterSignalInterfaceItem":
+ def parse(cls, parameterNode: Iir, furtherIdentifiers: Iterable[str] = None) -> "ParameterSignalInterfaceItem":
name = GetNameOfNode(parameterNode)
+ documentation = GetDocumentationOfNode(parameterNode)
+ identifiers = [name]
+ if furtherIdentifiers is not None:
+ identifiers.extend(furtherIdentifiers)
mode = GetModeOfNode(parameterNode)
subtypeIndication = GetSubtypeIndicationFromNode(parameterNode, "parameter", name)
defaultValue = nodes.Get_Default_Value(parameterNode)
value = GetExpressionFromNode(defaultValue) if defaultValue != nodes.Null_Iir else None
- return cls(
- parameterNode,
- [
- name,
- ],
- mode,
- subtypeIndication,
- value,
- )
+ return cls(parameterNode, identifiers, mode, subtypeIndication, value, documentation)
@export
class ParameterFileInterfaceItem(VHDLModel_ParameterFileInterfaceItem, DOMMixin):
- def __init__(
- self,
- node: Iir,
- identifiers: List[str],
- subtype: SubtypeOrSymbol,
- ):
- super().__init__(identifiers, subtype)
+ def __init__(self, node: Iir, identifiers: List[str], subtype: SubtypeOrSymbol, documentation: str = None):
+ super().__init__(identifiers, subtype, documentation)
DOMMixin.__init__(self, node)
@classmethod
- def parse(cls, parameterNode: Iir) -> "ParameterFileInterfaceItem":
+ def parse(cls, parameterNode: Iir, furtherIdentifiers: Iterable[str] = None) -> "ParameterFileInterfaceItem":
name = GetNameOfNode(parameterNode)
+ documentation = GetDocumentationOfNode(parameterNode)
+ identifiers = [name]
+ if furtherIdentifiers is not None:
+ identifiers.extend(furtherIdentifiers)
subtypeIndication = GetSubtypeIndicationFromNode(parameterNode, "parameter", name)
- return cls(
- parameterNode,
- [
- name,
- ],
- subtypeIndication,
- )
+ return cls(parameterNode, identifiers, subtypeIndication, documentation)