comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: I do not understand this error...
Date: Sun, 7 Feb 2016 09:23:44 +0100
Date: 2016-02-07T09:23:44+01:00	[thread overview]
Message-ID: <n96uuf$stn$1@gioia.aioe.org> (raw)
In-Reply-To: 8778e70b-81e1-4dcc-8ecb-8bcaceb74b57@googlegroups.com

On 2016-02-07 01:34, John Smith wrote:
> The the following example is wrong:
> http://rosettacode.org/wiki/Hello_world/Graphical#Ada
>
> If so, then how would you fix this?
>
> On Saturday, February 6, 2016 at 6:47:49 PM UTC-5, Jeffrey R. Carter wrote:
>> On 02/06/2016 03:55 PM, John Smith wrote:
>>>
>>> gtk_test.adb:16:04: instantiation error at gtk-handlers.ads:1039
>>> gtk_test.adb:16:04: subprogram must not be deeper than access type
>>> gtk_test.adb:17:04: instantiation error at gtk-handlers.ads:437
>>> gtk_test.adb:17:04: subprogram must not be deeper than access type
>>
>> This an accessibility check. It means that it's possible for an
>> access-to-subprogram value to be copied into a variable which has longer life
>> than the subprogram. This is not allowed by the language.

Generic packages from Gtk.Handlers cannot be instantiated in the main 
procedure, due to accessibility check, as Jeffrey wrote.

To resolve this move instantiations Handlers and Return_Handles into a 
separate [library level] package and use this package in the main procedure.

In GtkAda contributions there are pre-instantiated handlers to deal with 
gtk program exit. A working example will look like:
--------------------------------------------
with Gtk.Label;   use Gtk.Label;
with Gtk.Window;  use Gtk.Window;

with Gtk.Main;
with Gtk.Missed;

procedure gtk_test is
    Window : Gtk_Window;
    Label  : Gtk_Label;
  begin
    Gtk.Main.Init;
    Gtk.Window.Gtk_New (Window);
    Window.On_Delete_Event (Gtk.Missed.Delete_Event_Handler'Access);
    Window.On_Destroy (Gtk.Missed.Destroy_Handler'Access);
    Gtk_New (Label, "Goodbye, World!");
    Window.Add (Label);
    Window.Show_All;
    Gtk.Main.Main;
end gtk_test;
-----------------------------------------------
http://www.dmitry-kazakov.de/ada/gtkada_contributions.htm

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de

  parent reply	other threads:[~2016-02-07  8:23 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-06 22:55 I do not understand this error John Smith
2016-02-06 23:47 ` Jeffrey R. Carter
2016-02-07  0:34   ` John Smith
2016-02-07  4:36     ` Jeffrey R. Carter
2016-02-08  3:51       ` John Smith
2016-02-08  4:41         ` Jeffrey R. Carter
2016-02-08 23:33           ` Robert A Duff
2016-02-09  5:25             ` Jeffrey R. Carter
2016-02-09  9:43             ` G.B.
2016-02-09 16:14               ` AdaMagica
2016-02-08 23:39           ` John Smith
2016-02-09  5:25             ` Jeffrey R. Carter
2016-02-07  8:23     ` Dmitry A. Kazakov [this message]
2016-02-07 22:11       ` John Smith
2016-02-07 23:26         ` John Smith
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox