stephes_ada_library_3.7.3_08b48307/source/ada_strings_unbounded_text_io.adb

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
--  Abstract :
--
--  See spec.
--
--  Copyright (C) 2002, 2003, 2009 Stephen Leake.  All Rights Reserved.
--
--  This library is free software; you can redistribute it and/or
--  modify it under terms of the GNU General Public License as
--  published by the Free Software Foundation; either version 3, or
--  (at your option) any later version. This library is distributed in
--  the hope that it will be useful, but WITHOUT 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 this program; 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.

with SAL.Text_IO_Utils;
package body Ada_Strings_Unbounded_Text_IO is

   procedure Put
     (File : in Ada.Text_IO.File_Type;
      Item : in Ada.Strings.Unbounded.Unbounded_String)
   is
      use Ada.Text_IO, Ada.Strings.Unbounded;
      Current : Character;
   begin
      Put (File, '"');
      for I in 1 .. Length (Item) loop
         Current := Element (Item, I);
         Put (File, Current);
         if Current = '"' then
            Put (File, Current);
         end if;
      end loop;
      Put (File, '"');
   end Put;

   procedure Put (Item : in Ada.Strings.Unbounded.Unbounded_String) is
   begin
      Put (Ada.Text_IO.Current_Output, Item);
   end Put;

   procedure Put_Item
     (File              : in Ada.Text_IO.File_Type;
      Item              : in Ada.Strings.Unbounded.Unbounded_String;
      Single_Line       : in Boolean                                := True;
      Named_Association : in Boolean                                := False)
   is
      pragma Unreferenced (Named_Association);
      pragma Unreferenced (Single_Line);
   begin
      Put (File, Item);
   end Put_Item;

   procedure Get
     (File : in     Ada.Text_IO.File_Type;
      Item :    out Ada.Strings.Unbounded.Unbounded_String)
   is
      use Ada.Text_IO, Ada.Strings.Unbounded;
      Current     : Character;
      Peek        : Character;
      End_Of_Line : Boolean;
   begin
      Item := Null_Unbounded_String;
      SAL.Text_IO_Utils.Skip_Past (File, '"');
      loop
         Get (File, Current);
         if Current = '"' then
            Look_Ahead (File, Peek, End_Of_Line);
            if End_Of_Line then
               return;
            elsif Peek = '"' then
               Get (File, Current);
            else
               return;
            end if;
         end if;
         Append (Item, Current);
      end loop;
   end Get;

   procedure Get (Item : out Ada.Strings.Unbounded.Unbounded_String) is
   begin
      Get (Ada.Text_IO.Current_Input, Item);
   end Get;

   procedure Get_Item
     (File              : in     Ada.Text_IO.File_Type;
      Item              :    out Ada.Strings.Unbounded.Unbounded_String;
      Single_Line       : in     Boolean                                := True;
      Named_Association : in     Boolean                                := False)
   is
      pragma Unreferenced (Named_Association);
      pragma Unreferenced (Single_Line);
   begin
      Get (File, Item);
   end Get_Item;

end Ada_Strings_Unbounded_Text_IO;