External_Initialization Aspect (GNAT Reference Manual) (original) (raw)


17.3.10 External_Initialization Aspect

The External_Initialization aspect provides a feature similar to Rust’s include_bytes!and to C23’s #embed. It has the effect of initializing an object with the contents of a file specified by a file path.

Only string objects and objects of type Ada.Streams.Stream_Element_Array can be subject to the External_Initialization aspect.

Example:

with Ada.Streams;

package P is S : constant String with External_Initialization => "foo.txt";

X : constant Ada.Streams.Stream_Element_Array with External_Initialization => "bar.bin"; end P;

External_Initialization aspect accepts the following parameters:

If Path is a relative path, it is interpreted relatively to the directory of the file that contains the aspect specification.

Attention: The maximum size of loaded files is limited to 2^31 bytes.