DocAda(tm) is a productivity tool of KSCE
|
|
|
| ![]()
About DocAda Light:
Preface / Preliminary
/ Help
/ TOC
/ Copyright
DocAda Online at the Ada Home:
Complete RM95
/ Updates
/ News
A generic_declaration declares a generic unit, which is either a generic subprogram or a generic package. A generic_declaration includes a generic_formal_part declaring any generic formal parameters. A generic formal parameter can be an object; alternatively (unlike a parameter of a subprogram), it can be a type, a subprogram, or a package.
Syntax
generic_declaration ::= generic_subprogram_declaration | generic_package_declaration
generic_subprogram_declaration ::=
generic_formal_part subprogram_specification;
generic_package_declaration ::=
generic_formal_part package_specification;
generic_formal_part ::= generic {generic_formal_parameter_declaration | use_clause}
generic_formal_parameter_declaration ::=
formal_object_declaration
| formal_type_declaration
| formal_subprogram_declaration
| formal_package_declaration
Static Semantics
A generic_declaration declares a generic unit -- a generic package, generic procedure or generic function, as appropriate.
An entity is a generic formal entity if it is declared by a generic_formal_parameter_declaration. ``Generic formal,'' or simply ``formal,'' is used as a prefix in referring to objects, subtypes (and types), functions, procedures and packages, that are generic formal entities, as well as to their respective declarations. Examples: ``generic formal procedure'' or a ``formal integer type declaration.''
Dynamic Semantics
The elaboration of a generic_declaration has no effect.
Examples
Examples of generic formal parts:
generic -- parameterless
generic
Size : Natural; -- formal object
generic
Length : Integer := 200; -- formal object with a default expression
Area : Integer := Length*Length; -- formal object with a default expression
generic
type Item is private; -- formal type
type Index is (<>); -- formal type
type Row is array(Index range <>) of Item; -- formal type
with function "<"(X, Y : Item) return Boolean; -- formal subprogram
Examples of generic declarations declaring generic subprograms Exchange and Squaring:
generic
type Elem is private;
procedure Exchange(U, V : in out Elem);
generic
type Item is private;
with function "*"(U, V : Item) return Item is <>;
function Squaring(X : Item) return Item;
Example of a generic declaration declaring a generic package:
generic
type Item is private;
type Vector is array (Positive range <>) of Item;
with function Sum(X, Y : Item) return Item;
package On_Vectors is
function Sum (A, B : Vector) return Vector;
function Sigma(A : Vector) return Item;
Length_Error : exception;
end On_Vectors;
About DocAda Light:
Preface / Preliminary
/ Help
/ TOC
/ Copyright
DocAda Online at the Ada Home:
Complete RM95
/ Updates
/ News
|
|
|
| ![]()