From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Issue with GNAT GPL 2009 and GtkAda
Date: Fri, 26 Jun 2009 19:28:25 +0200
Date: 2009-06-26T19:28:19+02:00 [thread overview]
Message-ID: <3d07k0r3scol$.l2mvcomfxk1c$.dlg@40tude.net> (raw)
In-Reply-To: 4a44f758$0$1538$426a74cc@news.free.fr
On Fri, 26 Jun 2009 18:29:11 +0200, Damien Carbonne wrote:
> Niklas Holsti a �crit :
>> > Damien Carbonne <damien.carbonne@free.fr> writes:
>> >>
>> >> type Listener is interface;
>> >> procedure Process (L : in out Listener) is abstract;
>> ...
>> >> type Base is tagged null record;
>> ...
>> >> type Derived is new Base and Listener with null record;
>> >> overriding procedure Process (D : in out Derived);
>>
>> Stephen Leake wrote:
>>> The problem is clear here.
>>>
>>> "D : in out Derived" is allowed to create a copy of the actual
>>> parameter.
>>
>> Huh? Do you mean that this "D" parameter may be passed by copy? But
>> "Derived" is a tagged type, and tagged types are passed by reference,
>> not by copy. Or so I thought.
>>
> I also thought that tagged types were always passed by reference,
> whatever the mode (in, out, in out) is.
Correct.
> I'll have to read Ada RM !
> If this is true, it means that using in/out/in out modes is almost
> impossible in the code I write if this code must be mixed with code from
> third party libraries (like GtkAda) that use access almost everywhere. sad.
No, GtkAda does not use controlled or tagged types when it talks to Gtk.
Such types should not have C convention. Instead of that GtkAda associates
a C type with each tagged Ada one, which serves as a proxy. The address of
this C object can be obtained using the Get_Object call. You will often
find it in the implementation of GtkAda subroutines.
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
next prev parent reply other threads:[~2009-06-26 17:28 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-06-23 21:52 Issue with GNAT GPL 2009 and GtkAda Damien Carbonne
2009-06-24 7:40 ` Dmitry A. Kazakov
2009-06-24 10:15 ` Stephen Leake
2009-06-25 9:06 ` Stephen Leake
2009-06-25 9:39 ` Dmitry A. Kazakov
2009-06-25 19:02 ` Damien Carbonne
2009-06-26 9:31 ` Stephen Leake
2009-06-26 11:18 ` Niklas Holsti
2009-06-26 16:29 ` Damien Carbonne
2009-06-26 17:28 ` Dmitry A. Kazakov [this message]
2009-06-26 19:27 ` Damien Carbonne
2009-06-26 19:50 ` Dmitry A. Kazakov
2009-06-26 21:51 ` Randy Brukardt
2009-06-27 11:11 ` Stephen Leake
2009-06-27 17:04 ` Robert A Duff
2009-06-30 11:11 ` Stephen Leake
2009-06-30 18:10 ` Robert A Duff
2009-06-29 22:11 ` Randy Brukardt
2009-06-30 11:13 ` Stephen Leake
2009-06-30 15:26 ` Adam Beneschan
2009-06-30 15:59 ` Adam Beneschan
2009-06-30 23:11 ` Randy Brukardt
2009-06-27 9:56 ` Stephen Leake
2009-06-26 21:03 ` Damien Carbonne
2009-06-27 11:21 ` Stephen Leake
2009-06-27 12:25 ` Damien Carbonne
2009-06-27 12:35 ` Damien Carbonne
2009-06-29 22:15 ` Randy Brukardt
2009-07-01 19:22 ` Damien Carbonne
2009-06-30 0:48 ` Adam Beneschan
2009-06-30 11:18 ` Stephen Leake
2009-06-25 20:49 ` Randy Brukardt
2009-06-26 7:20 ` Dmitry A. Kazakov
2009-06-26 8:17 ` Georg Bauhaus
2009-06-26 8:52 ` Dmitry A. Kazakov
2009-06-26 21:38 ` Randy Brukardt
2009-06-27 7:47 ` Dmitry A. Kazakov
2009-06-29 21:59 ` Randy Brukardt
2009-06-30 8:31 ` Dmitry A. Kazakov
2009-06-26 21:31 ` Randy Brukardt
2009-06-27 7:53 ` Dmitry A. Kazakov
2009-06-26 8:39 ` Alex R. Mosteo
2009-06-26 9:07 ` Dmitry A. Kazakov
2009-06-27 9:53 ` Stephen Leake
2009-06-26 21:40 ` Randy Brukardt
2009-06-29 10:04 ` Alex R. Mosteo
2009-06-26 9:02 ` Stephen Leake
2009-06-26 9:14 ` Dmitry A. Kazakov
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox