summaryrefslogtreecommitdiff
path: root/gcc/ada/output.ads
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2009-04-17 12:11:04 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2009-04-17 12:11:04 +0000
commit187a44ec3e8ad404b63aca7fc343f011698ab2d5 (patch)
tree6e957cad5a9b6a8086189a2bb0175f2b72b4a7bd /gcc/ada/output.ads
parentf2d510b4bf974d6c56723ce09247a4919d356931 (diff)
downloadgcc-187a44ec3e8ad404b63aca7fc343f011698ab2d5.tar.gz
2009-04-17 Bob Duff <duff@adacore.com>
* output.ads (Indent,Outdent): New procedures for indenting the output. (Write_Char): Correct comment -- LF _is_ allowed. * output.adb (Indent,Outdent): New procedures for indenting the output. Keep track of the indentation level, and make sure it doesn't get too high. (Flush_Buffer): Insert spaces at the beginning of each line, if indentation level is nonzero. (Save_Output_Buffer,Restore_Output_Buffer): Save and restore the current indentation level. (Set_Standard_Error,Set_Standard_Output): Remove superfluous "Next_Col := 1;". Flush_Buffer does that. * sem_ch6.adb, sem_ch7.adb (Debug_Flag_C): Reorganize the output controlled by the -gnatdc switch. It now occurs on entry/exit to the relevant analysis routines, and calls Indent/Outdent to make the indentation reflect the nesting level. Add "helper" routines, since otherwise lots of "return;" statements would skip the debugging output. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@146253 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/output.ads')
-rw-r--r--gcc/ada/output.ads15
1 files changed, 12 insertions, 3 deletions
diff --git a/gcc/ada/output.ads b/gcc/ada/output.ads
index 559112cc94f..2bb38fc8fa4 100644
--- a/gcc/ada/output.ads
+++ b/gcc/ada/output.ads
@@ -81,9 +81,17 @@ package Output is
-- has been cancelled. Output to standard output is the default mode
-- before any call to either of the Set procedures.
+ procedure Indent;
+ -- Increases the current indentation level. Whenever a line is written
+ -- (triggered by Eol), an appropriate amount of whitespace is added to the
+ -- beginning of the line, wrapping around if it gets to long.
+
+ procedure Outdent;
+ -- Decreases the current indentation level.
+
procedure Write_Char (C : Character);
- -- Write one character to the standard output file. Note that the
- -- character should not be LF or CR (use Write_Eol for end of line)
+ -- Write one character to the standard output file. If the character is LF,
+ -- this is equivalent to Write_Eol.
procedure Write_Erase_Char (C : Character);
-- If last character in buffer matches C, erase it, otherwise no effect
@@ -177,7 +185,7 @@ private
-- subprograms defined in this package, and cannot be directly modified or
-- accessed by a client.
- Buffer : String (1 .. Buffer_Max + 1);
+ Buffer : String (1 .. Buffer_Max + 1) := (others => '*');
for Buffer'Alignment use 4;
-- Buffer used to build output line. We do line buffering because it
-- is needed for the support of the debug-generated-code option (-gnatD).
@@ -194,6 +202,7 @@ private
type Saved_Output_Buffer is record
Buffer : String (1 .. Buffer_Max + 1);
Next_Col : Positive;
+ Cur_Indentation : Natural;
end record;
end Output;