diff options
author | Patrick Lehmann <Patrick.Lehmann@plc2.de> | 2021-06-26 13:48:09 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-26 13:48:09 +0200 |
commit | 111fe055b2f0f3a0225d2553cf739572d691a14d (patch) | |
tree | 50d3a874bb78107627a6509fd4054c7fdc96cd25 /pyGHDL/libghdl | |
parent | 15c6de72bc8dd316cb5262e1b5f373ca45b05f68 (diff) | |
download | ghdl-111fe055b2f0f3a0225d2553cf739572d691a14d.tar.gz ghdl-111fe055b2f0f3a0225d2553cf739572d691a14d.tar.bz2 ghdl-111fe055b2f0f3a0225d2553cf739572d691a14d.zip |
More DOM improvements (#1806)
* First try to handle names.
* Reworked names.
* Reworked range expressions.
* Handle AttributeNames.
* Added handling of file declaration and attribute declarations.
* Improved error outputs.
* Handle protected types.
* Make black happy with ugly code.
* Handle Null literal and File parameters.
* File type and physical type.
* Don't fail on reported syntax errors.
Catch call errors into libghdl.
* Improved Sanity checks for pyGHDL.dom.
* Load sourcecode via Python and process in-memory.
Fixed testcases.
* Added package instantiations and packages with generics.
* Added UseClause, AttributeSpecification and PhysicalTypes.
* Improved pretty-printing.
* Fixed AttributeName in subtype indication.
* Get code position of IIR nodes.
* Added DOMMixin into all derived classes.
* Mark as not yet implemented.
* Pinned pyVHDLModel version to v0.10.4.
* Removed xfail in LSP test.
Bumped requirement of pyVHDLModel to v0.10.4.
Fixed some Codacy issues.
(cherry picked from commit f64e7ed7c3d69cbf84cd60db8e9b085e90b846cb)
Diffstat (limited to 'pyGHDL/libghdl')
-rw-r--r-- | pyGHDL/libghdl/__init__.py | 10 | ||||
-rw-r--r-- | pyGHDL/libghdl/_decorator.py | 26 | ||||
-rw-r--r-- | pyGHDL/libghdl/files_map_editor.py | 4 |
3 files changed, 30 insertions, 10 deletions
diff --git a/pyGHDL/libghdl/__init__.py b/pyGHDL/libghdl/__init__.py index 525710590..d23ffc0e7 100644 --- a/pyGHDL/libghdl/__init__.py +++ b/pyGHDL/libghdl/__init__.py @@ -87,7 +87,7 @@ def _check_libghdl_bindir(bindir: Path, basename: Path) -> Path: def _get_libghdl_path(): - """ + """\ Locate the directory where the shared library is installed. Search order: @@ -182,7 +182,7 @@ def initialize() -> None: @export # @BindToLibGHDL("libghdl__set_option") def set_option(Opt: str) -> bool: - """ + """\ Set option :obj:`opt`. :param Opt: Option to set. @@ -195,7 +195,7 @@ def set_option(Opt: str) -> bool: @export # @BindToLibGHDL("libghdl__analyze_init") def analyze_init() -> None: - """ + """\ Initialize the analyzer. .. deprecated:: 1.0.0 @@ -207,7 +207,7 @@ def analyze_init() -> None: @export # @BindToLibGHDL("libghdl__analyze_init_status") def analyze_init_status() -> int: - """ + """\ Initialize the analyzer. :return: Returns 0 in case of success. @@ -218,7 +218,7 @@ def analyze_init_status() -> int: @export # @BindToLibGHDL("libghdl__analyze_file") def analyze_file(fname: str) -> Iir: - """ + """\ Analyze a given filename :obj:`fname`. :param fname: File name diff --git a/pyGHDL/libghdl/_decorator.py b/pyGHDL/libghdl/_decorator.py index a680cc9d1..9c5aefa19 100644 --- a/pyGHDL/libghdl/_decorator.py +++ b/pyGHDL/libghdl/_decorator.py @@ -48,7 +48,7 @@ from typing import Callable, List, Dict, Any, TypeVar from pydecor import export -from pyGHDL.libghdl import libghdl +from pyGHDL.libghdl import libghdl, LibGHDLException @export @@ -181,14 +181,34 @@ def BindToLibGHDL(subprogramName): @wraps(func) def inner(*args): - return returnType(functionPointer(*args)) + try: + returnValue = functionPointer(*args) + except OSError as ex: + errors = [str(ex)] + raise LibGHDLException( + "Caught exception when calling '{func}' in libghdl.".format( + func=subprogramName + ), + errors, + ) from ex + + return returnType(returnValue) return inner else: @wraps(func) def inner(*args): - return functionPointer(*args) + try: + return functionPointer(*args) + except OSError as ex: + errors = [str(ex)] + raise LibGHDLException( + "Caught exception when calling '{func}' in libghdl.".format( + func=subprogramName + ), + errors, + ) from ex return inner diff --git a/pyGHDL/libghdl/files_map_editor.py b/pyGHDL/libghdl/files_map_editor.py index eceb3efe2..2009af882 100644 --- a/pyGHDL/libghdl/files_map_editor.py +++ b/pyGHDL/libghdl/files_map_editor.py @@ -32,7 +32,7 @@ # SPDX-License-Identifier: GPL-2.0-or-later # ============================================================================ -from ctypes import c_int32, c_char_p, c_bool +from ctypes import c_int32, c_char_p, c_bool, c_uint32 from pydecor import export @@ -113,7 +113,7 @@ def Fill_Text(File: SourceFileEntry, Text_Pointer, Text_Length: int) -> None: @export # @BindToLibGHDL("files_map__editor__check_buffer_content") def Check_Buffer_Content( - File: SourceFileEntry, String_Pointer, String_Length: int + File: SourceFileEntry, String_Pointer: c_char_p, String_Length: c_uint32 ) -> None: """ Check that content of :obj:`File` is STR[1 .. STR_LEN]. |