1 ------------------------------------------------------------------------------
3 -- GNAT COMPILER COMPONENTS --
11 -- Copyright (C) 1992-2001, Free Software Foundation, Inc. --
13 -- GNAT is free software; you can redistribute it and/or modify it under --
14 -- terms of the GNU General Public License as published by the Free Soft- --
15 -- ware Foundation; either version 2, or (at your option) any later ver- --
16 -- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
17 -- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
18 -- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License --
19 -- for more details. You should have received a copy of the GNU General --
20 -- Public License distributed with GNAT; see file COPYING. If not, write --
21 -- to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, --
22 -- MA 02111-1307, USA. --
24 -- As a special exception, if other files instantiate generics from this --
25 -- unit, or you link this unit with other files to produce an executable, --
26 -- this unit does not by itself cause the resulting executable to be --
27 -- covered by the GNU General Public License. This exception does not --
28 -- however invalidate any other reasons why the executable file might be --
29 -- covered by the GNU Public License. --
31 -- GNAT was originally developed by the GNAT team at New York University. --
32 -- It is now maintained by Ada Core Technologies Inc (http://www.gnat.com). --
34 ------------------------------------------------------------------------------
36 with GNAT.OS_Lib; use GNAT.OS_Lib;
38 package body Output is
40 Current_FD : File_Descriptor := Standout;
41 -- File descriptor for current output
43 -----------------------
44 -- Local_Subprograms --
45 -----------------------
47 procedure Flush_Buffer;
48 -- Flush buffer if non-empty and reset column counter
54 procedure Flush_Buffer is
55 Len : constant Natural := Natural (Column - 1);
59 if Len /= Write (Current_FD, Buffer'Address, Len) then
61 Write_Line ("fatal error: disk full");
69 ------------------------
70 -- Set_Standard_Error --
71 ------------------------
73 procedure Set_Standard_Error is
76 Current_FD := Standerr;
78 end Set_Standard_Error;
80 -------------------------
81 -- Set_Standard_Output --
82 -------------------------
84 procedure Set_Standard_Output is
87 Current_FD := Standout;
89 end Set_Standard_Output;
95 procedure w (C : Character) is
103 procedure w (S : String) is
109 procedure w (V : Int) is
115 procedure w (B : Boolean) is
124 procedure w (L : String; C : Character) is
131 procedure w (L : String; S : String) is
138 procedure w (L : String; V : Int) is
145 procedure w (L : String; B : Boolean) is
156 procedure Write_Char (C : Character) is
158 if Column < Buffer'Length then
159 Buffer (Natural (Column)) := C;
160 Column := Column + 1;
168 procedure Write_Eol is
170 Buffer (Natural (Column)) := ASCII.LF;
171 Column := Column + 1;
179 procedure Write_Int (Val : Int) is
187 Write_Int (Val / 10);
190 Write_Char (Character'Val ((Val mod 10) + Character'Pos ('0')));
198 procedure Write_Line (S : String) is
208 procedure Write_Str (S : String) is
210 for J in S'Range loop