aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick Lehmann <Patrick.Lehmann@plc2.de>2021-07-30 22:42:40 +0200
committerumarcor <unai.martinezcorral@ehu.eus>2021-08-23 16:35:33 +0200
commit8a71357337e46c256f9a243fb574dd78dcec67bc (patch)
tree64ccf1460f9a61a029611a2789b1c0a2f10eb0e1
parent7ad5199fef58f8966121adaeda0440b10840ccdd (diff)
downloadghdl-8a71357337e46c256f9a243fb574dd78dcec67bc.tar.gz
ghdl-8a71357337e46c256f9a243fb574dd78dcec67bc.tar.bz2
ghdl-8a71357337e46c256f9a243fb574dd78dcec67bc.zip
Trying to provide a binding for str_table.
-rw-r--r--pyGHDL/dom/Literal.py4
-rw-r--r--pyGHDL/libghdl/str_table.py60
2 files changed, 62 insertions, 2 deletions
diff --git a/pyGHDL/dom/Literal.py b/pyGHDL/dom/Literal.py
index 435563793..5fb31f0e7 100644
--- a/pyGHDL/dom/Literal.py
+++ b/pyGHDL/dom/Literal.py
@@ -42,7 +42,7 @@ from pyVHDLModel.SyntaxModel import (
CharacterLiteral as VHDLModel_CharacterLiteral,
StringLiteral as VHDLModel_StringLiteral,
)
-from pyGHDL.libghdl import name_table
+from pyGHDL.libghdl import name_table, str_table
from pyGHDL.libghdl._types import Iir
from pyGHDL.libghdl.vhdl import nodes
from pyGHDL.dom import DOMMixin
@@ -150,5 +150,5 @@ class StringLiteral(VHDLModel_StringLiteral, DOMMixin):
@classmethod
def parse(cls, literalNode: Iir) -> "StringLiteral":
stringID = nodes.Get_String8_Id(literalNode)
- value = name_table.Get_Name_Ptr(stringID)
+ value = str_table.Get_String8_Ptr(stringID)
return cls(literalNode, value)
diff --git a/pyGHDL/libghdl/str_table.py b/pyGHDL/libghdl/str_table.py
new file mode 100644
index 000000000..4cd138f44
--- /dev/null
+++ b/pyGHDL/libghdl/str_table.py
@@ -0,0 +1,60 @@
+# =============================================================================
+# ____ _ _ ____ _ _ _ _ _ _ _
+# _ __ _ _ / ___| | | | _ \| | | (_) |__ __ _| |__ __| | |
+# | '_ \| | | | | _| |_| | | | | | | | | '_ \ / _` | '_ \ / _` | |
+# | |_) | |_| | |_| | _ | |_| | |___ _| | | |_) | (_| | | | | (_| | |
+# | .__/ \__, |\____|_| |_|____/|_____(_)_|_|_.__/ \__, |_| |_|\__,_|_|
+# |_| |___/ |___/
+# =============================================================================
+# 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_char_p
+
+from pydecor import export
+
+from pyGHDL.libghdl._types import String8Id
+from pyGHDL.libghdl._decorator import BindToLibGHDL
+
+
+@export
+@BindToLibGHDL("str_table__string8_address")
+def _String8_Address(Id: String8Id) -> c_char_p:
+ """"""
+ return ""
+
+
+@export
+def Get_String8_Ptr(Id: String8Id) -> str:
+ """
+ Get the address of string8 ID. Note that as soon as a character is appended
+ (using Append_String8) or a string8 is resized (using Resize_String8), an
+ address previously returned is not valid anymore.
+
+ :param Id: String8Id for the string to query.
+ :return: String8 as string.
+ """
+ return _String8_Address(Id).decode("utf-8")