PR c/20043
[official-gcc.git] / gcc / ada / a-szuzti.adb
blobe9af2eb1a88523ad4dde6c27057bbb0942bc2340
1 ------------------------------------------------------------------------------
2 -- --
3 -- GNAT RUNTIME COMPONENTS --
4 -- --
5 -- ADA.STRINGS.WIDE_WIDE_UNBOUNDED.WIDE_WIDE_TEXT_IO --
6 -- --
7 -- B o d y --
8 -- --
9 -- Copyright (C) 1997-2005 Free Software Foundation, Inc. --
10 -- --
11 -- GNAT is free software; you can redistribute it and/or modify it under --
12 -- terms of the GNU General Public License as published by the Free Soft- --
13 -- ware Foundation; either version 2, or (at your option) any later ver- --
14 -- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
15 -- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
16 -- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License --
17 -- for more details. You should have received a copy of the GNU General --
18 -- Public License distributed with GNAT; see file COPYING. If not, write --
19 -- to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, --
20 -- MA 02111-1307, USA. --
21 -- --
22 -- As a special exception, if other files instantiate generics from this --
23 -- unit, or you link this unit with other files to produce an executable, --
24 -- this unit does not by itself cause the resulting executable to be --
25 -- covered by the GNU General Public License. This exception does not --
26 -- however invalidate any other reasons why the executable file might be --
27 -- covered by the GNU Public License. --
28 -- --
29 -- GNAT was originally developed by the GNAT team at New York University. --
30 -- Extensive contributions were provided by Ada Core Technologies Inc. --
31 -- --
32 ------------------------------------------------------------------------------
34 with Ada.Strings.Wide_Wide_Unbounded.Aux;
35 use Ada.Strings.Wide_Wide_Unbounded.Aux;
36 with Ada.Wide_Wide_Text_IO;
37 use Ada.Wide_Wide_Text_IO;
39 package body Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO is
41 --------------
42 -- Get_Line --
43 --------------
45 function Get_Line return Unbounded_Wide_Wide_String is
46 Buffer : Wide_Wide_String (1 .. 1000);
47 Last : Natural;
48 Str1 : Wide_Wide_String_Access;
49 Str2 : Wide_Wide_String_Access;
50 Result : Unbounded_Wide_Wide_String;
52 begin
53 Get_Line (Buffer, Last);
54 Str1 := new Wide_Wide_String'(Buffer (1 .. Last));
55 while Last = Buffer'Last loop
56 Get_Line (Buffer, Last);
57 Str2 := new Wide_Wide_String'(Str1.all & Buffer (1 .. Last));
58 Free (Str1);
59 Str1 := Str2;
60 end loop;
62 Set_Wide_Wide_String (Result, Str1);
63 return Result;
64 end Get_Line;
66 function Get_Line
67 (File : Ada.Wide_Wide_Text_IO.File_Type)
68 return Unbounded_Wide_Wide_String
70 Buffer : Wide_Wide_String (1 .. 1000);
71 Last : Natural;
72 Str1 : Wide_Wide_String_Access;
73 Str2 : Wide_Wide_String_Access;
74 Result : Unbounded_Wide_Wide_String;
76 begin
77 Get_Line (File, Buffer, Last);
78 Str1 := new Wide_Wide_String'(Buffer (1 .. Last));
80 while Last = Buffer'Last loop
81 Get_Line (File, Buffer, Last);
82 Str2 := new Wide_Wide_String'(Str1.all & Buffer (1 .. Last));
83 Free (Str1);
84 Str1 := Str2;
85 end loop;
87 Set_Wide_Wide_String (Result, Str1);
88 return Result;
89 end Get_Line;
91 procedure Get_Line (Item : out Unbounded_Wide_Wide_String) is
92 Buffer : Wide_Wide_String (1 .. 1000);
93 Last : Natural;
94 Str1 : Wide_Wide_String_Access;
95 Str2 : Wide_Wide_String_Access;
97 begin
98 Get_Line (Buffer, Last);
99 Str1 := new Wide_Wide_String'(Buffer (1 .. Last));
100 while Last = Buffer'Last loop
101 Get_Line (Buffer, Last);
102 Str2 := new Wide_Wide_String'(Str1.all & Buffer (1 .. Last));
103 Free (Str1);
104 Str1 := Str2;
105 end loop;
107 Set_Wide_Wide_String (Item, Str1);
108 end Get_Line;
110 procedure Get_Line
111 (File : Ada.Wide_Wide_Text_IO.File_Type;
112 Item : out Unbounded_Wide_Wide_String)
114 Buffer : Wide_Wide_String (1 .. 1000);
115 Last : Natural;
116 Str1 : Wide_Wide_String_Access;
117 Str2 : Wide_Wide_String_Access;
119 begin
120 Get_Line (File, Buffer, Last);
121 Str1 := new Wide_Wide_String'(Buffer (1 .. Last));
122 while Last = Buffer'Last loop
123 Get_Line (Buffer, Last);
124 Str2 := new Wide_Wide_String'(Str1.all & Buffer (1 .. Last));
125 Free (Str1);
126 Str1 := Str2;
127 end loop;
129 Set_Wide_Wide_String (Item, Str1);
130 end Get_Line;
132 ---------
133 -- Put --
134 ---------
136 procedure Put (U : Unbounded_Wide_Wide_String) is
137 begin
138 Put (Get_Wide_Wide_String (U).all);
139 end Put;
141 procedure Put (File : File_Type; U : Unbounded_Wide_Wide_String) is
142 begin
143 Put (File, Get_Wide_Wide_String (U).all);
144 end Put;
146 --------------
147 -- Put_Line --
148 --------------
150 procedure Put_Line (U : Unbounded_Wide_Wide_String) is
151 begin
152 Put_Line (Get_Wide_Wide_String (U).all);
153 end Put_Line;
155 procedure Put_Line (File : File_Type; U : Unbounded_Wide_Wide_String) is
156 begin
157 Put_Line (File, Get_Wide_Wide_String (U).all);
158 end Put_Line;
160 end Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO;