with Ada.Unchecked_Deallocation; package body Rx.Tools.Lazies is procedure Free is new Ada.Unchecked_Deallocation (Content, Ptr); --------- -- Get -- --------- function Get (This : in out Lazy) return Ptr is X : Ptr; begin This.Safe.Get (X); return X; end Get; ---------- -- Safe -- ---------- protected body Safes is --------- -- Get -- --------- procedure Get (X : in out Ptr) is begin if Instance /= null then X := Instance; else Instance := new Content; X := Instance; end if; end Get; ---------- -- Free -- ---------- procedure Free is begin Free (Instance); end Free; end Safes; -------------- -- Finalize -- -------------- overriding procedure Finalize (This : in out Lazy) is begin This.Safe.Free; end Finalize; end Rx.Tools.Lazies;