-- part of AdaYaml, (c) 2017 Felix Krause
-- released under the terms of the MIT license, see the file "copying.txt"
with Ada.Unchecked_Deallocation;
package body Yaml.Events is
procedure Free is new Ada.Unchecked_Deallocation
(Event_Array, Event_Array_Access);
procedure Finalize (Object : in out Event_Holder) is
Ptr : Event_Array_Access := Object.Data;
begin
Free (Ptr);
end Finalize;
procedure Copy_Data (Source : Event_Holder;
Target : not null Event_Array_Access) is
begin
Target (Target.all'First .. Target.all'First + Source.Data.all'Length - 1)
:= Source.Data.all;
end Copy_Data;
procedure Grow (Object : in out Event_Holder'Class) is
New_Data : constant not null Event_Array_Access := new Event_Array
(1 .. Object.Data.all'Length * 2);
Old_Data : Event_Array_Access := Object.Data;
begin
Object.Copy_Data (New_Data); -- dispatches
Object.Data := New_Data;
Free (Old_Data);
end Grow;
end Yaml.Events;