1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
|
# =============================================================================
# ____ _ _ ____ _ _ _ _ _ _ _
# _ __ _ _ / ___| | | | _ \| | | (_) |__ __ _| |__ __| | |
# | '_ \| | | | | _| |_| | | | | | | | | '_ \ / _` | '_ \ / _` | |
# | |_) | |_| | |_| | _ | |_| | |___ _| | | |_) | (_| | | | | (_| | |
# | .__/ \__, |\____|_| |_|____/|_____(_)_|_|_.__/ \__, |_| |_|\__,_|_|
# |_| |___/ |___/
# =============================================================================
# Authors:
# Tristan Gingold
# Patrick Lehmann
#
# Package package: Python binding and low-level API for shared library 'libghdl'.
#
# License:
# ============================================================================
# Copyright (C) 2019-2021 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
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <gnu.org/licenses>.
#
# SPDX-License-Identifier: GPL-2.0-or-later
# ============================================================================
from ctypes import c_int8, c_int32, c_char_p, Structure
from pyTooling.Decorators import export
from pyGHDL.libghdl import ENCODING
from pyGHDL.libghdl._types import ErrorIndex
from pyGHDL.libghdl._decorator import BindToLibGHDL
@export
class Error_Message(Structure):
"""
Id : Msgid_Type
Message error/warning id
Group : Group_Type;
Whether this is an single message or a related one.
File : Source_File_Entry;
Error soure file.
Line : Natural;
The first line is line 1, 0 can be used when line number is not relevant.
Offset : Natural;
Offset in the line. The first character is at offset 0.
Length : Natural;
Length of the location (for a range). It is assumed to be on the same line;
use 0 when unknown.
"""
_fields_ = [
("id", c_int8),
("group", c_int8),
("file", c_int32),
("line", c_int32),
("offset", c_int32),
("length", c_int32),
]
# Values for group:
Msg_Single = 0
Msg_Main = 1
Msg_Related = 2
Msg_Last = 3
@export
@BindToLibGHDL("errorout__memory__install_handler")
def Install_Handler() -> None:
"""Install the handlers for reporting errors."""
@export
@BindToLibGHDL("errorout__memory__get_nbr_messages")
def Get_Nbr_Messages() -> ErrorIndex:
"""
Get number of error messages available.
:return: Number of messages available.
"""
return 0 # pragma: no cover
@export
@BindToLibGHDL("errorout__memory__get_error_record")
def Get_Error_Record(Idx: ErrorIndex) -> Error_Message:
"""
Get error messages by index :obj:`Idy` as structure :class:`Error_Message`.
:param Idx: Index from 1 to ``Nbr_Messages`` See :func:`Get_Nbr_Messages`.
:return: Type: ``Error_Message``
"""
# @export
@BindToLibGHDL("errorout__memory__get_error_message_addr")
def _Get_Error_Message(Idx: ErrorIndex) -> c_char_p:
return "" # pragma: no cover
@export
def Get_Error_Message(Idx: ErrorIndex) -> str:
"""
Get error messages by index :obj:`Idx` as string.
:param Idx: Index from 1 to ``Nbr_Messages`` See :func:`Get_Nbr_Messages`.
:return: Error message.
"""
return _Get_Error_Message(Idx).decode(ENCODING)
@export
@BindToLibGHDL("errorout__memory__clear_errors")
def Clear_Errors() -> None:
"""Remove all error messages."""
|