99 lines
3.1 KiB
Plaintext
99 lines
3.1 KiB
Plaintext
|
--
|
|||
|
-- D I R E C T I N P U T / O U T P U T
|
|||
|
--
|
|||
|
-- Specification of the Package Direct_IO
|
|||
|
--
|
|||
|
-- Copyright (C) 1986 Artek Corporation
|
|||
|
--
|
|||
|
|
|||
|
with IO_EXCEPTIONS;
|
|||
|
|
|||
|
generic
|
|||
|
|
|||
|
type ELEMENT_TYPE is private;
|
|||
|
|
|||
|
package DIRECT_IO is
|
|||
|
|
|||
|
type FILE_TYPE is limited private;
|
|||
|
|
|||
|
type FILE_MODE is (IN_FILE, INOUT_FILE, OUT_FILE);
|
|||
|
type COUNT is range 0 .. INTEGER'LAST;
|
|||
|
subtype POSITIVE_COUNT is COUNT range 1 .. COUNT'LAST;
|
|||
|
|
|||
|
-- File Management
|
|||
|
|
|||
|
procedure CREATE (FILE : in out FILE_TYPE;
|
|||
|
MODE : in FILE_MODE := INOUT_FILE;
|
|||
|
NAME : in STRING := "";
|
|||
|
FORM : in STRING := "");
|
|||
|
|
|||
|
procedure OPEN (FILE : in out FILE_TYPE;
|
|||
|
MODE : in FILE_MODE;
|
|||
|
NAME : in STRING;
|
|||
|
FORM : in STRING := "");
|
|||
|
|
|||
|
procedure CLOSE (FILE : in out FILE_TYPE);
|
|||
|
procedure DELETE (FILE : in out FILE_TYPE);
|
|||
|
procedure RESET (FILE : in out FILE_TYPE; MODE : in FILE_MODE);
|
|||
|
procedure RESET (FILE : in out FILE_TYPE);
|
|||
|
|
|||
|
function MODE (FILE : in FILE_TYPE) return FILE_MODE;
|
|||
|
function NAME (FILE : in FILE_TYPE) return STRING;
|
|||
|
function FORM (FILE : in FILE_TYPE) return STRING;
|
|||
|
|
|||
|
function IS_OPEN (FILE : in FILE_TYPE) return BOOLEAN;
|
|||
|
|
|||
|
-- Input and output operations
|
|||
|
|
|||
|
procedure READ
|
|||
|
(FILE : in FILE_TYPE; ITEM : out ELEMENT_TYPE; FROM : POSITIVE_COUNT);
|
|||
|
procedure READ (FILE : in FILE_TYPE; ITEM : out ELEMENT_TYPE);
|
|||
|
|
|||
|
procedure WRITE
|
|||
|
(FILE : in FILE_TYPE; ITEM : in ELEMENT_TYPE; TO : POSITIVE_COUNT);
|
|||
|
procedure WRITE (FILE : in FILE_TYPE; ITEM : in ELEMENT_TYPE);
|
|||
|
|
|||
|
procedure SET_INDEX (FILE : in FILE_TYPE; TO : in POSITIVE_COUNT);
|
|||
|
|
|||
|
function INDEX (FILE : in FILE_TYPE) return POSITIVE_COUNT;
|
|||
|
function SIZE (FILE : in FILE_TYPE) return COUNT;
|
|||
|
|
|||
|
function END_OF_FILE (FILE : in FILE_TYPE) return BOOLEAN;
|
|||
|
|
|||
|
-- Exceptions
|
|||
|
|
|||
|
STATUS_ERROR : exception renames IO_EXCEPTIONS.STATUS_ERROR;
|
|||
|
MODE_ERROR : exception renames IO_EXCEPTIONS.MODE_ERROR;
|
|||
|
NAME_ERROR : exception renames IO_EXCEPTIONS.NAME_ERROR;
|
|||
|
USE_ERROR : exception renames IO_EXCEPTIONS.USE_ERROR;
|
|||
|
DEVICE_ERROR : exception renames IO_EXCEPTIONS.DEVICE_ERROR;
|
|||
|
END_ERROR : exception renames IO_EXCEPTIONS.END_ERROR;
|
|||
|
DATA_ERROR : exception renames IO_EXCEPTIONS.DATA_ERROR;
|
|||
|
|
|||
|
private
|
|||
|
|
|||
|
MAX_NAME_LEN : constant := 32; -- Complete name with paths
|
|||
|
MAX_FORM_LEN : constant := 10; -- The form is not used in MS-DOS
|
|||
|
|
|||
|
subtype NAME_INDEX is INTEGER range 0..MAX_NAME_LEN;
|
|||
|
subtype FORM_INDEX is INTEGER range 0..MAX_FORM_LEN;
|
|||
|
|
|||
|
subtype FILE_NAME_STRING is STRING (1..MAX_NAME_LEN);
|
|||
|
subtype FORM_NAME_STRING is STRING (1..MAX_FORM_LEN);
|
|||
|
|
|||
|
type FILE_DESCR is
|
|||
|
record
|
|||
|
NAMELEN : NAME_INDEX;
|
|||
|
NAME : FILE_NAME_STRING;
|
|||
|
MODE : FILE_MODE;
|
|||
|
FORMLEN : FORM_INDEX;
|
|||
|
FORM : FORM_NAME_STRING;
|
|||
|
INDEX : POSITIVE_COUNT;
|
|||
|
HANDLE : INTEGER; -- DOS handle number, DOS 2 or later
|
|||
|
end record;
|
|||
|
|
|||
|
type FILE_TYPE is access FILE_DESCR;
|
|||
|
|
|||
|
end DIRECT_IO;
|
|||
|
|
|||
|
|