[Home] [Prev] [Next] [Index]

Section 12:  Generic Units

Section 12:  Generic Units

1
A generic unit is a program unit that is either a generic subprogram or a generic package. 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.

1.a
Glossary entry: 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 sometimed 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.]



[Home] [Prev] [Next] [Index]

documentation@rational.com
Copyright © 1993-1998, Rational Software Corporation.   All rights reserved.