Annotated Ada Reference Manual (Ada 202y Draft 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