From 4e45e7a930bff7c7e6bbfa5f390a14411dc88dd7 Mon Sep 17 00:00:00 2001 From: Robert Dewar Date: Thu, 10 Feb 2005 14:51:40 +0100 Subject: a-strunb.ads, [...]: Add missing pragma Ada_05 statements Fix name of Set routine 2005-02-09 Robert Dewar * a-strunb.ads, a-strunb.adb: Add missing pragma Ada_05 statements Fix name of Set routine * a-strfix.ads, a-strfix.adb: Add new index functions from AI-301 to fixed packages. * a-stwise.ads, a-stwise.adb, a-stwifi.ads, a-stwifi.adb, a-strsea.ads, a-strsea.adb: Add new index functions from AI-301 to fixed packages * a-witeio.ads, a-witeio.adb, a-textio.ads, a-textio.adb: New function forms of Get_Line subprograms for AI-301. * a-wtcoau.adb, a-wtcoau.ads, a-wtcoio.adb, a-wtcoio.ads, a-wtedit.adb, a-wtedit.adb, a-wtedit.ads, a-wttest.adb, a-wttest.ads, a-strmap.ads, a-strmap.adb, a-stwima.adb, a-stwima.ads: Minor reformatting. From-SVN: r94810 --- gcc/ada/a-strfix.adb | 235 +++++++++++++++++----------------- gcc/ada/a-strfix.ads | 263 +++++++++++++++++++------------------- gcc/ada/a-strmap.adb | 2 +- gcc/ada/a-strmap.ads | 2 +- gcc/ada/a-strsea.adb | 116 +++++++++++++++-- gcc/ada/a-strsea.ads | 28 ++++- gcc/ada/a-strunb.adb | 306 +++++++++++++++++++++++++++------------------ gcc/ada/a-strunb.ads | 347 +++++++++++++++++++++++++++------------------------ gcc/ada/a-stwifi.adb | 238 ++++++++++++++++++----------------- gcc/ada/a-stwifi.ads | 236 +++++++++++++++++++---------------- gcc/ada/a-stwima.adb | 59 ++++----- gcc/ada/a-stwima.ads | 66 ++++------ gcc/ada/a-stwise.adb | 176 +++++++++++++++++++------- gcc/ada/a-stwise.ads | 97 ++++++++------ gcc/ada/a-textio.adb | 171 ++++++++++++++++--------- gcc/ada/a-textio.ads | 110 ++++++++-------- gcc/ada/a-witeio.adb | 213 ++++++++++++++++++++----------- gcc/ada/a-witeio.ads | 115 +++++++++-------- gcc/ada/a-wtcoau.adb | 10 +- gcc/ada/a-wtcoau.ads | 4 +- gcc/ada/a-wtcoio.adb | 42 +++---- gcc/ada/a-wtcoio.ads | 32 ++--- gcc/ada/a-wtedit.adb | 108 +++++++--------- gcc/ada/a-wtedit.ads | 76 ++++++----- gcc/ada/a-wttest.adb | 4 +- gcc/ada/a-wttest.ads | 2 +- 26 files changed, 1745 insertions(+), 1313 deletions(-) (limited to 'gcc') diff --git a/gcc/ada/a-strfix.adb b/gcc/ada/a-strfix.adb index 03a5061..aadc977 100644 --- a/gcc/ada/a-strfix.adb +++ b/gcc/ada/a-strfix.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2002 Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2005 Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -50,59 +50,82 @@ package body Ada.Strings.Fixed is ------------------------ function Index - (Source : in String; - Pattern : in String; - Going : in Direction := Forward; - Mapping : in Maps.Character_Mapping := Maps.Identity) - return Natural + (Source : String; + Pattern : String; + Going : Direction := Forward; + Mapping : Maps.Character_Mapping := Maps.Identity) return Natural renames Ada.Strings.Search.Index; function Index - (Source : in String; - Pattern : in String; - Going : in Direction := Forward; - Mapping : in Maps.Character_Mapping_Function) - return Natural + (Source : String; + Pattern : String; + Going : Direction := Forward; + Mapping : Maps.Character_Mapping_Function) return Natural renames Ada.Strings.Search.Index; function Index - (Source : in String; - Set : in Maps.Character_Set; - Test : in Membership := Inside; - Going : in Direction := Forward) - return Natural + (Source : String; + Set : Maps.Character_Set; + Test : Membership := Inside; + Going : Direction := Forward) return Natural renames Ada.Strings.Search.Index; + function Index + (Source : String; + Pattern : String; + From : Positive; + Going : Direction := Forward; + Mapping : Maps.Character_Mapping := Maps.Identity) return Natural + renames Ada.Strings.Search.Index; + + function Index + (Source : String; + Pattern : String; + From : Positive; + Going : Direction := Forward; + Mapping : Maps.Character_Mapping_Function) return Natural + renames Ada.Strings.Search.Index; + + function Index + (Source : String; + Set : Maps.Character_Set; + From : Positive; + Test : Membership := Inside; + Going : Direction := Forward) return Natural + renames Ada.Strings.Search.Index; + + function Index_Non_Blank + (Source : String; + Going : Direction := Forward) return Natural + renames Ada.Strings.Search.Index_Non_Blank; + function Index_Non_Blank - (Source : in String; - Going : in Direction := Forward) - return Natural + (Source : String; + From : Positive; + Going : Direction := Forward) return Natural renames Ada.Strings.Search.Index_Non_Blank; function Count - (Source : in String; - Pattern : in String; - Mapping : in Maps.Character_Mapping := Maps.Identity) - return Natural + (Source : String; + Pattern : String; + Mapping : Maps.Character_Mapping := Maps.Identity) return Natural renames Ada.Strings.Search.Count; function Count - (Source : in String; - Pattern : in String; - Mapping : in Maps.Character_Mapping_Function) - return Natural + (Source : String; + Pattern : String; + Mapping : Maps.Character_Mapping_Function) return Natural renames Ada.Strings.Search.Count; function Count - (Source : in String; - Set : in Maps.Character_Set) - return Natural + (Source : String; + Set : Maps.Character_Set) return Natural renames Ada.Strings.Search.Count; procedure Find_Token - (Source : in String; - Set : in Maps.Character_Set; - Test : in Membership; + (Source : String; + Set : Maps.Character_Set; + Test : Membership; First : out Positive; Last : out Natural) renames Ada.Strings.Search.Find_Token; @@ -112,9 +135,8 @@ package body Ada.Strings.Fixed is --------- function "*" - (Left : in Natural; - Right : in Character) - return String + (Left : Natural; + Right : Character) return String is Result : String (1 .. Left); @@ -127,9 +149,8 @@ package body Ada.Strings.Fixed is end "*"; function "*" - (Left : in Natural; - Right : in String) - return String + (Left : Natural; + Right : String) return String is Result : String (1 .. Left * Right'Length); Ptr : Integer := 1; @@ -148,10 +169,9 @@ package body Ada.Strings.Fixed is ------------ function Delete - (Source : in String; - From : in Positive; - Through : in Natural) - return String + (Source : String; + From : Positive; + Through : Natural) return String is begin if From > Through then @@ -185,10 +205,10 @@ package body Ada.Strings.Fixed is procedure Delete (Source : in out String; - From : in Positive; - Through : in Natural; - Justify : in Alignment := Left; - Pad : in Character := Space) + From : Positive; + Through : Natural; + Justify : Alignment := Left; + Pad : Character := Space) is begin Move (Source => Delete (Source, From, Through), @@ -202,10 +222,9 @@ package body Ada.Strings.Fixed is ---------- function Head - (Source : in String; - Count : in Natural; - Pad : in Character := Space) - return String + (Source : String; + Count : Natural; + Pad : Character := Space) return String is subtype Result_Type is String (1 .. Count); @@ -232,9 +251,9 @@ package body Ada.Strings.Fixed is procedure Head (Source : in out String; - Count : in Natural; - Justify : in Alignment := Left; - Pad : in Character := Space) + Count : Natural; + Justify : Alignment := Left; + Pad : Character := Space) is begin Move (Source => Head (Source, Count, Pad), @@ -249,10 +268,9 @@ package body Ada.Strings.Fixed is ------------ function Insert - (Source : in String; - Before : in Positive; - New_Item : in String) - return String + (Source : String; + Before : Positive; + New_Item : String) return String is Result : String (1 .. Source'Length + New_Item'Length); Front : constant Integer := Before - Source'First; @@ -274,9 +292,9 @@ package body Ada.Strings.Fixed is procedure Insert (Source : in out String; - Before : in Positive; - New_Item : in String; - Drop : in Truncation := Error) + Before : Positive; + New_Item : String; + Drop : Truncation := Error) is begin Move (Source => Insert (Source, Before, New_Item), @@ -289,11 +307,11 @@ package body Ada.Strings.Fixed is ---------- procedure Move - (Source : in String; + (Source : String; Target : out String; - Drop : in Truncation := Error; - Justify : in Alignment := Left; - Pad : in Character := Space) + Drop : Truncation := Error; + Justify : Alignment := Left; + Pad : Character := Space) is Sfirst : constant Integer := Source'First; Slast : constant Integer := Source'Last; @@ -398,10 +416,9 @@ package body Ada.Strings.Fixed is --------------- function Overwrite - (Source : in String; - Position : in Positive; - New_Item : in String) - return String + (Source : String; + Position : Positive; + New_Item : String) return String is begin if Position not in Source'First .. Source'Last + 1 then @@ -430,9 +447,9 @@ package body Ada.Strings.Fixed is procedure Overwrite (Source : in out String; - Position : in Positive; - New_Item : in String; - Drop : in Truncation := Right) + Position : Positive; + New_Item : String; + Drop : Truncation := Right) is begin Move (Source => Overwrite (Source, Position, New_Item), @@ -445,11 +462,10 @@ package body Ada.Strings.Fixed is ------------------- function Replace_Slice - (Source : in String; - Low : in Positive; - High : in Natural; - By : in String) - return String + (Source : String; + Low : Positive; + High : Natural; + By : String) return String is begin if Low > Source'Last + 1 or High < Source'First - 1 then @@ -490,12 +506,12 @@ package body Ada.Strings.Fixed is procedure Replace_Slice (Source : in out String; - Low : in Positive; - High : in Natural; - By : in String; - Drop : in Truncation := Error; - Justify : in Alignment := Left; - Pad : in Character := Space) + Low : Positive; + High : Natural; + By : String; + Drop : Truncation := Error; + Justify : Alignment := Left; + Pad : Character := Space) is begin Move (Replace_Slice (Source, Low, High, By), Source, Drop, Justify, Pad); @@ -506,10 +522,9 @@ package body Ada.Strings.Fixed is ---------- function Tail - (Source : in String; - Count : in Natural; - Pad : in Character := Space) - return String + (Source : String; + Count : Natural; + Pad : Character := Space) return String is subtype Result_Type is String (1 .. Count); @@ -536,9 +551,9 @@ package body Ada.Strings.Fixed is procedure Tail (Source : in out String; - Count : in Natural; - Justify : in Alignment := Left; - Pad : in Character := Space) + Count : Natural; + Justify : Alignment := Left; + Pad : Character := Space) is begin Move (Source => Tail (Source, Count, Pad), @@ -553,9 +568,8 @@ package body Ada.Strings.Fixed is --------------- function Translate - (Source : in String; - Mapping : in Maps.Character_Mapping) - return String + (Source : String; + Mapping : Maps.Character_Mapping) return String is Result : String (1 .. Source'Length); @@ -569,7 +583,7 @@ package body Ada.Strings.Fixed is procedure Translate (Source : in out String; - Mapping : in Maps.Character_Mapping) + Mapping : Maps.Character_Mapping) is begin for J in Source'Range loop @@ -578,9 +592,8 @@ package body Ada.Strings.Fixed is end Translate; function Translate - (Source : in String; - Mapping : in Maps.Character_Mapping_Function) - return String + (Source : String; + Mapping : Maps.Character_Mapping_Function) return String is Result : String (1 .. Source'Length); pragma Unsuppress (Access_Check); @@ -595,7 +608,7 @@ package body Ada.Strings.Fixed is procedure Translate (Source : in out String; - Mapping : in Maps.Character_Mapping_Function) + Mapping : Maps.Character_Mapping_Function) is pragma Unsuppress (Access_Check); begin @@ -609,9 +622,8 @@ package body Ada.Strings.Fixed is ---------- function Trim - (Source : in String; - Side : in Trim_End) - return String + (Source : String; + Side : Trim_End) return String is Low, High : Integer; @@ -658,9 +670,9 @@ package body Ada.Strings.Fixed is procedure Trim (Source : in out String; - Side : in Trim_End; - Justify : in Alignment := Left; - Pad : in Character := Space) + Side : Trim_End; + Justify : Alignment := Left; + Pad : Character := Space) is begin Move (Trim (Source, Side), @@ -670,10 +682,9 @@ package body Ada.Strings.Fixed is end Trim; function Trim - (Source : in String; - Left : in Maps.Character_Set; - Right : in Maps.Character_Set) - return String + (Source : String; + Left : Maps.Character_Set; + Right : Maps.Character_Set) return String is High, Low : Integer; @@ -705,10 +716,10 @@ package body Ada.Strings.Fixed is procedure Trim (Source : in out String; - Left : in Maps.Character_Set; - Right : in Maps.Character_Set; - Justify : in Alignment := Strings.Left; - Pad : in Character := Space) + Left : Maps.Character_Set; + Right : Maps.Character_Set; + Justify : Alignment := Strings.Left; + Pad : Character := Space) is begin Move (Source => Trim (Source, Left, Right), diff --git a/gcc/ada/a-strfix.ads b/gcc/ada/a-strfix.ads index 6b0c147..bf1a496 100644 --- a/gcc/ada/a-strfix.ads +++ b/gcc/ada/a-strfix.ads @@ -6,32 +6,10 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-1997 Free Software Foundation, Inc. -- --- -- --- This specification is derived from the Ada Reference Manual for use with -- --- GNAT. The copyright notice above, and the license provisions that follow -- --- apply solely to the contents of the part following the private keyword. -- --- -- --- GNAT is free software; you can redistribute it and/or modify it under -- --- terms of the GNU General Public License as published by the Free Soft- -- --- ware Foundation; either version 2, or (at your option) any later ver- -- --- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- --- OUT 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 distributed with GNAT; see 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. -- --- -- --- GNAT was originally developed by the GNAT team at New York University. -- --- Extensive contributions were provided by Ada Core Technologies Inc. -- +-- This specification is adapted from the Ada Reference Manual for use with -- +-- GNAT. In accordance with the copyright of that document, you can freely -- +-- copy and modify this specification, provided that if you redistribute a -- +-- modified version, any changes that you have made are clearly indicated. -- -- -- ------------------------------------------------------------------------------ @@ -46,63 +24,86 @@ pragma Preelaborate (Fixed); -------------------------------------------------------------- procedure Move - (Source : in String; + (Source : String; Target : out String; - Drop : in Truncation := Error; - Justify : in Alignment := Left; - Pad : in Character := Space); + Drop : Truncation := Error; + Justify : Alignment := Left; + Pad : Character := Space); ------------------------ -- Search Subprograms -- ------------------------ function Index - (Source : in String; - Pattern : in String; - Going : in Direction := Forward; - Mapping : in Maps.Character_Mapping := Maps.Identity) - return Natural; + (Source : String; + Pattern : String; + Going : Direction := Forward; + Mapping : Maps.Character_Mapping := Maps.Identity) return Natural; + + function Index + (Source : String; + Pattern : String; + Going : Direction := Forward; + Mapping : Maps.Character_Mapping_Function) return Natural; function Index - (Source : in String; - Pattern : in String; - Going : in Direction := Forward; - Mapping : in Maps.Character_Mapping_Function) - return Natural; + (Source : String; + Set : Maps.Character_Set; + Test : Membership := Inside; + Going : Direction := Forward) return Natural; function Index - (Source : in String; - Set : in Maps.Character_Set; - Test : in Membership := Inside; - Going : in Direction := Forward) - return Natural; + (Source : String; + Pattern : String; + From : Positive; + Going : Direction := Forward; + Mapping : Maps.Character_Mapping := Maps.Identity) return Natural; + pragma Ada_05 (Index); + + function Index + (Source : String; + Pattern : String; + From : Positive; + Going : Direction := Forward; + Mapping : Maps.Character_Mapping_Function) return Natural; + pragma Ada_05 (Index); + + function Index + (Source : String; + Set : Maps.Character_Set; + From : Positive; + Test : Membership := Inside; + Going : Direction := Forward) return Natural; + pragma Ada_05 (Index); + + function Index_Non_Blank + (Source : String; + Going : Direction := Forward) return Natural; function Index_Non_Blank - (Source : in String; - Going : in Direction := Forward) - return Natural; + (Source : String; + From : Positive; + Going : Direction := Forward) return Natural; + pragma Ada_05 (Index_Non_Blank); function Count - (Source : in String; - Pattern : in String; - Mapping : in Maps.Character_Mapping := Maps.Identity) - return Natural; + (Source : String; + Pattern : String; + Mapping : Maps.Character_Mapping := Maps.Identity) return Natural; function Count - (Source : in String; - Pattern : in String; - Mapping : in Maps.Character_Mapping_Function) - return Natural; + (Source : String; + Pattern : String; + Mapping : Maps.Character_Mapping_Function) return Natural; function Count - (Source : in String; - Set : in Maps.Character_Set) - return Natural; + (Source : String; + Set : Maps.Character_Set) return Natural; procedure Find_Token - (Source : in String; - Set : in Maps.Character_Set; - Test : in Membership; + (Source : String; + Set : Maps.Character_Set; + Test : Membership; First : out Positive; Last : out Natural); @@ -111,144 +112,132 @@ pragma Preelaborate (Fixed); ------------------------------------ function Translate - (Source : in String; - Mapping : in Maps.Character_Mapping) - return String; + (Source : String; + Mapping : Maps.Character_Mapping) return String; procedure Translate (Source : in out String; - Mapping : in Maps.Character_Mapping); + Mapping : Maps.Character_Mapping); function Translate - (Source : in String; - Mapping : in Maps.Character_Mapping_Function) - return String; + (Source : String; + Mapping : Maps.Character_Mapping_Function) return String; procedure Translate (Source : in out String; - Mapping : in Maps.Character_Mapping_Function); + Mapping : Maps.Character_Mapping_Function); --------------------------------------- -- String Transformation Subprograms -- --------------------------------------- function Replace_Slice - (Source : in String; - Low : in Positive; - High : in Natural; - By : in String) - return String; + (Source : String; + Low : Positive; + High : Natural; + By : String) return String; procedure Replace_Slice (Source : in out String; - Low : in Positive; - High : in Natural; - By : in String; - Drop : in Truncation := Error; - Justify : in Alignment := Left; - Pad : in Character := Space); + Low : Positive; + High : Natural; + By : String; + Drop : Truncation := Error; + Justify : Alignment := Left; + Pad : Character := Space); function Insert - (Source : in String; - Before : in Positive; - New_Item : in String) - return String; + (Source : String; + Before : Positive; + New_Item : String) return String; procedure Insert (Source : in out String; - Before : in Positive; - New_Item : in String; - Drop : in Truncation := Error); + Before : Positive; + New_Item : String; + Drop : Truncation := Error); function Overwrite - (Source : in String; - Position : in Positive; - New_Item : in String) - return String; + (Source : String; + Position : Positive; + New_Item : String) return String; procedure Overwrite (Source : in out String; - Position : in Positive; - New_Item : in String; - Drop : in Truncation := Right); + Position : Positive; + New_Item : String; + Drop : Truncation := Right); function Delete - (Source : in String; - From : in Positive; - Through : in Natural) - return String; + (Source : String; + From : Positive; + Through : Natural) return String; procedure Delete (Source : in out String; - From : in Positive; - Through : in Natural; - Justify : in Alignment := Left; - Pad : in Character := Space); + From : Positive; + Through : Natural; + Justify : Alignment := Left; + Pad : Character := Space); --------------------------------- -- String Selector Subprograms -- --------------------------------- function Trim - (Source : in String; - Side : in Trim_End) - return String; + (Source : String; + Side : Trim_End) return String; procedure Trim (Source : in out String; - Side : in Trim_End; - Justify : in Alignment := Left; - Pad : in Character := Space); + Side : Trim_End; + Justify : Alignment := Left; + Pad : Character := Space); function Trim - (Source : in String; - Left : in Maps.Character_Set; - Right : in Maps.Character_Set) - return String; + (Source : String; + Left : Maps.Character_Set; + Right : Maps.Character_Set) return String; procedure Trim (Source : in out String; - Left : in Maps.Character_Set; - Right : in Maps.Character_Set; - Justify : in Alignment := Strings.Left; - Pad : in Character := Space); + Left : Maps.Character_Set; + Right : Maps.Character_Set; + Justify : Alignment := Strings.Left; + Pad : Character := Space); function Head - (Source : in String; - Count : in Natural; - Pad : in Character := Space) - return String; + (Source : String; + Count : Natural; + Pad : Character := Space) return String; procedure Head (Source : in out String; - Count : in Natural; - Justify : in Alignment := Left; - Pad : in Character := Space); + Count : Natural; + Justify : Alignment := Left; + Pad : Character := Space); function Tail - (Source : in String; - Count : in Natural; - Pad : in Character := Space) - return String; + (Source : String; + Count : Natural; + Pad : Character := Space) return String; procedure Tail (Source : in out String; - Count : in Natural; - Justify : in Alignment := Left; - Pad : in Character := Space); + Count : Natural; + Justify : Alignment := Left; + Pad : Character := Space); ---------------------------------- -- String Constructor Functions -- ---------------------------------- function "*" - (Left : in Natural; - Right : in Character) - return String; + (Left : Natural; + Right : Character) return String; function "*" - (Left : in Natural; - Right : in String) - return String; + (Left : Natural; + Right : String) return String; end Ada.Strings.Fixed; diff --git a/gcc/ada/a-strmap.adb b/gcc/ada/a-strmap.adb index 9c6edda..c7201cf 100644 --- a/gcc/ada/a-strmap.adb +++ b/gcc/ada/a-strmap.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2004 Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2005 Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- diff --git a/gcc/ada/a-strmap.ads b/gcc/ada/a-strmap.ads index 3e5adf2..598b234 100644 --- a/gcc/ada/a-strmap.ads +++ b/gcc/ada/a-strmap.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2004 Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2005 Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- diff --git a/gcc/ada/a-strsea.adb b/gcc/ada/a-strsea.adb index 62089c3..c4e4d5d 100644 --- a/gcc/ada/a-strsea.adb +++ b/gcc/ada/a-strsea.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2004 Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2005 Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -76,9 +76,9 @@ package body Ada.Strings.Search is ----------- function Count - (Source : String; - Pattern : String; - Mapping : Maps.Character_Mapping := Maps.Identity) return Natural + (Source : String; + Pattern : String; + Mapping : Maps.Character_Mapping := Maps.Identity) return Natural is N : Natural; J : Natural; @@ -110,9 +110,9 @@ package body Ada.Strings.Search is end Count; function Count - (Source : String; - Pattern : String; - Mapping : Maps.Character_Mapping_Function) return Natural + (Source : String; + Pattern : String; + Mapping : Maps.Character_Mapping_Function) return Natural is Mapped_Source : String (Source'Range); N : Natural; @@ -280,7 +280,6 @@ package body Ada.Strings.Search is declare pragma Unsuppress (Access_Check); - begin for J in Source'Range loop Mapped_Source (J) := Mapping.all (Source (J)); @@ -348,6 +347,84 @@ package body Ada.Strings.Search is return 0; end Index; + function Index + (Source : String; + Pattern : String; + From : Positive; + Going : Direction := Forward; + Mapping : Maps.Character_Mapping := Maps.Identity) return Natural + is + begin + if Going = Forward then + if From < Source'First then + raise Index_Error; + end if; + + return + Index (Source (From .. Source'Last), Pattern, Forward, Mapping); + + else + if From > Source'Last then + raise Index_Error; + end if; + + return + Index (Source (Source'First .. From), Pattern, Backward, Mapping); + end if; + end Index; + + function Index + (Source : String; + Pattern : String; + From : Positive; + Going : Direction := Forward; + Mapping : Maps.Character_Mapping_Function) return Natural + is + begin + if Going = Forward then + if From < Source'First then + raise Index_Error; + end if; + + return Index + (Source (From .. Source'Last), Pattern, Forward, Mapping); + + else + if From > Source'Last then + raise Index_Error; + end if; + + return Index + (Source (Source'First .. From), Pattern, Backward, Mapping); + end if; + end Index; + + function Index + (Source : String; + Set : Maps.Character_Set; + From : Positive; + Test : Membership := Inside; + Going : Direction := Forward) return Natural + is + begin + if Going = Forward then + if From < Source'First then + raise Index_Error; + end if; + + return + Index (Source (From .. Source'Last), Set, Test, Forward); + + else + if From > Source'Last then + raise Index_Error; + end if; + + return + Index (Source (Source'First .. From), Set, Test, Backward); + end if; + end Index; + --------------------- -- Index_Non_Blank -- --------------------- @@ -375,7 +452,30 @@ package body Ada.Strings.Search is -- Fall through if no match return 0; + end Index_Non_Blank; + function Index_Non_Blank + (Source : String; + From : Positive; + Going : Direction := Forward) return Natural + is + begin + if Going = Forward then + if From < Source'First then + raise Index_Error; + end if; + + return + Index_Non_Blank (Source (From .. Source'Last), Forward); + + else + if From > Source'Last then + raise Index_Error; + end if; + + return + Index_Non_Blank (Source (Source'First .. From), Backward); + end if; end Index_Non_Blank; end Ada.Strings.Search; diff --git a/gcc/ada/a-strsea.ads b/gcc/ada/a-strsea.ads index c176d12..457b452 100644 --- a/gcc/ada/a-strsea.ads +++ b/gcc/ada/a-strsea.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2004 Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2005 Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -61,8 +61,34 @@ pragma Preelaborate (Search); Test : Membership := Inside; Going : Direction := Forward) return Natural; + function Index + (Source : String; + Pattern : String; + From : Positive; + Going : Direction := Forward; + Mapping : Maps.Character_Mapping := Maps.Identity) return Natural; + + function Index + (Source : String; + Pattern : String; + From : Positive; + Going : Direction := Forward; + Mapping : Maps.Character_Mapping_Function) return Natural; + + function Index + (Source : String; + Set : Maps.Character_Set; + From : Positive; + Test : Membership := Inside; + Going : Direction := Forward) return Natural; + + function Index_Non_Blank + (Source : String; + Going : Direction := Forward) return Natural; + function Index_Non_Blank (Source : String; + From : Positive; Going : Direction := Forward) return Natural; function Count diff --git a/gcc/ada/a-strunb.adb b/gcc/ada/a-strunb.adb index d9c411f..8a997b3 100644 --- a/gcc/ada/a-strunb.adb +++ b/gcc/ada/a-strunb.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2002 Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2005 Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -44,16 +44,19 @@ package body Ada.Strings.Unbounded is Chunk_Size : Natural); pragma Inline (Realloc_For_Chunk); -- Adjust the size allocated for the string. Add at least Chunk_Size so it - -- is safe to add a string of this size at the end of the current - -- content. The real size allocated for the string is Chunk_Size + x % - -- of the current string size. This buffered handling makes the Append - -- unbounded string routines very fast. + -- is safe to add a string of this size at the end of the current content. + -- The real size allocated for the string is Chunk_Size + x of the current + -- string size. This buffered handling makes the Append unbounded string + -- routines very fast. --------- -- "&" -- --------- - function "&" (Left, Right : Unbounded_String) return Unbounded_String is + function "&" + (Left : Unbounded_String; + Right : Unbounded_String) return Unbounded_String + is L_Length : constant Natural := Left.Last; R_Length : constant Natural := Right.Last; Result : Unbounded_String; @@ -73,8 +76,7 @@ package body Ada.Strings.Unbounded is function "&" (Left : Unbounded_String; - Right : String) - return Unbounded_String + Right : String) return Unbounded_String is L_Length : constant Natural := Left.Last; Result : Unbounded_String; @@ -92,8 +94,7 @@ package body Ada.Strings.Unbounded is function "&" (Left : String; - Right : Unbounded_String) - return Unbounded_String + Right : Unbounded_String) return Unbounded_String is R_Length : constant Natural := Right.Last; Result : Unbounded_String; @@ -112,8 +113,7 @@ package body Ada.Strings.Unbounded is function "&" (Left : Unbounded_String; - Right : Character) - return Unbounded_String + Right : Character) return Unbounded_String is Result : Unbounded_String; @@ -131,8 +131,7 @@ package body Ada.Strings.Unbounded is function "&" (Left : Character; - Right : Unbounded_String) - return Unbounded_String + Right : Unbounded_String) return Unbounded_String is Result : Unbounded_String; @@ -152,8 +151,7 @@ package body Ada.Strings.Unbounded is function "*" (Left : Natural; - Right : Character) - return Unbounded_String + Right : Character) return Unbounded_String is Result : Unbounded_String; @@ -170,8 +168,7 @@ package body Ada.Strings.Unbounded is function "*" (Left : Natural; - Right : String) - return Unbounded_String + Right : String) return Unbounded_String is Len : constant Natural := Right'Length; K : Positive; @@ -193,8 +190,7 @@ package body Ada.Strings.Unbounded is function "*" (Left : Natural; - Right : Unbounded_String) - return Unbounded_String + Right : Unbounded_String) return Unbounded_String is Len : constant Natural := Right.Last; K : Positive; @@ -219,7 +215,10 @@ package body Ada.Strings.Unbounded is -- "<" -- --------- - function "<" (Left, Right : Unbounded_String) return Boolean is + function "<" + (Left : Unbounded_String; + Right : Unbounded_String) return Boolean + is begin return Left.Reference (1 .. Left.Last) < Right.Reference (1 .. Right.Last); @@ -227,8 +226,7 @@ package body Ada.Strings.Unbounded is function "<" (Left : Unbounded_String; - Right : String) - return Boolean + Right : String) return Boolean is begin return Left.Reference (1 .. Left.Last) < Right; @@ -236,8 +234,7 @@ package body Ada.Strings.Unbounded is function "<" (Left : String; - Right : Unbounded_String) - return Boolean + Right : Unbounded_String) return Boolean is begin return Left < Right.Reference (1 .. Right.Last); @@ -247,7 +244,10 @@ package body Ada.Strings.Unbounded is -- "<=" -- ---------- - function "<=" (Left, Right : Unbounded_String) return Boolean is + function "<=" + (Left : Unbounded_String; + Right : Unbounded_String) return Boolean + is begin return Left.Reference (1 .. Left.Last) <= Right.Reference (1 .. Right.Last); @@ -255,8 +255,7 @@ package body Ada.Strings.Unbounded is function "<=" (Left : Unbounded_String; - Right : String) - return Boolean + Right : String) return Boolean is begin return Left.Reference (1 .. Left.Last) <= Right; @@ -264,8 +263,7 @@ package body Ada.Strings.Unbounded is function "<=" (Left : String; - Right : Unbounded_String) - return Boolean + Right : Unbounded_String) return Boolean is begin return Left <= Right.Reference (1 .. Right.Last); @@ -275,7 +273,10 @@ package body Ada.Strings.Unbounded is -- "=" -- --------- - function "=" (Left, Right : Unbounded_String) return Boolean is + function "=" + (Left : Unbounded_String; + Right : Unbounded_String) return Boolean + is begin return Left.Reference (1 .. Left.Last) = Right.Reference (1 .. Right.Last); @@ -283,8 +284,7 @@ package body Ada.Strings.Unbounded is function "=" (Left : Unbounded_String; - Right : String) - return Boolean + Right : String) return Boolean is begin return Left.Reference (1 .. Left.Last) = Right; @@ -292,8 +292,7 @@ package body Ada.Strings.Unbounded is function "=" (Left : String; - Right : Unbounded_String) - return Boolean + Right : Unbounded_String) return Boolean is begin return Left = Right.Reference (1 .. Right.Last); @@ -303,7 +302,10 @@ package body Ada.Strings.Unbounded is -- ">" -- --------- - function ">" (Left, Right : Unbounded_String) return Boolean is + function ">" + (Left : Unbounded_String; + Right : Unbounded_String) return Boolean + is begin return Left.Reference (1 .. Left.Last) > Right.Reference (1 .. Right.Last); @@ -311,8 +313,7 @@ package body Ada.Strings.Unbounded is function ">" (Left : Unbounded_String; - Right : String) - return Boolean + Right : String) return Boolean is begin return Left.Reference (1 .. Left.Last) > Right; @@ -320,8 +321,7 @@ package body Ada.Strings.Unbounded is function ">" (Left : String; - Right : Unbounded_String) - return Boolean + Right : Unbounded_String) return Boolean is begin return Left > Right.Reference (1 .. Right.Last); @@ -331,7 +331,10 @@ package body Ada.Strings.Unbounded is -- ">=" -- ---------- - function ">=" (Left, Right : Unbounded_String) return Boolean is + function ">=" + (Left : Unbounded_String; + Right : Unbounded_String) return Boolean + is begin return Left.Reference (1 .. Left.Last) >= Right.Reference (1 .. Right.Last); @@ -339,8 +342,7 @@ package body Ada.Strings.Unbounded is function ">=" (Left : Unbounded_String; - Right : String) - return Boolean + Right : String) return Boolean is begin return Left.Reference (1 .. Left.Last) >= Right; @@ -348,8 +350,7 @@ package body Ada.Strings.Unbounded is function ">=" (Left : String; - Right : Unbounded_String) - return Boolean + Right : Unbounded_String) return Boolean is begin return Left >= Right.Reference (1 .. Right.Last); @@ -362,9 +363,8 @@ package body Ada.Strings.Unbounded is procedure Adjust (Object : in out Unbounded_String) is begin -- Copy string, except we do not copy the statically allocated null - -- string, since it can never be deallocated. - -- Note that we do not copy extra string room here to avoid dragging - -- unused allocated memory. + -- string, since it can never be deallocated. Note that we do not copy + -- extra string room here to avoid dragging unused allocated memory. if Object.Reference /= Null_String'Access then Object.Reference := new String'(Object.Reference (1 .. Object.Last)); @@ -412,10 +412,9 @@ package body Ada.Strings.Unbounded is ----------- function Count - (Source : Unbounded_String; - Pattern : String; - Mapping : Maps.Character_Mapping := Maps.Identity) - return Natural + (Source : Unbounded_String; + Pattern : String; + Mapping : Maps.Character_Mapping := Maps.Identity) return Natural is begin return @@ -423,10 +422,9 @@ package body Ada.Strings.Unbounded is end Count; function Count - (Source : Unbounded_String; - Pattern : String; - Mapping : Maps.Character_Mapping_Function) - return Natural + (Source : Unbounded_String; + Pattern : String; + Mapping : Maps.Character_Mapping_Function) return Natural is begin return @@ -434,9 +432,8 @@ package body Ada.Strings.Unbounded is end Count; function Count - (Source : Unbounded_String; - Set : Maps.Character_Set) - return Natural + (Source : Unbounded_String; + Set : Maps.Character_Set) return Natural is begin return Search.Count (Source.Reference (1 .. Source.Last), Set); @@ -449,8 +446,7 @@ package body Ada.Strings.Unbounded is function Delete (Source : Unbounded_String; From : Positive; - Through : Natural) - return Unbounded_String + Through : Natural) return Unbounded_String is begin return @@ -488,8 +484,7 @@ package body Ada.Strings.Unbounded is function Element (Source : Unbounded_String; - Index : Positive) - return Character + Index : Positive) return Character is begin if Index <= Source.Last then @@ -556,8 +551,7 @@ package body Ada.Strings.Unbounded is function Head (Source : Unbounded_String; Count : Natural; - Pad : Character := Space) - return Unbounded_String + Pad : Character := Space) return Unbounded_String is begin return To_Unbounded_String @@ -570,7 +564,6 @@ package body Ada.Strings.Unbounded is Pad : Character := Space) is Old : String_Access := Source.Reference; - begin Source.Reference := new String'(Fixed.Head (Source.Reference (1 .. Source.Last), @@ -584,11 +577,10 @@ package body Ada.Strings.Unbounded is ----------- function Index - (Source : Unbounded_String; - Pattern : String; - Going : Strings.Direction := Strings.Forward; - Mapping : Maps.Character_Mapping := Maps.Identity) - return Natural + (Source : Unbounded_String; + Pattern : String; + Going : Strings.Direction := Strings.Forward; + Mapping : Maps.Character_Mapping := Maps.Identity) return Natural is begin return Search.Index @@ -596,11 +588,10 @@ package body Ada.Strings.Unbounded is end Index; function Index - (Source : Unbounded_String; - Pattern : String; - Going : Direction := Forward; - Mapping : Maps.Character_Mapping_Function) - return Natural + (Source : Unbounded_String; + Pattern : String; + Going : Direction := Forward; + Mapping : Maps.Character_Mapping_Function) return Natural is begin return Search.Index @@ -611,22 +602,69 @@ package body Ada.Strings.Unbounded is (Source : Unbounded_String; Set : Maps.Character_Set; Test : Strings.Membership := Strings.Inside; - Going : Strings.Direction := Strings.Forward) - return Natural + Going : Strings.Direction := Strings.Forward) return Natural is begin return Search.Index (Source.Reference (1 .. Source.Last), Set, Test, Going); end Index; + function Index + (Source : Unbounded_String; + Pattern : String; + From : Positive; + Going : Direction := Forward; + Mapping : Maps.Character_Mapping := Maps.Identity) return Natural + is + begin + return Search.Index + (Source.Reference (1 .. Source.Last), Pattern, From, Going, Mapping); + end Index; + + function Index + (Source : Unbounded_String; + Pattern : String; + From : Positive; + Going : Direction := Forward; + Mapping : Maps.Character_Mapping_Function) return Natural + is + begin + return Search.Index + (Source.Reference (1 .. Source.Last), Pattern, From, Going, Mapping); + end Index; + + + function Index + (Source : Unbounded_String; + Set : Maps.Character_Set; + From : Positive; + Test : Membership := Inside; + Going : Direction := Forward) return Natural + is + begin + return Search.Index + (Source.Reference (1 .. Source.Last), Set, From, Test, Going); + end Index; + + function Index_Non_Blank + (Source : Unbounded_String; + Going : Strings.Direction := Strings.Forward) return Natural + is + begin + return + Search.Index_Non_Blank + (Source.Reference (1 .. Source.Last), Going); + end Index_Non_Blank; + function Index_Non_Blank (Source : Unbounded_String; - Going : Strings.Direction := Strings.Forward) - return Natural + From : Positive; + Going : Direction := Forward) return Natural is begin return - Search.Index_Non_Blank (Source.Reference (1 .. Source.Last), Going); + Search.Index_Non_Blank + (Source.Reference (1 .. Source.Last), From, Going); end Index_Non_Blank; ---------------- @@ -646,8 +684,7 @@ package body Ada.Strings.Unbounded is function Insert (Source : Unbounded_String; Before : Positive; - New_Item : String) - return Unbounded_String + New_Item : String) return Unbounded_String is begin return To_Unbounded_String @@ -688,11 +725,10 @@ package body Ada.Strings.Unbounded is --------------- function Overwrite - (Source : Unbounded_String; - Position : Positive; - New_Item : String) - return Unbounded_String is - + (Source : Unbounded_String; + Position : Positive; + New_Item : String) return Unbounded_String + is begin return To_Unbounded_String (Fixed.Overwrite @@ -705,15 +741,12 @@ package body Ada.Strings.Unbounded is New_Item : String) is NL : constant Natural := New_Item'Length; - begin if Position <= Source.Last - NL + 1 then Source.Reference (Position .. Position + NL - 1) := New_Item; - else declare Old : String_Access := Source.Reference; - begin Source.Reference := new String' (Fixed.Overwrite @@ -741,7 +774,6 @@ package body Ada.Strings.Unbounded is Alloc_Chunk_Size : constant Positive := Chunk_Size + (S_Length / Growth_Factor); Tmp : String_Access; - begin Tmp := new String (1 .. S_Length + Alloc_Chunk_Size); Tmp (1 .. Source.Last) := Source.Reference (1 .. Source.Last); @@ -773,11 +805,10 @@ package body Ada.Strings.Unbounded is ------------------- function Replace_Slice - (Source : Unbounded_String; - Low : Positive; - High : Natural; - By : String) - return Unbounded_String + (Source : Unbounded_String; + Low : Positive; + High : Natural; + By : String) return Unbounded_String is begin return To_Unbounded_String @@ -786,13 +817,12 @@ package body Ada.Strings.Unbounded is end Replace_Slice; procedure Replace_Slice - (Source : in out Unbounded_String; - Low : Positive; - High : Natural; - By : String) + (Source : in out Unbounded_String; + Low : Positive; + High : Natural; + By : String) is Old : String_Access := Source.Reference; - begin Source.Reference := new String' (Fixed.Replace_Slice @@ -801,6 +831,20 @@ package body Ada.Strings.Unbounded is Free (Old); end Replace_Slice; + -------------------------- + -- Set_Unbounded_String -- + -------------------------- + + procedure Set_Unbounded_String + (Target : out Unbounded_String; + Source : String) + is + begin + Target.Last := Source'Length; + Target.Reference := new String (1 .. Source'Length); + Target.Reference.all := Source; + end Set_Unbounded_String; + ----------- -- Slice -- ----------- @@ -808,8 +852,7 @@ package body Ada.Strings.Unbounded is function Slice (Source : Unbounded_String; Low : Positive; - High : Natural) - return String + High : Natural) return String is begin -- Note: test of High > Length is in accordance with AI95-00128 @@ -828,9 +871,7 @@ package body Ada.Strings.Unbounded is function Tail (Source : Unbounded_String; Count : Natural; - Pad : Character := Space) - return Unbounded_String is - + Pad : Character := Space) return Unbounded_String is begin return To_Unbounded_String (Fixed.Tail (Source.Reference (1 .. Source.Last), Count, Pad)); @@ -842,7 +883,6 @@ package body Ada.Strings.Unbounded is Pad : Character := Space) is Old : String_Access := Source.Reference; - begin Source.Reference := new String' (Fixed.Tail (Source.Reference (1 .. Source.Last), Count, Pad)); @@ -865,7 +905,6 @@ package body Ada.Strings.Unbounded is function To_Unbounded_String (Source : String) return Unbounded_String is Result : Unbounded_String; - begin Result.Last := Source'Length; Result.Reference := new String (1 .. Source'Length); @@ -874,11 +913,9 @@ package body Ada.Strings.Unbounded is end To_Unbounded_String; function To_Unbounded_String - (Length : Natural) - return Unbounded_String + (Length : Natural) return Unbounded_String is Result : Unbounded_String; - begin Result.Last := Length; Result.Reference := new String (1 .. Length); @@ -891,8 +928,7 @@ package body Ada.Strings.Unbounded is function Translate (Source : Unbounded_String; - Mapping : Maps.Character_Mapping) - return Unbounded_String + Mapping : Maps.Character_Mapping) return Unbounded_String is begin return To_Unbounded_String @@ -909,8 +945,7 @@ package body Ada.Strings.Unbounded is function Translate (Source : Unbounded_String; - Mapping : Maps.Character_Mapping_Function) - return Unbounded_String + Mapping : Maps.Character_Mapping_Function) return Unbounded_String is begin return To_Unbounded_String @@ -931,8 +966,7 @@ package body Ada.Strings.Unbounded is function Trim (Source : Unbounded_String; - Side : Trim_End) - return Unbounded_String + Side : Trim_End) return Unbounded_String is begin return To_Unbounded_String @@ -944,7 +978,6 @@ package body Ada.Strings.Unbounded is Side : Trim_End) is Old : String_Access := Source.Reference; - begin Source.Reference := new String' (Fixed.Trim (Source.Reference (1 .. Source.Last), Side)); @@ -955,8 +988,7 @@ package body Ada.Strings.Unbounded is function Trim (Source : Unbounded_String; Left : Maps.Character_Set; - Right : Maps.Character_Set) - return Unbounded_String + Right : Maps.Character_Set) return Unbounded_String is begin return To_Unbounded_String @@ -969,7 +1001,6 @@ package body Ada.Strings.Unbounded is Right : Maps.Character_Set) is Old : String_Access := Source.Reference; - begin Source.Reference := new String' (Fixed.Trim (Source.Reference (1 .. Source.Last), Left, Right)); @@ -977,4 +1008,35 @@ package body Ada.Strings.Unbounded is Free (Old); end Trim; + --------------------- + -- Unbounded_Slice -- + --------------------- + + function Unbounded_Slice + (Source : Unbounded_String; + Low : Positive; + High : Natural) return Unbounded_String + is + begin + if Low > Source.Last + 1 or else High > Source.Last then + raise Index_Error; + else + return To_Unbounded_String (Source.Reference.all (Low .. High)); + end if; + end Unbounded_Slice; + + procedure Unbounded_Slice + (Source : Unbounded_String; + Target : out Unbounded_String; + Low : Positive; + High : Natural) + is + begin + if Low > Source.Last + 1 or else High > Source.Last then + raise Index_Error; + else + Target := To_Unbounded_String (Source.Reference.all (Low .. High)); + end if; + end Unbounded_Slice; + end Ada.Strings.Unbounded; diff --git a/gcc/ada/a-strunb.ads b/gcc/ada/a-strunb.ads index 996eb0e..c974b87 100644 --- a/gcc/ada/a-strunb.ads +++ b/gcc/ada/a-strunb.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2002 Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2005 Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- @@ -55,172 +55,212 @@ pragma Preelaborate (Unbounded); -- Conversion, Concatenation, and Selection Functions -- -------------------------------------------------------- - function To_Unbounded_String (Source : String) return Unbounded_String; - function To_Unbounded_String (Length : in Natural) return Unbounded_String; + function To_Unbounded_String + (Source : String) return Unbounded_String; + + function To_Unbounded_String + (Length : Natural) return Unbounded_String; function To_String (Source : Unbounded_String) return String; + procedure Set_Unbounded_String + (Target : out Unbounded_String; + Source : String); + pragma Ada_05 (Set_Unbounded_String); + procedure Append (Source : in out Unbounded_String; - New_Item : in Unbounded_String); + New_Item : Unbounded_String); procedure Append (Source : in out Unbounded_String; - New_Item : in String); + New_Item : String); procedure Append (Source : in out Unbounded_String; - New_Item : in Character); + New_Item : Character); - function "&" (Left, Right : Unbounded_String) return Unbounded_String; + function "&" + (Left : Unbounded_String; + Right : Unbounded_String) return Unbounded_String; function "&" - (Left : in Unbounded_String; - Right : in String) - return Unbounded_String; + (Left : Unbounded_String; + Right : String) return Unbounded_String; function "&" - (Left : in String; - Right : in Unbounded_String) - return Unbounded_String; + (Left : String; + Right : Unbounded_String) return Unbounded_String; function "&" - (Left : in Unbounded_String; - Right : in Character) - return Unbounded_String; + (Left : Unbounded_String; + Right : Character) return Unbounded_String; function "&" - (Left : in Character; - Right : in Unbounded_String) - return Unbounded_String; + (Left : Character; + Right : Unbounded_String) return Unbounded_String; function Element - (Source : in Unbounded_String; - Index : in Positive) - return Character; + (Source : Unbounded_String; + Index : Positive) return Character; procedure Replace_Element (Source : in out Unbounded_String; - Index : in Positive; + Index : Positive; By : Character); function Slice - (Source : in Unbounded_String; - Low : in Positive; - High : in Natural) - return String; + (Source : Unbounded_String; + Low : Positive; + High : Natural) return String; + + function Unbounded_Slice + (Source : Unbounded_String; + Low : Positive; + High : Natural) return Unbounded_String; + pragma Ada_05 (Unbounded_Slice); + + procedure Unbounded_Slice + (Source : Unbounded_String; + Target : out Unbounded_String; + Low : Positive; + High : Natural); + pragma Ada_05 (Unbounded_Slice); - function "=" (Left, Right : in Unbounded_String) return Boolean; + function "=" + (Left : Unbounded_String; + Right : Unbounded_String) return Boolean; function "=" - (Left : in Unbounded_String; - Right : in String) - return Boolean; + (Left : Unbounded_String; + Right : String) return Boolean; function "=" - (Left : in String; - Right : in Unbounded_String) - return Boolean; + (Left : String; + Right : Unbounded_String) return Boolean; - function "<" (Left, Right : in Unbounded_String) return Boolean; + function "<" + (Left : Unbounded_String; + Right : Unbounded_String) return Boolean; function "<" - (Left : in Unbounded_String; - Right : in String) - return Boolean; + (Left : Unbounded_String; + Right : String) return Boolean; function "<" - (Left : in String; - Right : in Unbounded_String) - return Boolean; + (Left : String; + Right : Unbounded_String) return Boolean; - function "<=" (Left, Right : in Unbounded_String) return Boolean; + function "<=" + (Left : Unbounded_String; + Right : Unbounded_String) return Boolean; function "<=" - (Left : in Unbounded_String; - Right : in String) - return Boolean; + (Left : Unbounded_String; + Right : String) return Boolean; function "<=" - (Left : in String; - Right : in Unbounded_String) - return Boolean; + (Left : String; + Right : Unbounded_String) return Boolean; - function ">" (Left, Right : in Unbounded_String) return Boolean; + function ">" + (Left : Unbounded_String; + Right : Unbounded_String) return Boolean; function ">" - (Left : in Unbounded_String; - Right : in String) - return Boolean; + (Left : Unbounded_String; + Right : String) return Boolean; function ">" - (Left : in String; - Right : in Unbounded_String) - return Boolean; + (Left : String; + Right : Unbounded_String) return Boolean; - function ">=" (Left, Right : in Unbounded_String) return Boolean; + function ">=" + (Left : Unbounded_String; + Right : Unbounded_String) return Boolean; function ">=" - (Left : in Unbounded_String; - Right : in String) - return Boolean; + (Left : Unbounded_String; + Right : String) return Boolean; function ">=" - (Left : in String; - Right : in Unbounded_String) - return Boolean; + (Left : String; + Right : Unbounded_String) return Boolean; ------------------------ -- Search Subprograms -- ------------------------ function Index - (Source : in Unbounded_String; - Pattern : in String; - Going : in Direction := Forward; - Mapping : in Maps.Character_Mapping := Maps.Identity) - return Natural; + (Source : Unbounded_String; + Pattern : String; + Going : Direction := Forward; + Mapping : Maps.Character_Mapping := Maps.Identity) return Natural; + + function Index + (Source : Unbounded_String; + Pattern : String; + Going : Direction := Forward; + Mapping : Maps.Character_Mapping_Function) return Natural; function Index - (Source : in Unbounded_String; - Pattern : in String; - Going : in Direction := Forward; - Mapping : in Maps.Character_Mapping_Function) - return Natural; + (Source : Unbounded_String; + Set : Maps.Character_Set; + Test : Membership := Inside; + Going : Direction := Forward) return Natural; function Index - (Source : in Unbounded_String; - Set : in Maps.Character_Set; - Test : in Membership := Inside; - Going : in Direction := Forward) - return Natural; + (Source : Unbounded_String; + Pattern : String; + From : Positive; + Going : Direction := Forward; + Mapping : Maps.Character_Mapping := Maps.Identity) return Natural; + pragma Ada_05 (Index); + + function Index + (Source : Unbounded_String; + Pattern : String; + From : Positive; + Going : Direction := Forward; + Mapping : Maps.Character_Mapping_Function) return Natural; + pragma Ada_05 (Index); + + function Index + (Source : Unbounded_String; + Set : Maps.Character_Set; + From : Positive; + Test : Membership := Inside; + Going : Direction := Forward) return Natural; + pragma Ada_05 (Index); function Index_Non_Blank - (Source : in Unbounded_String; - Going : in Direction := Forward) - return Natural; + (Source : Unbounded_String; + Going : Direction := Forward) return Natural; + + function Index_Non_Blank + (Source : Unbounded_String; + From : Positive; + Going : Direction := Forward) return Natural; + pragma Ada_05 (Index_Non_Blank); function Count - (Source : in Unbounded_String; - Pattern : in String; - Mapping : in Maps.Character_Mapping := Maps.Identity) - return Natural; + (Source : Unbounded_String; + Pattern : String; + Mapping : Maps.Character_Mapping := Maps.Identity) return Natural; function Count - (Source : in Unbounded_String; - Pattern : in String; - Mapping : in Maps.Character_Mapping_Function) - return Natural; + (Source : Unbounded_String; + Pattern : String; + Mapping : Maps.Character_Mapping_Function) return Natural; function Count - (Source : in Unbounded_String; - Set : in Maps.Character_Set) - return Natural; + (Source : Unbounded_String; + Set : Maps.Character_Set) return Natural; procedure Find_Token - (Source : in Unbounded_String; - Set : in Maps.Character_Set; - Test : in Membership; + (Source : Unbounded_String; + Set : Maps.Character_Set; + Test : Membership; First : out Positive; Last : out Natural); @@ -229,129 +269,116 @@ pragma Preelaborate (Unbounded); ------------------------------------ function Translate - (Source : in Unbounded_String; - Mapping : in Maps.Character_Mapping) - return Unbounded_String; + (Source : Unbounded_String; + Mapping : Maps.Character_Mapping) return Unbounded_String; procedure Translate (Source : in out Unbounded_String; Mapping : Maps.Character_Mapping); function Translate - (Source : in Unbounded_String; - Mapping : in Maps.Character_Mapping_Function) - return Unbounded_String; + (Source : Unbounded_String; + Mapping : Maps.Character_Mapping_Function) return Unbounded_String; procedure Translate (Source : in out Unbounded_String; - Mapping : in Maps.Character_Mapping_Function); + Mapping : Maps.Character_Mapping_Function); --------------------------------------- -- String Transformation Subprograms -- --------------------------------------- function Replace_Slice - (Source : in Unbounded_String; - Low : in Positive; - High : in Natural; - By : in String) - return Unbounded_String; + (Source : Unbounded_String; + Low : Positive; + High : Natural; + By : String) return Unbounded_String; procedure Replace_Slice - (Source : in out Unbounded_String; - Low : in Positive; - High : in Natural; - By : in String); + (Source : in out Unbounded_String; + Low : Positive; + High : Natural; + By : String); function Insert - (Source : in Unbounded_String; - Before : in Positive; - New_Item : in String) - return Unbounded_String; + (Source : Unbounded_String; + Before : Positive; + New_Item : String) return Unbounded_String; procedure Insert (Source : in out Unbounded_String; - Before : in Positive; - New_Item : in String); + Before : Positive; + New_Item : String); function Overwrite - (Source : in Unbounded_String; - Position : in Positive; - New_Item : in String) - return Unbounded_String; + (Source : Unbounded_String; + Position : Positive; + New_Item : String) return Unbounded_String; procedure Overwrite - (Source : in out Unbounded_String; - Position : in Positive; - New_Item : in String); + (Source : in out Unbounded_String; + Position : Positive; + New_Item : String); function Delete - (Source : in Unbounded_String; - From : in Positive; - Through : in Natural) - return Unbounded_String; + (Source : Unbounded_String; + From : Positive; + Through : Natural) return Unbounded_String; procedure Delete (Source : in out Unbounded_String; - From : in Positive; - Through : in Natural); + From : Positive; + Through : Natural); function Trim - (Source : in Unbounded_String; - Side : in Trim_End) - return Unbounded_String; + (Source : Unbounded_String; + Side : Trim_End) return Unbounded_String; procedure Trim (Source : in out Unbounded_String; - Side : in Trim_End); + Side : Trim_End); function Trim - (Source : in Unbounded_String; - Left : in Maps.Character_Set; - Right : in Maps.Character_Set) - return Unbounded_String; + (Source : Unbounded_String; + Left : Maps.Character_Set; + Right : Maps.Character_Set) return Unbounded_String; procedure Trim (Source : in out Unbounded_String; - Left : in Maps.Character_Set; - Right : in Maps.Character_Set); + Left : Maps.Character_Set; + Right : Maps.Character_Set); function Head - (Source : in Unbounded_String; - Count : in Natural; - Pad : in Character := Space) - return Unbounded_String; + (Source : Unbounded_String; + Count : Natural; + Pad : Character := Space) return Unbounded_String; procedure Head (Source : in out Unbounded_String; - Count : in Natural; - Pad : in Character := Space); + Count : Natural; + Pad : Character := Space); function Tail - (Source : in Unbounded_String; - Count : in Natural; - Pad : in Character := Space) - return Unbounded_String; + (Source : Unbounded_String; + Count : Natural; + Pad : Character := Space) return Unbounded_String; procedure Tail (Source : in out Unbounded_String; - Count : in Natural; - Pad : in Character := Space); + Count : Natural; + Pad : Character := Space); function "*" - (Left : in Natural; - Right : in Character) - return Unbounded_String; + (Left : Natural; + Right : Character) return Unbounded_String; function "*" - (Left : in Natural; - Right : in String) - return Unbounded_String; + (Left : Natural; + Right : String) return Unbounded_String; function "*" - (Left : in Natural; - Right : in Unbounded_String) - return Unbounded_String; + (Left : Natural; + Right : Unbounded_String) return Unbounded_String; private pragma Inline (Length); diff --git a/gcc/ada/a-stwifi.adb b/gcc/ada/a-stwifi.adb index 100fb80..f7d64c9 100644 --- a/gcc/ada/a-stwifi.adb +++ b/gcc/ada/a-stwifi.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2002 Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2005 Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -41,59 +41,85 @@ package body Ada.Strings.Wide_Fixed is ------------------------ function Index - (Source : in Wide_String; - Pattern : in Wide_String; - Going : in Direction := Forward; - Mapping : in Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity) - return Natural + (Source : Wide_String; + Pattern : Wide_String; + Going : Direction := Forward; + Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity) + return Natural renames Ada.Strings.Wide_Search.Index; function Index - (Source : in Wide_String; - Pattern : in Wide_String; - Going : in Direction := Forward; - Mapping : in Wide_Maps.Wide_Character_Mapping_Function) - return Natural + (Source : Wide_String; + Pattern : Wide_String; + Going : Direction := Forward; + Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural renames Ada.Strings.Wide_Search.Index; function Index - (Source : in Wide_String; - Set : in Wide_Maps.Wide_Character_Set; - Test : in Membership := Inside; - Going : in Direction := Forward) - return Natural + (Source : Wide_String; + Set : Wide_Maps.Wide_Character_Set; + Test : Membership := Inside; + Going : Direction := Forward) return Natural renames Ada.Strings.Wide_Search.Index; + function Index + (Source : Wide_String; + Pattern : Wide_String; + From : Positive; + Going : Direction := Forward; + Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity) + return Natural + renames Ada.Strings.Wide_Search.Index; + + function Index + (Source : Wide_String; + Pattern : Wide_String; + From : Positive; + Going : Direction := Forward; + Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural + renames Ada.Strings.Wide_Search.Index; + + function Index + (Source : Wide_String; + Set : Wide_Maps.Wide_Character_Set; + From : Positive; + Test : Membership := Inside; + Going : Direction := Forward) return Natural + renames Ada.Strings.Wide_Search.Index; + + function Index_Non_Blank + (Source : Wide_String; + Going : Direction := Forward) return Natural + renames Ada.Strings.Wide_Search.Index_Non_Blank; + function Index_Non_Blank - (Source : in Wide_String; - Going : in Direction := Forward) - return Natural + (Source : Wide_String; + From : Positive; + Going : Direction := Forward) return Natural renames Ada.Strings.Wide_Search.Index_Non_Blank; function Count - (Source : in Wide_String; - Pattern : in Wide_String; - Mapping : in Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity) - return Natural + (Source : Wide_String; + Pattern : Wide_String; + Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity) + return Natural renames Ada.Strings.Wide_Search.Count; function Count - (Source : in Wide_String; - Pattern : in Wide_String; - Mapping : in Wide_Maps.Wide_Character_Mapping_Function) - return Natural + (Source : Wide_String; + Pattern : Wide_String; + Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural renames Ada.Strings.Wide_Search.Count; function Count - (Source : in Wide_String; - Set : in Wide_Maps.Wide_Character_Set) - return Natural + (Source : Wide_String; + Set : Wide_Maps.Wide_Character_Set) return Natural renames Ada.Strings.Wide_Search.Count; procedure Find_Token - (Source : in Wide_String; - Set : in Wide_Maps.Wide_Character_Set; - Test : in Membership; + (Source : Wide_String; + Set : Wide_Maps.Wide_Character_Set; + Test : Membership; First : out Positive; Last : out Natural) renames Ada.Strings.Wide_Search.Find_Token; @@ -103,9 +129,8 @@ package body Ada.Strings.Wide_Fixed is --------- function "*" - (Left : in Natural; - Right : in Wide_Character) - return Wide_String + (Left : Natural; + Right : Wide_Character) return Wide_String is Result : Wide_String (1 .. Left); @@ -118,9 +143,8 @@ package body Ada.Strings.Wide_Fixed is end "*"; function "*" - (Left : in Natural; - Right : in Wide_String) - return Wide_String + (Left : Natural; + Right : Wide_String) return Wide_String is Result : Wide_String (1 .. Left * Right'Length); Ptr : Integer := 1; @@ -139,10 +163,9 @@ package body Ada.Strings.Wide_Fixed is ------------ function Delete - (Source : in Wide_String; - From : in Positive; - Through : in Natural) - return Wide_String + (Source : Wide_String; + From : Positive; + Through : Natural) return Wide_String is begin if From not in Source'Range @@ -168,10 +191,10 @@ package body Ada.Strings.Wide_Fixed is procedure Delete (Source : in out Wide_String; - From : in Positive; - Through : in Natural; - Justify : in Alignment := Left; - Pad : in Wide_Character := Wide_Space) + From : Positive; + Through : Natural; + Justify : Alignment := Left; + Pad : Wide_Character := Wide_Space) is begin Move (Source => Delete (Source, From, Through), @@ -185,10 +208,9 @@ package body Ada.Strings.Wide_Fixed is ---------- function Head - (Source : in Wide_String; - Count : in Natural; - Pad : in Wide_Character := Wide_Space) - return Wide_String + (Source : Wide_String; + Count : Natural; + Pad : Wide_Character := Wide_Space) return Wide_String is Result : Wide_String (1 .. Count); @@ -209,9 +231,9 @@ package body Ada.Strings.Wide_Fixed is procedure Head (Source : in out Wide_String; - Count : in Natural; - Justify : in Alignment := Left; - Pad : in Wide_Character := Ada.Strings.Wide_Space) + Count : Natural; + Justify : Alignment := Left; + Pad : Wide_Character := Ada.Strings.Wide_Space) is begin Move (Source => Head (Source, Count, Pad), @@ -226,10 +248,9 @@ package body Ada.Strings.Wide_Fixed is ------------ function Insert - (Source : in Wide_String; - Before : in Positive; - New_Item : in Wide_String) - return Wide_String + (Source : Wide_String; + Before : Positive; + New_Item : Wide_String) return Wide_String is Result : Wide_String (1 .. Source'Length + New_Item'Length); @@ -245,9 +266,9 @@ package body Ada.Strings.Wide_Fixed is procedure Insert (Source : in out Wide_String; - Before : in Positive; - New_Item : in Wide_String; - Drop : in Truncation := Error) + Before : Positive; + New_Item : Wide_String; + Drop : Truncation := Error) is begin Move (Source => Insert (Source, Before, New_Item), @@ -260,11 +281,11 @@ package body Ada.Strings.Wide_Fixed is ---------- procedure Move - (Source : in Wide_String; + (Source : Wide_String; Target : out Wide_String; - Drop : in Truncation := Error; - Justify : in Alignment := Left; - Pad : in Wide_Character := Wide_Space) + Drop : Truncation := Error; + Justify : Alignment := Left; + Pad : Wide_Character := Wide_Space) is Sfirst : constant Integer := Source'First; Slast : constant Integer := Source'Last; @@ -369,10 +390,9 @@ package body Ada.Strings.Wide_Fixed is --------------- function Overwrite - (Source : in Wide_String; - Position : in Positive; - New_Item : in Wide_String) - return Wide_String + (Source : Wide_String; + Position : Positive; + New_Item : Wide_String) return Wide_String is begin if Position not in Source'First .. Source'Last + 1 then @@ -396,9 +416,9 @@ package body Ada.Strings.Wide_Fixed is procedure Overwrite (Source : in out Wide_String; - Position : in Positive; - New_Item : in Wide_String; - Drop : in Truncation := Right) + Position : Positive; + New_Item : Wide_String; + Drop : Truncation := Right) is begin Move (Source => Overwrite (Source, Position, New_Item), @@ -411,11 +431,10 @@ package body Ada.Strings.Wide_Fixed is ------------------- function Replace_Slice - (Source : in Wide_String; - Low : in Positive; - High : in Natural; - By : in Wide_String) - return Wide_String + (Source : Wide_String; + Low : Positive; + High : Natural; + By : Wide_String) return Wide_String is Result_Length : Natural; @@ -446,12 +465,12 @@ package body Ada.Strings.Wide_Fixed is procedure Replace_Slice (Source : in out Wide_String; - Low : in Positive; - High : in Natural; - By : in Wide_String; - Drop : in Truncation := Error; - Justify : in Alignment := Left; - Pad : in Wide_Character := Wide_Space) + Low : Positive; + High : Natural; + By : Wide_String; + Drop : Truncation := Error; + Justify : Alignment := Left; + Pad : Wide_Character := Wide_Space) is begin Move (Replace_Slice (Source, Low, High, By), Source, Drop, Justify, Pad); @@ -462,10 +481,9 @@ package body Ada.Strings.Wide_Fixed is ---------- function Tail - (Source : in Wide_String; - Count : in Natural; - Pad : in Wide_Character := Wide_Space) - return Wide_String + (Source : Wide_String; + Count : Natural; + Pad : Wide_Character := Wide_Space) return Wide_String is Result : Wide_String (1 .. Count); @@ -488,9 +506,9 @@ package body Ada.Strings.Wide_Fixed is procedure Tail (Source : in out Wide_String; - Count : in Natural; - Justify : in Alignment := Left; - Pad : in Wide_Character := Ada.Strings.Wide_Space) + Count : Natural; + Justify : Alignment := Left; + Pad : Wide_Character := Ada.Strings.Wide_Space) is begin Move (Source => Tail (Source, Count, Pad), @@ -505,9 +523,8 @@ package body Ada.Strings.Wide_Fixed is --------------- function Translate - (Source : in Wide_String; - Mapping : in Wide_Maps.Wide_Character_Mapping) - return Wide_String + (Source : Wide_String; + Mapping : Wide_Maps.Wide_Character_Mapping) return Wide_String is Result : Wide_String (1 .. Source'Length); @@ -521,7 +538,7 @@ package body Ada.Strings.Wide_Fixed is procedure Translate (Source : in out Wide_String; - Mapping : in Wide_Maps.Wide_Character_Mapping) + Mapping : Wide_Maps.Wide_Character_Mapping) is begin for J in Source'Range loop @@ -530,9 +547,8 @@ package body Ada.Strings.Wide_Fixed is end Translate; function Translate - (Source : in Wide_String; - Mapping : in Wide_Maps.Wide_Character_Mapping_Function) - return Wide_String + (Source : Wide_String; + Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Wide_String is Result : Wide_String (1 .. Source'Length); @@ -546,7 +562,7 @@ package body Ada.Strings.Wide_Fixed is procedure Translate (Source : in out Wide_String; - Mapping : in Wide_Maps.Wide_Character_Mapping_Function) + Mapping : Wide_Maps.Wide_Character_Mapping_Function) is begin for J in Source'Range loop @@ -559,9 +575,8 @@ package body Ada.Strings.Wide_Fixed is ---------- function Trim - (Source : in Wide_String; - Side : in Trim_End) - return Wide_String + (Source : Wide_String; + Side : Trim_End) return Wide_String is Low : Natural := Source'First; High : Natural := Source'Last; @@ -599,9 +614,9 @@ package body Ada.Strings.Wide_Fixed is procedure Trim (Source : in out Wide_String; - Side : in Trim_End; - Justify : in Alignment := Left; - Pad : in Wide_Character := Wide_Space) + Side : Trim_End; + Justify : Alignment := Left; + Pad : Wide_Character := Wide_Space) is begin Move (Source => Trim (Source, Side), @@ -611,10 +626,9 @@ package body Ada.Strings.Wide_Fixed is end Trim; function Trim - (Source : in Wide_String; - Left : in Wide_Maps.Wide_Character_Set; - Right : in Wide_Maps.Wide_Character_Set) - return Wide_String + (Source : Wide_String; + Left : Wide_Maps.Wide_Character_Set; + Right : Wide_Maps.Wide_Character_Set) return Wide_String is Low : Natural := Source'First; High : Natural := Source'Last; @@ -644,10 +658,10 @@ package body Ada.Strings.Wide_Fixed is procedure Trim (Source : in out Wide_String; - Left : in Wide_Maps.Wide_Character_Set; - Right : in Wide_Maps.Wide_Character_Set; - Justify : in Alignment := Strings.Left; - Pad : in Wide_Character := Wide_Space) + Left : Wide_Maps.Wide_Character_Set; + Right : Wide_Maps.Wide_Character_Set; + Justify : Alignment := Strings.Left; + Pad : Wide_Character := Wide_Space) is begin Move (Source => Trim (Source, Left, Right), diff --git a/gcc/ada/a-stwifi.ads b/gcc/ada/a-stwifi.ads index 7331db5..177e2f8 100644 --- a/gcc/ada/a-stwifi.ads +++ b/gcc/ada/a-stwifi.ads @@ -24,63 +24,89 @@ pragma Preelaborate (Wide_Fixed); ------------------------------------------------------------------- procedure Move - (Source : in Wide_String; + (Source : Wide_String; Target : out Wide_String; - Drop : in Truncation := Error; - Justify : in Alignment := Left; - Pad : in Wide_Character := Ada.Strings.Wide_Space); + Drop : Truncation := Error; + Justify : Alignment := Left; + Pad : Wide_Character := Ada.Strings.Wide_Space); ------------------------ -- Search Subprograms -- ------------------------ function Index - (Source : in Wide_String; - Pattern : in Wide_String; - Going : in Direction := Forward; - Mapping : in Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity) - return Natural; + (Source : Wide_String; + Pattern : Wide_String; + Going : Direction := Forward; + Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity) + return Natural; function Index - (Source : in Wide_String; - Pattern : in Wide_String; - Going : in Direction := Forward; - Mapping : in Wide_Maps.Wide_Character_Mapping_Function) - return Natural; + (Source : Wide_String; + Pattern : Wide_String; + Going : Direction := Forward; + Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural; function Index - (Source : in Wide_String; - Set : in Wide_Maps.Wide_Character_Set; - Test : in Membership := Inside; - Going : in Direction := Forward) - return Natural; + (Source : Wide_String; + Set : Wide_Maps.Wide_Character_Set; + Test : Membership := Inside; + Going : Direction := Forward) return Natural; + + function Index + (Source : Wide_String; + Pattern : Wide_String; + From : Positive; + Going : Direction := Forward; + Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity) + return Natural; + pragma Ada_05 (Index); + + function Index + (Source : Wide_String; + Pattern : Wide_String; + From : Positive; + Going : Direction := Forward; + Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural; + pragma Ada_05 (Index); + + function Index + (Source : Wide_String; + Set : Wide_Maps.Wide_Character_Set; + From : Positive; + Test : Membership := Inside; + Going : Direction := Forward) return Natural; + pragma Ada_05 (Index); + + function Index_Non_Blank + (Source : Wide_String; + Going : Direction := Forward) return Natural; function Index_Non_Blank - (Source : in Wide_String; - Going : in Direction := Forward) - return Natural; + (Source : Wide_String; + From : Positive; + Going : Direction := Forward) return Natural; + pragma Ada_05 (Index_Non_Blank); function Count - (Source : in Wide_String; - Pattern : in Wide_String; - Mapping : in Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity) - return Natural; + (Source : Wide_String; + Pattern : Wide_String; + Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity) + return Natural; function Count - (Source : in Wide_String; - Pattern : in Wide_String; - Mapping : in Wide_Maps.Wide_Character_Mapping_Function) - return Natural; + (Source : Wide_String; + Pattern : Wide_String; + Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural; function Count - (Source : in Wide_String; - Set : in Wide_Maps.Wide_Character_Set) - return Natural; + (Source : Wide_String; + Set : Wide_Maps.Wide_Character_Set) return Natural; procedure Find_Token - (Source : in Wide_String; - Set : in Wide_Maps.Wide_Character_Set; - Test : in Membership; + (Source : Wide_String; + Set : Wide_Maps.Wide_Character_Set; + Test : Membership; First : out Positive; Last : out Natural); @@ -89,144 +115,132 @@ pragma Preelaborate (Wide_Fixed); ----------------------------------------- function Translate - (Source : in Wide_String; - Mapping : in Wide_Maps.Wide_Character_Mapping) - return Wide_String; + (Source : Wide_String; + Mapping : Wide_Maps.Wide_Character_Mapping) return Wide_String; procedure Translate (Source : in out Wide_String; - Mapping : in Wide_Maps.Wide_Character_Mapping); + Mapping : Wide_Maps.Wide_Character_Mapping); function Translate - (Source : in Wide_String; - Mapping : in Wide_Maps.Wide_Character_Mapping_Function) - return Wide_String; + (Source : Wide_String; + Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Wide_String; procedure Translate (Source : in out Wide_String; - Mapping : in Wide_Maps.Wide_Character_Mapping_Function); + Mapping : Wide_Maps.Wide_Character_Mapping_Function); -------------------------------------------- -- Wide_String Transformation Subprograms -- -------------------------------------------- function Replace_Slice - (Source : in Wide_String; - Low : in Positive; - High : in Natural; - By : in Wide_String) - return Wide_String; + (Source : Wide_String; + Low : Positive; + High : Natural; + By : Wide_String) return Wide_String; procedure Replace_Slice (Source : in out Wide_String; - Low : in Positive; - High : in Natural; - By : in Wide_String; - Drop : in Truncation := Error; - Justify : in Alignment := Left; - Pad : in Wide_Character := Ada.Strings.Wide_Space); + Low : Positive; + High : Natural; + By : Wide_String; + Drop : Truncation := Error; + Justify : Alignment := Left; + Pad : Wide_Character := Ada.Strings.Wide_Space); function Insert - (Source : in Wide_String; - Before : in Positive; - New_Item : in Wide_String) - return Wide_String; + (Source : Wide_String; + Before : Positive; + New_Item : Wide_String) return Wide_String; procedure Insert (Source : in out Wide_String; - Before : in Positive; - New_Item : in Wide_String; - Drop : in Truncation := Error); + Before : Positive; + New_Item : Wide_String; + Drop : Truncation := Error); function Overwrite - (Source : in Wide_String; - Position : in Positive; - New_Item : in Wide_String) - return Wide_String; + (Source : Wide_String; + Position : Positive; + New_Item : Wide_String) return Wide_String; procedure Overwrite (Source : in out Wide_String; - Position : in Positive; - New_Item : in Wide_String; - Drop : in Truncation := Right); + Position : Positive; + New_Item : Wide_String; + Drop : Truncation := Right); function Delete - (Source : in Wide_String; - From : in Positive; - Through : in Natural) - return Wide_String; + (Source : Wide_String; + From : Positive; + Through : Natural) return Wide_String; procedure Delete (Source : in out Wide_String; - From : in Positive; - Through : in Natural; - Justify : in Alignment := Left; - Pad : in Wide_Character := Ada.Strings.Wide_Space); + From : Positive; + Through : Natural; + Justify : Alignment := Left; + Pad : Wide_Character := Ada.Strings.Wide_Space); -------------------------------------- -- Wide_String Selector Subprograms -- -------------------------------------- function Trim - (Source : in Wide_String; - Side : in Trim_End) - return Wide_String; + (Source : Wide_String; + Side : Trim_End) return Wide_String; procedure Trim (Source : in out Wide_String; - Side : in Trim_End; - Justify : in Alignment := Left; - Pad : in Wide_Character := Wide_Space); + Side : Trim_End; + Justify : Alignment := Left; + Pad : Wide_Character := Wide_Space); function Trim - (Source : in Wide_String; - Left : in Wide_Maps.Wide_Character_Set; - Right : in Wide_Maps.Wide_Character_Set) - return Wide_String; + (Source : Wide_String; + Left : Wide_Maps.Wide_Character_Set; + Right : Wide_Maps.Wide_Character_Set) return Wide_String; procedure Trim (Source : in out Wide_String; - Left : in Wide_Maps.Wide_Character_Set; - Right : in Wide_Maps.Wide_Character_Set; - Justify : in Alignment := Ada.Strings.Left; - Pad : in Wide_Character := Ada.Strings.Wide_Space); + Left : Wide_Maps.Wide_Character_Set; + Right : Wide_Maps.Wide_Character_Set; + Justify : Alignment := Ada.Strings.Left; + Pad : Wide_Character := Ada.Strings.Wide_Space); function Head - (Source : in Wide_String; - Count : in Natural; - Pad : in Wide_Character := Ada.Strings.Wide_Space) - return Wide_String; + (Source : Wide_String; + Count : Natural; + Pad : Wide_Character := Ada.Strings.Wide_Space) return Wide_String; procedure Head (Source : in out Wide_String; - Count : in Natural; - Justify : in Alignment := Left; - Pad : in Wide_Character := Ada.Strings.Wide_Space); + Count : Natural; + Justify : Alignment := Left; + Pad : Wide_Character := Ada.Strings.Wide_Space); function Tail - (Source : in Wide_String; - Count : in Natural; - Pad : in Wide_Character := Ada.Strings.Wide_Space) - return Wide_String; + (Source : Wide_String; + Count : Natural; + Pad : Wide_Character := Ada.Strings.Wide_Space) return Wide_String; procedure Tail (Source : in out Wide_String; - Count : in Natural; - Justify : in Alignment := Left; - Pad : in Wide_Character := Ada.Strings.Wide_Space); + Count : Natural; + Justify : Alignment := Left; + Pad : Wide_Character := Ada.Strings.Wide_Space); --------------------------------------- -- Wide_String Constructor Functions -- --------------------------------------- function "*" - (Left : in Natural; - Right : in Wide_Character) - return Wide_String; + (Left : Natural; + Right : Wide_Character) return Wide_String; function "*" - (Left : in Natural; - Right : in Wide_String) - return Wide_String; + (Left : Natural; + Right : Wide_String) return Wide_String; end Ada.Strings.Wide_Fixed; diff --git a/gcc/ada/a-stwima.adb b/gcc/ada/a-stwima.adb index e3bacd4..79e0479 100644 --- a/gcc/ada/a-stwima.adb +++ b/gcc/ada/a-stwima.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2002 Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2005 Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -40,8 +40,7 @@ package body Ada.Strings.Wide_Maps is --------- function "-" - (Left, Right : in Wide_Character_Set) - return Wide_Character_Set + (Left, Right : Wide_Character_Set) return Wide_Character_Set is LS : constant Wide_Character_Ranges_Access := Left.Set; RS : constant Wide_Character_Ranges_Access := Right.Set; @@ -159,8 +158,7 @@ package body Ada.Strings.Wide_Maps is ----------- function "and" - (Left, Right : in Wide_Character_Set) - return Wide_Character_Set + (Left, Right : Wide_Character_Set) return Wide_Character_Set is LS : constant Wide_Character_Ranges_Access := Left.Set; RS : constant Wide_Character_Ranges_Access := Right.Set; @@ -210,8 +208,7 @@ package body Ada.Strings.Wide_Maps is ----------- function "not" - (Right : in Wide_Character_Set) - return Wide_Character_Set + (Right : Wide_Character_Set) return Wide_Character_Set is RS : constant Wide_Character_Ranges_Access := Right.Set; @@ -253,8 +250,7 @@ package body Ada.Strings.Wide_Maps is ---------- function "or" - (Left, Right : in Wide_Character_Set) - return Wide_Character_Set + (Left, Right : Wide_Character_Set) return Wide_Character_Set is LS : constant Wide_Character_Ranges_Access := Left.Set; RS : constant Wide_Character_Ranges_Access := Right.Set; @@ -341,8 +337,7 @@ package body Ada.Strings.Wide_Maps is ----------- function "xor" - (Left, Right : in Wide_Character_Set) - return Wide_Character_Set + (Left, Right : Wide_Character_Set) return Wide_Character_Set is begin return (Left or Right) - (Left and Right); @@ -409,9 +404,8 @@ package body Ada.Strings.Wide_Maps is ----------- function Is_In - (Element : in Wide_Character; - Set : in Wide_Character_Set) - return Boolean + (Element : Wide_Character; + Set : Wide_Character_Set) return Boolean is L, R, M : Natural; SS : constant Wide_Character_Ranges_Access := Set.Set; @@ -446,9 +440,8 @@ package body Ada.Strings.Wide_Maps is --------------- function Is_Subset - (Elements : in Wide_Character_Set; - Set : in Wide_Character_Set) - return Boolean + (Elements : Wide_Character_Set; + Set : Wide_Character_Set) return Boolean is ES : constant Wide_Character_Ranges_Access := Elements.Set; SS : constant Wide_Character_Ranges_Access := Set.Set; @@ -493,8 +486,7 @@ package body Ada.Strings.Wide_Maps is --------------- function To_Domain - (Map : in Wide_Character_Mapping) - return Wide_Character_Sequence + (Map : Wide_Character_Mapping) return Wide_Character_Sequence is begin return Map.Map.Domain; @@ -505,8 +497,7 @@ package body Ada.Strings.Wide_Maps is ---------------- function To_Mapping - (From, To : in Wide_Character_Sequence) - return Wide_Character_Mapping + (From, To : Wide_Character_Sequence) return Wide_Character_Mapping is Domain : Wide_Character_Sequence (1 .. From'Length); Rangev : Wide_Character_Sequence (1 .. To'Length); @@ -554,8 +545,7 @@ package body Ada.Strings.Wide_Maps is -------------- function To_Range - (Map : in Wide_Character_Mapping) - return Wide_Character_Sequence + (Map : Wide_Character_Mapping) return Wide_Character_Sequence is begin return Map.Map.Rangev; @@ -566,8 +556,7 @@ package body Ada.Strings.Wide_Maps is --------------- function To_Ranges - (Set : in Wide_Character_Set) - return Wide_Character_Ranges + (Set : in Wide_Character_Set) return Wide_Character_Ranges is begin return Set.Set.all; @@ -578,8 +567,7 @@ package body Ada.Strings.Wide_Maps is ----------------- function To_Sequence - (Set : in Wide_Character_Set) - return Wide_Character_Sequence + (Set : Wide_Character_Set) return Wide_Character_Sequence is SS : constant Wide_Character_Ranges_Access := Set.Set; @@ -604,8 +592,7 @@ package body Ada.Strings.Wide_Maps is -- Case of multiple range input function To_Set - (Ranges : in Wide_Character_Ranges) - return Wide_Character_Set + (Ranges : Wide_Character_Ranges) return Wide_Character_Set is Result : Wide_Character_Ranges (Ranges'Range); N : Natural := 0; @@ -667,8 +654,7 @@ package body Ada.Strings.Wide_Maps is -- Case of single range input function To_Set - (Span : in Wide_Character_Range) - return Wide_Character_Set + (Span : Wide_Character_Range) return Wide_Character_Set is begin if Span.Low > Span.High then @@ -685,8 +671,7 @@ package body Ada.Strings.Wide_Maps is -- Case of wide string input function To_Set - (Sequence : in Wide_Character_Sequence) - return Wide_Character_Set + (Sequence : Wide_Character_Sequence) return Wide_Character_Set is R : Wide_Character_Ranges (1 .. Sequence'Length); @@ -701,8 +686,7 @@ package body Ada.Strings.Wide_Maps is -- Case of single wide character input function To_Set - (Singleton : in Wide_Character) - return Wide_Character_Set + (Singleton : Wide_Character) return Wide_Character_Set is begin return @@ -715,9 +699,8 @@ package body Ada.Strings.Wide_Maps is ----------- function Value - (Map : in Wide_Character_Mapping; - Element : in Wide_Character) - return Wide_Character + (Map : Wide_Character_Mapping; + Element : Wide_Character) return Wide_Character is L, R, M : Natural; diff --git a/gcc/ada/a-stwima.ads b/gcc/ada/a-stwima.ads index 079336e..382452f 100644 --- a/gcc/ada/a-stwima.ads +++ b/gcc/ada/a-stwima.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-1998 Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2005 Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- @@ -63,16 +63,13 @@ package Ada.Strings.Wide_Maps is array (Positive range <>) of Wide_Character_Range; function To_Set - (Ranges : in Wide_Character_Ranges) - return Wide_Character_Set; + (Ranges : Wide_Character_Ranges) return Wide_Character_Set; function To_Set - (Span : in Wide_Character_Range) - return Wide_Character_Set; + (Span : Wide_Character_Range) return Wide_Character_Set; function To_Ranges - (Set : in Wide_Character_Set) - return Wide_Character_Ranges; + (Set : in Wide_Character_Set) return Wide_Character_Ranges; --------------------------------------- -- Operations on Wide Character Sets -- @@ -81,55 +78,44 @@ package Ada.Strings.Wide_Maps is function "=" (Left, Right : in Wide_Character_Set) return Boolean; function "not" - (Right : in Wide_Character_Set) - return Wide_Character_Set; + (Right : Wide_Character_Set) return Wide_Character_Set; function "and" - (Left, Right : in Wide_Character_Set) - return Wide_Character_Set; + (Left, Right : Wide_Character_Set) return Wide_Character_Set; function "or" - (Left, Right : in Wide_Character_Set) - return Wide_Character_Set; + (Left, Right : Wide_Character_Set) return Wide_Character_Set; function "xor" - (Left, Right : in Wide_Character_Set) - return Wide_Character_Set; + (Left, Right : Wide_Character_Set) return Wide_Character_Set; function "-" - (Left, Right : in Wide_Character_Set) - return Wide_Character_Set; + (Left, Right : Wide_Character_Set) return Wide_Character_Set; function Is_In - (Element : in Wide_Character; - Set : in Wide_Character_Set) - return Boolean; + (Element : Wide_Character; + Set : Wide_Character_Set) return Boolean; function Is_Subset - (Elements : in Wide_Character_Set; - Set : in Wide_Character_Set) - return Boolean; + (Elements : Wide_Character_Set; + Set : Wide_Character_Set) return Boolean; function "<=" - (Left : in Wide_Character_Set; - Right : in Wide_Character_Set) - return Boolean + (Left : Wide_Character_Set; + Right : Wide_Character_Set) return Boolean renames Is_Subset; subtype Wide_Character_Sequence is Wide_String; -- Alternative representation for a set of character values function To_Set - (Sequence : in Wide_Character_Sequence) - return Wide_Character_Set; + (Sequence : Wide_Character_Sequence) return Wide_Character_Set; function To_Set - (Singleton : in Wide_Character) - return Wide_Character_Set; + (Singleton : Wide_Character) return Wide_Character_Set; function To_Sequence - (Set : in Wide_Character_Set) - return Wide_Character_Sequence; + (Set : Wide_Character_Set) return Wide_Character_Sequence; ----------------------------------------- -- Wide Character Mapping Declarations -- @@ -139,9 +125,8 @@ package Ada.Strings.Wide_Maps is -- Representation for a wide character to wide character mapping: function Value - (Map : in Wide_Character_Mapping; - Element : in Wide_Character) - return Wide_Character; + (Map : Wide_Character_Mapping; + Element : Wide_Character) return Wide_Character; Identity : constant Wide_Character_Mapping; @@ -150,19 +135,16 @@ package Ada.Strings.Wide_Maps is --------------------------------- function To_Mapping - (From, To : in Wide_Character_Sequence) - return Wide_Character_Mapping; + (From, To : Wide_Character_Sequence) return Wide_Character_Mapping; function To_Domain - (Map : in Wide_Character_Mapping) - return Wide_Character_Sequence; + (Map : Wide_Character_Mapping) return Wide_Character_Sequence; function To_Range - (Map : in Wide_Character_Mapping) - return Wide_Character_Sequence; + (Map : Wide_Character_Mapping) return Wide_Character_Sequence; type Wide_Character_Mapping_Function is - access function (From : in Wide_Character) return Wide_Character; + access function (From : Wide_Character) return Wide_Character; private package AF renames Ada.Finalization; diff --git a/gcc/ada/a-stwise.adb b/gcc/ada/a-stwise.adb index a8b8ae9..d1eae0e 100644 --- a/gcc/ada/a-stwise.adb +++ b/gcc/ada/a-stwise.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992,1993,1994 Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2005 Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -42,8 +42,7 @@ package body Ada.Strings.Wide_Search is function Belongs (Element : Wide_Character; Set : Wide_Maps.Wide_Character_Set; - Test : Membership) - return Boolean; + Test : Membership) return Boolean; pragma Inline (Belongs); -- Determines if the given element is in (Test = Inside) or not in -- (Test = Outside) the given character set. @@ -55,9 +54,8 @@ package body Ada.Strings.Wide_Search is function Belongs (Element : Wide_Character; Set : Wide_Maps.Wide_Character_Set; - Test : Membership) - return Boolean is - + Test : Membership) return Boolean + is begin if Test = Inside then return Is_In (Element, Set); @@ -71,10 +69,10 @@ package body Ada.Strings.Wide_Search is ----------- function Count - (Source : in Wide_String; - Pattern : in Wide_String; - Mapping : in Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity) - return Natural + (Source : Wide_String; + Pattern : Wide_String; + Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity) + return Natural is N : Natural; J : Natural; @@ -117,10 +115,9 @@ package body Ada.Strings.Wide_Search is end Count; function Count - (Source : in Wide_String; - Pattern : in Wide_String; - Mapping : in Wide_Maps.Wide_Character_Mapping_Function) - return Natural + (Source : Wide_String; + Pattern : Wide_String; + Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural is Mapped_Source : Wide_String (Source'Range); @@ -132,9 +129,9 @@ package body Ada.Strings.Wide_Search is return Count (Mapped_Source, Pattern); end Count; - function Count (Source : in Wide_String; - Set : in Wide_Maps.Wide_Character_Set) - return Natural + function Count + (Source : in Wide_String; + Set : Wide_Maps.Wide_Character_Set) return Natural is N : Natural := 0; @@ -153,9 +150,9 @@ package body Ada.Strings.Wide_Search is ---------------- procedure Find_Token - (Source : in Wide_String; - Set : in Wide_Maps.Wide_Character_Set; - Test : in Membership; + (Source : Wide_String; + Set : Wide_Maps.Wide_Character_Set; + Test : Membership; First : out Positive; Last : out Natural) is @@ -190,11 +187,11 @@ package body Ada.Strings.Wide_Search is ----------- function Index - (Source : in Wide_String; - Pattern : in Wide_String; - Going : in Direction := Forward; - Mapping : in Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity) - return Natural + (Source : Wide_String; + Pattern : Wide_String; + Going : Direction := Forward; + Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity) + return Natural is begin if Pattern = "" then @@ -239,16 +236,11 @@ package body Ada.Strings.Wide_Search is return 0; end Index; - ----------- - -- Index -- - ----------- - function Index - (Source : in Wide_String; - Pattern : in Wide_String; - Going : in Direction := Forward; - Mapping : in Wide_Maps.Wide_Character_Mapping_Function) - return Natural + (Source : Wide_String; + Pattern : Wide_String; + Going : Direction := Forward; + Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural is Mapped_Source : Wide_String (Source'Range); @@ -261,11 +253,10 @@ package body Ada.Strings.Wide_Search is end Index; function Index - (Source : in Wide_String; - Set : in Wide_Maps.Wide_Character_Set; - Test : in Membership := Inside; - Going : in Direction := Forward) - return Natural + (Source : Wide_String; + Set : Wide_Maps.Wide_Character_Set; + Test : Membership := Inside; + Going : Direction := Forward) return Natural is begin if Going = Forward then @@ -288,14 +279,92 @@ package body Ada.Strings.Wide_Search is return 0; end Index; + function Index + (Source : Wide_String; + Pattern : Wide_String; + From : Positive; + Going : Direction := Forward; + Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity) + return Natural + is + begin + if Going = Forward then + if From < Source'First then + raise Index_Error; + end if; + + return + Index (Source (From .. Source'Last), Pattern, Forward, Mapping); + + else + if From > Source'Last then + raise Index_Error; + end if; + + return + Index (Source (Source'First .. From), Pattern, Backward, Mapping); + end if; + end Index; + + function Index + (Source : Wide_String; + Pattern : Wide_String; + From : Positive; + Going : Direction := Forward; + Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural + is + begin + if Going = Forward then + if From < Source'First then + raise Index_Error; + end if; + + return Index + (Source (From .. Source'Last), Pattern, Forward, Mapping); + + else + if From > Source'Last then + raise Index_Error; + end if; + + return Index + (Source (Source'First .. From), Pattern, Backward, Mapping); + end if; + end Index; + + function Index + (Source : Wide_String; + Set : Wide_Maps.Wide_Character_Set; + From : Positive; + Test : Membership := Inside; + Going : Direction := Forward) return Natural + is + begin + if Going = Forward then + if From < Source'First then + raise Index_Error; + end if; + + return + Index (Source (From .. Source'Last), Set, Test, Forward); + + else + if From > Source'Last then + raise Index_Error; + end if; + + return + Index (Source (Source'First .. From), Set, Test, Backward); + end if; + end Index; + --------------------- -- Index_Non_Blank -- --------------------- function Index_Non_Blank - (Source : in Wide_String; - Going : in Direction := Forward) - return Natural + (Source : Wide_String; + Going : Direction := Forward) return Natural is begin if Going = Forward then @@ -316,7 +385,30 @@ package body Ada.Strings.Wide_Search is -- Fall through if no match return 0; + end Index_Non_Blank; + function Index_Non_Blank + (Source : Wide_String; + From : Positive; + Going : Direction := Forward) return Natural + is + begin + if Going = Forward then + if From < Source'First then + raise Index_Error; + end if; + + return + Index_Non_Blank (Source (From .. Source'Last), Forward); + + else + if From > Source'Last then + raise Index_Error; + end if; + + return + Index_Non_Blank (Source (Source'First .. From), Backward); + end if; end Index_Non_Blank; end Ada.Strings.Wide_Search; diff --git a/gcc/ada/a-stwise.ads b/gcc/ada/a-stwise.ads index 01f2166..26ba39a 100644 --- a/gcc/ada/a-stwise.ads +++ b/gcc/ada/a-stwise.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-1997 Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2005 Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -43,49 +43,76 @@ with Ada.Strings.Wide_Maps; private package Ada.Strings.Wide_Search is pragma Preelaborate (Wide_Search); - function Index (Source : in Wide_String; - Pattern : in Wide_String; - Going : in Direction := Forward; - Mapping : in Wide_Maps.Wide_Character_Mapping := - Wide_Maps.Identity) - return Natural; + function Index + (Source : Wide_String; + Pattern : Wide_String; + Going : Direction := Forward; + Mapping : Wide_Maps.Wide_Character_Mapping := + Wide_Maps.Identity) return Natural; - function Index (Source : in Wide_String; - Pattern : in Wide_String; - Going : in Direction := Forward; - Mapping : in Wide_Maps.Wide_Character_Mapping_Function) - return Natural; + function Index + (Source : Wide_String; + Pattern : Wide_String; + Going : Direction := Forward; + Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural; - function Index (Source : in Wide_String; - Set : in Wide_Maps.Wide_Character_Set; - Test : in Membership := Inside; - Going : in Direction := Forward) - return Natural; + function Index + (Source : Wide_String; + Set : Wide_Maps.Wide_Character_Set; + Test : Membership := Inside; + Going : Direction := Forward) return Natural; - function Index_Non_Blank (Source : in Wide_String; - Going : in Direction := Forward) + function Index + (Source : Wide_String; + Pattern : Wide_String; + From : Positive; + Going : Direction := Forward; + Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity) return Natural; - function Count (Source : in Wide_String; - Pattern : in Wide_String; - Mapping : in Wide_Maps.Wide_Character_Mapping := - Wide_Maps.Identity) - return Natural; + function Index + (Source : Wide_String; + Pattern : Wide_String; + From : Positive; + Going : Direction := Forward; + Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural; - function Count (Source : in Wide_String; - Pattern : in Wide_String; - Mapping : in Wide_Maps.Wide_Character_Mapping_Function) - return Natural; + function Index + (Source : Wide_String; + Set : Wide_Maps.Wide_Character_Set; + From : Positive; + Test : Membership := Inside; + Going : Direction := Forward) return Natural; + + function Index_Non_Blank + (Source : Wide_String; + Going : Direction := Forward) return Natural; - function Count (Source : in Wide_String; - Set : in Wide_Maps.Wide_Character_Set) + function Index_Non_Blank + (Source : Wide_String; + From : Positive; + Going : Direction := Forward) return Natural; + + function Count + (Source : Wide_String; + Pattern : Wide_String; + Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity) return Natural; + function Count + (Source : Wide_String; + Pattern : Wide_String; + Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural; + + function Count + (Source : Wide_String; + Set : Wide_Maps.Wide_Character_Set) return Natural; - procedure Find_Token (Source : in Wide_String; - Set : in Wide_Maps.Wide_Character_Set; - Test : in Membership; - First : out Positive; - Last : out Natural); + procedure Find_Token + (Source : Wide_String; + Set : Wide_Maps.Wide_Character_Set; + Test : Membership; + First : out Positive; + Last : out Natural); end Ada.Strings.Wide_Search; diff --git a/gcc/ada/a-textio.adb b/gcc/ada/a-textio.adb index 7afb804..3fc95f0 100644 --- a/gcc/ada/a-textio.adb +++ b/gcc/ada/a-textio.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2004 Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2005 Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -60,7 +60,6 @@ package body Ada.Text_IO is function AFCB_Allocate (Control_Block : Text_AFCB) return FCB.AFCB_Ptr is pragma Unreferenced (Control_Block); - begin return new Text_AFCB; end AFCB_Allocate; @@ -118,7 +117,7 @@ package body Ada.Text_IO is -- to exceed the value of Count'Last, i.e. no check is required for -- overflow raising layout error. - function Col (File : in File_Type) return Positive_Count is + function Col (File : File_Type) return Positive_Count is begin FIO.Check_File_Open (AP (File)); return File.Col; @@ -135,9 +134,9 @@ package body Ada.Text_IO is procedure Create (File : in out File_Type; - Mode : in File_Mode := Out_File; - Name : in String := ""; - Form : in String := "") + Mode : File_Mode := Out_File; + Name : String := ""; + Form : String := "") is Dummy_File_Control_Block : Text_AFCB; pragma Warnings (Off, Dummy_File_Control_Block); @@ -212,8 +211,8 @@ package body Ada.Text_IO is -- End_Of_File -- ----------------- - function End_Of_File (File : in File_Type) return Boolean is - ch : int; + function End_Of_File (File : File_Type) return Boolean is + ch : int; begin FIO.Check_Read_Status (AP (File)); @@ -270,7 +269,7 @@ package body Ada.Text_IO is -- End_Of_Line -- ----------------- - function End_Of_Line (File : in File_Type) return Boolean is + function End_Of_Line (File : File_Type) return Boolean is ch : int; begin @@ -301,7 +300,7 @@ package body Ada.Text_IO is -- End_Of_Page -- ----------------- - function End_Of_Page (File : in File_Type) return Boolean is + function End_Of_Page (File : File_Type) return Boolean is ch : int; begin @@ -357,7 +356,7 @@ package body Ada.Text_IO is -- Flush -- ----------- - procedure Flush (File : in File_Type) is + procedure Flush (File : File_Type) is begin FIO.Flush (AP (File)); end Flush; @@ -371,7 +370,7 @@ package body Ada.Text_IO is -- Form -- ---------- - function Form (File : in File_Type) return String is + function Form (File : File_Type) return String is begin return FIO.Form (AP (File)); end Form; @@ -381,7 +380,7 @@ package body Ada.Text_IO is --------- procedure Get - (File : in File_Type; + (File : File_Type; Item : out Character) is ch : int; @@ -430,7 +429,7 @@ package body Ada.Text_IO is end Get; procedure Get - (File : in File_Type; + (File : File_Type; Item : out String) is ch : int; @@ -489,7 +488,7 @@ package body Ada.Text_IO is -- More work required here ??? procedure Get_Immediate - (File : in File_Type; + (File : File_Type; Item : out Character) is ch : int; @@ -530,7 +529,7 @@ package body Ada.Text_IO is end Get_Immediate; procedure Get_Immediate - (File : in File_Type; + (File : File_Type; Item : out Character; Available : out Boolean) is @@ -594,7 +593,7 @@ package body Ada.Text_IO is -------------- procedure Get_Line - (File : in File_Type; + (File : File_Type; Item : out String; Last : out Natural) is @@ -712,6 +711,58 @@ package body Ada.Text_IO is Get_Line (Current_In, Item, Last); end Get_Line; + function Get_Line (File : File_Type) return String is + Buffer : String (1 .. 500); + Last : Natural; + + function Get_Rest (S : String) return String; + -- This is a recursive function that reads the rest of the line and + -- returns it. S is the part read so far. + + -------------- + -- Get_Rest -- + -------------- + + function Get_Rest (S : String) return String is + + -- Each time we allocate a buffer the same size as what we have + -- read so far. This limits us to a logarithmic number of calls + -- to Get_Rest and also ensures only a linear use of stack space. + + Buffer : String (1 .. S'Length); + Last : Natural; + + begin + Get_Line (File, Buffer, Last); + + declare + R : constant String := S & Buffer (1 .. Last); + begin + if Last < Buffer'Last then + return R; + else + return Get_Rest (R); + end if; + end; + end Get_Rest; + + -- Start of processing for Get_Line + + begin + Get_Line (File, Buffer, Last); + + if Last < Buffer'Last then + return Buffer (1 .. Last); + else + return Get_Rest (Buffer (1 .. Last)); + end if; + end Get_Line; + + function Get_Line return String is + begin + return Get_Line (Current_In); + end Get_Line; + ---------- -- Getc -- ---------- @@ -733,7 +784,7 @@ package body Ada.Text_IO is -- Is_Open -- ------------- - function Is_Open (File : in File_Type) return Boolean is + function Is_Open (File : File_Type) return Boolean is begin return FIO.Is_Open (AP (File)); end Is_Open; @@ -746,7 +797,7 @@ package body Ada.Text_IO is -- to exceed the value of Count'Last, i.e. no check is required for -- overflow raising layout error. - function Line (File : in File_Type) return Positive_Count is + function Line (File : File_Type) return Positive_Count is begin FIO.Check_File_Open (AP (File)); return File.Line; @@ -761,7 +812,7 @@ package body Ada.Text_IO is -- Line_Length -- ----------------- - function Line_Length (File : in File_Type) return Count is + function Line_Length (File : File_Type) return Count is begin FIO.Check_Write_Status (AP (File)); return File.Line_Length; @@ -777,7 +828,7 @@ package body Ada.Text_IO is ---------------- procedure Look_Ahead - (File : in File_Type; + (File : File_Type; Item : out Character; End_Of_Line : out Boolean) is @@ -818,7 +869,7 @@ package body Ada.Text_IO is -- Mode -- ---------- - function Mode (File : in File_Type) return File_Mode is + function Mode (File : File_Type) return File_Mode is begin return To_TIO (FIO.Mode (AP (File))); end Mode; @@ -827,7 +878,7 @@ package body Ada.Text_IO is -- Name -- ---------- - function Name (File : in File_Type) return String is + function Name (File : File_Type) return String is begin return FIO.Name (AP (File)); end Name; @@ -837,8 +888,8 @@ package body Ada.Text_IO is -------------- procedure New_Line - (File : in File_Type; - Spacing : in Positive_Count := 1) + (File : File_Type; + Spacing : Positive_Count := 1) is begin -- Raise Constraint_Error if out of range value. The reason for this @@ -867,7 +918,7 @@ package body Ada.Text_IO is File.Col := 1; end New_Line; - procedure New_Line (Spacing : in Positive_Count := 1) is + procedure New_Line (Spacing : Positive_Count := 1) is begin New_Line (Current_Out, Spacing); end New_Line; @@ -876,7 +927,7 @@ package body Ada.Text_IO is -- New_Page -- -------------- - procedure New_Page (File : in File_Type) is + procedure New_Page (File : File_Type) is begin FIO.Check_Write_Status (AP (File)); @@ -925,9 +976,9 @@ package body Ada.Text_IO is procedure Open (File : in out File_Type; - Mode : in File_Mode; - Name : in String; - Form : in String := "") + Mode : File_Mode; + Name : String; + Form : String := "") is Dummy_File_Control_Block : Text_AFCB; pragma Warnings (Off, Dummy_File_Control_Block); @@ -955,7 +1006,7 @@ package body Ada.Text_IO is -- to exceed the value of Count'Last, i.e. no check is required for -- overflow raising layout error. - function Page (File : in File_Type) return Positive_Count is + function Page (File : File_Type) return Positive_Count is begin FIO.Check_File_Open (AP (File)); return File.Page; @@ -970,7 +1021,7 @@ package body Ada.Text_IO is -- Page_Length -- ----------------- - function Page_Length (File : in File_Type) return Count is + function Page_Length (File : File_Type) return Count is begin FIO.Check_Write_Status (AP (File)); return File.Page_Length; @@ -986,8 +1037,8 @@ package body Ada.Text_IO is --------- procedure Put - (File : in File_Type; - Item : in Character) + (File : File_Type; + Item : Character) is begin FIO.Check_Write_Status (AP (File)); @@ -1003,7 +1054,7 @@ package body Ada.Text_IO is File.Col := File.Col + 1; end Put; - procedure Put (Item : in Character) is + procedure Put (Item : Character) is begin FIO.Check_Write_Status (AP (Current_Out)); @@ -1025,8 +1076,8 @@ package body Ada.Text_IO is --------- procedure Put - (File : in File_Type; - Item : in String) + (File : File_Type; + Item : String) is begin FIO.Check_Write_Status (AP (File)); @@ -1052,7 +1103,7 @@ package body Ada.Text_IO is end if; end Put; - procedure Put (Item : in String) is + procedure Put (Item : String) is begin Put (Current_Out, Item); end Put; @@ -1062,8 +1113,8 @@ package body Ada.Text_IO is -------------- procedure Put_Line - (File : in File_Type; - Item : in String) + (File : File_Type; + Item : String) is Ilen : Natural := Item'Length; Istart : Natural := Item'First; @@ -1127,7 +1178,7 @@ package body Ada.Text_IO is end; end Put_Line; - procedure Put_Line (Item : in String) is + procedure Put_Line (Item : String) is begin Put_Line (Current_Out, Item); end Put_Line; @@ -1231,7 +1282,7 @@ package body Ada.Text_IO is procedure Reset (File : in out File_Type; - Mode : in File_Mode) + Mode : File_Mode) is begin -- Don't allow change of mode for current file (RM A.10.2(5)) @@ -1273,8 +1324,8 @@ package body Ada.Text_IO is ------------- procedure Set_Col - (File : in File_Type; - To : in Positive_Count) + (File : File_Type; + To : Positive_Count) is ch : int; @@ -1333,7 +1384,7 @@ package body Ada.Text_IO is end if; end Set_Col; - procedure Set_Col (To : in Positive_Count) is + procedure Set_Col (To : Positive_Count) is begin Set_Col (Current_Out, To); end Set_Col; @@ -1342,7 +1393,7 @@ package body Ada.Text_IO is -- Set_Error -- --------------- - procedure Set_Error (File : in File_Type) is + procedure Set_Error (File : File_Type) is begin FIO.Check_Write_Status (AP (File)); Current_Err := File; @@ -1352,7 +1403,7 @@ package body Ada.Text_IO is -- Set_Input -- --------------- - procedure Set_Input (File : in File_Type) is + procedure Set_Input (File : File_Type) is begin FIO.Check_Read_Status (AP (File)); Current_In := File; @@ -1363,8 +1414,8 @@ package body Ada.Text_IO is -------------- procedure Set_Line - (File : in File_Type; - To : in Positive_Count) + (File : File_Type; + To : Positive_Count) is begin -- Raise Constraint_Error if out of range value. The reason for this @@ -1401,7 +1452,7 @@ package body Ada.Text_IO is end if; end Set_Line; - procedure Set_Line (To : in Positive_Count) is + procedure Set_Line (To : Positive_Count) is begin Set_Line (Current_Out, To); end Set_Line; @@ -1410,7 +1461,7 @@ package body Ada.Text_IO is -- Set_Line_Length -- --------------------- - procedure Set_Line_Length (File : in File_Type; To : in Count) is + procedure Set_Line_Length (File : File_Type; To : Count) is begin -- Raise Constraint_Error if out of range value. The reason for this -- explicit test is that we don't want junk values around, even if @@ -1424,7 +1475,7 @@ package body Ada.Text_IO is File.Line_Length := To; end Set_Line_Length; - procedure Set_Line_Length (To : in Count) is + procedure Set_Line_Length (To : Count) is begin Set_Line_Length (Current_Out, To); end Set_Line_Length; @@ -1433,7 +1484,7 @@ package body Ada.Text_IO is -- Set_Output -- ---------------- - procedure Set_Output (File : in File_Type) is + procedure Set_Output (File : File_Type) is begin FIO.Check_Write_Status (AP (File)); Current_Out := File; @@ -1443,7 +1494,7 @@ package body Ada.Text_IO is -- Set_Page_Length -- --------------------- - procedure Set_Page_Length (File : in File_Type; To : in Count) is + procedure Set_Page_Length (File : File_Type; To : Count) is begin -- Raise Constraint_Error if out of range value. The reason for this -- explicit test is that we don't want junk values around, even if @@ -1457,7 +1508,7 @@ package body Ada.Text_IO is File.Page_Length := To; end Set_Page_Length; - procedure Set_Page_Length (To : in Count) is + procedure Set_Page_Length (To : Count) is begin Set_Page_Length (Current_Out, To); end Set_Page_Length; @@ -1467,8 +1518,8 @@ package body Ada.Text_IO is --------------- procedure Skip_Line - (File : in File_Type; - Spacing : in Positive_Count := 1) + (File : File_Type; + Spacing : Positive_Count := 1) is ch : int; @@ -1548,7 +1599,7 @@ package body Ada.Text_IO is end loop; end Skip_Line; - procedure Skip_Line (Spacing : in Positive_Count := 1) is + procedure Skip_Line (Spacing : Positive_Count := 1) is begin Skip_Line (Current_In, Spacing); end Skip_Line; @@ -1557,7 +1608,7 @@ package body Ada.Text_IO is -- Skip_Page -- --------------- - procedure Skip_Page (File : in File_Type) is + procedure Skip_Page (File : File_Type) is ch : int; begin @@ -1712,7 +1763,7 @@ package body Ada.Text_IO is procedure Write (File : in out Text_AFCB; - Item : in Stream_Element_Array) + Item : Stream_Element_Array) is function Has_Translated_Characters return Boolean; diff --git a/gcc/ada/a-textio.ads b/gcc/ada/a-textio.ads index 4f38370..451c9d0 100644 --- a/gcc/ada/a-textio.ads +++ b/gcc/ada/a-textio.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2002 Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2005 Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- @@ -86,34 +86,34 @@ pragma Elaborate_Body (Text_IO); procedure Create (File : in out File_Type; - Mode : in File_Mode := Out_File; - Name : in String := ""; - Form : in String := ""); + Mode : File_Mode := Out_File; + Name : String := ""; + Form : String := ""); procedure Open (File : in out File_Type; - Mode : in File_Mode; - Name : in String; - Form : in String := ""); + Mode : File_Mode; + Name : String; + Form : String := ""); procedure Close (File : in out File_Type); procedure Delete (File : in out File_Type); - procedure Reset (File : in out File_Type; Mode : in File_Mode); + procedure Reset (File : in out File_Type; Mode : File_Mode); procedure Reset (File : in out File_Type); - function Mode (File : in File_Type) return File_Mode; - function Name (File : in File_Type) return String; - function Form (File : in File_Type) return String; + function Mode (File : File_Type) return File_Mode; + function Name (File : File_Type) return String; + function Form (File : File_Type) return String; - function Is_Open (File : in File_Type) return Boolean; + function Is_Open (File : File_Type) return Boolean; ------------------------------------------------------ -- Control of default input, output and error files -- ------------------------------------------------------ - procedure Set_Input (File : in File_Type); - procedure Set_Output (File : in File_Type); - procedure Set_Error (File : in File_Type); + procedure Set_Input (File : File_Type); + procedure Set_Output (File : File_Type); + procedure Set_Error (File : File_Type); function Standard_Input return File_Type; function Standard_Output return File_Type; @@ -140,76 +140,76 @@ pragma Elaborate_Body (Text_IO); -- Note: The parameter file is IN OUT in the RM, but this is clearly -- an oversight, and was intended to be IN, see AI95-00057. - procedure Flush (File : in File_Type); + procedure Flush (File : File_Type); procedure Flush; -------------------------------------------- -- Specification of line and page lengths -- -------------------------------------------- - procedure Set_Line_Length (File : in File_Type; To : in Count); - procedure Set_Line_Length (To : in Count); + procedure Set_Line_Length (File : File_Type; To : Count); + procedure Set_Line_Length (To : Count); - procedure Set_Page_Length (File : in File_Type; To : in Count); - procedure Set_Page_Length (To : in Count); + procedure Set_Page_Length (File : File_Type; To : Count); + procedure Set_Page_Length (To : Count); - function Line_Length (File : in File_Type) return Count; + function Line_Length (File : File_Type) return Count; function Line_Length return Count; - function Page_Length (File : in File_Type) return Count; + function Page_Length (File : File_Type) return Count; function Page_Length return Count; ------------------------------------ -- Column, Line, and Page Control -- ------------------------------------ - procedure New_Line (File : in File_Type; Spacing : in Positive_Count := 1); - procedure New_Line (Spacing : in Positive_Count := 1); + procedure New_Line (File : File_Type; Spacing : Positive_Count := 1); + procedure New_Line (Spacing : Positive_Count := 1); - procedure Skip_Line (File : in File_Type; Spacing : in Positive_Count := 1); - procedure Skip_Line (Spacing : in Positive_Count := 1); + procedure Skip_Line (File : File_Type; Spacing : Positive_Count := 1); + procedure Skip_Line (Spacing : Positive_Count := 1); - function End_Of_Line (File : in File_Type) return Boolean; + function End_Of_Line (File : File_Type) return Boolean; function End_Of_Line return Boolean; - procedure New_Page (File : in File_Type); + procedure New_Page (File : File_Type); procedure New_Page; - procedure Skip_Page (File : in File_Type); + procedure Skip_Page (File : File_Type); procedure Skip_Page; - function End_Of_Page (File : in File_Type) return Boolean; + function End_Of_Page (File : File_Type) return Boolean; function End_Of_Page return Boolean; - function End_Of_File (File : in File_Type) return Boolean; + function End_Of_File (File : File_Type) return Boolean; function End_Of_File return Boolean; - procedure Set_Col (File : in File_Type; To : in Positive_Count); - procedure Set_Col (To : in Positive_Count); + procedure Set_Col (File : File_Type; To : Positive_Count); + procedure Set_Col (To : Positive_Count); - procedure Set_Line (File : in File_Type; To : in Positive_Count); - procedure Set_Line (To : in Positive_Count); + procedure Set_Line (File : File_Type; To : Positive_Count); + procedure Set_Line (To : Positive_Count); - function Col (File : in File_Type) return Positive_Count; + function Col (File : File_Type) return Positive_Count; function Col return Positive_Count; - function Line (File : in File_Type) return Positive_Count; + function Line (File : File_Type) return Positive_Count; function Line return Positive_Count; - function Page (File : in File_Type) return Positive_Count; + function Page (File : File_Type) return Positive_Count; function Page return Positive_Count; ---------------------------- -- Character Input-Output -- ---------------------------- - procedure Get (File : in File_Type; Item : out Character); + procedure Get (File : File_Type; Item : out Character); procedure Get (Item : out Character); - procedure Put (File : in File_Type; Item : in Character); - procedure Put (Item : in Character); + procedure Put (File : File_Type; Item : Character); + procedure Put (Item : Character); procedure Look_Ahead - (File : in File_Type; + (File : File_Type; Item : out Character; End_Of_Line : out Boolean); @@ -218,14 +218,14 @@ pragma Elaborate_Body (Text_IO); End_Of_Line : out Boolean); procedure Get_Immediate - (File : in File_Type; + (File : File_Type; Item : out Character); procedure Get_Immediate (Item : out Character); procedure Get_Immediate - (File : in File_Type; + (File : File_Type; Item : out Character; Available : out Boolean); @@ -237,13 +237,13 @@ pragma Elaborate_Body (Text_IO); -- String Input-Output -- ------------------------- - procedure Get (File : in File_Type; Item : out String); + procedure Get (File : File_Type; Item : out String); procedure Get (Item : out String); - procedure Put (File : in File_Type; Item : in String); - procedure Put (Item : in String); + procedure Put (File : File_Type; Item : String); + procedure Put (Item : String); procedure Get_Line - (File : in File_Type; + (File : File_Type; Item : out String; Last : out Natural); @@ -251,12 +251,18 @@ pragma Elaborate_Body (Text_IO); (Item : out String; Last : out Natural); + function Get_Line (File : File_Type) return String; + pragma Ada_05 (Get_Line); + + function Get_Line return String; + pragma Ada_05 (Get_Line); + procedure Put_Line - (File : in File_Type; - Item : in String); + (File : File_Type; + Item : String); procedure Put_Line - (Item : in String); + (Item : String); --------------------------------------- -- Generic packages for Input-Output -- @@ -375,7 +381,7 @@ private procedure Write (File : in out Text_AFCB; - Item : in Ada.Streams.Stream_Element_Array); + Item : Ada.Streams.Stream_Element_Array); -- Write operation used when Text_IO file is treated directly as Stream ------------------------ diff --git a/gcc/ada/a-witeio.adb b/gcc/ada/a-witeio.adb index 621f4bd..cfed9a7 100644 --- a/gcc/ada/a-witeio.adb +++ b/gcc/ada/a-witeio.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2003 Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2005 Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -40,6 +40,7 @@ with System.CRTL; with System.File_IO; with System.WCh_Cnv; use System.WCh_Cnv; with System.WCh_Con; use System.WCh_Con; + with Unchecked_Conversion; with Unchecked_Deallocation; @@ -65,14 +66,13 @@ package body Ada.Wide_Text_IO is -- Local Subprograms -- ----------------------- - function Getc_Immed (File : in File_Type) return int; + function Getc_Immed (File : File_Type) return int; -- This routine is identical to Getc, except that the read is done in -- Get_Immediate mode (i.e. without waiting for a line return). function Get_Wide_Char_Immed (C : Character; - File : File_Type) - return Wide_Character; + File : File_Type) return Wide_Character; -- This routine is identical to Get_Wide_Char, except that the reads are -- done in Get_Immediate mode (i.e. without waiting for a line return). @@ -86,11 +86,9 @@ package body Ada.Wide_Text_IO is ------------------- function AFCB_Allocate - (Control_Block : Wide_Text_AFCB) - return FCB.AFCB_Ptr + (Control_Block : Wide_Text_AFCB) return FCB.AFCB_Ptr is pragma Unreferenced (Control_Block); - begin return new Wide_Text_AFCB; end AFCB_Allocate; @@ -148,7 +146,7 @@ package body Ada.Wide_Text_IO is -- to exceed the value of Count'Last, i.e. no check is required for -- overflow raising layout error. - function Col (File : in File_Type) return Positive_Count is + function Col (File : File_Type) return Positive_Count is begin FIO.Check_File_Open (AP (File)); return File.Col; @@ -165,9 +163,9 @@ package body Ada.Wide_Text_IO is procedure Create (File : in out File_Type; - Mode : in File_Mode := Out_File; - Name : in String := ""; - Form : in String := "") + Mode : File_Mode := Out_File; + Name : String := ""; + Form : String := "") is Dummy_File_Control_Block : Wide_Text_AFCB; pragma Warnings (Off, Dummy_File_Control_Block); @@ -241,7 +239,7 @@ package body Ada.Wide_Text_IO is -- End_Of_File -- ----------------- - function End_Of_File (File : in File_Type) return Boolean is + function End_Of_File (File : File_Type) return Boolean is ch : int; begin @@ -302,7 +300,7 @@ package body Ada.Wide_Text_IO is -- End_Of_Line -- ----------------- - function End_Of_Line (File : in File_Type) return Boolean is + function End_Of_Line (File : File_Type) return Boolean is ch : int; begin @@ -336,7 +334,7 @@ package body Ada.Wide_Text_IO is -- End_Of_Page -- ----------------- - function End_Of_Page (File : in File_Type) return Boolean is + function End_Of_Page (File : File_Type) return Boolean is ch : int; begin @@ -386,7 +384,7 @@ package body Ada.Wide_Text_IO is -- Flush -- ----------- - procedure Flush (File : in File_Type) is + procedure Flush (File : File_Type) is begin FIO.Flush (AP (File)); end Flush; @@ -400,7 +398,7 @@ package body Ada.Wide_Text_IO is -- Form -- ---------- - function Form (File : in File_Type) return String is + function Form (File : File_Type) return String is begin return FIO.Form (AP (File)); end Form; @@ -410,7 +408,7 @@ package body Ada.Wide_Text_IO is --------- procedure Get - (File : in File_Type; + (File : File_Type; Item : out Wide_Character) is C : Character; @@ -434,7 +432,7 @@ package body Ada.Wide_Text_IO is end Get; procedure Get - (File : in File_Type; + (File : File_Type; Item : out Wide_String) is begin @@ -453,7 +451,7 @@ package body Ada.Wide_Text_IO is ------------------- procedure Get_Character - (File : in File_Type; + (File : File_Type; Item : out Character) is ch : int; @@ -501,7 +499,7 @@ package body Ada.Wide_Text_IO is ------------------- procedure Get_Immediate - (File : in File_Type; + (File : File_Type; Item : out Wide_Character) is ch : int; @@ -537,7 +535,7 @@ package body Ada.Wide_Text_IO is end Get_Immediate; procedure Get_Immediate - (File : in File_Type; + (File : File_Type; Item : out Wide_Character; Available : out Boolean) is @@ -580,7 +578,7 @@ package body Ada.Wide_Text_IO is -------------- procedure Get_Line - (File : in File_Type; + (File : File_Type; Item : out Wide_String; Last : out Natural) is @@ -671,22 +669,78 @@ package body Ada.Wide_Text_IO is Get_Line (Current_In, Item, Last); end Get_Line; + function Get_Line (File : File_Type) return Wide_String is + Buffer : Wide_String (1 .. 500); + Last : Natural; + + function Get_Rest (S : Wide_String) return Wide_String; + -- This is a recursive function that reads the rest of the line and + -- returns it. S is the part read so far. + + -------------- + -- Get_Rest -- + -------------- + + function Get_Rest (S : Wide_String) return Wide_String is + + -- Each time we allocate a buffer the same size as what we have + -- read so far. This limits us to a logarithmic number of calls + -- to Get_Rest and also ensures only a linear use of stack space. + + Buffer : Wide_String (1 .. S'Length); + Last : Natural; + + begin + Get_Line (File, Buffer, Last); + + declare + R : constant Wide_String := S & Buffer (1 .. Last); + begin + if Last < Buffer'Last then + return R; + else + return Get_Rest (R); + end if; + end; + end Get_Rest; + + -- Start of processing for Get_Line + + begin + Get_Line (File, Buffer, Last); + + if Last < Buffer'Last then + return Buffer (1 .. Last); + else + return Get_Rest (Buffer (1 .. Last)); + end if; + end Get_Line; + + function Get_Line return Wide_String is + begin + return Get_Line (Current_In); + end Get_Line; + ------------------- -- Get_Wide_Char -- ------------------- function Get_Wide_Char (C : Character; - File : File_Type) - return Wide_Character + File : File_Type) return Wide_Character is function In_Char return Character; -- Function used to obtain additional characters it the wide character -- sequence is more than one character long. + function WC_In is new Char_Sequence_To_Wide_Char (In_Char); + + ------------- + -- In_Char -- + ------------- + function In_Char return Character is ch : constant Integer := Getc (File); - begin if ch = EOF then raise End_Error; @@ -695,7 +749,7 @@ package body Ada.Wide_Text_IO is end if; end In_Char; - function WC_In is new Char_Sequence_To_Wide_Char (In_Char); + -- Start of processing for In_Char begin return WC_In (C, File.WC_Method); @@ -707,16 +761,20 @@ package body Ada.Wide_Text_IO is function Get_Wide_Char_Immed (C : Character; - File : File_Type) - return Wide_Character + File : File_Type) return Wide_Character is function In_Char return Character; -- Function used to obtain additional characters it the wide character -- sequence is more than one character long. + function WC_In is new Char_Sequence_To_Wide_Char (In_Char); + + ------------- + -- In_Char -- + ------------- + function In_Char return Character is ch : constant Integer := Getc_Immed (File); - begin if ch = EOF then raise End_Error; @@ -725,7 +783,7 @@ package body Ada.Wide_Text_IO is end if; end In_Char; - function WC_In is new Char_Sequence_To_Wide_Char (In_Char); + -- Start of processing for Get_Wide_Char_Immed begin return WC_In (C, File.WC_Method); @@ -752,7 +810,7 @@ package body Ada.Wide_Text_IO is -- Getc_Immed -- ---------------- - function Getc_Immed (File : in File_Type) return int is + function Getc_Immed (File : File_Type) return int is ch : int; end_of_file : int; @@ -785,7 +843,7 @@ package body Ada.Wide_Text_IO is -- Is_Open -- ------------- - function Is_Open (File : in File_Type) return Boolean is + function Is_Open (File : File_Type) return Boolean is begin return FIO.Is_Open (AP (File)); end Is_Open; @@ -798,7 +856,7 @@ package body Ada.Wide_Text_IO is -- to exceed the value of Count'Last, i.e. no check is required for -- overflow raising layout error. - function Line (File : in File_Type) return Positive_Count is + function Line (File : File_Type) return Positive_Count is begin FIO.Check_File_Open (AP (File)); return File.Line; @@ -813,7 +871,7 @@ package body Ada.Wide_Text_IO is -- Line_Length -- ----------------- - function Line_Length (File : in File_Type) return Count is + function Line_Length (File : File_Type) return Count is begin FIO.Check_Write_Status (AP (File)); return File.Line_Length; @@ -829,7 +887,7 @@ package body Ada.Wide_Text_IO is ---------------- procedure Look_Ahead - (File : in File_Type; + (File : File_Type; Item : out Wide_Character; End_Of_Line : out Boolean) is @@ -902,7 +960,7 @@ package body Ada.Wide_Text_IO is -- Mode -- ---------- - function Mode (File : in File_Type) return File_Mode is + function Mode (File : File_Type) return File_Mode is begin return To_TIO (FIO.Mode (AP (File))); end Mode; @@ -911,7 +969,7 @@ package body Ada.Wide_Text_IO is -- Name -- ---------- - function Name (File : in File_Type) return String is + function Name (File : File_Type) return String is begin return FIO.Name (AP (File)); end Name; @@ -921,8 +979,8 @@ package body Ada.Wide_Text_IO is -------------- procedure New_Line - (File : in File_Type; - Spacing : in Positive_Count := 1) + (File : File_Type; + Spacing : Positive_Count := 1) is begin -- Raise Constraint_Error if out of range value. The reason for this @@ -951,7 +1009,7 @@ package body Ada.Wide_Text_IO is File.Col := 1; end New_Line; - procedure New_Line (Spacing : in Positive_Count := 1) is + procedure New_Line (Spacing : Positive_Count := 1) is begin New_Line (Current_Out, Spacing); end New_Line; @@ -960,7 +1018,7 @@ package body Ada.Wide_Text_IO is -- New_Page -- -------------- - procedure New_Page (File : in File_Type) is + procedure New_Page (File : File_Type) is begin FIO.Check_Write_Status (AP (File)); @@ -1009,9 +1067,9 @@ package body Ada.Wide_Text_IO is procedure Open (File : in out File_Type; - Mode : in File_Mode; - Name : in String; - Form : in String := "") + Mode : File_Mode; + Name : String; + Form : String := "") is Dummy_File_Control_Block : Wide_Text_AFCB; pragma Warnings (Off, Dummy_File_Control_Block); @@ -1038,7 +1096,7 @@ package body Ada.Wide_Text_IO is -- to exceed the value of Count'Last, i.e. no check is required for -- overflow raising layout error. - function Page (File : in File_Type) return Positive_Count is + function Page (File : File_Type) return Positive_Count is begin FIO.Check_File_Open (AP (File)); return File.Page; @@ -1053,7 +1111,7 @@ package body Ada.Wide_Text_IO is -- Page_Length -- ----------------- - function Page_Length (File : in File_Type) return Count is + function Page_Length (File : File_Type) return Count is begin FIO.Check_Write_Status (AP (File)); return File.Page_Length; @@ -1069,25 +1127,30 @@ package body Ada.Wide_Text_IO is --------- procedure Put - (File : in File_Type; - Item : in Wide_Character) + (File : File_Type; + Item : Wide_Character) is procedure Out_Char (C : Character); -- Procedure to output one character of a wide character sequence + procedure WC_Out is new Wide_Char_To_Char_Sequence (Out_Char); + -------------- + -- Out_Char -- + -------------- + procedure Out_Char (C : Character) is begin Putc (Character'Pos (C), File); end Out_Char; - procedure WC_Out is new Wide_Char_To_Char_Sequence (Out_Char); + -- Start of processing for Put begin WC_Out (Item, File.WC_Method); File.Col := File.Col + 1; end Put; - procedure Put (Item : in Wide_Character) is + procedure Put (Item : Wide_Character) is begin Put (Current_Out, Item); end Put; @@ -1097,8 +1160,8 @@ package body Ada.Wide_Text_IO is --------- procedure Put - (File : in File_Type; - Item : in Wide_String) + (File : File_Type; + Item : Wide_String) is begin for J in Item'Range loop @@ -1106,7 +1169,7 @@ package body Ada.Wide_Text_IO is end loop; end Put; - procedure Put (Item : in Wide_String) is + procedure Put (Item : Wide_String) is begin Put (Current_Out, Item); end Put; @@ -1116,15 +1179,15 @@ package body Ada.Wide_Text_IO is -------------- procedure Put_Line - (File : in File_Type; - Item : in Wide_String) + (File : File_Type; + Item : Wide_String) is begin Put (File, Item); New_Line (File); end Put_Line; - procedure Put_Line (Item : in Wide_String) is + procedure Put_Line (Item : Wide_String) is begin Put (Current_Out, Item); New_Line (Current_Out); @@ -1231,7 +1294,7 @@ package body Ada.Wide_Text_IO is procedure Reset (File : in out File_Type; - Mode : in File_Mode) + Mode : File_Mode) is begin -- Don't allow change of mode for current file (RM A.10.2(5)) @@ -1273,8 +1336,8 @@ package body Ada.Wide_Text_IO is ------------- procedure Set_Col - (File : in File_Type; - To : in Positive_Count) + (File : File_Type; + To : Positive_Count) is ch : int; @@ -1333,7 +1396,7 @@ package body Ada.Wide_Text_IO is end if; end Set_Col; - procedure Set_Col (To : in Positive_Count) is + procedure Set_Col (To : Positive_Count) is begin Set_Col (Current_Out, To); end Set_Col; @@ -1342,7 +1405,7 @@ package body Ada.Wide_Text_IO is -- Set_Error -- --------------- - procedure Set_Error (File : in File_Type) is + procedure Set_Error (File : File_Type) is begin FIO.Check_Write_Status (AP (File)); Current_Err := File; @@ -1352,7 +1415,7 @@ package body Ada.Wide_Text_IO is -- Set_Input -- --------------- - procedure Set_Input (File : in File_Type) is + procedure Set_Input (File : File_Type) is begin FIO.Check_Read_Status (AP (File)); Current_In := File; @@ -1363,8 +1426,8 @@ package body Ada.Wide_Text_IO is -------------- procedure Set_Line - (File : in File_Type; - To : in Positive_Count) + (File : File_Type; + To : Positive_Count) is begin -- Raise Constraint_Error if out of range value. The reason for this @@ -1401,7 +1464,7 @@ package body Ada.Wide_Text_IO is end if; end Set_Line; - procedure Set_Line (To : in Positive_Count) is + procedure Set_Line (To : Positive_Count) is begin Set_Line (Current_Out, To); end Set_Line; @@ -1410,7 +1473,7 @@ package body Ada.Wide_Text_IO is -- Set_Line_Length -- --------------------- - procedure Set_Line_Length (File : in File_Type; To : in Count) is + procedure Set_Line_Length (File : File_Type; To : Count) is begin -- Raise Constraint_Error if out of range value. The reason for this -- explicit test is that we don't want junk values around, even if @@ -1424,7 +1487,7 @@ package body Ada.Wide_Text_IO is File.Line_Length := To; end Set_Line_Length; - procedure Set_Line_Length (To : in Count) is + procedure Set_Line_Length (To : Count) is begin Set_Line_Length (Current_Out, To); end Set_Line_Length; @@ -1433,7 +1496,7 @@ package body Ada.Wide_Text_IO is -- Set_Output -- ---------------- - procedure Set_Output (File : in File_Type) is + procedure Set_Output (File : File_Type) is begin FIO.Check_Write_Status (AP (File)); Current_Out := File; @@ -1443,7 +1506,7 @@ package body Ada.Wide_Text_IO is -- Set_Page_Length -- --------------------- - procedure Set_Page_Length (File : in File_Type; To : in Count) is + procedure Set_Page_Length (File : File_Type; To : Count) is begin -- Raise Constraint_Error if out of range value. The reason for this -- explicit test is that we don't want junk values around, even if @@ -1457,7 +1520,7 @@ package body Ada.Wide_Text_IO is File.Page_Length := To; end Set_Page_Length; - procedure Set_Page_Length (To : in Count) is + procedure Set_Page_Length (To : Count) is begin Set_Page_Length (Current_Out, To); end Set_Page_Length; @@ -1497,8 +1560,8 @@ package body Ada.Wide_Text_IO is --------------- procedure Skip_Line - (File : in File_Type; - Spacing : in Positive_Count := 1) + (File : File_Type; + Spacing : Positive_Count := 1) is ch : int; @@ -1580,7 +1643,7 @@ package body Ada.Wide_Text_IO is File.Before_Wide_Character := False; end Skip_Line; - procedure Skip_Line (Spacing : in Positive_Count := 1) is + procedure Skip_Line (Spacing : Positive_Count := 1) is begin Skip_Line (Current_In, Spacing); end Skip_Line; @@ -1589,7 +1652,7 @@ package body Ada.Wide_Text_IO is -- Skip_Page -- --------------- - procedure Skip_Page (File : in File_Type) is + procedure Skip_Page (File : File_Type) is ch : int; begin @@ -1741,7 +1804,7 @@ package body Ada.Wide_Text_IO is procedure Write (File : in out Wide_Text_AFCB; - Item : in Stream_Element_Array) + Item : Stream_Element_Array) is Siz : constant size_t := Item'Length; diff --git a/gcc/ada/a-witeio.ads b/gcc/ada/a-witeio.ads index 662f597..ee9dc86 100644 --- a/gcc/ada/a-witeio.ads +++ b/gcc/ada/a-witeio.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2000 Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2005 Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- @@ -89,34 +89,34 @@ package Ada.Wide_Text_IO is procedure Create (File : in out File_Type; - Mode : in File_Mode := Out_File; - Name : in String := ""; - Form : in String := ""); + Mode : File_Mode := Out_File; + Name : String := ""; + Form : String := ""); procedure Open (File : in out File_Type; - Mode : in File_Mode; - Name : in String; - Form : in String := ""); + Mode : File_Mode; + Name : String; + Form : String := ""); procedure Close (File : in out File_Type); procedure Delete (File : in out File_Type); - procedure Reset (File : in out File_Type; Mode : in File_Mode); + procedure Reset (File : in out File_Type; Mode : File_Mode); procedure Reset (File : in out File_Type); - function Mode (File : in File_Type) return File_Mode; - function Name (File : in File_Type) return String; - function Form (File : in File_Type) return String; + function Mode (File : File_Type) return File_Mode; + function Name (File : File_Type) return String; + function Form (File : File_Type) return String; - function Is_Open (File : in File_Type) return Boolean; + function Is_Open (File : File_Type) return Boolean; ------------------------------------------------------ -- Control of default input, output and error files -- ------------------------------------------------------ - procedure Set_Input (File : in File_Type); - procedure Set_Output (File : in File_Type); - procedure Set_Error (File : in File_Type); + procedure Set_Input (File : File_Type); + procedure Set_Output (File : File_Type); + procedure Set_Error (File : File_Type); function Standard_Input return File_Type; function Standard_Output return File_Type; @@ -143,76 +143,76 @@ package Ada.Wide_Text_IO is -- Note: The paramter file is in out in the RM, but as pointed out -- in <<95-5166.a Tucker Taft 95-6-23>> this is clearly an oversight. - procedure Flush (File : in File_Type); + procedure Flush (File : File_Type); procedure Flush; -------------------------------------------- -- Specification of line and page lengths -- -------------------------------------------- - procedure Set_Line_Length (File : in File_Type; To : in Count); - procedure Set_Line_Length (To : in Count); + procedure Set_Line_Length (File : File_Type; To : Count); + procedure Set_Line_Length (To : Count); - procedure Set_Page_Length (File : in File_Type; To : in Count); - procedure Set_Page_Length (To : in Count); + procedure Set_Page_Length (File : File_Type; To : Count); + procedure Set_Page_Length (To : Count); - function Line_Length (File : in File_Type) return Count; + function Line_Length (File : File_Type) return Count; function Line_Length return Count; - function Page_Length (File : in File_Type) return Count; + function Page_Length (File : File_Type) return Count; function Page_Length return Count; ------------------------------------ -- Column, Line, and Page Control -- ------------------------------------ - procedure New_Line (File : in File_Type; Spacing : in Positive_Count := 1); - procedure New_Line (Spacing : in Positive_Count := 1); + procedure New_Line (File : File_Type; Spacing : Positive_Count := 1); + procedure New_Line (Spacing : Positive_Count := 1); - procedure Skip_Line (File : in File_Type; Spacing : in Positive_Count := 1); - procedure Skip_Line (Spacing : in Positive_Count := 1); + procedure Skip_Line (File : File_Type; Spacing : Positive_Count := 1); + procedure Skip_Line (Spacing : Positive_Count := 1); - function End_Of_Line (File : in File_Type) return Boolean; + function End_Of_Line (File : File_Type) return Boolean; function End_Of_Line return Boolean; - procedure New_Page (File : in File_Type); + procedure New_Page (File : File_Type); procedure New_Page; - procedure Skip_Page (File : in File_Type); + procedure Skip_Page (File : File_Type); procedure Skip_Page; - function End_Of_Page (File : in File_Type) return Boolean; + function End_Of_Page (File : File_Type) return Boolean; function End_Of_Page return Boolean; - function End_Of_File (File : in File_Type) return Boolean; + function End_Of_File (File : File_Type) return Boolean; function End_Of_File return Boolean; - procedure Set_Col (File : in File_Type; To : in Positive_Count); - procedure Set_Col (To : in Positive_Count); + procedure Set_Col (File : File_Type; To : Positive_Count); + procedure Set_Col (To : Positive_Count); - procedure Set_Line (File : in File_Type; To : in Positive_Count); - procedure Set_Line (To : in Positive_Count); + procedure Set_Line (File : File_Type; To : Positive_Count); + procedure Set_Line (To : Positive_Count); - function Col (File : in File_Type) return Positive_Count; + function Col (File : File_Type) return Positive_Count; function Col return Positive_Count; - function Line (File : in File_Type) return Positive_Count; + function Line (File : File_Type) return Positive_Count; function Line return Positive_Count; - function Page (File : in File_Type) return Positive_Count; + function Page (File : File_Type) return Positive_Count; function Page return Positive_Count; ---------------------------- -- Character Input-Output -- ---------------------------- - procedure Get (File : in File_Type; Item : out Wide_Character); + procedure Get (File : File_Type; Item : out Wide_Character); procedure Get (Item : out Wide_Character); - procedure Put (File : in File_Type; Item : in Wide_Character); - procedure Put (Item : in Wide_Character); + procedure Put (File : File_Type; Item : Wide_Character); + procedure Put (Item : Wide_Character); procedure Look_Ahead - (File : in File_Type; + (File : File_Type; Item : out Wide_Character; End_Of_Line : out Boolean); @@ -221,14 +221,14 @@ package Ada.Wide_Text_IO is End_Of_Line : out Boolean); procedure Get_Immediate - (File : in File_Type; + (File : File_Type; Item : out Wide_Character); procedure Get_Immediate (Item : out Wide_Character); procedure Get_Immediate - (File : in File_Type; + (File : File_Type; Item : out Wide_Character; Available : out Boolean); @@ -240,13 +240,13 @@ package Ada.Wide_Text_IO is -- String Input-Output -- ------------------------- - procedure Get (File : in File_Type; Item : out Wide_String); + procedure Get (File : File_Type; Item : out Wide_String); procedure Get (Item : out Wide_String); - procedure Put (File : in File_Type; Item : in Wide_String); - procedure Put (Item : in Wide_String); + procedure Put (File : File_Type; Item : Wide_String); + procedure Put (Item : Wide_String); procedure Get_Line - (File : in File_Type; + (File : File_Type; Item : out Wide_String; Last : out Natural); @@ -254,12 +254,18 @@ package Ada.Wide_Text_IO is (Item : out Wide_String; Last : out Natural); + function Get_Line (File : File_Type) return Wide_String; + pragma Ada_05 (Get_Line); + + function Get_Line return Wide_String; + pragma Ada_05 (Get_Line); + procedure Put_Line - (File : in File_Type; - Item : in Wide_String); + (File : File_Type; + Item : Wide_String); procedure Put_Line - (Item : in Wide_String); + (Item : Wide_String); --------------------------------------- -- Generic packages for Input-Output -- @@ -398,7 +404,7 @@ private procedure Write (File : in out Wide_Text_AFCB; - Item : in Ada.Streams.Stream_Element_Array); + Item : Ada.Streams.Stream_Element_Array); -- Write operation used when Wide_Text_IO file is treated as a Stream ------------------------ @@ -440,7 +446,7 @@ private -- occurs. The result is EOF if the end of file was read. procedure Get_Character - (File : in File_Type; + (File : File_Type; Item : out Character); -- This is essentially a copy of the normal Get routine from Text_IO. It -- obtains a single character from the input file File, and places it in @@ -449,8 +455,7 @@ private function Get_Wide_Char (C : Character; - File : File_Type) - return Wide_Character; + File : File_Type) return Wide_Character; -- This function is shared by Get and Get_Immediate to extract a wide -- character value from the given File. The first byte has already been -- read and is passed in C. The wide character value is returned as the diff --git a/gcc/ada/a-wtcoau.adb b/gcc/ada/a-wtcoau.adb index 12d75dc..aecad00 100644 --- a/gcc/ada/a-wtcoau.adb +++ b/gcc/ada/a-wtcoau.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992,1993,1994,1995,1996 Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2005 Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -45,7 +45,7 @@ package body Ada.Wide_Text_IO.Complex_Aux is --------- procedure Get - (File : in File_Type; + (File : File_Type; ItemR : out Long_Long_Float; ItemI : out Long_Long_Float; Width : Field) @@ -96,7 +96,7 @@ package body Ada.Wide_Text_IO.Complex_Aux is ---------- procedure Gets - (From : in String; + (From : String; ItemR : out Long_Long_Float; ItemI : out Long_Long_Float; Last : out Positive) @@ -163,8 +163,8 @@ package body Ada.Wide_Text_IO.Complex_Aux is (To : out String; ItemR : Long_Long_Float; ItemI : Long_Long_Float; - Aft : in Field; - Exp : in Field) + Aft : Field; + Exp : Field) is I_String : String (1 .. 3 * Field'Last); R_String : String (1 .. 3 * Field'Last); diff --git a/gcc/ada/a-wtcoau.ads b/gcc/ada/a-wtcoau.ads index b6fc121..95aa345 100644 --- a/gcc/ada/a-wtcoau.ads +++ b/gcc/ada/a-wtcoau.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992,1993,1994,1995,1996 Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2005 Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -42,7 +42,7 @@ package Ada.Wide_Text_IO.Complex_Aux is procedure Get - (File : in File_Type; + (File : File_Type; ItemR : out Long_Long_Float; ItemI : out Long_Long_Float; Width : Field); diff --git a/gcc/ada/a-wtcoio.adb b/gcc/ada/a-wtcoio.adb index 0240064..bdac8ee 100644 --- a/gcc/ada/a-wtcoio.adb +++ b/gcc/ada/a-wtcoio.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992,1993,1994,1995,1996 Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2005 Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -32,6 +32,7 @@ ------------------------------------------------------------------------------ with Ada.Wide_Text_IO.Complex_Aux; + with System.WCh_Con; use System.WCh_Con; with System.WCh_WtS; use System.WCh_WtS; @@ -44,9 +45,6 @@ package body Ada.Wide_Text_IO.Complex_IO is subtype LLF is Long_Long_Float; -- Type used for calls to routines in Aux --- subtype TFT is Ada.Wide_Text_IO.File_Type; - -- File type required for calls to routines in Aux - function TFT is new Ada.Unchecked_Conversion (File_Type, Ada.Wide_Text_IO.File_Type); -- This unchecked conversion is to get around a visibility bug in @@ -58,12 +56,12 @@ package body Ada.Wide_Text_IO.Complex_IO is --------- procedure Get - (File : in File_Type; + (File : File_Type; Item : out Complex; - Width : in Field := 0) + Width : Field := 0) is - Real_Item : Real'Base; - Imag_Item : Real'Base; + Real_Item : Real'Base; + Imag_Item : Real'Base; begin Aux.Get (TFT (File), LLF (Real_Item), LLF (Imag_Item), Width); @@ -79,7 +77,7 @@ package body Ada.Wide_Text_IO.Complex_IO is procedure Get (Item : out Complex; - Width : in Field := 0) + Width : Field := 0) is begin Get (Current_Input, Item, Width); @@ -90,7 +88,7 @@ package body Ada.Wide_Text_IO.Complex_IO is --------- procedure Get - (From : in Wide_String; + (From : Wide_String; Item : out Complex; Last : out Positive) is @@ -116,11 +114,11 @@ package body Ada.Wide_Text_IO.Complex_IO is --------- procedure Put - (File : in File_Type; - Item : in Complex; - Fore : in Field := Default_Fore; - Aft : in Field := Default_Aft; - Exp : in Field := Default_Exp) + (File : File_Type; + Item : Complex; + Fore : Field := Default_Fore; + Aft : Field := Default_Aft; + Exp : Field := Default_Exp) is begin Aux.Put (TFT (File), LLF (Re (Item)), LLF (Im (Item)), Fore, Aft, Exp); @@ -131,10 +129,10 @@ package body Ada.Wide_Text_IO.Complex_IO is --------- procedure Put - (Item : in Complex; - Fore : in Field := Default_Fore; - Aft : in Field := Default_Aft; - Exp : in Field := Default_Exp) + (Item : Complex; + Fore : Field := Default_Fore; + Aft : Field := Default_Aft; + Exp : Field := Default_Exp) is begin Put (Current_Output, Item, Fore, Aft, Exp); @@ -146,9 +144,9 @@ package body Ada.Wide_Text_IO.Complex_IO is procedure Put (To : out Wide_String; - Item : in Complex; - Aft : in Field := Default_Aft; - Exp : in Field := Default_Exp) + Item : Complex; + Aft : Field := Default_Aft; + Exp : Field := Default_Exp) is S : String (To'First .. To'Last); diff --git a/gcc/ada/a-wtcoio.ads b/gcc/ada/a-wtcoio.ads index 96c0a2a..14bf5e7 100644 --- a/gcc/ada/a-wtcoio.ads +++ b/gcc/ada/a-wtcoio.ads @@ -27,36 +27,36 @@ package Ada.Wide_Text_IO.Complex_IO is Default_Exp : Field := 3; procedure Get - (File : in File_Type; + (File : File_Type; Item : out Complex; - Width : in Field := 0); + Width : Field := 0); procedure Get (Item : out Complex; - Width : in Field := 0); + Width : Field := 0); procedure Put - (File : in File_Type; - Item : in Complex; - Fore : in Field := Default_Fore; - Aft : in Field := Default_Aft; - Exp : in Field := Default_Exp); + (File : File_Type; + Item : Complex; + Fore : Field := Default_Fore; + Aft : Field := Default_Aft; + Exp : Field := Default_Exp); procedure Put - (Item : in Complex; - Fore : in Field := Default_Fore; - Aft : in Field := Default_Aft; - Exp : in Field := Default_Exp); + (Item : Complex; + Fore : Field := Default_Fore; + Aft : Field := Default_Aft; + Exp : Field := Default_Exp); procedure Get - (From : in Wide_String; + (From : Wide_String; Item : out Complex; Last : out Positive); procedure Put (To : out Wide_String; - Item : in Complex; - Aft : in Field := Default_Aft; - Exp : in Field := Default_Exp); + Item : Complex; + Aft : Field := Default_Aft; + Exp : Field := Default_Exp); end Ada.Wide_Text_IO.Complex_IO; diff --git a/gcc/ada/a-wtedit.adb b/gcc/ada/a-wtedit.adb index ab7e964..2f0f4fb 100644 --- a/gcc/ada/a-wtedit.adb +++ b/gcc/ada/a-wtedit.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2002 Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2005 Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -69,13 +69,12 @@ package body Ada.Wide_Text_IO.Editing is ----------- function Image - (Item : in Num; - Pic : in Picture; - Currency : in Wide_String := Default_Currency; - Fill : in Wide_Character := Default_Fill; - Separator : in Wide_Character := Default_Separator; - Radix_Mark : in Wide_Character := Default_Radix_Mark) - return Wide_String + (Item : Num; + Pic : Picture; + Currency : Wide_String := Default_Currency; + Fill : Wide_Character := Default_Fill; + Separator : Wide_Character := Default_Separator; + Radix_Mark : Wide_Character := Default_Radix_Mark) return Wide_String is begin return Format_Number @@ -88,9 +87,8 @@ package body Ada.Wide_Text_IO.Editing is ------------ function Length - (Pic : in Picture; - Currency : in Wide_String := Default_Currency) - return Natural + (Pic : Picture; + Currency : Wide_String := Default_Currency) return Natural is Picstr : constant String := Pic_String (Pic); V_Adjust : Integer := 0; @@ -122,13 +120,13 @@ package body Ada.Wide_Text_IO.Editing is --------- procedure Put - (File : in Wide_Text_IO.File_Type; - Item : in Num; - Pic : in Picture; - Currency : in Wide_String := Default_Currency; - Fill : in Wide_Character := Default_Fill; - Separator : in Wide_Character := Default_Separator; - Radix_Mark : in Wide_Character := Default_Radix_Mark) + (File : Wide_Text_IO.File_Type; + Item : Num; + Pic : Picture; + Currency : Wide_String := Default_Currency; + Fill : Wide_Character := Default_Fill; + Separator : Wide_Character := Default_Separator; + Radix_Mark : Wide_Character := Default_Radix_Mark) is begin Wide_Text_IO.Put (File, Image (Item, Pic, @@ -136,12 +134,12 @@ package body Ada.Wide_Text_IO.Editing is end Put; procedure Put - (Item : in Num; - Pic : in Picture; - Currency : in Wide_String := Default_Currency; - Fill : in Wide_Character := Default_Fill; - Separator : in Wide_Character := Default_Separator; - Radix_Mark : in Wide_Character := Default_Radix_Mark) + (Item : Num; + Pic : Picture; + Currency : Wide_String := Default_Currency; + Fill : Wide_Character := Default_Fill; + Separator : Wide_Character := Default_Separator; + Radix_Mark : Wide_Character := Default_Radix_Mark) is begin Wide_Text_IO.Put (Image (Item, Pic, @@ -150,12 +148,12 @@ package body Ada.Wide_Text_IO.Editing is procedure Put (To : out Wide_String; - Item : in Num; - Pic : in Picture; - Currency : in Wide_String := Default_Currency; - Fill : in Wide_Character := Default_Fill; - Separator : in Wide_Character := Default_Separator; - Radix_Mark : in Wide_Character := Default_Radix_Mark) + Item : Num; + Pic : Picture; + Currency : Wide_String := Default_Currency; + Fill : Wide_Character := Default_Fill; + Separator : Wide_Character := Default_Separator; + Radix_Mark : Wide_Character := Default_Radix_Mark) is Result : constant Wide_String := Image (Item, Pic, Currency, Fill, Separator, Radix_Mark); @@ -175,15 +173,13 @@ package body Ada.Wide_Text_IO.Editing is function Valid (Item : Num; - Pic : in Picture; - Currency : in Wide_String := Default_Currency) - return Boolean + Pic : Picture; + Currency : Wide_String := Default_Currency) return Boolean is begin declare Temp : constant Wide_String := Image (Item, Pic, Currency); pragma Warnings (Off, Temp); - begin return True; end; @@ -192,7 +188,6 @@ package body Ada.Wide_Text_IO.Editing is when Layout_Error => return False; end Valid; - end Decimal_Output; ------------ @@ -220,11 +215,11 @@ package body Ada.Wide_Text_IO.Editing is when '(' => - -- We now need to scan out the count after a left paren. - -- In the non-wide version we used Integer_IO.Get, but - -- that is not convenient here, since we don't want to - -- drag in normal Text_IO just for this purpose. So we - -- do the scan ourselves, with the normal validity checks. + -- We now need to scan out the count after a left paren. In + -- the non-wide version we used Integer_IO.Get, but that is + -- not convenient here, since we don't want to drag in normal + -- Text_IO just for this purpose. So we do the scan ourselves, + -- with the normal validity checks. Last := Picture_Index + 1; Count := 0; @@ -262,7 +257,7 @@ package body Ada.Wide_Text_IO.Editing is end loop; -- In what follows note that one copy of the repeated - -- character has already been made, so a count of one is a + -- character has already been made, so a count of one is -- no-op, and a count of zero erases a character. for J in 2 .. Count loop @@ -293,7 +288,6 @@ package body Ada.Wide_Text_IO.Editing is exception when others => raise Picture_Error; - end Expand; ------------------- @@ -306,8 +300,7 @@ package body Ada.Wide_Text_IO.Editing is Currency_Symbol : Wide_String; Fill_Character : Wide_Character; Separator_Character : Wide_Character; - Radix_Point : Wide_Character) - return Wide_String + Radix_Point : Wide_Character) return Wide_String is Attrs : Number_Attributes := Parse_Number_String (Number); Position : Integer; @@ -368,8 +361,8 @@ package body Ada.Wide_Text_IO.Editing is end loop; -- The rounding may add a digit in front. Either the - -- leading blank or the sign (already captured) can - -- be overwritten. + -- leading blank or the sign (already captured) can be + -- overwritten. if R_Pos = 1 then Rounded (R_Pos) := '1'; @@ -421,7 +414,7 @@ package body Ada.Wide_Text_IO.Editing is for J in reverse Last .. Answer'Last loop exit when J = Pic.Radix_Position; - -- Do this test First, Separator_Character can equal Pic.Floater. + -- Do this test First, Separator_Character can equal Pic.Floater if Answer (J) = Pic.Floater then exit; @@ -547,7 +540,7 @@ package body Ada.Wide_Text_IO.Editing is or else Pic.Floater = '-' then - for J in Pic.End_Float .. Position loop -- May be null range. + for J in Pic.End_Float .. Position loop -- May be null range if Answer (J) = '9' then Answer (J) := '0'; @@ -573,12 +566,12 @@ package body Ada.Wide_Text_IO.Editing is elsif Pic.Floater = '$' then - for J in Pic.End_Float .. Position loop -- May be null range. + for J in Pic.End_Float .. Position loop -- May be null range if Answer (J) = '9' then Answer (J) := '0'; elsif Answer (J) = '_' then - Answer (J) := ' '; -- no separator before leftmost digit. + Answer (J) := ' '; -- no separator before leftmost digit elsif Answer (J) = 'b' then Answer (J) := ' '; @@ -598,7 +591,7 @@ package body Ada.Wide_Text_IO.Editing is elsif Pic.Floater = '*' then - for J in Pic.End_Float .. Position loop -- May be null range. + for J in Pic.End_Float .. Position loop -- May be null range if Answer (J) = '9' then Answer (J) := '0'; @@ -1013,7 +1006,6 @@ package body Ada.Wide_Text_IO.Editing is return Answer; end if; - end Format_Number; ------------------------- @@ -1094,7 +1086,6 @@ package body Ada.Wide_Text_IO.Editing is -- No significant (intger) digits needs a null range. return Answer; - end Parse_Number_String; ---------------- @@ -2713,9 +2704,8 @@ package body Ada.Wide_Text_IO.Editing is ---------------- function To_Picture - (Pic_String : in String; - Blank_When_Zero : in Boolean := False) - return Picture + (Pic_String : String; + Blank_When_Zero : Boolean := False) return Picture is Result : Picture; @@ -2751,9 +2741,8 @@ package body Ada.Wide_Text_IO.Editing is ----------- function Valid - (Pic_String : in String; - Blank_When_Zero : in Boolean := False) - return Boolean + (Pic_String : String; + Blank_When_Zero : Boolean := False) return Boolean is begin declare @@ -2777,7 +2766,6 @@ package body Ada.Wide_Text_IO.Editing is exception when others => return False; - end Valid; end Ada.Wide_Text_IO.Editing; diff --git a/gcc/ada/a-wtedit.ads b/gcc/ada/a-wtedit.ads index 06e30a7..6605d59 100644 --- a/gcc/ada/a-wtedit.ads +++ b/gcc/ada/a-wtedit.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-1997 Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2005 Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- @@ -40,14 +40,12 @@ package Ada.Wide_Text_IO.Editing is type Picture is private; function Valid - (Pic_String : in String; - Blank_When_Zero : in Boolean := False) - return Boolean; + (Pic_String : String; + Blank_When_Zero : Boolean := False) return Boolean; function To_Picture - (Pic_String : in String; - Blank_When_Zero : in Boolean := False) - return Picture; + (Pic_String : String; + Blank_When_Zero : Boolean := False) return Picture; function Pic_String (Pic : in Picture) return String; function Blank_When_Zero (Pic : in Picture) return Boolean; @@ -63,62 +61,59 @@ package Ada.Wide_Text_IO.Editing is generic type Num is delta <> digits <>; - Default_Currency : in Wide_String := + Default_Currency : Wide_String := Wide_Text_IO.Editing.Default_Currency; - Default_Fill : in Wide_Character := + Default_Fill : Wide_Character := Wide_Text_IO.Editing.Default_Fill; - Default_Separator : in Wide_Character := + Default_Separator : Wide_Character := Wide_Text_IO.Editing.Default_Separator; - Default_Radix_Mark : in Wide_Character := + Default_Radix_Mark : Wide_Character := Wide_Text_IO.Editing.Default_Radix_Mark; package Decimal_Output is function Length - (Pic : in Picture; - Currency : in Wide_String := Default_Currency) - return Natural; + (Pic : Picture; + Currency : Wide_String := Default_Currency) return Natural; function Valid (Item : Num; - Pic : in Picture; - Currency : in Wide_String := Default_Currency) - return Boolean; + Pic : Picture; + Currency : Wide_String := Default_Currency) return Boolean; function Image (Item : Num; - Pic : in Picture; - Currency : in Wide_String := Default_Currency; - Fill : in Wide_Character := Default_Fill; - Separator : in Wide_Character := Default_Separator; - Radix_Mark : in Wide_Character := Default_Radix_Mark) - return Wide_String; + Pic : Picture; + Currency : Wide_String := Default_Currency; + Fill : Wide_Character := Default_Fill; + Separator : Wide_Character := Default_Separator; + Radix_Mark : Wide_Character := Default_Radix_Mark) return Wide_String; procedure Put - (File : in File_Type; + (File : File_Type; Item : Num; - Pic : in Picture; - Currency : in Wide_String := Default_Currency; - Fill : in Wide_Character := Default_Fill; - Separator : in Wide_Character := Default_Separator; - Radix_Mark : in Wide_Character := Default_Radix_Mark); + Pic : Picture; + Currency : Wide_String := Default_Currency; + Fill : Wide_Character := Default_Fill; + Separator : Wide_Character := Default_Separator; + Radix_Mark : Wide_Character := Default_Radix_Mark); procedure Put (Item : Num; - Pic : in Picture; - Currency : in Wide_String := Default_Currency; - Fill : in Wide_Character := Default_Fill; - Separator : in Wide_Character := Default_Separator; - Radix_Mark : in Wide_Character := Default_Radix_Mark); + Pic : Picture; + Currency : Wide_String := Default_Currency; + Fill : Wide_Character := Default_Fill; + Separator : Wide_Character := Default_Separator; + Radix_Mark : Wide_Character := Default_Radix_Mark); procedure Put (To : out Wide_String; Item : Num; - Pic : in Picture; - Currency : in Wide_String := Default_Currency; - Fill : in Wide_Character := Default_Fill; - Separator : in Wide_Character := Default_Separator; - Radix_Mark : in Wide_Character := Default_Radix_Mark); + Pic : Picture; + Currency : Wide_String := Default_Currency; + Fill : Wide_Character := Default_Fill; + Separator : Wide_Character := Default_Separator; + Radix_Mark : Wide_Character := Default_Radix_Mark); end Decimal_Output; @@ -196,8 +191,7 @@ private Currency_Symbol : Wide_String; Fill_Character : Wide_Character; Separator_Character : Wide_Character; - Radix_Point : Wide_Character) - return Wide_String; + Radix_Point : Wide_Character) return Wide_String; -- Formats number according to Pic function Expand (Picture : in String) return String; diff --git a/gcc/ada/a-wttest.adb b/gcc/ada/a-wttest.adb index af0db6c..8e925f1 100644 --- a/gcc/ada/a-wttest.adb +++ b/gcc/ada/a-wttest.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992,1993,1994,1995,1996 Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2005 Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -39,7 +39,7 @@ package body Ada.Wide_Text_IO.Text_Streams is -- Stream -- ------------ - function Stream (File : in File_Type) return Stream_Access is + function Stream (File : File_Type) return Stream_Access is begin System.File_IO.Check_File_Open (FCB.AFCB_Ptr (File)); return Stream_Access (File); diff --git a/gcc/ada/a-wttest.ads b/gcc/ada/a-wttest.ads index be43e0a..c209e0e 100644 --- a/gcc/ada/a-wttest.ads +++ b/gcc/ada/a-wttest.ads @@ -19,6 +19,6 @@ package Ada.Wide_Text_IO.Text_Streams is type Stream_Access is access all Streams.Root_Stream_Type'Class; - function Stream (File : in File_Type) return Stream_Access; + function Stream (File : File_Type) return Stream_Access; end Ada.Wide_Text_IO.Text_Streams; -- cgit v1.1