annotate gcc/ada/libgnat/g-io.adb @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children 1830386684a0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 ------------------------------------------------------------------------------
kono
parents:
diff changeset
2 -- --
kono
parents:
diff changeset
3 -- GNAT RUN-TIME COMPONENTS --
kono
parents:
diff changeset
4 -- --
kono
parents:
diff changeset
5 -- G N A T . I O --
kono
parents:
diff changeset
6 -- --
kono
parents:
diff changeset
7 -- B o d y --
kono
parents:
diff changeset
8 -- --
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
9 -- Copyright (C) 1995-2018, AdaCore --
111
kono
parents:
diff changeset
10 -- --
kono
parents:
diff changeset
11 -- GNAT is free software; you can redistribute it and/or modify it under --
kono
parents:
diff changeset
12 -- terms of the GNU General Public License as published by the Free Soft- --
kono
parents:
diff changeset
13 -- ware Foundation; either version 3, or (at your option) any later ver- --
kono
parents:
diff changeset
14 -- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
kono
parents:
diff changeset
15 -- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
kono
parents:
diff changeset
16 -- or FITNESS FOR A PARTICULAR PURPOSE. --
kono
parents:
diff changeset
17 -- --
kono
parents:
diff changeset
18 -- As a special exception under Section 7 of GPL version 3, you are granted --
kono
parents:
diff changeset
19 -- additional permissions described in the GCC Runtime Library Exception, --
kono
parents:
diff changeset
20 -- version 3.1, as published by the Free Software Foundation. --
kono
parents:
diff changeset
21 -- --
kono
parents:
diff changeset
22 -- You should have received a copy of the GNU General Public License and --
kono
parents:
diff changeset
23 -- a copy of the GCC Runtime Library Exception along with this program; --
kono
parents:
diff changeset
24 -- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --
kono
parents:
diff changeset
25 -- <http://www.gnu.org/licenses/>. --
kono
parents:
diff changeset
26 -- --
kono
parents:
diff changeset
27 -- GNAT was originally developed by the GNAT team at New York University. --
kono
parents:
diff changeset
28 -- Extensive contributions were provided by Ada Core Technologies Inc. --
kono
parents:
diff changeset
29 -- --
kono
parents:
diff changeset
30 ------------------------------------------------------------------------------
kono
parents:
diff changeset
31
kono
parents:
diff changeset
32 package body GNAT.IO is
kono
parents:
diff changeset
33
kono
parents:
diff changeset
34 Current_Out : File_Type := Stdout;
kono
parents:
diff changeset
35 pragma Atomic (Current_Out);
kono
parents:
diff changeset
36 -- Current output file (modified by Set_Output)
kono
parents:
diff changeset
37
kono
parents:
diff changeset
38 ---------
kono
parents:
diff changeset
39 -- Get --
kono
parents:
diff changeset
40 ---------
kono
parents:
diff changeset
41
kono
parents:
diff changeset
42 procedure Get (X : out Integer) is
kono
parents:
diff changeset
43 function Get_Int return Integer;
kono
parents:
diff changeset
44 pragma Import (C, Get_Int, "get_int");
kono
parents:
diff changeset
45 begin
kono
parents:
diff changeset
46 X := Get_Int;
kono
parents:
diff changeset
47 end Get;
kono
parents:
diff changeset
48
kono
parents:
diff changeset
49 procedure Get (C : out Character) is
kono
parents:
diff changeset
50 function Get_Char return Character;
kono
parents:
diff changeset
51 pragma Import (C, Get_Char, "get_char");
kono
parents:
diff changeset
52 begin
kono
parents:
diff changeset
53 C := Get_Char;
kono
parents:
diff changeset
54 end Get;
kono
parents:
diff changeset
55
kono
parents:
diff changeset
56 --------------
kono
parents:
diff changeset
57 -- Get_Line --
kono
parents:
diff changeset
58 --------------
kono
parents:
diff changeset
59
kono
parents:
diff changeset
60 procedure Get_Line (Item : out String; Last : out Natural) is
kono
parents:
diff changeset
61 C : Character;
kono
parents:
diff changeset
62
kono
parents:
diff changeset
63 begin
kono
parents:
diff changeset
64 for Nstore in Item'Range loop
kono
parents:
diff changeset
65 Get (C);
kono
parents:
diff changeset
66
kono
parents:
diff changeset
67 if C = ASCII.LF then
kono
parents:
diff changeset
68 Last := Nstore - 1;
kono
parents:
diff changeset
69 return;
kono
parents:
diff changeset
70
kono
parents:
diff changeset
71 else
kono
parents:
diff changeset
72 Item (Nstore) := C;
kono
parents:
diff changeset
73 end if;
kono
parents:
diff changeset
74 end loop;
kono
parents:
diff changeset
75
kono
parents:
diff changeset
76 Last := Item'Last;
kono
parents:
diff changeset
77 end Get_Line;
kono
parents:
diff changeset
78
kono
parents:
diff changeset
79 --------------
kono
parents:
diff changeset
80 -- New_Line --
kono
parents:
diff changeset
81 --------------
kono
parents:
diff changeset
82
kono
parents:
diff changeset
83 procedure New_Line (File : File_Type; Spacing : Positive := 1) is
kono
parents:
diff changeset
84 begin
kono
parents:
diff changeset
85 for J in 1 .. Spacing loop
kono
parents:
diff changeset
86 Put (File, ASCII.LF);
kono
parents:
diff changeset
87 end loop;
kono
parents:
diff changeset
88 end New_Line;
kono
parents:
diff changeset
89
kono
parents:
diff changeset
90 procedure New_Line (Spacing : Positive := 1) is
kono
parents:
diff changeset
91 begin
kono
parents:
diff changeset
92 New_Line (Current_Out, Spacing);
kono
parents:
diff changeset
93 end New_Line;
kono
parents:
diff changeset
94
kono
parents:
diff changeset
95 ---------
kono
parents:
diff changeset
96 -- Put --
kono
parents:
diff changeset
97 ---------
kono
parents:
diff changeset
98
kono
parents:
diff changeset
99 procedure Put (X : Integer) is
kono
parents:
diff changeset
100 begin
kono
parents:
diff changeset
101 Put (Current_Out, X);
kono
parents:
diff changeset
102 end Put;
kono
parents:
diff changeset
103
kono
parents:
diff changeset
104 procedure Put (File : File_Type; X : Integer) is
kono
parents:
diff changeset
105 procedure Put_Int (X : Integer);
kono
parents:
diff changeset
106 pragma Import (C, Put_Int, "put_int");
kono
parents:
diff changeset
107
kono
parents:
diff changeset
108 procedure Put_Int_Stderr (X : Integer);
kono
parents:
diff changeset
109 pragma Import (C, Put_Int_Stderr, "put_int_stderr");
kono
parents:
diff changeset
110
kono
parents:
diff changeset
111 begin
kono
parents:
diff changeset
112 case File is
kono
parents:
diff changeset
113 when Stdout => Put_Int (X);
kono
parents:
diff changeset
114 when Stderr => Put_Int_Stderr (X);
kono
parents:
diff changeset
115 end case;
kono
parents:
diff changeset
116 end Put;
kono
parents:
diff changeset
117
kono
parents:
diff changeset
118 procedure Put (C : Character) is
kono
parents:
diff changeset
119 begin
kono
parents:
diff changeset
120 Put (Current_Out, C);
kono
parents:
diff changeset
121 end Put;
kono
parents:
diff changeset
122
kono
parents:
diff changeset
123 procedure Put (File : File_Type; C : Character) is
kono
parents:
diff changeset
124 procedure Put_Char (C : Character);
kono
parents:
diff changeset
125 pragma Import (C, Put_Char, "put_char");
kono
parents:
diff changeset
126
kono
parents:
diff changeset
127 procedure Put_Char_Stderr (C : Character);
kono
parents:
diff changeset
128 pragma Import (C, Put_Char_Stderr, "put_char_stderr");
kono
parents:
diff changeset
129
kono
parents:
diff changeset
130 begin
kono
parents:
diff changeset
131 case File is
kono
parents:
diff changeset
132 when Stdout => Put_Char (C);
kono
parents:
diff changeset
133 when Stderr => Put_Char_Stderr (C);
kono
parents:
diff changeset
134 end case;
kono
parents:
diff changeset
135 end Put;
kono
parents:
diff changeset
136
kono
parents:
diff changeset
137 procedure Put (S : String) is
kono
parents:
diff changeset
138 begin
kono
parents:
diff changeset
139 Put (Current_Out, S);
kono
parents:
diff changeset
140 end Put;
kono
parents:
diff changeset
141
kono
parents:
diff changeset
142 procedure Put (File : File_Type; S : String) is
kono
parents:
diff changeset
143 begin
kono
parents:
diff changeset
144 for J in S'Range loop
kono
parents:
diff changeset
145 Put (File, S (J));
kono
parents:
diff changeset
146 end loop;
kono
parents:
diff changeset
147 end Put;
kono
parents:
diff changeset
148
kono
parents:
diff changeset
149 --------------
kono
parents:
diff changeset
150 -- Put_Line --
kono
parents:
diff changeset
151 --------------
kono
parents:
diff changeset
152
kono
parents:
diff changeset
153 procedure Put_Line (S : String) is
kono
parents:
diff changeset
154 begin
kono
parents:
diff changeset
155 Put_Line (Current_Out, S);
kono
parents:
diff changeset
156 end Put_Line;
kono
parents:
diff changeset
157
kono
parents:
diff changeset
158 procedure Put_Line (File : File_Type; S : String) is
kono
parents:
diff changeset
159 begin
kono
parents:
diff changeset
160 Put (File, S);
kono
parents:
diff changeset
161 New_Line (File);
kono
parents:
diff changeset
162 end Put_Line;
kono
parents:
diff changeset
163
kono
parents:
diff changeset
164 ----------------
kono
parents:
diff changeset
165 -- Set_Output --
kono
parents:
diff changeset
166 ----------------
kono
parents:
diff changeset
167
kono
parents:
diff changeset
168 procedure Set_Output (File : File_Type) is
kono
parents:
diff changeset
169 begin
kono
parents:
diff changeset
170 Current_Out := File;
kono
parents:
diff changeset
171 end Set_Output;
kono
parents:
diff changeset
172
kono
parents:
diff changeset
173 ---------------------
kono
parents:
diff changeset
174 -- Standard_Output --
kono
parents:
diff changeset
175 ---------------------
kono
parents:
diff changeset
176
kono
parents:
diff changeset
177 function Standard_Output return File_Type is
kono
parents:
diff changeset
178 begin
kono
parents:
diff changeset
179 return Stdout;
kono
parents:
diff changeset
180 end Standard_Output;
kono
parents:
diff changeset
181
kono
parents:
diff changeset
182 --------------------
kono
parents:
diff changeset
183 -- Standard_Error --
kono
parents:
diff changeset
184 --------------------
kono
parents:
diff changeset
185
kono
parents:
diff changeset
186 function Standard_Error return File_Type is
kono
parents:
diff changeset
187 begin
kono
parents:
diff changeset
188 return Stderr;
kono
parents:
diff changeset
189 end Standard_Error;
kono
parents:
diff changeset
190
kono
parents:
diff changeset
191 end GNAT.IO;