Ада-95. Компилятор GNAT
66ac8edd

Уменьшение затрат времени с помощью утилиты gnatstub


Начиная с версии 3.11p, система компилятора GNAT предусматривает утилиту gnatstub.

Утилита gnatstub может быть использована для построения файла прототипа тела пакета в соответствии с предоставленным файлом спецификации пакета.

В результате обработки файла спецификации пакета, в котором указаны спецификации подпрограмм, утилита gnatstub создает файл тела пакета, в котором располагаются "пустые" тела подпрограмм, соответствующие их спецификациям.

Такие "пустые" подпрограммы часто называют "заглушками" ("stubs").

Использование утилиты gnatstub может оказаться полезным при разработке больших программных проектов, когда программист разрабатывает целый набор файлов спецификаций пакетов, а затем проверяет правильность общего дизайна проекта.

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

Предположим, что у нас есть файл с исходным текстом спецификации пакета tiny.ads, содержимое которого имеет следующий вид:

package Tiny is

procedure Simple_Procedure; function Simple_Function return Boolean;

end Tiny;

Шаблон тела пакета может быть создан с помощью команды:



gnatstub tiny.ads

В результате, утилита gnatstub генерирует файл tiny.adb, который имеет следующий вид:

package body Tiny is

--------------------- -- Simple_Function -- ---------------------

function Simple_Function return Boolean is begin

return Simple_Function; end Simple_Function;

---------------------- -- Simple_Procedure -- ----------------------

procedure Simple_Procedure is

begin

null; end Simple_Procedure;

end Tiny;

Такое тело пакета имеет соответствующий формат и готово к компиляции.

Естественно, что такое тело пакета, реально, ничего полезного не выполняет.

Ответственность за описание соответствующих деталей реализации полностью возлагается на программиста.



Содержание раздела