!standard A.10.11(1) 05-05-05 AI95-00428/02

!class amendment 05-04-10

!status Amendment 200Y 05-05-05

!status ARG Approved 10-0-1 05-04-16

!status work item 05-04-10

!status received 05-04-10

!priority High

!difficulty Easy

!subject Input-output for bounded strings

!class amendment 05-04-10

!status Amendment 200Y 05-05-05

!status ARG Approved 10-0-1 05-04-16

!status work item 05-04-10

!status received 05-04-10

!priority High

!difficulty Easy

!subject Input-output for bounded strings

!summary

A package for the input and output of bounded strings is added as a generic
child of Text_IO.

!problem

AI-301 adds a package for the input-output of unbounded strings. It claims
that it is hard for bounded strings but it was probably the case that the
ARG was too idle to do it. Probably because it was too hot in Vienna.

The asymmetry of providing the facility for unbounded strings but not
for bounded strings is offensive.

!proposal

!wording

Add a new clause:

A.10.12 Input-output for Bounded Strings

The package Text_IO.Bounded_IO provides input-output in human-readable
form for Bounded_Strings.

Static Semantics

The generic library package Text_IO.Bounded_IO has the following
declaration:

For an item of type Bounded_String exported from a package Bounded
being an instantiation of Strings.Bounded.Generic_Bounded_Length, the
following subprograms are provided:

procedure Put

(File : in File_Type;

Item : **in** Bounded.Bounded_String);

Equivalent to Text_IO.Put (File, Bounded.To_String(Item));

procedure Put

(Item : in Bounded.Bounded_String);

Equivalent to Text_IO.Put (Bounded.To_String(Item));

procedure Put_Line

(File : in Text_IO.File_Type;

Item : **in** Bounded.Bounded_String);

Equivalent to Text_IO.Put_Line (File, Bounded.To_String(Item));

procedure Put_Line

(Item : in Bounded.Bounded_String);

Equivalent to Text_IO.Put_Line (Bounded.To_String(Item));

function Get_Line

(File : in File_Type)

return Bounded.Bounded_String;

Returns Bounded.To_Bounded_String(Text_IO.Get_Line(File));

function Get_Line

return Bounded.Bounded_String;

Returns Bounded.To_Bounded_String(Text_IO.Get_Line);

procedure Get_Line

(File : in File_Type; Item : out Bounded.Bounded_String);

Equivalent to Item := Get_Line (File);

procedure Get_Line

(Item : out Bounded.Bounded_String);

Equivalent to Item := Get_Line;

Add after A.11(3):

The specification of package Wide_Text_IO.Wide_Bounded_IO is the same as
that for Text_IO.Bounded_IO, except that any occurrence of Bounded_String
is replaced by Wide_Bounded_String, and any occurrence of package Bounded
is replaced by Wide_Bounded. The specification of package
Wide_Wide_Text_IO.Wide_Wide_Bounded_IO is the same as
that for Text_IO.Bounded_IO, except that any occurrence of Bounded_String
is replaced by Wide_Wide_Bounded_String, and any occurrence of package Bounded
is replaced by Wide_Wide_Bounded.

Amend the AARM notes in A.11 accordingly.

!discussion

This follows the pattern of Unbounded_IO with obvious changes because of
the genericity of bounded strings.

!example

!corrigendum A.10.11(01)

Insert new clause:

The package Text_IO.Bounded_IO provides input-output in
human-readable form for Bounded_Strings.

The generic library package Text_IO.Bounded_IO has the following declaration:

For an item of type Bounded_String, the following subprograms are provided:

Equivalent to Text_IO.Put (File, Bounded.To_String(Item));

Equivalent to Text_IO.Put (Bounded.To_String(Item));

Equivalent to Text_IO.Put_Line (File, Bounded.To_String(Item));

Equivalent to Text_IO.Put_Line (Bounded.To_String(Item));

Returns Bounded.To_Bounded_String(Text_IO.Get_Line(File));

Returns Bounded.To_Bounded_String(Text_IO.Get_Line);

Equivalent to Item := Get_Line (File);

Equivalent to Item := Get_Line;

!corrigendum A.11(3)

Insert after the paragraph:

Nongeneric equivalents of Wide_Text_IO.Integer_IO and Wide_Text_IO.Float_IO are
provided (as for Text_IO) for each predefined numeric type, with names such as
Ada.Integer_Wide_Text_IO, Ada.Long_Integer_Wide_Text_IO,
Ada.Float_Wide_Text_IO, Ada.Long_Float_Wide_Text_IO.

the new paragraph:

The specification of package Wide_Text_IO.Wide_Bounded_IO is the same as
that for Text_IO.Bounded_IO, except that any occurrence of Bounded_String
is replaced by Wide_Bounded_String, and any occurrence of package Bounded
is replaced by Wide_Bounded.

!ACATS test

!appendix

*************************************************************

Questions? Ask the ACAA Technical Agent