aboutsummaryrefslogtreecommitdiffstats
path: root/pyGHDL/dom/_Utils.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/_Utils.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/_Utils.py')
-rw-r--r--pyGHDL/dom/_Utils.py22
1 files changed, 18 insertions, 4 deletions
diff --git a/pyGHDL/dom/_Utils.py b/pyGHDL/dom/_Utils.py
index dbbb69e81..38a85c0c3 100644
--- a/pyGHDL/dom/_Utils.py
+++ b/pyGHDL/dom/_Utils.py
@@ -30,12 +30,14 @@
#
# SPDX-License-Identifier: GPL-2.0-or-later
# ============================================================================
+from pyGHDL.libghdl._types import Iir
from pydecor import export
from pyVHDLModel.VHDLModel import Mode
-from pyGHDL.libghdl import LibGHDLException, name_table
+from pyGHDL.libghdl import LibGHDLException, name_table, files_map
from pyGHDL.libghdl.vhdl import nodes
+from pyGHDL.dom.Misc import Position
__all__ = []
@@ -50,22 +52,34 @@ __MODE_TRANSLATION = {
@export
-def GetIirKindOfNode(node) -> nodes.Iir_Kind:
+def GetIirKindOfNode(node: Iir) -> nodes.Iir_Kind:
kind: int = nodes.Get_Kind(node)
return nodes.Iir_Kind(kind)
@export
-def NodeToName(node) -> str:
+def GetNameOfNode(node: Iir) -> str:
"""Return the python string from node :obj:`node` identifier"""
identifier = nodes.Get_Identifier(node)
return name_table.Get_Name_Ptr(identifier)
@export
-def GetModeOfNode(node) -> Mode:
+def GetModeOfNode(node: Iir) -> Mode:
"""Return the mode of a :obj:`port`."""
try:
return __MODE_TRANSLATION[nodes.Get_Mode(node)]
except KeyError:
raise LibGHDLException("Unknown mode.")
+
+
+@export
+def GetPositionOfNode(node: Iir) -> Position:
+ location = nodes.Get_Location(node)
+ file = files_map.Location_To_File(location)
+ fileName = name_table.Get_Name_Ptr(files_map.Get_File_Name(file))
+ # position = files_map.Location_File_To_Pos(location, file)
+ line = files_map.Location_File_To_Line(location, file)
+ column = files_map.Location_File_Line_To_Offset(location, file, line)
+
+ return Position(fileName, line, column)