Generic (Unidades genéricas)

Explicación

Una unidad genérica (subprograma genérico o paquete genérico) es una plantilla parametrizada a partir de la que se pueden obtener, concretando los parámetros, unidades no genéricas que se conocen como instancias de la unidad genérica correspondiente.

Una unidad genérica se compone de una declaración genérica (generic_declaration) y un cuerpo, que es igual que el de cualquier unidad no genérica (procedimiento, función o paquete).

Sintaxis

generic_declaration ::= generic_subprogram_declaration | generic_package_declaration

generic_subprogram_declaration ::= 
    generic_formal_part procedure defining_program_unit_name [formal_part];
  | generic_formal_part function defining_designator [formal_part] result_profile;

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

Ejemplo

--  Declaración de un procedimiento genérico
generic 
   type Tipo is private; 
   with function "<"(X,Y: Tipo) return Boolean; 
   type Indice is (<>); 
   type Lista is array(Indice range <>) of Tipo; 
procedure Ordenar(L: in out Lista);
--  Declaración de un paquete genérico
generic 
   type T_Elemento is private; 
package Pilas is 
   ...
end Pilas;