aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pyGHDL/dom/Literal.py10
-rw-r--r--pyGHDL/libghdl/str_table.py4
2 files changed, 9 insertions, 5 deletions
diff --git a/pyGHDL/dom/Literal.py b/pyGHDL/dom/Literal.py
index 5fb31f0e7..26be52ec8 100644
--- a/pyGHDL/dom/Literal.py
+++ b/pyGHDL/dom/Literal.py
@@ -149,6 +149,10 @@ class StringLiteral(VHDLModel_StringLiteral, DOMMixin):
@classmethod
def parse(cls, literalNode: Iir) -> "StringLiteral":
- stringID = nodes.Get_String8_Id(literalNode)
- value = str_table.Get_String8_Ptr(stringID)
- return cls(literalNode, value)
+ if nodes.Get_Bit_String_Base(literalNode) is nodes.NumberBaseType.Base_None:
+ value = str_table.Get_String8_Ptr(
+ nodes.Get_String8_Id(literalNode), nodes.Get_String_Length(literalNode)
+ )
+ return cls(literalNode, value)
+ else:
+ print("[NOT IMPLEMENTED] Bit String Literal not supported yet")
diff --git a/pyGHDL/libghdl/str_table.py b/pyGHDL/libghdl/str_table.py
index 4cd138f44..f87e9db8b 100644
--- a/pyGHDL/libghdl/str_table.py
+++ b/pyGHDL/libghdl/str_table.py
@@ -48,7 +48,7 @@ def _String8_Address(Id: String8Id) -> c_char_p:
@export
-def Get_String8_Ptr(Id: String8Id) -> str:
+def Get_String8_Ptr(Id: String8Id, Length: int) -> 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
@@ -57,4 +57,4 @@ def Get_String8_Ptr(Id: String8Id) -> str:
:param Id: String8Id for the string to query.
:return: String8 as string.
"""
- return _String8_Address(Id).decode("utf-8")
+ return _String8_Address(Id)[:Length].decode("utf-8")