with Ada.Exceptions;
with TOML.Generic_Dump;
with TOML.Generic_Parse;
package body TOML.File_IO is
procedure Get
(Stream : in out Ada.Text_IO.File_Type;
EOF : out Boolean;
Byte : out Character);
-- Callback for Parse_File
function Parse_File is new TOML.Generic_Parse
(Input_Stream => Ada.Text_IO.File_Type,
Get => Get);
procedure Put_To_File (File : in out Ada.Text_IO.File_Type; Bytes : String);
-- Callback for TOML.Generic_Dump
procedure Dump_To_File is new TOML.Generic_Dump
(Output_Stream => Ada.Text_IO.File_Type,
Put => Put_To_File);
---------
-- Get --
---------
procedure Get
(Stream : in out Ada.Text_IO.File_Type;
EOF : out Boolean;
Byte : out Character) is
begin
EOF := False;
Ada.Text_IO.Get_Immediate (Stream, Byte);
exception
when Ada.Text_IO.End_Error =>
EOF := True;
end Get;
-----------------
-- Put_To_File --
-----------------
procedure Put_To_File (File : in out Ada.Text_IO.File_Type; Bytes : String)
is
begin
Ada.Text_IO.Put (File, Bytes);
end Put_To_File;
---------------
-- Load_File --
---------------
function Load_File (Filename : String) return Read_Result is
use Ada.Exceptions, Ada.Text_IO;
File : File_Type;
begin
begin
Open (File, In_File, Filename);
exception
when Exc : Name_Error | Use_Error =>
return Create_Error
("cannot open " & Filename & ": " & Exception_Message (Exc),
No_Location);
end;
return Result : constant Read_Result := Parse_File (File) do
Close (File);
end return;
end Load_File;
------------------
-- Dump_To_File --
------------------
procedure Dump_To_File
(Value : TOML_Value; File : in out Ada.Text_IO.File_Type) is
begin
Dump_To_File (File, Value);
end Dump_To_File;
end TOML.File_IO;