aboutsummaryrefslogtreecommitdiffstats
path: root/pyGHDL/dom/_Utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'pyGHDL/dom/_Utils.py')
-rw-r--r--pyGHDL/dom/_Utils.py38
1 files changed, 38 insertions, 0 deletions
diff --git a/pyGHDL/dom/_Utils.py b/pyGHDL/dom/_Utils.py
new file mode 100644
index 000000000..f0c838517
--- /dev/null
+++ b/pyGHDL/dom/_Utils.py
@@ -0,0 +1,38 @@
+from pydecor import export
+
+from pyVHDLModel.VHDLModel import Mode
+
+from pyGHDL.libghdl import LibGHDLException, name_table
+from pyGHDL.libghdl.vhdl import nodes
+
+
+__all__ = []
+
+__MODE_TRANSLATION = {
+ nodes.Iir_Mode.In_Mode: Mode.In,
+ nodes.Iir_Mode.Out_Mode: Mode.Out,
+ nodes.Iir_Mode.Inout_Mode: Mode.InOut,
+ nodes.Iir_Mode.Buffer_Mode: Mode.Buffer,
+ nodes.Iir_Mode.Linkage_Mode: Mode.Linkage
+}
+
+@export
+def GetIirKindOfNode(node) -> nodes.Iir_Kind:
+ kind: int = nodes.Get_Kind(node)
+ return nodes.Iir_Kind(kind)
+
+
+@export
+def NodeToName(node) -> 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:
+ """Return the mode of a :obj:`port`."""
+ try:
+ return __MODE_TRANSLATION[nodes.Get_Mode(node)]
+ except KeyError:
+ raise LibGHDLException("Unknown mode.")