12.2. НАСТРАИВАЕМЫЕ ТЕЛА

Тело настраиваемой подпрограммы или настраиваемого пакета (настраиваемое тело) является шаблоном для тел соответствующих подпрограмм или пакетов, получаемых конкретизацией настройки. Синтаксис настраиваемого тела идентичен обычному телу.

Для каждого описания настраиваемой подпрограммы должно быть соответствующее тело.

Предвыполнение настраиваемого тела не имеет другого эффекта, кроме установления того, что тело начиная с этого момента может быть использовано в качестве шаблона для получения соответствующих экземпляров.

Пример настраиваемого тела процедуры:

procedure EXCHANGE(U, V : in out ELEM) is -—см. пример в 12.1   Т : ELEM; -- формальный тип настройки begin   Т := U;   U := V;   V := Т;end EXCHANGE;

Пример тела настраиваемой функции:

function SQUARING(X : ITEM) return ITEM is -—  см. пример в 12.1 begin   return X*X; -— формальная операция «*» end;

Пример тела настраиваемого пакета:

package body ON_VECTORSis -- см. пример в 12.1   function SUM(A, В : VECTOR) return VECTOR is      RESULT : VECTOR(A'RANGE); -— формальный тип VECTOR      BIAS   : constant INTEGER := B'FIRST - A'FIRST;   begin      if A'LENGTH /= B'LENGTH then          raise LENGTH_ERROR;      end if;      for N in A'RANGE loop         RESULT(N) := SUM(A(N), B(N + BIAS));    -— формальная функция SUM       end loop;      return RESULT;   end;   function SIGMA(A : VECTOR) return ITEM is      TOTAL : ITEM := A(A'FIRST);              -— формальный тип ITEM    begin      for N in A'FIRST + 1 .. A'LAST loop         TOTAL := SUM(TOTAL, A(N));            -— формальная функция SUM       end loop;      return TOTAL;   end;end;

Ссылки: конкретизация настройки 12.3, настраиваемая подпрограмма 12.1,настраиваемое тело 12.1, настраиваемый пакет 12.1, пакет 7, подпрограмма 6, Предвыполнение 3.9, тело 3.9, тело пакета 7.1, тело подпрограммы 6.3, экземпляр 12.3.