46 lines
1.1 KiB
Ada
46 lines
1.1 KiB
Ada
-- { dg-do compile }
|
|
-- { dg-options "-O" }
|
|
|
|
with Ada.Unchecked_Deallocation;
|
|
|
|
with Opt46_Pkg;
|
|
|
|
package body Opt46 is
|
|
|
|
type Pattern is abstract tagged null record;
|
|
|
|
type Pattern_Access is access Pattern'Class;
|
|
|
|
procedure Free is new Ada.Unchecked_Deallocation
|
|
(Pattern'Class, Pattern_Access);
|
|
|
|
type Action is abstract tagged null record;
|
|
|
|
type Action_Access is access Action'Class;
|
|
|
|
procedure Free is new Ada.Unchecked_Deallocation
|
|
(Action'Class, Action_Access);
|
|
|
|
type Pattern_Action is record
|
|
Pattern : Pattern_Access;
|
|
Action : Action_Access;
|
|
end record;
|
|
|
|
package Pattern_Action_Table is new Opt46_Pkg (Pattern_Action, Natural, 1);
|
|
|
|
type Session_Data is record
|
|
Filters : Pattern_Action_Table.Instance;
|
|
end record;
|
|
|
|
procedure Close (Session : Session_Type) is
|
|
Filters : Pattern_Action_Table.Instance renames Session.Data.Filters;
|
|
begin
|
|
for F in 1 .. Pattern_Action_Table.Last (Filters) loop
|
|
Free (Filters.Table (F).Pattern);
|
|
Free (Filters.Table (F).Action);
|
|
end loop;
|
|
|
|
end Close;
|
|
|
|
end Opt46;
|