diff options
author | Robert Dewar <dewar@adacore.com> | 2008-03-26 08:36:48 +0100 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2008-03-26 08:36:48 +0100 |
commit | 1e990f1366612be41209fb921d09be00355c117b (patch) | |
tree | e77333513aa16dabd237767d69e16cef850bfb7a /gcc | |
parent | 162c52f32359c7f4c18f03d2ebc62ac59fa81c09 (diff) | |
download | gcc-1e990f1366612be41209fb921d09be00355c117b.zip gcc-1e990f1366612be41209fb921d09be00355c117b.tar.gz gcc-1e990f1366612be41209fb921d09be00355c117b.tar.bz2 |
a-ztexio.adb, [...]: Fix problem with Current_Output (introduce Self).
2008-03-26 Robert Dewar <dewar@adacore.com>
* a-ztexio.adb, a-ztexio.ads, a-witeio.ads, a-witeio.adb: Fix problem
with Current_Output (introduce Self).
From-SVN: r133552
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ada/a-witeio.ads | 6 | ||||
-rw-r--r-- | gcc/ada/a-ztexio.adb | 36 | ||||
-rw-r--r-- | gcc/ada/a-ztexio.ads | 6 |
3 files changed, 35 insertions, 13 deletions
diff --git a/gcc/ada/a-witeio.ads b/gcc/ada/a-witeio.ads index 3d676a9..b7d06ea 100644 --- a/gcc/ada/a-witeio.ads +++ b/gcc/ada/a-witeio.ads @@ -350,6 +350,12 @@ private Line_Length : Count := 0; Page_Length : Count := 0; + Self : aliased File_Type; + -- Set to point to the containing Text_AFCB block. This is used to + -- implement the Current_{Error,Input,Ouput} functions which return + -- a File_Access, the file access value returned is a pointer to + -- the Self field of the corresponding file. + Before_LM : Boolean := False; -- This flag is used to deal with the anomolies introduced by the -- peculiar definition of End_Of_File and End_Of_Page in Ada. These diff --git a/gcc/ada/a-ztexio.adb b/gcc/ada/a-ztexio.adb index 74a60f9..2962022 100644 --- a/gcc/ada/a-ztexio.adb +++ b/gcc/ada/a-ztexio.adb @@ -180,6 +180,8 @@ package body Ada.Wide_Wide_Text_IO is Amethod => 'W', Creat => True, Text => True); + + File.Self := File; Set_WCEM (File); end Create; @@ -194,7 +196,7 @@ package body Ada.Wide_Wide_Text_IO is function Current_Error return File_Access is begin - return Current_Err'Access; + return Current_Err.Self'Access; end Current_Error; ------------------- @@ -208,7 +210,7 @@ package body Ada.Wide_Wide_Text_IO is function Current_Input return File_Access is begin - return Current_In'Access; + return Current_In.Self'Access; end Current_Input; -------------------- @@ -222,7 +224,7 @@ package body Ada.Wide_Wide_Text_IO is function Current_Output return File_Access is begin - return Current_Out'Access; + return Current_Out.Self'Access; end Current_Output; ------------ @@ -754,6 +756,7 @@ package body Ada.Wide_Wide_Text_IO is -- Start of processing for Get_Wide_Wide_Char begin + FIO.Check_Read_Status (AP (File)); return Wide_Wide_Character'Val (WC_In (C, File.WC_Method)); end Get_Wide_Wide_Char; @@ -788,6 +791,7 @@ package body Ada.Wide_Wide_Text_IO is -- Start of processing for Get_Wide_Wide_Char_Immed begin + FIO.Check_Read_Status (AP (File)); return Wide_Wide_Character'Val (WC_In (C, File.WC_Method)); end Get_Wide_Wide_Char_Immed; @@ -1089,6 +1093,8 @@ package body Ada.Wide_Wide_Text_IO is Amethod => 'W', Creat => False, Text => True); + + File.Self := File; Set_WCEM (File); end Open; @@ -1151,6 +1157,7 @@ package body Ada.Wide_Wide_Text_IO is -- Start of processing for Put begin + FIO.Check_Write_Status (AP (File)); WC_Out (Wide_Wide_Character'Pos (Item), File.WC_Method); File.Col := File.Col + 1; end Put; @@ -1869,18 +1876,20 @@ begin Standard_Err.Is_System_File := True; Standard_Err.Is_Text_File := True; Standard_Err.Access_Method := 'T'; + Standard_Err.Self := Standard_Err; Standard_Err.WC_Method := Default_WCEM; - Standard_In.Stream := stdin; - Standard_In.Name := In_Name'Access; - Standard_In.Form := Null_Str'Unrestricted_Access; - Standard_In.Mode := FCB.In_File; - Standard_In.Is_Regular_File := is_regular_file (fileno (stdin)) /= 0; - Standard_In.Is_Temporary_File := False; - Standard_In.Is_System_File := True; - Standard_In.Is_Text_File := True; - Standard_In.Access_Method := 'T'; - Standard_In.WC_Method := Default_WCEM; + Standard_In.Stream := stdin; + Standard_In.Name := In_Name'Access; + Standard_In.Form := Null_Str'Unrestricted_Access; + Standard_In.Mode := FCB.In_File; + Standard_In.Is_Regular_File := is_regular_file (fileno (stdin)) /= 0; + Standard_In.Is_Temporary_File := False; + Standard_In.Is_System_File := True; + Standard_In.Is_Text_File := True; + Standard_In.Access_Method := 'T'; + Standard_In.Self := Standard_In; + Standard_In.WC_Method := Default_WCEM; Standard_Out.Stream := stdout; Standard_Out.Name := Out_Name'Access; @@ -1891,6 +1900,7 @@ begin Standard_Out.Is_System_File := True; Standard_Out.Is_Text_File := True; Standard_Out.Access_Method := 'T'; + Standard_Out.Self := Standard_Out; Standard_Out.WC_Method := Default_WCEM; FIO.Chain_File (AP (Standard_In)); diff --git a/gcc/ada/a-ztexio.ads b/gcc/ada/a-ztexio.ads index 3010e51..dd872dc 100644 --- a/gcc/ada/a-ztexio.ads +++ b/gcc/ada/a-ztexio.ads @@ -350,6 +350,12 @@ private Line_Length : Count := 0; Page_Length : Count := 0; + Self : aliased File_Type; + -- Set to point to the containing Text_AFCB block. This is used to + -- implement the Current_{Error,Input,Ouput} functions which return + -- a File_Access, the file access value returned is a pointer to + -- the Self field of the corresponding file. + Before_LM : Boolean := False; -- This flag is used to deal with the anomolies introduced by the -- peculiar definition of End_Of_File and End_Of_Page in Ada. These |