- Fri 14 March 2014
- misc
- Tero Koskinen
- #text_io
One, probably not so often used, feature of Ada.Text_IO is an ability to redirect output (Put, Put_Line, Newline) to a file. It happens simply by opening a file where you want to redirect the output and then calling Set_Output procedure.
Example below shows how it is done:
with Ada.Text_IO;
procedure Redir is
Handle : Ada.Text_IO.File_Type;
begin
Ada.Text_IO.Create (Handle, Ada.Text_IO.Out_File, "out.txt");
Ada.Text_IO.Put_Line ("Starting redirection to out.txt");
-- Tell Text_IO to redirect all output to Handle
Ada.Text_IO.Set_Output (Handle);
-- Print some text
Ada.Text_IO.Put_Line ("Hello, this will go to out.txt");
Ada.Text_IO.Close (Handle);
-- Restoring output back to standard output
Ada.Text_IO.Set_Output (Ada.Text_IO.Standard_Output);
Ada.Text_IO.Put_Line ("Redirection restored to standard output");
end Redir;
This technique is used for example in Ahven framework, see ahven-temporary_output.adb for details.
EDIT 2014-03-20: Removed all Flush calls, they were useless.