diff options
author | Tristan Gingold <tgingold@free.fr> | 2022-11-20 20:01:14 +0100 |
---|---|---|
committer | Tristan Gingold <tgingold@free.fr> | 2022-11-20 20:01:14 +0100 |
commit | f722f900f4211bbddc0f432ce652e68313807ee0 (patch) | |
tree | b91ab3b2768acb6b5323fa1b9aebfecc163662fc /pyGHDL/libghdl | |
parent | a4f4840bfee3adf2eff26ffb9e5c68182d034dd4 (diff) | |
download | ghdl-f722f900f4211bbddc0f432ce652e68313807ee0.tar.gz ghdl-f722f900f4211bbddc0f432ce652e68313807ee0.tar.bz2 ghdl-f722f900f4211bbddc0f432ce652e68313807ee0.zip |
pyGHDL: add file_comments.py
Diffstat (limited to 'pyGHDL/libghdl')
-rw-r--r-- | pyGHDL/libghdl/_decorator.py | 2 | ||||
-rw-r--r-- | pyGHDL/libghdl/file_comments.py | 94 | ||||
-rw-r--r-- | pyGHDL/libghdl/flags.py | 3 |
3 files changed, 98 insertions, 1 deletions
diff --git a/pyGHDL/libghdl/_decorator.py b/pyGHDL/libghdl/_decorator.py index 49694e8a3..b124461e5 100644 --- a/pyGHDL/libghdl/_decorator.py +++ b/pyGHDL/libghdl/_decorator.py @@ -99,7 +99,7 @@ def BindToLibGHDL(subprogramName): return c_bool elif typ is bytes: return c_char_p - elif typ in (c_char, c_char_p): + elif typ in (c_char, c_char_p, c_uint32): return typ elif isinstance(typ, TypeVar): # Humm, recurse ? diff --git a/pyGHDL/libghdl/file_comments.py b/pyGHDL/libghdl/file_comments.py new file mode 100644 index 000000000..1a942d008 --- /dev/null +++ b/pyGHDL/libghdl/file_comments.py @@ -0,0 +1,94 @@ +# ============================================================================= +# ____ _ _ ____ _ _ _ _ _ _ _ +# _ __ _ _ / ___| | | | _ \| | | (_) |__ __ _| |__ __| | | +# | '_ \| | | | | _| |_| | | | | | | | | '_ \ / _` | '_ \ / _` | | +# | |_) | |_| | |_| | _ | |_| | |___ _| | | |_) | (_| | | | | (_| | | +# | .__/ \__, |\____|_| |_|____/|_____(_)_|_|_.__/ \__, |_| |_|\__,_|_| +# |_| |___/ |___/ +# ============================================================================= +# 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_uint32 +from typing import TypeVar + +from pyTooling.Decorators import export + +from pyGHDL.libghdl._types import SourceFileEntry, SourcePtr +from pyGHDL.libghdl._decorator import BindToLibGHDL +import pyGHDL.libghdl.files_map as files_map + +__all__ = [ + "Comment_Index", + "No_Comment_Index", + ] + +Comment_Index = TypeVar("Comment_Index", bound=c_uint32) + +No_Comment_Index = 0 + +@export +@BindToLibGHDL("file_comments__find_first_comment") +def Find_First_Comment(File: SourceFileEntry, N: c_uint32) -> Comment_Index: + """ + Get the first comment associated to a node. + :param N: Node + :param File: Source file for node + :return: The first comment index, or No_Comment_Index if none. + """ + return 0 + +@export +@BindToLibGHDL("file_comments__get_comment_start") +def Get_Comment_Start(File: SourceFileEntry, Idx: Comment_Index) -> SourcePtr: + """ + Get the start of comment + """ + +@export +@BindToLibGHDL("file_comments__get_comment_last") +def Get_Comment_Last(File: SourceFileEntry, Idx: Comment_Index) -> SourcePtr: + """ + Get the end of comment + """ + +def Get_Comment(File: SourceFileEntry, Idx: Comment_Index) -> str: + """ + Get a comment + """ + buf = files_map.Get_File_Buffer(File) + s = Get_Comment_Start(File, Idx); + l = Get_Comment_Last(File, Idx); + return buf[s:l].decode("iso-8859-1") + +@export +@BindToLibGHDL("file_comments__get_next_comment") +def Get_Next_Comment(File: SourceFileEntry, Idx: Comment_Index) -> Comment_Index: + """ + Get the next comment + """ + diff --git a/pyGHDL/libghdl/flags.py b/pyGHDL/libghdl/flags.py index f62d5de2c..fadd3bb52 100644 --- a/pyGHDL/libghdl/flags.py +++ b/pyGHDL/libghdl/flags.py @@ -41,6 +41,7 @@ __all__ = [ "Verbose", "Flag_Elaborate_With_Outdated", "Flag_Force_Analysis", + "Flag_Gather_Comments", ] assert sizeof(c_bool) == 1 @@ -52,3 +53,5 @@ Verbose = c_bool.in_dll(libghdl, "flags__verbose") Flag_Elaborate_With_Outdated = c_bool.in_dll(libghdl, "flags__flag_elaborate_with_outdated") Flag_Force_Analysis = c_bool.in_dll(libghdl, "flags__flag_force_analysis") + +Flag_Gather_Comments = c_bool.in_dll(libghdl, "flags__flag_gather_comments") |