Contents Index Search Previous Next
Section 12: Generic Units
1
{generic unit} A
generic unit is a program unit that is either a generic subprogram
or a generic package.
{template} A
generic unit is a
template[, which can be parameterized, and from
which corresponding (nongeneric) subprograms or packages can be obtained].
The resulting program units are said to be
instances of the original
generic unit.
{template: See generic unit}
{macro: See generic unit}
{parameter: See generic formal
parameter}
1.a
Glossary entry: {Generic
unit} A generic unit is a template for a (nongeneric) program unit;
the template can be parameterized by objects, types, subprograms, and
packages. An instance of a generic unit is created by a generic_instantiation.
The rules of the language are enforced when a generic unit is compiled,
using a generic contract model; additional checks are performed upon
instantiation to verify the contract is met. That is, the declaration
of a generic unit represents a contract between the body of the generic
and instances of the generic. Generic units can be used to perform the
role that macros sometimes play in other languages.
2
[A generic unit is declared by a generic_declaration.
This form of declaration has a generic_formal_part
declaring any generic formal parameters. An instance of a generic unit
is obtained as the result of a generic_instantiation
with appropriate generic actual parameters for the generic formal parameters.
An instance of a generic subprogram is a subprogram. An instance of a
generic package is a package.
3
Generic units are templates. As templates they
do not have the properties that are specific to their nongeneric counterparts.
For example, a generic subprogram can be instantiated but it cannot be
called. In contrast, an instance of a generic subprogram is a (nongeneric)
subprogram; hence, this instance can be called but it cannot be used
to produce further instances.]
Contents Index Search Previous Next Legal