aboutsummaryrefslogtreecommitdiffstats
path: root/pyGHDL/dom/DesignUnit.py
diff options
context:
space:
mode:
authorPatrick Lehmann <Patrick.Lehmann@plc2.de>2022-11-28 23:16:11 +0100
committerPatrick Lehmann <Patrick.Lehmann@plc2.de>2022-12-23 23:42:29 +0100
commit3a3e8e5fded027c1dc6e3566c5ad9a30e8bc5297 (patch)
tree150f8e74ef2490b930d70f0c32a72a701c9d3730 /pyGHDL/dom/DesignUnit.py
parent93bf628dc6178674d01255b2b609245605b0aca4 (diff)
downloadghdl-3a3e8e5fded027c1dc6e3566c5ad9a30e8bc5297.tar.gz
ghdl-3a3e8e5fded027c1dc6e3566c5ad9a30e8bc5297.tar.bz2
ghdl-3a3e8e5fded027c1dc6e3566c5ad9a30e8bc5297.zip
Added handling of associated documentation comments.
Diffstat (limited to 'pyGHDL/dom/DesignUnit.py')
-rw-r--r--pyGHDL/dom/DesignUnit.py54
1 files changed, 35 insertions, 19 deletions
diff --git a/pyGHDL/dom/DesignUnit.py b/pyGHDL/dom/DesignUnit.py
index f45cb8340..853184450 100644
--- a/pyGHDL/dom/DesignUnit.py
+++ b/pyGHDL/dom/DesignUnit.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
@@ -66,7 +66,7 @@ from pyGHDL.libghdl import utils
from pyGHDL.libghdl._types import Iir
from pyGHDL.libghdl.vhdl import nodes
from pyGHDL.dom import DOMMixin, Position, DOMException
-from pyGHDL.dom._Utils import GetNameOfNode
+from pyGHDL.dom._Utils import GetNameOfNode, GetDocumentationOfNode
from pyGHDL.dom._Translate import (
GetGenericsFromChainedNodes,
GetPortsFromChainedNodes,
@@ -132,13 +132,15 @@ class Entity(VHDLModel_Entity, DOMMixin):
portItems: Iterable[PortInterfaceItem] = None,
declaredItems: Iterable = None,
statements: Iterable["ConcurrentStatement"] = None,
+ documentation: str = None
):
- super().__init__(identifier, contextItems, genericItems, portItems, declaredItems, statements)
+ super().__init__(identifier, contextItems, genericItems, portItems, declaredItems, statements, documentation)
DOMMixin.__init__(self, node)
@classmethod
def parse(cls, entityNode: Iir, contextItems: Iterable[ContextUnion]):
name = GetNameOfNode(entityNode)
+ documentation = GetDocumentationOfNode(entityNode)
generics = GetGenericsFromChainedNodes(nodes.Get_Generic_Chain(entityNode))
ports = GetPortsFromChainedNodes(nodes.Get_Port_Chain(entityNode))
declaredItems = GetDeclaredItemsFromChainedNodes(nodes.Get_Declaration_Chain(entityNode), "entity", name)
@@ -148,7 +150,7 @@ class Entity(VHDLModel_Entity, DOMMixin):
# FIXME: read use clauses
- return cls(entityNode, name, contextItems, generics, ports, declaredItems, statements)
+ return cls(entityNode, name, contextItems, generics, ports, declaredItems, statements, documentation)
@export
@@ -161,13 +163,15 @@ class Architecture(VHDLModel_Architecture, DOMMixin):
contextItems: Iterable[ContextUnion] = None,
declaredItems: Iterable = None,
statements: Iterable["ConcurrentStatement"] = None,
+ documentation: str = None
):
- super().__init__(identifier, entity, contextItems, declaredItems, statements)
+ super().__init__(identifier, entity, contextItems, declaredItems, statements, documentation)
DOMMixin.__init__(self, node)
@classmethod
def parse(cls, architectureNode: Iir, contextItems: Iterable[ContextUnion]):
name = GetNameOfNode(architectureNode)
+ documentation = GetDocumentationOfNode(architectureNode)
entityNameNode = nodes.Get_Entity_Name(architectureNode)
entityName = GetNameOfNode(entityNameNode)
entity = EntitySymbol(entityNameNode, SimpleName(entityNameNode, entityName))
@@ -180,7 +184,7 @@ class Architecture(VHDLModel_Architecture, DOMMixin):
# FIXME: read use clauses
- return cls(architectureNode, name, entity, contextItems, declaredItems, statements)
+ return cls(architectureNode, name, entity, contextItems, declaredItems, statements, documentation)
@export
@@ -191,17 +195,19 @@ class Component(VHDLModel_Component, DOMMixin):
identifier: str,
genericItems: Iterable[GenericInterfaceItem] = None,
portItems: Iterable[PortInterfaceItem] = None,
+ documentation: str = None
):
- super().__init__(identifier, genericItems, portItems)
+ super().__init__(identifier, genericItems, portItems, documentation)
DOMMixin.__init__(self, node)
@classmethod
def parse(cls, componentNode: Iir):
name = GetNameOfNode(componentNode)
+ documentation = GetDocumentationOfNode(componentNode)
generics = GetGenericsFromChainedNodes(nodes.Get_Generic_Chain(componentNode))
ports = GetPortsFromChainedNodes(nodes.Get_Port_Chain(componentNode))
- return cls(componentNode, name, generics, ports)
+ return cls(componentNode, name, generics, ports, documentation)
@export
@@ -213,13 +219,15 @@ class Package(VHDLModel_Package, DOMMixin):
contextItems: Iterable[ContextUnion] = None,
genericItems: Iterable[GenericInterfaceItem] = None,
declaredItems: Iterable = None,
+ documentation: str = None
):
- super().__init__(identifier, contextItems, genericItems, declaredItems)
+ super().__init__(identifier, contextItems, genericItems, declaredItems, documentation)
DOMMixin.__init__(self, node)
@classmethod
def parse(cls, packageNode: Iir, contextItems: Iterable[ContextUnion]):
name = GetNameOfNode(packageNode)
+ documentation = GetDocumentationOfNode(packageNode)
packageHeader = nodes.Get_Package_Header(packageNode)
if packageHeader is not nodes.Null_Iir:
@@ -231,7 +239,7 @@ class Package(VHDLModel_Package, DOMMixin):
# FIXME: read use clauses
- return cls(packageNode, name, contextItems, generics, declaredItems)
+ return cls(packageNode, name, contextItems, generics, declaredItems, documentation)
@export
@@ -242,18 +250,20 @@ class PackageBody(VHDLModel_PackageBody, DOMMixin):
identifier: str,
contextItems: Iterable[ContextUnion] = None,
declaredItems: Iterable = None,
+ documentation: str = None
):
- super().__init__(identifier, contextItems, declaredItems)
+ super().__init__(identifier, contextItems, declaredItems, documentation)
DOMMixin.__init__(self, node)
@classmethod
def parse(cls, packageBodyNode: Iir, contextItems: Iterable[ContextUnion]):
name = GetNameOfNode(packageBodyNode)
+ documentation = GetDocumentationOfNode(packageBodyNode)
declaredItems = GetDeclaredItemsFromChainedNodes(nodes.Get_Declaration_Chain(packageBodyNode), "package", name)
# FIXME: read use clauses
- return cls(packageBodyNode, name, contextItems, declaredItems)
+ return cls(packageBodyNode, name, contextItems, declaredItems, documentation)
@export
@@ -264,13 +274,15 @@ class PackageInstantiation(VHDLModel_PackageInstantiation, DOMMixin):
identifier: str,
uninstantiatedPackageName: Name,
# genericItems: List[GenericInterfaceItem] = None,
+ documentation: str = None
):
- super().__init__(identifier, uninstantiatedPackageName)
+ super().__init__(identifier, uninstantiatedPackageName, documentation)
DOMMixin.__init__(self, node)
@classmethod
def parse(cls, packageNode: Iir):
name = GetNameOfNode(packageNode)
+ documentation = GetDocumentationOfNode(packageNode)
uninstantiatedPackageName = nodes.Get_Uninstantiated_Package_Name(packageNode)
# FIXME: read use clauses (does it apply here too?)
@@ -278,7 +290,7 @@ class PackageInstantiation(VHDLModel_PackageInstantiation, DOMMixin):
# FIXME: read generic map
# genericAssociations = GetGenericMapAspect(nodes.Get_Generic_Map_Aspect_Chain(instantiationNode))
- return cls(packageNode, name, uninstantiatedPackageName)
+ return cls(packageNode, name, uninstantiatedPackageName, documentation)
@export
@@ -289,8 +301,9 @@ class Context(VHDLModel_Context, DOMMixin):
identifier: str,
libraryReferences: Iterable[LibraryClause] = None,
packageReferences: Iterable[UseClause] = None,
+ documentation: str = None
):
- super().__init__(identifier, libraryReferences, packageReferences)
+ super().__init__(identifier, libraryReferences, packageReferences, documentation)
DOMMixin.__init__(self, node)
@classmethod
@@ -298,6 +311,7 @@ class Context(VHDLModel_Context, DOMMixin):
from pyGHDL.dom._Utils import GetIirKindOfNode
name = GetNameOfNode(contextNode)
+ documentation = GetDocumentationOfNode(contextNode)
items = []
names = []
@@ -316,7 +330,7 @@ class Context(VHDLModel_Context, DOMMixin):
pos = Position.parse(item)
raise DOMException(f"Unknown context item kind '{kind.name}' in context at line {pos.Line}.")
- return cls(contextNode, name, items)
+ return cls(contextNode, name, items, documentation)
@export
@@ -326,15 +340,17 @@ class Configuration(VHDLModel_Configuration, DOMMixin):
node: Iir,
identifier: str,
contextItems: Iterable[Context] = None,
+ documentation: str = None
):
- super().__init__(identifier, contextItems)
+ super().__init__(identifier, contextItems, documentation)
DOMMixin.__init__(self, node)
@classmethod
def parse(cls, configurationNode: Iir, contextItems: Iterable[Context]):
- name = GetNameOfNode(configurationNode)
+ name = GetNameOfNode(configurationNode),
+ documentation = GetDocumentationOfNode(configurationNode)
# FIXME: read use clauses
# FIXME: read specifications
- return cls(configurationNode, name, contextItems)
+ return cls(configurationNode, name, contextItems, documentation)