1------------------------------------------------------------------------------ 2-- -- 3-- GNAT RUN-TIME COMPONENTS -- 4-- -- 5-- S Y S T E M . I M A G E _ D -- 6-- -- 7-- B o d y -- 8-- -- 9-- Copyright (C) 2020, 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 32with System.Img_Util; use System.Img_Util; 33 34package body System.Image_D is 35 36 ------------------- 37 -- Image_Decimal -- 38 ------------------- 39 40 procedure Image_Decimal 41 (V : Int; 42 S : in out String; 43 P : out Natural; 44 Scale : Integer) 45 is 46 pragma Assert (S'First = 1); 47 48 begin 49 -- Add space at start for non-negative numbers 50 51 if V >= 0 then 52 S (1) := ' '; 53 P := 1; 54 else 55 P := 0; 56 end if; 57 58 Set_Image_Decimal (V, S, P, Scale, 1, Integer'Max (1, Scale), 0); 59 end Image_Decimal; 60 61 ----------------------- 62 -- Set_Image_Decimal -- 63 ----------------------- 64 65 procedure Set_Image_Decimal 66 (V : Int; 67 S : in out String; 68 P : in out Natural; 69 Scale : Integer; 70 Fore : Natural; 71 Aft : Natural; 72 Exp : Natural) 73 is 74 Digs : String := Int'Image (V); 75 -- Sign and digits of decimal value 76 77 begin 78 Set_Decimal_Digits (Digs, Digs'Length, S, P, Scale, Fore, Aft, Exp); 79 end Set_Image_Decimal; 80 81end System.Image_D; 82