comp.lang.ada
 help / color / mirror / Atom feed
From: Adam Beneschan <adam@irvine.com>
Subject: Re: Access type to member procedure of instance (Object Oriented programming in Ada)
Date: Mon, 19 Nov 2012 08:18:46 -0800 (PST)
Date: 2012-11-19T08:18:46-08:00	[thread overview]
Message-ID: <49cdda31-d0bd-42f2-8076-65504105d07e@googlegroups.com> (raw)
In-Reply-To: <9b0bcb37-8ae3-440f-af4f-a796702e4250@googlegroups.com>

On Monday, November 19, 2012 1:59:42 AM UTC-8, ake.ragna...@gmail.com wrote:
> Not sure if this has already been discussed but: Is it possible to define a pointer to a member procedure of an instance?

No, I don't think so.  I've been thinking about proposing an addition to Ada to do something like this, since I think this feature does exist in other languages (C# delegates, in particular; I don't know C++ well enough to know whether there's something similar there).  

Ada already has "access protected procedure", in which an access object has to have both a reference to the code being called and a reference to the (protected) object being operated on.  So at first glance it seems like adding a new kind of access type "access blahblah procedure" (perhaps "access tagged procedure", if we want to avoid defining a new reserved word), where the access object has both a reference to the subprogram code and a reference to the object being operated on, wouldn't be too difficult.  My thinking here is that if you say Obj.Op'access, and Obj has a class-wide type, then an indirect call through the access type would dispatch to the correct Op.  The tricky thing is figuring out whether it would play nice with other language features, such as pre-/post-conditions.  

Unlike the other posters here, I haven't studied your example to see whether it is really a good example of a case where a feature like this is needed, or whether there's a good enough workaround using existing Ada features to solve your particular problem.

                                -- Adam



  parent reply	other threads:[~2012-11-19 16:18 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-11-19  9:59 Access type to member procedure of instance (Object Oriented programming in Ada) ake.ragnar.dahlgren
2012-11-19 11:13 ` Georg Bauhaus
2012-11-19 11:39 ` Brian Drummond
2012-11-20 11:43   ` Brian Drummond
2012-11-20 21:57     ` Randy Brukardt
2012-11-19 13:03 ` sbelmont700
2012-11-19 16:18 ` Adam Beneschan [this message]
2012-11-19 17:02   ` Peter C. Chapin
2012-11-19 18:23     ` Adam Beneschan
2012-11-19 20:57       ` Peter C. Chapin
2012-11-19 21:26       ` Dmitry A. Kazakov
2012-11-19 22:19         ` Adam Beneschan
2012-11-20 10:12           ` Dmitry A. Kazakov
2012-11-20 21:51             ` Randy Brukardt
2012-11-21  8:24               ` Dmitry A. Kazakov
2012-11-21 22:19                 ` Randy Brukardt
2012-11-20 10:59     ` Brian Drummond
2012-11-19 20:22 ` ake.ragnar.dahlgren
2012-11-20 11:16   ` Brian Drummond
2012-11-19 20:52 ` ake.ragnar.dahlgren
2012-11-19 21:56   ` Dmitry A. Kazakov
2012-11-22  9:49     ` ake.ragnar.dahlgren
2012-11-19 22:13   ` sbelmont700
2012-11-19 23:59 ` Randy Brukardt
2012-11-20  0:05   ` Randy Brukardt
2012-11-20  1:00     ` Adam Beneschan
2012-11-20 21:38       ` Randy Brukardt
2012-11-20 23:43         ` Adam Beneschan
2012-11-21 22:12           ` Randy Brukardt
2012-11-22  1:59             ` Adam Beneschan
2012-11-29  2:43               ` Randy Brukardt
2012-11-20  0:52   ` Adam Beneschan
2012-11-20 21:34     ` Randy Brukardt
2012-11-20 11:28   ` Brian Drummond
2012-11-20 14:27     ` Georg Bauhaus
2012-11-20 15:52     ` Adam Beneschan
2012-11-22  9:47 ` ake.ragnar.dahlgren
2012-11-22 10:25   ` Dmitry A. Kazakov
2012-12-02 20:42     ` ake.ragnar.dahlgren
2012-12-03 11:21       ` Dmitry A. Kazakov
2012-12-03 20:21         ` ake.ragnar.dahlgren
2012-12-03 22:15           ` Dmitry A. Kazakov
2012-12-25 21:51           ` Gustaf Thorslund
2012-12-26 18:11             ` ake.ragnar.dahlgren
2012-11-22 12:13   ` Brian Drummond
2012-12-03 16:17     ` ake.ragnar.dahlgren
2012-12-03 21:56       ` Brian Drummond
replies disabled

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