From: ake.ragnar.dahlgren@gmail.com
Subject: Re: Access type to member procedure of instance (Object Oriented programming in Ada)
Date: Thu, 22 Nov 2012 01:47:39 -0800 (PST)
Date: 2012-11-22T01:47:39-08:00 [thread overview]
Message-ID: <f197c0e9-f5aa-49a6-a5b6-962b2a41fc71@googlegroups.com> (raw)
In-Reply-To: <9b0bcb37-8ae3-440f-af4f-a796702e4250@googlegroups.com>
On Monday, November 19, 2012 10:59:42 AM UTC+1, 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? This problem has it's origin in the implementation of the MVC pattern for a GtkAda application. Consider the following: package Some_Package is type Message_Type is tagged null record; procedure Print(Message : Message_Type); end Some_Package; package body Some_Package is procedure Print (Message : Message_Type) is begin null; end Print; end Some_Package; Then it is possible to create the following Main application that compiles just fine: with Some_Package; procedure Main is Message : Some_Package.Message_Type; begin Message.Print; end Main; Is it possible to create a parameterless access type to the Message.Print procedure? The following application refuses to compile: with Some_Package; procedure Main is Message : Some_Package.Message_Type; Method_Ref : access procedure := Message.Print'Access; begin Method_Ref; end Main; The error message is: no selector "Print" for type "Message_Type" defined at some_package.ads:3 It is possible to create a workaround: with Some_Package; procedure Main is Message : Some_Package.Message_Type; procedure Method_Ref is begin Message.Print; end Method_Ref; begin Method_Ref; end Main; Is there a better way? Or is this the optimal way? Regards, Åke Ragnar Dahlgren
I want to thank everybody for replying. I had no idea about the "renames" feature as Randy pointed out. Brian expressed it very well: I am astonished!
As for the Gtkada application I have given up on implementing the MVC pattern using tagged types. Instead I choose the same approach as was done in the Ada in Denmark wiki.
Best regards,
Åke Ragnar Dahlgren
next prev parent reply other threads:[~2012-11-22 9:47 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
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 [this message]
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