comp.lang.ada
 help / color / mirror / Atom feed
From: John Smith <yoursurrogategod@gmail.com>
Subject: Re: I do not understand this error...
Date: Sun, 7 Feb 2016 14:11:45 -0800 (PST)
Date: 2016-02-07T14:11:45-08:00	[thread overview]
Message-ID: <f5e875a7-cd82-4313-b605-e05f494b4374@googlegroups.com> (raw)
In-Reply-To: <n96uuf$stn$1@gioia.aioe.org>

Hello Dmitry,

What is Gtk.Missed?  That does not seem to exist according to the docs:
http://docs.adacore.com/gtkada-docs/gtkada_rm/gtkada_rm/

On Sunday, February 7, 2016 at 3:23:59 AM UTC-5, Dmitry A. Kazakov wrote:
> 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


  reply	other threads:[~2016-02-07 22:11 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
2016-02-07 22:11       ` John Smith [this message]
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