aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/grt/grt-disp_signals.adb1
-rw-r--r--src/grt/grt-rtis_utils.adb1
-rw-r--r--src/grt/grt-vstrings.adb21
-rw-r--r--src/grt/grt-vstrings.ads9
-rw-r--r--src/grt/grt-vstrings_io.adb50
-rw-r--r--src/grt/grt-vstrings_io.ads34
6 files changed, 92 insertions, 24 deletions
diff --git a/src/grt/grt-disp_signals.adb b/src/grt/grt-disp_signals.adb
index d3d095657..a5e9993b2 100644
--- a/src/grt/grt-disp_signals.adb
+++ b/src/grt/grt-disp_signals.adb
@@ -34,6 +34,7 @@ with Grt.Astdio.Vhdl; use Grt.Astdio.Vhdl;
with Grt.Errors; use Grt.Errors;
pragma Elaborate_All (Grt.Rtis_Utils);
with Grt.Vstrings; use Grt.Vstrings;
+with Grt.Vstrings_IO; use Grt.Vstrings_IO;
with Grt.Options;
with Grt.Processes;
with Grt.Disp; use Grt.Disp;
diff --git a/src/grt/grt-rtis_utils.adb b/src/grt/grt-rtis_utils.adb
index 0b7e43e2b..7f78de01c 100644
--- a/src/grt/grt-rtis_utils.adb
+++ b/src/grt/grt-rtis_utils.adb
@@ -25,6 +25,7 @@
with Grt.Errors; use Grt.Errors;
with Grt.To_Strings; use Grt.To_Strings;
+with Grt.Vstrings_IO; use Grt.Vstrings_IO;
package body Grt.Rtis_Utils is
diff --git a/src/grt/grt-vstrings.adb b/src/grt/grt-vstrings.adb
index af982a50c..818701fa0 100644
--- a/src/grt/grt-vstrings.adb
+++ b/src/grt/grt-vstrings.adb
@@ -24,7 +24,6 @@
-- covered by the GNU Public License.
with Grt.Errors; use Grt.Errors;
-with Grt.C; use Grt.C;
package body Grt.Vstrings is
procedure Free (Fs : Fat_String_Acc);
@@ -112,15 +111,10 @@ package body Grt.Vstrings is
Vstr.Len := Len;
end Truncate;
- procedure Put (Stream : FILEs; Vstr : Vstring)
- is
- S : size_t;
+ function Get_Address (Vstr : Vstring) return Address is
begin
- S := size_t (Vstr.Len);
- if S > 0 then
- S := fwrite (Vstr.Str (1)'Address, S, 1, Stream);
- end if;
- end Put;
+ return Vstr.Str.all'Address;
+ end Get_Address;
function Get_C_String (Vstr : Vstring) return Ghdl_C_String is
begin
@@ -212,13 +206,4 @@ package body Grt.Vstrings is
Rstr.Str (Rstr.First .. Rstr.First + Len - 1);
end if;
end Copy;
-
- procedure Put (Stream : FILEs; Rstr : Rstring)
- is
- S : size_t;
- pragma Unreferenced (S);
- begin
- S := fwrite (Get_Address (Rstr), size_t (Length (Rstr)), 1, Stream);
- end Put;
-
end Grt.Vstrings;
diff --git a/src/grt/grt-vstrings.ads b/src/grt/grt-vstrings.ads
index 7914397a2..02d0504db 100644
--- a/src/grt/grt-vstrings.ads
+++ b/src/grt/grt-vstrings.ads
@@ -22,7 +22,7 @@
-- covered by the GNU General Public License. This exception does not
-- however invalidate any other reasons why the executable file might be
-- covered by the GNU Public License.
-with Grt.Stdio; use Grt.Stdio;
+
with Grt.Types; use Grt.Types;
with System; use System;
@@ -54,8 +54,8 @@ package Grt.Vstrings is
-- It is an error if LEN is greater than the current length.
procedure Truncate (Vstr : in out Vstring; Len : Natural);
- -- Display VSTR.
- procedure Put (Stream : FILEs; Vstr : Vstring);
+ -- Return the address of the first character of VSTR.
+ function Get_Address (Vstr : Vstring) return Address;
-- Get VSTR as a C String. The NUL character must have been added.
function Get_C_String (Vstr : Vstring) return Ghdl_C_String;
@@ -77,9 +77,6 @@ package Grt.Vstrings is
-- Return the address of the first character of RSTR.
function Get_Address (Rstr : Rstring) return Address;
- -- Display RSTR.
- procedure Put (Stream : FILEs; Rstr : Rstring);
-
-- Copy RSTR to STR, and return length of the string to LEN.
procedure Copy (Rstr : Rstring; Str : in out String; Len : out Natural);
diff --git a/src/grt/grt-vstrings_io.adb b/src/grt/grt-vstrings_io.adb
new file mode 100644
index 000000000..2be691acd
--- /dev/null
+++ b/src/grt/grt-vstrings_io.adb
@@ -0,0 +1,50 @@
+-- GHDL Run Time (GRT) - IO for variable strings.
+-- Copyright (C) 2019 Tristan Gingold
+--
+-- GHDL 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, or (at your option) any later
+-- version.
+--
+-- GHDL 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 GCC; see the file COPYING. If not, write to the Free
+-- Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+-- 02111-1307, USA.
+--
+-- As a special exception, if other files instantiate generics from this
+-- unit, or you link this unit with other files to produce an executable,
+-- this unit does not by itself cause the resulting executable to be
+-- covered by the GNU General Public License. This exception does not
+-- however invalidate any other reasons why the executable file might be
+-- covered by the GNU Public License.
+
+with Grt.Errors; use Grt.Errors;
+with Grt.C; use Grt.C;
+
+package body Grt.Vstrings_IO is
+ procedure Put (Stream : FILEs; Vstr : Vstring)
+ is
+ S : size_t;
+ begin
+ S := size_t (Length (Vstr));
+ if S > 0 then
+ S := fwrite (Get_Address (Vstr), S, 1, Stream);
+ end if;
+ end Put;
+
+ procedure Put (Stream : FILEs; Rstr : Rstring)
+ is
+ S : size_t;
+ begin
+ S := size_t (Length (Rstr));
+ if S > 0 then
+ S := fwrite (Get_Address (Rstr), S, 1, Stream);
+ end if;
+ end Put;
+
+end Grt.Vstrings_IO;
diff --git a/src/grt/grt-vstrings_io.ads b/src/grt/grt-vstrings_io.ads
new file mode 100644
index 000000000..82f796149
--- /dev/null
+++ b/src/grt/grt-vstrings_io.ads
@@ -0,0 +1,34 @@
+-- GHDL Run Time (GRT) - IO for variable strings.
+-- Copyright (C) 2019 Tristan Gingold
+--
+-- GHDL 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, or (at your option) any later
+-- version.
+--
+-- GHDL 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 GCC; see the file COPYING. If not, write to the Free
+-- Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+-- 02111-1307, USA.
+--
+-- As a special exception, if other files instantiate generics from this
+-- unit, or you link this unit with other files to produce an executable,
+-- this unit does not by itself cause the resulting executable to be
+-- covered by the GNU General Public License. This exception does not
+-- however invalidate any other reasons why the executable file might be
+-- covered by the GNU Public License.
+with Grt.Stdio; use Grt.Stdio;
+with Grt.Vstrings; use Grt.Vstrings;
+
+package Grt.Vstrings_IO is
+ -- Display VSTR.
+ procedure Put (Stream : FILEs; Vstr : Vstring);
+
+ -- Display RSTR.
+ procedure Put (Stream : FILEs; Rstr : Rstring);
+end Grt.Vstrings_IO;