Ada Conformity Assessment Authority      Home Conformity Assessment   Test Suite ARGAda Standard
 
Annotated Ada Reference Manual (Ada 2022 with Amendment 1)Legal Information
Contents   Index   References   Search   Previous   Next 

J.15.5 Interfacing Pragmas

Syntax

1/3
{AI05-0229-1} An interfacing pragma is a representation pragma that is one of the pragmas Import, Export, or Convention. Their forms are as follows: 
2/3
  pragma Import(
     [Convention =>] convention_identifier, [Entity =>] local_name
  [, [External_Name =>] external_name_string_expression]
  [, [Link_Name =>] link_name_string_expression]);
3/3
  pragma Export(
     [Convention =>] convention_identifier, [Entity =>] local_name
  [, [External_Name =>] external_name_string_expression]
  [, [Link_Name =>] link_name_string_expression]);
4/3
  pragma Convention([Convention =>] convention_identifier,[Entity =>] local_name);
5/3
{AI05-0229-1} For pragmas Import and Export, the argument for Link_Name shall not be given without the pragma_argument_identifier unless the argument for External_Name is given. 

Name Resolution Rules

6/3
{AI05-0229-1} The expected type for an external_name_string_expression and a link_name_string_expression in an interfacing pragma is String. 

Legality Rules

7/3
{AI05-0229-1} The convention_identifier of an interfacing pragma shall be the name of a convention (see B.1).
8/3
{AI05-0229-1} A pragma Import shall be the completion of a declaration. Notwithstanding any rule to the contrary, a pragma Import may serve as the completion of any kind of (explicit) declaration if supported by an implementation for that kind of declaration. If a completion is a pragma Import, then it shall appear in the same declarative_part, package_specification, task_definition, or protected_definition as the declaration. For a library unit, it shall appear in the same compilation, before any subsequent compilation_units other than pragmas. If the local_name denotes more than one entity, then the pragma Import is the completion of all of them.
9/3
{AI05-0229-1} The external_name_string_expression and link_name_string_expression of a pragma Import or Export shall be static.
10/3
{AI05-0229-1} The local_name of each of these pragmas shall denote a declaration that may have the similarly named aspect specified. 

Static Semantics

11/3
{AI05-0229-1} An interfacing pragma specifies various aspects of the entity denoted by the local_name as follows: 
12/3
The Convention aspect (see B.1) is convention_identifier.
13/3
A pragma Import specifies that the Import aspect (see B.1) is True.
14/3
A pragma Export specifies that the Export aspect (see B.1) is True.
15/3
For both pragma Import and Export, if an external name is given in the pragma, the External_Name aspect (see B.1) is specified to be external_name_string_expression. If a link name is given in the pragma, the Link_Name aspect (see B.1) is specified to be the link_name_string_expression.

Wording Changes from Ada 2005

15.a/3
{AI05-0229-1} {AI05-0299-1} This subclause is new. Pragmas Import, Export, and Convention were moved here from B.1; aspects Import, Export, Convention, Link_Name, and External_Name live there now. 

Contents   Index   References   Search   Previous   Next 
Ada-Europe Ada 2005 and 2012 Editions sponsored in part by Ada-Europe