A type that provides access to objects containing a sequence of values of a given type. File types are typically used to access files in the host system environment. The value of a file object is the sequence of values contained in the host system file.
type type_name is file of type;
The file type is used to define objects representing files in the host environment. The value of a file object is the sequence of values contained in the physical file.
The type mark in the file declaration defines the subtype of the values contained in the file. The subtype can be either constrained or unconstrained. The subtype cannot be based on a file type or an access type. If a composite type is used, the elements cannot be of an access type and in case of arrays, it must be a one-dimensional array. Example 1 shows several file type declarations.
When a file type is declared, several operations on objects of this type are implicitly defined. The list of the operations includes: opening a file, closing a file, reading from a file, writing to a file and checking the end of a file. For a file type declared as
type FT is file of SomeType;
the implicit operations are as follows:
procedure FILE_OPEN ( file anonymous: FT;
External_Name: in STRING;
Open_Kind: in FILE_OPEN_KIND := READ_MODE );
procedure FILE_OPEN ( Status: out FILE_OPEN_STATUS;
file anonymous: FT;
External_Name: in STRING;
Open_Kind: in FILE_OPEN_KIND := READ_MODE );
procedure FILE_CLOSE ( file anonymous: FT );
procedure READ ( file anonymous: FT; Value: out SomeType );
procedure WRITE ( file anonymous: FT; Value: in SomeType );
function ENDFILE ( file anonymous: FT ) return BOOLEAN;
Example 1
type POSITIVE_FILE is file of POSITIVE;
type BIT_VECTOR_FILE is file of
BIT_VECTOR ( 0 to 7 );
type STRING_FILE is file of STRING;
Here, the first type declares a file of positive numbers, the second
one - a file of 8-bit wide vectors of bits, and the third one - a
file containing an indefinite number of strings of arbitrary length.
File types are not supported by synthesis tools.