From: Shark8 <onewingedshark@gmail.com>
Subject: Re: Properties
Date: Fri, 3 Dec 2010 19:12:16 -0800 (PST)
Date: 2010-12-03T19:12:16-08:00 [thread overview]
Message-ID: <6326ff3f-3972-4b17-be57-a7b5d3b5ffe8@29g2000prb.googlegroups.com> (raw)
In-Reply-To: 1x7ohnuflqoqs.58dfeefat1q2.dlg@40tude.net
On Dec 3, 3:38 pm, "Dmitry A. Kazakov" <mail...@dmitry-kazakov.de>
wrote:
> On Fri, 3 Dec 2010 11:52:22 -0800 (PST), Shark8 wrote:
> > On Dec 3, 2:05 am, "Dmitry A. Kazakov" <mail...@dmitry-kazakov.de>
> > wrote:
> >> The bottom line, interfaces must be removed from Ada.
> >> Instead of that an interface must be made inheritable
> >> from any concrete type. This is the same idea as with
> >> abstract record, array etc types.
>
> > Wouldn't this be alleviated by two things:
> > Allowing INTERFACE [keyword] objects to have fields (properties as
> > I've described, or somesuch)?
>
> These are different problems:
>
> 1. Record interface, this is in effect what you proposed:
>
> type Members is interface record
> A : Integer; -- Not a physical member only an interface "Object.A"
> end record;
>
> [I want other interfaces too, like array interface, access interface etc.]
>
> 2. Interface inheritance. Let you have some type:
>
> type T is tagged ...
> procedure Foo (X : T);
>
> You have to replace it to
>
> type Interface_of_T is interface;
> procedure Foo (X : Interface_T) is abstract;
>
> type T is ... and Interface_of_T ...
> overriding procedure Foo (X : T);
>
> In order to be able to say:
>
> type S is ... and Interface_of_T ...
> overriding procedure Foo (X : S);
>
> It is boring. Each type obviously has an interface, which must be
> inheritable from.
>
> > Allowing objects some sort of self/this/me attribute where the result
> > is a Not Null Access to its classwide-type*? (Or am I misunderstanding
> > what you mean by the need for "a fat pointer transparent to all widget
> > operations"?)
>
> I mean this:
>
> -- Anything you can do with a widget
> type Widget_Interface is limited interface;
> procedure Draw (Object : in out Widget_Interface) is abstract;
> ...
>
> -- Implementation of a widget
> type Widget_Object is new Widget_Interface with ...;
> overriding procedure Draw (Object : in out Widget_Object);
>
> type Widget_Object_Ptr is access all Widget_Object;
>
> -- Public interface of a widget, a reference
> type Widget is new Ada.Finalization.Controlled and Widget_Interface with
> record
> Ptr : Widget_Object_Ptr;
> end record;
> overriding procedure Draw (Object : in out Widget);
>
> procedure Draw (Object : in out Widget) is
> begin
> Draw (Object.Ptr.all);
> end Draw;
>
> Widget_Object is private, publicly accessible is its fat pointer/handle
> Widget. Both implement the same interface Widget_Interface.
>
> --
> Regards,
> Dmitry A. Kazakovhttp://www.dmitry-kazakov.de
Ah, I see!
Delphi has the nice ability to delegate the implementation for an
interface... so the analog to your type widget would be:
Type
{TObject is the root-object in Delphi}
TWidget = Class( TObject, Widget_Interface )
public
Object : ^Widget_Object implements Widget_Interface;
end; {Class TWidget}
And then all calls to objects of TWidget via Widget_Interface are
automatically routed to the Object field.
next prev parent reply other threads:[~2010-12-04 3:12 UTC|newest]
Thread overview: 96+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-11-28 3:21 Properties Shark8
2010-11-28 8:15 ` Properties Dmitry A. Kazakov
2010-11-28 19:43 ` Properties Shark8
2010-11-29 8:34 ` Properties Dmitry A. Kazakov
2010-12-01 18:15 ` Properties Shark8
2010-11-28 12:37 ` Properties Georg Bauhaus
2010-11-28 21:22 ` Properties Shark8
2010-11-29 16:54 ` Properties Georg Bauhaus
2010-12-01 19:52 ` Properties Martin Krischik
2010-12-01 23:24 ` Properties Georg Bauhaus
2010-12-05 16:15 ` (placepo) Properties Martin Krischik
2010-12-06 23:24 ` Shark8
2010-12-01 23:31 ` Properties Georg Bauhaus
2010-11-30 1:49 ` Properties Randy Brukardt
2010-11-30 16:58 ` Properties Charmed Snark
2010-11-30 17:22 ` Properties Dmitry A. Kazakov
2010-11-30 20:27 ` Properties Warren
2010-12-01 8:39 ` Properties Dmitry A. Kazakov
2010-12-01 15:21 ` Properties Warren
2010-12-01 15:59 ` Properties Dmitry A. Kazakov
2010-12-01 16:20 ` Properties Warren
2010-12-01 18:22 ` Properties Dmitry A. Kazakov
2010-12-01 19:36 ` Properties Shark8
2010-12-01 21:13 ` Properties Dmitry A. Kazakov
2010-12-01 21:35 ` Properties Maciej Sobczak
2010-12-01 21:45 ` Properties Dmitry A. Kazakov
2010-12-02 9:57 ` Properties Maciej Sobczak
2010-12-02 10:26 ` Properties Dmitry A. Kazakov
2010-12-02 15:25 ` Properties Maciej Sobczak
2010-12-02 15:46 ` Properties Dmitry A. Kazakov
2010-12-02 21:11 ` Properties Maciej Sobczak
2010-12-02 22:19 ` Properties Dmitry A. Kazakov
2010-12-03 4:43 ` Properties Randy Brukardt
2010-12-03 13:53 ` Properties Maciej Sobczak
2010-12-03 21:32 ` Properties Randy Brukardt
2010-12-04 22:13 ` Properties Maciej Sobczak
2010-12-06 23:30 ` Properties Shark8
2010-12-06 23:33 ` Properties Randy Brukardt
2010-12-04 17:43 ` Properties Simon Wright
2010-12-04 20:48 ` Properties Dmitry A. Kazakov
2010-12-04 22:27 ` Properties Simon Wright
2010-12-04 22:31 ` Properties Vinzent Hoefler
2010-12-03 4:24 ` Properties Randy Brukardt
2010-12-03 5:00 ` Properties Shark8
2010-12-03 21:10 ` Properties Randy Brukardt
2010-12-03 23:34 ` Properties Jeffrey Carter
2010-12-06 6:02 ` Properties Brad Moore
2010-12-06 23:25 ` Properties Shark8
2010-12-01 19:48 ` Properties Randy Brukardt
2010-12-01 21:10 ` Properties Warren
2010-12-02 0:03 ` Properties Shark8
2010-12-02 16:45 ` Properties Warren
2010-12-02 17:32 ` Properties Dmitry A. Kazakov
2010-12-02 20:45 ` Properties Warren
2010-12-02 21:17 ` Properties Adam Beneschan
2010-12-02 21:40 ` Properties Warren
2010-12-03 3:34 ` Properties Shark8
2010-12-03 8:16 ` Properties Thomas Løcke
2010-12-02 20:52 ` Properties Pascal Obry
2010-12-02 19:46 ` Properties Adam Beneschan
2010-12-02 20:38 ` Properties Warren
2010-12-02 21:39 ` Properties Jeffrey Carter
2010-12-02 21:55 ` Properties Warren
2010-12-03 9:33 ` Properties Anonymous
2010-12-03 3:47 ` Properties Shark8
2010-12-03 0:09 ` Properties Robert A Duff
2010-12-03 15:49 ` Properties Warren
2010-12-03 20:07 ` Properties Shark8
2010-12-06 21:01 ` Properties Warren
2010-12-06 23:22 ` Properties Shark8
2010-12-07 14:37 ` Properties Warren
2010-12-08 21:13 ` Properties Simon Wright
2010-12-09 1:21 ` Properties Shark8
2010-12-06 23:43 ` Properties Randy Brukardt
2010-12-07 0:56 ` Properties Jeffrey Carter
2010-12-07 11:23 ` Properties Maciej Sobczak
2010-12-07 11:51 ` Properties Georg Bauhaus
2010-12-07 15:35 ` Properties Maciej Sobczak
2010-12-07 17:02 ` Properties Georg Bauhaus
2010-12-07 14:39 ` Properties Warren
2010-12-03 15:40 ` Properties Warren
2010-12-03 19:56 ` Properties Shark8
2010-12-03 20:12 ` Properties Warren
2010-12-03 5:53 ` Properties Shark8
2010-12-03 9:05 ` Properties Dmitry A. Kazakov
2010-12-03 19:52 ` Properties Shark8
2010-12-03 21:14 ` Properties Randy Brukardt
2010-12-04 5:35 ` Properties Shark8
2010-12-04 14:23 ` Properties Peter C. Chapin
2010-12-04 18:53 ` Properties Shark8
2010-12-13 15:10 ` Properties Brian Drummond
2010-12-03 22:38 ` Properties Dmitry A. Kazakov
2010-12-04 3:12 ` Shark8 [this message]
2010-12-04 13:19 ` Properties Georg Bauhaus
-- strict thread matches above, loose matches on Subject: below --
2010-12-04 19:53 Properties Shark8
2010-12-04 23:27 ` Properties Thomas Løcke
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox