diff options
author | Tristan Gingold <tgingold@free.fr> | 2017-04-16 11:40:23 +0200 |
---|---|---|
committer | Tristan Gingold <tgingold@free.fr> | 2017-04-19 20:48:24 +0200 |
commit | 99c6e3e3b91e60e9f79195e5c36e217ff2196e50 (patch) | |
tree | a9cedd3ce5d87b634e29f224a5f48cca720cf156 | |
parent | 918d0411347bdb2d8e5027a58803a072613e02b2 (diff) | |
download | ghdl-99c6e3e3b91e60e9f79195e5c36e217ff2196e50.tar.gz ghdl-99c6e3e3b91e60e9f79195e5c36e217ff2196e50.tar.bz2 ghdl-99c6e3e3b91e60e9f79195e5c36e217ff2196e50.zip |
grt.fcvt: use format_image instead of to_string (cleanup).
-rw-r--r-- | src/grt/grt-fcvt.adb | 79 | ||||
-rw-r--r-- | src/grt/grt-fcvt.ads | 9 | ||||
-rw-r--r-- | src/grt/grt-vcd.adb | 2 |
3 files changed, 1 insertions, 89 deletions
diff --git a/src/grt/grt-fcvt.adb b/src/grt/grt-fcvt.adb index 0757886a2..1f8165b35 100644 --- a/src/grt/grt-fcvt.adb +++ b/src/grt/grt-fcvt.adb @@ -574,26 +574,6 @@ package body Grt.Fcvt is Len := Len + 1; end Append; - procedure Insert (Str : in out String; - Len : in out Natural; - Pos : Positive; - C : Character) - is - Prev_C, C1 : Character; - begin - if Pos > Str'Length then - return; - end if; - - C1 := C; - for I in Pos .. Positive'Min (Str'Length, Len) loop - Prev_C := Str (I); - Str (I) := C1; - C1 := Prev_C; - end loop; - Append (Str, Len, C1); - end Insert; - procedure Append_Digit (Str : in out String; Len : in out Natural; D : Natural) is @@ -878,65 +858,6 @@ package body Grt.Fcvt is Exp := Ctxt.K; end To_String; - procedure To_String (Str : out String; - Len : out Natural; - V : IEEE_Float_64) - is - Is_Num : Boolean; - Is_Neg : Boolean; - Exp : Integer; - First : Positive; - begin - To_String (Str, Len, Is_Num, Is_Neg, Exp, V); - - -- Handle sign. - if Is_Neg then - First := 2; - Insert (Str, Len, 1, '-'); - else - First := 1; - end if; - - if not Is_Num then - return; - end if; - - -- At this point STR contains the minus sign (if any) and digits. - -- The value is 0.NNNN * 10**K - - -- Formatting. - -- Insert the dot. - Insert (Str, Len, First + 1, '.'); - Exp := Exp - 1; - - Append (Str, Len, 'e'); - declare - K : Integer; - T : Integer; - Den : Natural; - begin - K := Exp; - if K < 0 then - Append (Str, Len, '-'); - K := -K; - end if; - if K >= 100 then - Den := 100; - elsif K >= 10 then - Den := 10; - else - Den := 1; - end if; - loop - T := K / Den; - Append_Digit (Str, Len, T); - K := K - T * Den; - exit when Den = 1; - Den := Den / 10; - end loop; - end; - end To_String; - -- Input is: (-1)**S * M * 2**E function Pack (M : Unsigned_64; E : Integer; diff --git a/src/grt/grt-fcvt.ads b/src/grt/grt-fcvt.ads index 2ec42fcfa..9fad63c06 100644 --- a/src/grt/grt-fcvt.ads +++ b/src/grt/grt-fcvt.ads @@ -56,15 +56,6 @@ package Grt.Fcvt is procedure Format_Image (Str : out String; Last : out Natural; N : IEEE_Float_64); - -- Convert V to 10-based number stored (in ASCII) in STR/LEN [using at most - -- NDIGITS digits.] - -- LEN is the number of characters needed (so it may be greater than - -- STR'Length). - -- Requires STR'First = 1. - procedure To_String (Str : out String; - Len : out Natural; - V : IEEE_Float_64); - -- Input format is [+-]int[.int][e[+-]int] -- where int is digit { _ digit } -- and [+-] means optional + or -. diff --git a/src/grt/grt-vcd.adb b/src/grt/grt-vcd.adb index e6495c5aa..4f8c9ca9c 100644 --- a/src/grt/grt-vcd.adb +++ b/src/grt/grt-vcd.adb @@ -682,7 +682,7 @@ package body Grt.Vcd is -- conversions, [...] -- Note: the code always uses the 'e' format, with a full precision. - Grt.Fcvt.To_String (Str, Len, Interfaces.IEEE_Float_64 (V)); + Grt.Fcvt.Format_Image (Str, Len, Interfaces.IEEE_Float_64 (V)); Vcd_Put (Str (1 .. Len)); end Vcd_Put_Float64; |