69 lines
2.2 KiB
Ada
69 lines
2.2 KiB
Ada
with H2.Sysapi;
|
|
|
|
generic
|
|
type Slim_Character is (<>);
|
|
type Wide_Character is (<>);
|
|
type Slim_String is array(System_Index range<>) of Slim_Character;
|
|
type Wide_String is array(System_Index range<>) of Wide_Character;
|
|
with function Slim_To_Wide (Slim: in Slim_String) return Wide_String;
|
|
with function Wide_To_Slim (Wide: in Wide_String) return Slim_String;
|
|
|
|
|
|
package H2.IO is
|
|
|
|
package Sysapi is new H2.Sysapi (Slim_Character, Wide_Character, Slim_String, Wide_String, Slim_To_Wide, Wide_To_Slim);
|
|
|
|
package File is
|
|
|
|
subtype Flag_Record is Sysapi.File.Flag_Record;
|
|
|
|
FLAG_READ: constant := Sysapi.File.FLAG_READ;
|
|
FLAG_WRITE: constant := Sysapi.File.FLAG_WRITE;
|
|
FLAG_CREATE: constant := Sysapi.File.FLAG_CREATE;
|
|
FLAG_EXCLUSIVE: constant := Sysapi.File.FLAG_EXCLUSIVE;
|
|
FLAG_TRUNCATE: constant := Sysapi.File.FLAG_TRUNCATE;
|
|
FLAG_APPEND: constant := Sysapi.File.FLAG_APPEND;
|
|
FLAG_NONBLOCK: constant := Sysapi.File.FLAG_NONBLOCK;
|
|
FLAG_SYNC: constant := Sysapi.File.FLAG_SYNC;
|
|
FLAG_NOFOLLOW: constant := Sysapi.File.FLAG_NOFOLLOW;
|
|
|
|
type File_Record is limited record
|
|
File: Sysapi.File.File_Pointer := null;
|
|
Buffer: System_Byte_Array (1 .. 2048);
|
|
Last: System_Length := System_Length'First;
|
|
end record;
|
|
|
|
procedure Open (File: in out File_Record;
|
|
Name: in Slim_String;
|
|
Flag: in Flag_Record;
|
|
Pool: in Storage_Pool_Pointer := null);
|
|
|
|
procedure Open (File: in out File_Record;
|
|
Name: in Wide_String;
|
|
Flag: in Flag_Record;
|
|
Pool: in Storage_Pool_Pointer := null);
|
|
|
|
procedure Close (File: in out File_Record);
|
|
|
|
procedure Read (File: in out File_Record;
|
|
Buffer: in out Slim_String;
|
|
Last: out System_Length);
|
|
|
|
procedure Read (File: in out File_Record;
|
|
Buffer: in out Wide_String;
|
|
Last: out System_Length);
|
|
|
|
procedure Write (File: in out File_Record;
|
|
Buffer: in Slim_String;
|
|
Last: out System_Length);
|
|
|
|
procedure Write (File: in out File_Record;
|
|
Buffer: in Wide_String;
|
|
Last: out System_Length);
|
|
|
|
procedure Flush (File: in out File_Record);
|
|
end File;
|
|
|
|
end H2.IO;
|
|
|