-- A controlled GC to avoid resource leaks. -- On creation it is allocated, on finalization it is unref'ed. with Gdk.Drawable; use Gdk.Drawable; with Gdk.GC; use Gdk.GC; with Ada.Finalization; package Agpl.Gdk.Controlled_Gc is pragma Elaborate_Body; type Object (Draw : Gdk_Drawable) is tagged limited private; function Get_Gc (This : in Object) return Gdk_GC; function "+" (This : in Object) return Gdk_GC renames Get_Gc; private type Object (Draw : Gdk_Drawable) is new Ada.Finalization.Limited_Controlled with record Gc : Gdk_GC; end record; procedure Initialize (This : in out Object); procedure Finalize (This : in out Object); end Agpl.Gdk.Controlled_Gc;