From 0b16ac19879a49acfe777a922dff182e18574442 Mon Sep 17 00:00:00 2001 From: Patrick Lehmann Date: Sun, 27 Dec 2020 23:27:35 +0100 Subject: Added first implementation of a document object model (DOM). --- pyGHDL/dom/Common.py | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 pyGHDL/dom/Common.py (limited to 'pyGHDL/dom/Common.py') diff --git a/pyGHDL/dom/Common.py b/pyGHDL/dom/Common.py new file mode 100644 index 000000000..8baa6537e --- /dev/null +++ b/pyGHDL/dom/Common.py @@ -0,0 +1,48 @@ +from pydecor import export + +from pyVHDLModel.VHDLModel import Modes + +from libghdl.thin import name_table +from libghdl.thin.vhdl import nodes + +__all__ = [] +__api__ = __all__ + + +@export +class GHDLBaseException(Exception): + pass + + +@export +class LibGHDLException(GHDLBaseException): + pass + + +@export +class GHDLException(GHDLBaseException): + pass + + +@export +class GHDLMixin: + _MODE_TRANSLATION = { + nodes.Iir_Mode.In_Mode: Modes.In, + nodes.Iir_Mode.Out_Mode: Modes.Out, + nodes.Iir_Mode.Inout_Mode: Modes.InOut, + nodes.Iir_Mode.Buffer_Mode: Modes.Buffer, + nodes.Iir_Mode.Linkage_Mode: Modes.Linkage + } + + @classmethod + def _ghdlNodeToName(cls, node): + """Return the python string from node :param:`node` identifier""" + return name_table.Get_Name_Ptr(nodes.Get_Identifier(node)).decode("utf-8") + + @classmethod + def _ghdlPortToMode(cls, port): + """Return the mode of a port.""" + try: + return cls._MODE_TRANSLATION[nodes.Get_Mode(port)] + except KeyError: + raise LibGHDLException("Unknown mode.") -- cgit v1.2.3 From 71a7c3b1102b888f0560de64d9efaa48d8a3738f Mon Sep 17 00:00:00 2001 From: Patrick Lehmann Date: Tue, 29 Dec 2020 00:46:41 +0100 Subject: Fixed package names in pyGHDL.dom and Initialize test case. --- pyGHDL/dom/Common.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'pyGHDL/dom/Common.py') diff --git a/pyGHDL/dom/Common.py b/pyGHDL/dom/Common.py index 8baa6537e..0cd41c99e 100644 --- a/pyGHDL/dom/Common.py +++ b/pyGHDL/dom/Common.py @@ -2,8 +2,8 @@ from pydecor import export from pyVHDLModel.VHDLModel import Modes -from libghdl.thin import name_table -from libghdl.thin.vhdl import nodes +from pyGHDL.libghdl import name_table +from pyGHDL.libghdl.vhdl import nodes __all__ = [] __api__ = __all__ -- cgit v1.2.3