From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: I'm facing an issue with: call to abstract procedure must be dispatching
Date: Tue, 8 Dec 2015 18:42:04 +0100
Date: 2015-12-08T18:42:04+01:00 [thread overview]
Message-ID: <5hfb2q9imjfu.zs3xp9gxw0d3.dlg@40tude.net> (raw)
In-Reply-To: 12dc7aea-933d-4271-95bd-10df808917e4@googlegroups.com
On Tue, 8 Dec 2015 09:24:58 -0800 (PST), Serge Robyns wrote:
> On Tuesday, 8 December 2015 18:05:09 UTC+1, Dmitry A. Kazakov wrote:
>
>> The_Store : aliased T_Store;
>> Client : T_Client;
>> begin
>> The_Store.Insert (Client);
>
> Yes, I know this does work. I did compile the example first like that.
> But this is an attempt to "simplify" the problem to post it here. What
> really happens is the following.
>
> In the main package I'm actually calling other packages passing the
> The_Store. For example:
>
> -- with Store.Gnatcoll_version;
> with Store.Inmemory_Container_version;
>
> Both implement the same interface but with different underlying storage.
> In the case of in_memory, I'll keep containers inside the type T_Data_Store
> and in case of Gnatcoll some DB parameters inside T_Data_Store
> and then ...
>
> Do_Something (The_Store);
>
> The signature of Do_Something is
> procedure Do_Something (A_Store : in out T_Abstract_Store);
In which relation is Do_Something to T_Abstract_Store?
1. a primitive operation =
has a separate implementation for each concrete type (from the class)
2. class-wide operation =
has same implementation for all types (from the class)
(anything else is a design fault)
> Inside that procedure I'm using the A_Store. This regardless how A_Store
> got implemented.
That sounds like #2. Then it must be declared as:
procedure Do_Something (A_Store : in out T_Abstract_Store'Class);
> However all "users" will just call "A_Store.Insert (Something);" or
> "Something := A_Store.Get (ID);", etc.
You lost me here. What has this to do with Do_Something?
> If I've to use the "real" instance, I've to edit all packages that
> "with"'s depending on the case. In some languages this could controlled
> by a pre-processor directive. Any other suggestion?
I don't understand the problem. You are trying to explain a [failed]
solution of some problem. I would suggest you to start with the problem.
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
next prev parent reply other threads:[~2015-12-08 17:42 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-08 16:45 I'm facing an issue with: call to abstract procedure must be dispatching Serge Robyns
2015-12-08 16:59 ` G.B.
2015-12-08 17:04 ` Dmitry A. Kazakov
2015-12-08 17:24 ` Serge Robyns
2015-12-08 17:42 ` Dmitry A. Kazakov [this message]
2015-12-08 18:00 ` Serge Robyns
2015-12-08 18:22 ` Dmitry A. Kazakov
2015-12-08 20:21 ` Serge Robyns
2015-12-08 21:08 ` Dmitry A. Kazakov
2015-12-08 21:55 ` Serge Robyns
2015-12-08 22:43 ` Serge Robyns
2015-12-08 22:55 ` Jeffrey R. Carter
2015-12-09 23:03 ` Randy Brukardt
2015-12-10 8:38 ` Serge Robyns
2015-12-10 23:43 ` Randy Brukardt
2015-12-09 8:48 ` Dmitry A. Kazakov
2015-12-09 10:53 ` G.B.
2015-12-09 12:03 ` Dmitry A. Kazakov
2015-12-09 13:42 ` G.B.
2015-12-09 14:23 ` Dmitry A. Kazakov
2015-12-08 22:55 ` Jeffrey R. Carter
2015-12-08 23:04 ` Serge Robyns
2015-12-08 23:42 ` Jeffrey R. Carter
2015-12-09 13:40 ` Jere
2015-12-09 13:48 ` G.B.
2015-12-09 15:33 ` Jere
2015-12-13 21:37 ` Shark8
2015-12-14 2:20 ` Jeffrey R. Carter
2015-12-15 7:26 ` Shark8
2015-12-08 17:30 ` Jeffrey R. Carter
2015-12-08 17:48 ` Serge Robyns
2015-12-08 18:46 ` Jeffrey R. Carter
2015-12-08 20:28 ` Serge Robyns
2015-12-08 22:20 ` Simon Wright
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox