Contents Index Previous Next
Annex A
(normative)
Predefined Language Environment
1
[
{Language-Defined
Library Units} {predefined
environment} This Annex contains the specifications
of library units that shall be provided by every implementation. There
are three root library units: Ada, Interfaces, and System; other library
units are children of these:]
2/1
[
Standard -- A.1
Ada -- A.2
Asynchronous_Task_Control -- D.11
Calendar -- 9.6
Characters -- A.3.1
Handling -- A.3.2
Latin_1 -- A.3.3
Command_Line -- A.15
Decimal -- F.2
Direct_IO -- A.8.4
Dynamic_Priorities -- D.5
Exceptions -- 11.4.1
Finalization -- 7.6
Float_Text_IO -- A.10.9
Float_Wide_Text_IO -- A.11
Integer_Text_IO -- A.10.8
Integer_Wide_Text_IO -- A.11
Interrupts -- C.3.2
Names -- C.3.2
IO_Exceptions -- A.13
Numerics -- A.5
Complex_Elementary_Functions -- G.1.2
Complex_Types -- G.1.1
Discrete_Random -- A.5.2
Elementary_Functions -- A.5.1
Float_Random -- A.5.2
Generic_Complex_Elementary_Functions
-- G.1.2
Generic_Complex_Types -- G.1.1
Generic_Elementary_Functions -- A.5.1
Real_Time -- D.8
Sequential_IO -- A.8.1
Storage_IO -- A.9
Streams -- 13.13.1
Stream_IO -- A.12.1
2.a
Discussion: In running
text, we generally leave out the ``Ada.'' when referring to a child of
Ada.
2.b
Reason: We had no strict
rule for which of Ada, Interfaces, or System should be the parent of
a given library unit. However, we have tried to place as many things
as possible under Ada, except that interfacing is a separate category,
and we have tried to place library units whose use is highly non-portable
under System.
Implementation Requirements
3
The implementation shall ensure that each language
defined subprogram is reentrant in the sense that concurrent calls on
the same subprogram perform as specified, so long as all parameters that
could be passed by reference denote nonoverlapping objects.
3.a
Ramification: For example,
simultaneous calls to Text_IO.Put will work properly, so long as they
are going to two different files. On the other hand, simultaneous output
to the same file constitutes erroneous use of shared variables.
3.b
To be honest: Here, ``language
defined subprogram'' means a language defined library subprogram, a subprogram
declared in the visible part of a language defined library package, an
instance of a language defined generic library subprogram, or a subprogram
declared in the visible part of an instance of a language defined generic
library package.
3.c
Ramification: The rule
implies that any data local to the private part or body of the package
has to be somehow protected against simultaneous access.
Implementation Permissions
4
The implementation may restrict the replacement
of language-defined compilation units. The implementation may restrict
children of language-defined library units (other than Standard).
4.a
Ramification: For example,
the implementation may say, ``you cannot compile a library unit called
System'' or ``you cannot compile a child of package System'' or ``if
you compile a library unit called System, it has to be a package, and
it has to contain at least the following declarations: ...''.
Wording Changes from Ada 83
4.b
Many of Ada 83's language-defined library
units are now children of Ada or System. For upward compatibility, these are
renamed as root library units (see J.1).
4.c
The order and lettering of the
annexes has been changed.
Contents Index Previous Next Legal