- (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)
- 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)
- A library package or generic library package is called a shared passive
library unit if a Shared_Passive pragma applies to it. A library package or
generic library package is called a remote types library unit if a Remote_Types pragma applies to it. A library package or generic library package is
called a remote call interface if a Remote_Call_Interface pragma applies to
it. A normal library unit is one to which no categorization pragma
applies.
- (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
- (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)
- 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.
Subclauses
- Shared Passive Library Units
- Remote Types Library Units
- Remote Call Interface Library Units
-- Email comments, additions, corrections, gripes, kudos, etc. to:
Magnus Kempe -- Magnus.Kempe@di.epfl.ch
Copyright statement
Page last generated: 95-03-12