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