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 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176
|
# =============================================================================
# ____ _ _ ____ _ _ _ _ _ _ _
# _ __ _ _ / ___| | | | _ \| | | (_) |__ __ _| |__ __| | |
# | '_ \| | | | | _| |_| | | | | | | | | '_ \ / _` | '_ \ / _` | |
# | |_) | |_| | |_| | _ | |_| | |___ _| | | |_) | (_| | | | | (_| | |
# | .__/ \__, |\____|_| |_|____/|_____(_)_|_|_.__/ \__, |_| |_|\__,_|_|
# |_| |___/ |___/
# =============================================================================
# Authors:
# Tristan Gingold
# Patrick Lehmann
#
# Package module: 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_int32
from pyTooling.Decorators import export
from pyGHDL.libghdl import libghdl
from pyGHDL.libghdl._types import (
NameId,
Iir_Library_Declaration,
Iir_Design_Unit,
Iir_Design_File,
LocationType,
)
from pyGHDL.libghdl._decorator import BindToLibGHDL
__all__ = ["Library_Location", "Work_Library"]
Library_Location: LocationType = c_int32.in_dll(libghdl, "libraries__library_location")
"""
A location for library declarations (such as library WORK).
Use the property ``.value`` to access the variable's value.
"""
Work_Library: Iir_Library_Declaration = c_int32.in_dll(libghdl, "libraries__work_library")
"""
Library declaration for the work library.
.. note:: The identifier of the work_library is ``work_library_name``, which may be different from 'WORK'.
Use the property ``.value`` to access the variable's value.
"""
Work_Library_Name: NameId = c_int32.in_dll(libghdl, "libraries__work_library_name")
"""
Name of the 'WORK' library, usually 'work'.
Use the property ``.value`` to access the variable's value.
"""
@export
@BindToLibGHDL("libraries__get_libraries_chain")
def Get_Libraries_Chain() -> Iir_Library_Declaration:
"""
Get the chain of libraries. Can be used only to read (it mustn't be modified).
:return: undocumented
"""
return 0 # pragma: no cover
@export
@BindToLibGHDL("libraries__add_design_unit_into_library")
def Add_Design_Unit_Into_Library(Unit: Iir_Design_Unit, Keep_Obsolete: bool) -> None:
"""
Add or replace an design unit in the work library. DECL must not have a chain
(because it may be modified).
If the design_file of UNIT is not already in the library, a new one is created.
Units are always appended to the design_file. Therefore, the order is kept.
:param Unit: undocumented
:param Keep_Obsolete: If :obj:`Keep_Obsolete` is True, obsoleted units are
kept in the library.
This is used when a whole design file has to be added
in the library and then processed (without that feature,
redefined units would disappear).
"""
@export
@BindToLibGHDL("libraries__purge_design_file")
def Purge_Design_File(Design_File: Iir_Design_File) -> None:
"""
Remove the same file as :obj:`Design_File` from work library and all of its units.
:param Design_File: undocumented
"""
@export
@BindToLibGHDL("libraries__find_entity_for_component")
def Find_Entity_For_Component(Name: NameId) -> Iir_Design_Unit:
"""
Find an entity whose name is :obj:`Name` in any library. |br|
If there is no such entity, return :attr:`~pyGHDL.libghdl.vhdl.nodes.Null_Iir`. |br|
If there are several entities, return :attr:`~pyGHDL.libghdl.vhdl.nodes.Null_Iir`;
:param Name: Entity name to search for.
:return: undocumented
"""
return 0 # pragma: no cover
@export
@BindToLibGHDL("libraries__get_library_no_create")
def Get_Library_No_Create(Ident: NameId) -> Iir_Library_Declaration:
"""
Get the library named :obj:`Ident`.
:param Ident: Library to look for.
:return: Return :attr:`~pyGHDL.libghdl.vhdl.nodes.Null_Iir` if it doesn't exist.
"""
return 0 # pragma: no cover
@export
@BindToLibGHDL("libraries__get_library")
def Get_Library(Ident: NameId, Loc: LocationType, Force: bool) -> Iir_Library_Declaration:
"""
Get the library named :obj:`Ident`.
:param Ident: Library to look for.
:param Loc: Location in case of errors.
:return: Return :attr:`~pyGHDL.libghdl.vhdl.nodes.Null_Iir` if it doesn't exist.
"""
return 0 # pragma: no cover
@export
@BindToLibGHDL("libraries__find_primary_unit")
def Find_Primary_Unit(Library: Iir_Library_Declaration, Name: NameId) -> Iir_Design_Unit:
"""
Just return the design_unit for :obj:`Name`, or ``NULL`` if not found.
:param Library: Library to look in.
:param Name: Primary unit to search for.
:return: undocumented
"""
return 0 # pragma: no cover
@export
@BindToLibGHDL("libraries__load_work_library")
def Load_Work_Library(Empty: bool) -> None:
"""
Load the work library whose name is ``Work_Library_Name``.
:param Empty: If set, just create it.
"""
|