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



         

Счетчик использования - часть 2


используется переменная The_Counter.

Тело данного пакета может быть описано следующим образом:

package body Log is

procedure Initialize (Self: in out Item) is

begin

The_Counter := The_Counter + 1;

if The_Counter = 1 then

Ada.Text_IO.Open (File => The_Log_File, Mode => Ada.Text_IO.Append_File, Name => "log.txt"); end if; end Initialize;

procedure Finalize (Self: in out Item) is

begin

if The_Counter = 1 then

Ada.Text_IO.Close (The_Log_File); end if;

The_Counter := The_Counter - 1; end Finalize;

procedure Put_To_Log (Self: in out Item; S: in String) is

begin

. . . -- вывод необходимых данных в файл The_Log_File

end Put_To_Log;

end Log;

Как видно из примера, открытие файла протокола The_Log_File, при создании первого объекта типа Item, и инкремент количества существующих в текущий момент объектов типа Item

в переменной The_Counter

выполняется автоматически вызываемой процедурой Initialize.

Декремент количества существующих в текущий момент объектов типа Item

в переменной The_Counter и закрытие файла протокола The_Log_File

выполняется автоматически вызываемой процедурой Finalize.

Следует заметить, что при рассмотрении данного примера мы не заостряли внимание на структуре типа Item и реализации процедуры Put_To_Log, которая выводит информацию о состоянии объекта в файл протокола, поскольку в данном случае это не имеет принципиального значения.




Содержание  Назад  Вперед