with Ada.Containers.Indefinite_Hashed_Maps,
Ada.Strings.Hash,
Ada.Text_IO;
package HAC_Sys.Files.Default is
-- This implementation deals with "physical" text files, without a search path.
type File_Catalogue is limited new Files.Abstract_File_Catalogue with private;
overriding function Exists (cat : File_Catalogue; name : String) return Boolean;
overriding function Full_Source_Name (cat : File_Catalogue; name : String) return String;
overriding function Full_Spec_Source_Name (cat : File_Catalogue; name : String) return String;
overriding function Full_Body_Source_Name (cat : File_Catalogue; name : String) return String;
overriding function Is_Open (cat : File_Catalogue; name : String) return Boolean;
overriding procedure Source_Open
(cat : in out File_Catalogue;
name : in String;
stream : out Root_Stream_Class_Access);
overriding procedure Skip_Shebang
(cat : in out File_Catalogue;
name : in String;
shebang_offset : out Natural);
overriding procedure Close (cat : in out File_Catalogue; name : String);
private
type Text_File_Access is access Ada.Text_IO.File_Type;
package Default_File_Name_Mapping is new Ada.Containers.Indefinite_Hashed_Maps
(Key_Type => String,
Element_Type => Text_File_Access,
Hash => Ada.Strings.Hash,
Equivalent_Keys => "=");
type File_Catalogue is limited new Files.Abstract_File_Catalogue with record
read_open_map : Default_File_Name_Mapping.Map;
end record;
end HAC_Sys.Files.Default;