E.2 Categorization of Library Units
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.
A 
categorization 
aspect restricts the declarations, child units, or semantic dependences 
of the library unit to which it applies. A 
categorized library unit 
is a library unit that has a categorization aspect that is True.
The aspects Shared_Passive, Remote_Types, and Remote_Call_Interface 
are categorization aspects. In addition, for the purposes of this Annex, 
the aspect Pure (see 
10.2.1) is considered 
a categorization aspect.
A library package or generic 
library package is called a 
shared passive library unit if the 
Shared_Passive aspect of the unit is True. 
A library 
package or generic library package is called a 
remote types library 
unit if the Remote_Types aspect of the unit is True. 
 
A library unit is called a 
remote call interface if the Remote_Call_Interface 
aspect of the unit is True. 
A 
normal library unit 
is one for which no categorization aspect is True. 
The various categories of library units and the associated 
restrictions are described in this and the following 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 in the hierarchy, except that the body of a remote 
types or remote call interface library unit is unrestricted, the declaration 
of a remote types or remote call interface library unit may depend on 
preelaborated normal library units that are mentioned only in private 
with clauses, and all categories can depend on limited views.
The overall hierarchy 
(including declared pure) is as follows, with a lower-numbered category 
being “earlier in the hierarchy” in the sense of the previous 
paragraph: 
 1.
Declared Pure
 2.
Shared Passive
 3.
Remote Types
 4.
Remote Call Interface
 5.
Normal (no restrictions) 
Paragraphs 7 through 
11 were deleted. 
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. 
Paragraph 13 and 
14 were deleted. 
 Ada 2005 and 2012 Editions sponsored in part by Ada-Europe
Ada 2005 and 2012 Editions sponsored in part by Ada-Europe