-- Abstract :
--
-- See spec.
--
-- Copyright (C) 2018, 2021 Free Software Foundation, Inc.
--
-- This library is free software; you can redistribute it and/or modify it
-- under terms of the GNU General Public License as published by the Free
-- Software Foundation; either version 3, or (at your option) any later
-- version. This library is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN-
-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-- As a special exception under Section 7 of GPL version 3, you are granted
-- additional permissions described in the GCC Runtime Library Exception,
-- version 3.1, as published by the Free Software Foundation.
pragma License (Modified_GPL);
with Ada.Strings.Fixed;
with Ada.Strings.Unbounded;
function SAL.Gen_Unbounded_Definite_Vectors.Gen_Image
(Item : in Vector;
Strict : in Boolean := False;
Association : in Boolean := False)
return String
is
use all type Ada.Containers.Count_Type;
use Ada.Strings;
use Ada.Strings.Fixed;
use Ada.Strings.Unbounded;
Result : Unbounded_String := To_Unbounded_String ("(");
First : constant Base_Peek_Type := To_Peek_Type (Item.First_Index);
Last : constant Base_Peek_Type := To_Peek_Type (Item.Last_Index);
begin
if (Strict or Association) and Item.Length = 0 then
return "(" & Trim (Index_Type'Image (Index_Type'First), Left) & " .. " &
Trim (Index_Type'Image (Extended_Index'First), Left) & " => <>)";
elsif (Strict or Association) and Item.Length = 1 then
return "(" & Trim (Index_Type'Image (Index_Type'First), Left) & " => " &
Element_Image (Item.Elements (First)) & ")";
else
for I in First .. Last loop
Result := @ & (if Association then Trim (I'Image, Left) & " => " else "") & Element_Image (Item.Elements (I));
if I /= Last then
Result := @ & ", ";
end if;
end loop;
Result := Result & ")";
return To_String (Result);
end if;
end SAL.Gen_Unbounded_Definite_Vectors.Gen_Image;