1------------------------------------------------------------------------------
2--                                                                          --
3--                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
4--                                                                          --
5--              S Y S T E M . S T R I N G S . S T R E A M _ O P S           --
6--                                                                          --
7--                                 S p e c                                  --
8--                                                                          --
9--             Copyright (C) 2009, 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 3,  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.                                     --
17--                                                                          --
18-- As a special exception under Section 7 of GPL version 3, you are granted --
19-- additional permissions described in the GCC Runtime Library Exception,   --
20-- version 3.1, as published by the Free Software Foundation.               --
21--                                                                          --
22-- You should have received a copy of the GNU General Public License and    --
23-- a copy of the GCC Runtime Library Exception along with this program;     --
24-- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
25-- <http://www.gnu.org/licenses/>.                                          --
26--                                                                          --
27-- GNAT was originally developed  by the GNAT team at  New York University. --
28-- Extensive contributions were provided by Ada Core Technologies Inc.      --
29--                                                                          --
30------------------------------------------------------------------------------
31
32--  This package provides subprogram implementations of stream attributes for
33--  the following types:
34--     Ada.String
35--     Ada.Wide_String
36--     Ada.Wide_Wide_String
37--
38--  The compiler will generate references to the subprograms in this package
39--  when expanding stream attributes for the above mentioned types. Example:
40--
41--     String'Output (Some_Stream, Some_String);
42--
43--  will be expanded into:
44--
45--     String_Output (Some_Stream, Some_String);
46--       or
47--     String_Output_Blk_IO (Some_Stream, Some_String);
48
49pragma Compiler_Unit;
50
51with Ada.Streams;
52
53package System.Strings.Stream_Ops is
54
55   ------------------------------
56   -- String stream operations --
57   ------------------------------
58
59   function String_Input
60     (Strm : access Ada.Streams.Root_Stream_Type'Class)
61      return String;
62
63   function String_Input_Blk_IO
64     (Strm : access Ada.Streams.Root_Stream_Type'Class)
65      return String;
66
67   procedure String_Output
68     (Strm : access Ada.Streams.Root_Stream_Type'Class;
69      Item : String);
70
71   procedure String_Output_Blk_IO
72     (Strm : access Ada.Streams.Root_Stream_Type'Class;
73      Item : String);
74
75   procedure String_Read
76     (Strm : access Ada.Streams.Root_Stream_Type'Class;
77      Item : out String);
78
79   procedure String_Read_Blk_IO
80     (Strm : access Ada.Streams.Root_Stream_Type'Class;
81      Item : out String);
82
83   procedure String_Write
84     (Strm : access Ada.Streams.Root_Stream_Type'Class;
85      Item : String);
86
87   procedure String_Write_Blk_IO
88     (Strm : access Ada.Streams.Root_Stream_Type'Class;
89      Item : String);
90
91   -----------------------------------
92   -- Wide_String stream operations --
93   -----------------------------------
94
95   function Wide_String_Input
96     (Strm : access Ada.Streams.Root_Stream_Type'Class)
97      return Wide_String;
98
99   function Wide_String_Input_Blk_IO
100     (Strm : access Ada.Streams.Root_Stream_Type'Class)
101      return Wide_String;
102
103   procedure Wide_String_Output
104     (Strm : access Ada.Streams.Root_Stream_Type'Class;
105      Item : Wide_String);
106
107   procedure Wide_String_Output_Blk_IO
108     (Strm : access Ada.Streams.Root_Stream_Type'Class;
109      Item : Wide_String);
110
111   procedure Wide_String_Read
112     (Strm : access Ada.Streams.Root_Stream_Type'Class;
113      Item : out Wide_String);
114
115   procedure Wide_String_Read_Blk_IO
116     (Strm : access Ada.Streams.Root_Stream_Type'Class;
117      Item : out Wide_String);
118
119   procedure Wide_String_Write
120     (Strm : access Ada.Streams.Root_Stream_Type'Class;
121      Item : Wide_String);
122
123   procedure Wide_String_Write_Blk_IO
124     (Strm : access Ada.Streams.Root_Stream_Type'Class;
125      Item : Wide_String);
126
127   ----------------------------------------
128   -- Wide_Wide_String stream operations --
129   ----------------------------------------
130
131   function Wide_Wide_String_Input
132     (Strm : access Ada.Streams.Root_Stream_Type'Class)
133      return Wide_Wide_String;
134
135   function Wide_Wide_String_Input_Blk_IO
136     (Strm : access Ada.Streams.Root_Stream_Type'Class)
137      return Wide_Wide_String;
138
139   procedure Wide_Wide_String_Output
140     (Strm : access Ada.Streams.Root_Stream_Type'Class;
141      Item : Wide_Wide_String);
142
143   procedure Wide_Wide_String_Output_Blk_IO
144     (Strm : access Ada.Streams.Root_Stream_Type'Class;
145      Item : Wide_Wide_String);
146
147   procedure Wide_Wide_String_Read
148     (Strm : access Ada.Streams.Root_Stream_Type'Class;
149      Item : out Wide_Wide_String);
150
151   procedure Wide_Wide_String_Read_Blk_IO
152     (Strm : access Ada.Streams.Root_Stream_Type'Class;
153      Item : out Wide_Wide_String);
154
155   procedure Wide_Wide_String_Write
156     (Strm : access Ada.Streams.Root_Stream_Type'Class;
157      Item : Wide_Wide_String);
158
159   procedure Wide_Wide_String_Write_Blk_IO
160     (Strm : access Ada.Streams.Root_Stream_Type'Class;
161      Item : Wide_Wide_String);
162
163end System.Strings.Stream_Ops;
164