1------------------------------------------------------------------------------
2--                                                                          --
3--                         GNAT RUNTIME COMPONENTS                          --
4--                                                                          --
5--                  ADA.STRINGS.WIDE_UNBOUNDED.WIDE_TEXT_IO                 --
6--                                                                          --
7--                                 B o d y                                  --
8--                                                                          --
9--          Copyright (C) 1997-1999 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------------------------------------------------------------------------------
33
34with Ada.Wide_Text_IO; use Ada.Wide_Text_IO;
35
36package body Ada.Strings.Wide_Unbounded.Wide_Text_IO is
37
38   --------------
39   -- Get_Line --
40   --------------
41
42   function Get_Line return Unbounded_Wide_String is
43      Buffer : Wide_String (1 .. 1000);
44      Last   : Natural;
45      Str1   : Wide_String_Access;
46      Str2   : Wide_String_Access;
47
48   begin
49      Get_Line (Buffer, Last);
50      Str1 := new Wide_String'(Buffer (1 .. Last));
51
52      while Last = Buffer'Last loop
53         Get_Line (Buffer, Last);
54         Str2 := new Wide_String'(Str1.all & Buffer (1 .. Last));
55         Free (Str1);
56         Str1 := Str2;
57      end loop;
58
59      return To_Unbounded_Wide_String (Str1.all);
60   end Get_Line;
61
62   function Get_Line
63     (File : Ada.Wide_Text_IO.File_Type)
64      return Unbounded_Wide_String
65   is
66      Buffer : Wide_String (1 .. 1000);
67      Last   : Natural;
68      Str1   : Wide_String_Access;
69      Str2   : Wide_String_Access;
70
71   begin
72      Get_Line (File, Buffer, Last);
73      Str1 := new Wide_String'(Buffer (1 .. Last));
74
75      while Last = Buffer'Last loop
76         Get_Line (File, Buffer, Last);
77         Str2 := new Wide_String'(Str1.all & Buffer (1 .. Last));
78         Free (Str1);
79         Str1 := Str2;
80      end loop;
81
82      return To_Unbounded_Wide_String (Str1.all);
83   end Get_Line;
84
85   ---------
86   -- Put --
87   ---------
88
89   procedure Put (U : Unbounded_Wide_String) is
90   begin
91      Put (To_Wide_String (U));
92   end Put;
93
94   procedure Put (File : File_Type; U : Unbounded_Wide_String) is
95   begin
96      Put (File, To_Wide_String (U));
97   end Put;
98
99   --------------
100   -- Put_Line --
101   --------------
102
103   procedure Put_Line (U : Unbounded_Wide_String) is
104   begin
105      Put_Line (To_Wide_String (U));
106   end Put_Line;
107
108   procedure Put_Line (File : File_Type; U : Unbounded_Wide_String) is
109   begin
110      Put_Line (File, To_Wide_String (U));
111   end Put_Line;
112
113end Ada.Strings.Wide_Unbounded.Wide_Text_IO;
114