1------------------------------------------------------------------------------
2--                                                                          --
3--                         GNAT RUN-TIME COMPONENTS                         --
4--                                                                          --
5--                    S Y S T E M . D I M . F L O A T _ I O                 --
6--                                                                          --
7--                                 B o d y                                  --
8--                                                                          --
9--          Copyright (C) 2011-2018, Free Software Foundation, Inc.         --
10--                                                                          --
11-- GNAT is free software;  you can  redistribute it  and/or modify it under --
12-- terms of the  GNU General Public License as published  by the Free Soft- --
13-- ware  Foundation;  either version 3,  or (at your option) any later ver- --
14-- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
15-- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
16-- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
17--                                                                          --
18-- As a special exception under Section 7 of GPL version 3, you are granted --
19-- additional permissions described in the GCC Runtime Library Exception,   --
20-- version 3.1, as published by the Free Software Foundation.               --
21--                                                                          --
22-- You should have received a copy of the GNU General Public License and    --
23-- a copy of the GCC Runtime Library Exception along with this program;     --
24-- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
25-- <http://www.gnu.org/licenses/>.                                          --
26--                                                                          --
27-- GNAT was originally developed  by the GNAT team at  New York University. --
28-- Extensive contributions were provided by Ada Core Technologies Inc.      --
29--                                                                          --
30------------------------------------------------------------------------------
31
32package body System.Dim.Float_IO is
33
34   package Num_Dim_Float_IO is new Ada.Text_IO.Float_IO (Num_Dim_Float);
35
36   ---------
37   -- Put --
38   ---------
39
40   procedure Put
41     (File   : File_Type;
42      Item   : Num_Dim_Float;
43      Fore   : Field  := Default_Fore;
44      Aft    : Field  := Default_Aft;
45      Exp    : Field  := Default_Exp;
46      Symbol : String := "")
47   is
48   begin
49      Num_Dim_Float_IO.Put (File, Item, Fore, Aft, Exp);
50      Ada.Text_IO.Put (File, Symbol);
51   end Put;
52
53   procedure Put
54     (Item   : Num_Dim_Float;
55      Fore   : Field  := Default_Fore;
56      Aft    : Field  := Default_Aft;
57      Exp    : Field  := Default_Exp;
58      Symbol : String := "")
59   is
60   begin
61      Num_Dim_Float_IO.Put (Item, Fore, Aft, Exp);
62      Ada.Text_IO.Put (Symbol);
63   end Put;
64
65   procedure Put
66     (To     : out String;
67      Item   : Num_Dim_Float;
68      Aft    : Field  := Default_Aft;
69      Exp    : Field  := Default_Exp;
70      Symbol : String := "")
71   is
72      Ptr : constant Natural := Symbol'Length;
73
74   begin
75      Num_Dim_Float_IO.Put (To (To'First .. To'Last - Ptr), Item, Aft, Exp);
76      To (To'Last - Ptr + 1 .. To'Last) := Symbol;
77   end Put;
78
79   ----------------
80   -- Put_Dim_Of --
81   ----------------
82
83   pragma Warnings (Off);
84   --  kill warnings on unreferenced formals
85
86   procedure Put_Dim_Of
87     (File   : File_Type;
88      Item   : Num_Dim_Float;
89      Symbol : String := "")
90   is
91   begin
92      Ada.Text_IO.Put (File, Symbol);
93   end Put_Dim_Of;
94
95   procedure Put_Dim_Of
96     (Item   : Num_Dim_Float;
97      Symbol : String := "")
98   is
99   begin
100      Ada.Text_IO.Put (Symbol);
101   end Put_Dim_Of;
102
103   procedure Put_Dim_Of
104     (To     : out String;
105      Item   : Num_Dim_Float;
106      Symbol : String := "")
107   is
108   begin
109      To (1 .. Symbol'Length) := Symbol;
110   end Put_Dim_Of;
111
112   -----------
113   -- Image --
114   -----------
115
116   function Image
117     (Item : Num_Dim_Float;
118      Aft    : Field  := Default_Aft;
119      Exp    : Field  := Default_Exp;
120      Symbol : String := "") return String
121   is
122      Buffer : String (1 .. 50);
123
124   begin
125      Put (Buffer, Item, Aft, Exp);
126      for I in Buffer'Range loop
127         if Buffer (I) /= ' ' then
128            return Buffer (I .. Buffer'Last) & Symbol;
129         end if;
130      end loop;
131   end Image;
132end System.Dim.Float_IO;
133