comp.lang.ada
 help / color / mirror / Atom feed
From: "J-P. Rosen" <rosen@adalog.fr>
Subject: Re: GtkAda : Trying to derive a widget
Date: Fri, 9 Apr 2021 08:12:19 +0200	[thread overview]
Message-ID: <s4or84$ets$1@dont-email.me> (raw)
In-Reply-To: <606fe610$0$3717$426a74cc@news.free.fr>

Le 09/04/2021 à 07:28, DrPi a écrit :
>> Without "use" Initialize is unambiguous.
>>
> That makes sense.
> However, I don't understand why there is ambiguity when using "use".
> Debug_Panel (the type) is of type Debug_Panel_Record, so Initialize 
> should resolve to the one using this type. Well, I guess I'm wrong.
No, the type is "access Debug_Panel_Record'Class", and the other 
initialize is for "access Gtk_Scrolled_Window_Record'Class", which 
covers the other one.

Remember that a class wide type ('Class) is a different type that covers 
all descendants.

>> P.S. When you create new widget it is better to use a more general 
>> ancestor hiding insufficient details, e.g.
>>
>>    type Debug_Panel_Record is
>>       new Gtk.Widget.Gtk_Widget_Record with private;
>>    ...
>> private
>>    type Debug_Panel_Record is
>>       new Gtk.Scrolled_Window.Gtk_Scrolled_Window_Record with
>>    record
>>       ...
>>    end record;
> 
> I'm surprized this is possible to write such a thing in Ada.
> What does the compiler do with this ?
> There is no problem, since 
Gtk.Scrolled_Window.Gtk_Scrolled_Window_Record is a descendant of 
Gtk.Widget.Gtk_Widget_Record. There is no lie: a Debug_Panel_Record IS A 
Gtk_Widget_Record. The private view has more information: it actually IS 
A Gtk_Scrolled_Window_Record, but the extra properties are not 
accessible outside from the package body.

-- 
J-P. Rosen
Adalog
2 rue du Docteur Lombard, 92441 Issy-les-Moulineaux CEDEX
Tel: +33 1 45 29 21 52, Fax: +33 1 45 29 25 00
http://www.adalog.fr

  reply	other threads:[~2021-04-09  6:12 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-08 19:27 GtkAda : Trying to derive a widget DrPi
2021-04-08 22:27 ` Dmitry A. Kazakov
2021-04-09  5:28   ` DrPi
2021-04-09  6:12     ` J-P. Rosen [this message]
2021-04-09 11:32       ` DrPi
2021-04-09  6:18     ` Dmitry A. Kazakov
2021-04-09 11:42       ` DrPi
2021-04-09 12:23         ` Dmitry A. Kazakov
2021-04-09 13:37           ` DrPi
replies disabled

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