Contents Index Search Previous Next
E.2 Categorization of Library Units
1
[Library units can be categorized according to
the role they play in a distributed program. Certain restrictions are
associated with each category to ensure that the semantics of a distributed
program remain close to the semantics for a nondistributed program.]
2
{categorization pragma
[distributed]} {pragma,
categorization [distributed]} {library
unit pragma (categorization pragmas) [partial]} {pragma,
library unit (categorization pragmas) [partial]} {categorized
library unit} A
categorization pragma
is a library unit pragma (see
10.1.5) that
restricts the declarations, child units, or semantic dependences of the
library unit to which it applies. A
categorized library unit is
a library unit to which a categorization pragma applies.
3
The pragmas Shared_Passive, Remote_Types, and
Remote_Call_Interface are categorization pragmas. In addition, for the
purposes of this Annex, the pragma Pure (see
10.2.1)
is considered a categorization pragma.
4/1
{
8652/0078}
{shared passive library unit} A
library package or generic library package is called a
shared passive
library unit if a Shared_Passive pragma applies to it.
{remote
types library unit} A library package
or generic library package is called a
remote types library unit
if a Remote_Types pragma applies to it.
{remote call
interface} A library
unit package
or generic library package is called a
remote call interface
if a Remote_Call_Interface pragma applies to it.
{normal
library unit} A
normal library unit
is one to which no categorization pragma applies.
4.a.1/1
Ramification: {8652/0078}
A library subprogram can be a remote call interface, but it cannot
be a remote types or shared passive library unit.
5
[The various categories of library units and the
associated restrictions are described in this clause and its subclauses.
The categories are related hierarchically in that the library units of
one category can depend semantically only on library units of that category
or an earlier one, except that the body of a remote types or remote call
interface library unit is unrestricted.
6
The overall hierarchy
(including declared pure) is as follows:
7
- Declared Pure
-
Can depend only on other declared pure library units;
8
- Shared Passive
-
Can depend only on other shared passive or declared pure library units;
9
- Remote Types
-
The declaration of the library unit can depend only on other remote types
library units, or one of the above; the body of the library unit is unrestricted;
10
- Remote Call Interface
-
The declaration of the library unit can depend only on other remote call
interfaces, or one of the above; the body of the library unit is unrestricted;
11
- Normal
-
Unrestricted.
12
Declared pure and shared passive library units
are preelaborated. The declaration of a remote types or remote call interface
library unit is required to be preelaborable. ]
Implementation Requirements
13/1
This paragraph was deleted.{
8652/0079}
For a given library-level type declared in a preelaborated library
unit or in the declaration of a remote types or remote call interface
library unit, the implementation shall choose the same representation
for the type upon each elaboration of the type's declaration for different
partitions of the same program.
Implementation Permissions
14
Implementations are allowed to define other categorization
pragmas.
Contents Index Search Previous Next Legal