From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: APQ
Date: Fri, 17 Dec 2004 15:12:42 +0100
Date: 2004-12-17T15:12:42+01:00 [thread overview]
Message-ID: <2hju7i5ft73q$.x4md24pt913v.dlg@40tude.net> (raw)
In-Reply-To: sa4d5x9si42.fsf@snoopy.apana.org.au
On Fri, 17 Dec 2004 14:45:17 +1100, Brian May wrote:
> type Root_Connection_Type is abstract new Ada.Finalization.Limited_Controlled with private;
If you are going to rework it, then derive it directly from an abstract
object used for reference counting. That would save one level of
indirection:
type Root_Connection_Type is abstract new Object.Entity with private;
> procedure Connect(C : in out Root_Connection_Type) is abstract;
This is 100% legal. Probably you have conflicting views.
> procedure Connect(C : in out Root_Connection_Type; Same_As : Root_Connection_Type'Class) is abstract;
Are you going to clone connections between different DBs? The above looks
like an attempt to emulate multiple dispatch.!
It should be:
procedure Connect
( C : in out Root_Connection_Type;
Same_As : Root_Connection_Type -- Same types required!
) is abstract;
However would be is pretty useless, when you have a class-wide object at
hand.
I suppose that the idea was to make a copy of a limited object. Then it
should better be:
function Copy (C : Root_Connection_Type)
return Root_Connection_Ptr is abstract;
This would allocate a copy and connect it to the same DB. Because reference
counting is intended you will need dynamic allocation anyway. The user will
of course do it all with handles:
function Copy (C : Handle) return Handle is
Clone_Ptr : Root_Connection_Type_Ptr := Copy (Ptr (C).all);
-- This clones the object pointed by the handle, the reference
-- count of the copy is initially 0
begin
return Ref (Clone_Ptr);
-- Result is a handle, and the reference count is 1, now
end Copy;
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
next prev parent reply other threads:[~2004-12-17 14:12 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-12-15 23:31 APQ Brian May
2004-12-16 11:34 ` APQ Warren W. Gay VE3WWG
2004-12-16 23:58 ` APQ Randy Brukardt
2004-12-17 3:45 ` APQ Brian May
2004-12-17 4:03 ` APQ Warren W. Gay VE3WWG
2004-12-17 4:38 ` APQ Brian May
2004-12-17 9:06 ` APQ Egil H. H�vik
2004-12-17 11:42 ` APQ Brian May
2004-12-17 22:55 ` APQ Brian May
2004-12-18 15:52 ` APQ Warren W. Gay VE3WWG
2004-12-18 18:23 ` APQ Dmitry A. Kazakov
2004-12-21 23:34 ` APQ Brian May
2004-12-22 8:57 ` APQ Dmitry A. Kazakov
2004-12-22 10:07 ` APQ Martin Krischik
2004-12-22 13:15 ` APQ Dmitry A. Kazakov
2004-12-22 16:53 ` APQ Martin Krischik
2004-12-22 17:21 ` APQ Dmitry A. Kazakov
2004-12-22 18:23 ` APQ Martin Krischik
2004-12-17 8:59 ` APQ Stephen Leake
2004-12-17 14:12 ` Dmitry A. Kazakov [this message]
2004-12-17 23:20 ` APQ Brian May
2004-12-18 16:13 ` APQ Dmitry A. Kazakov
2004-12-21 23:29 ` APQ Brian May
2004-12-22 9:14 ` APQ Dmitry A. Kazakov
2005-01-04 21:32 ` APQ Brian May
2005-01-05 11:58 ` APQ Dmitry A. Kazakov
2004-12-23 17:04 ` APQ (Connection Cloning) Warren W. Gay VE3WWG
2004-12-23 17:55 ` Georg Bauhaus
2004-12-23 18:52 ` Warren W. Gay VE3WWG
2005-01-03 7:40 ` Frank Piron
2004-12-17 13:54 ` APQ Dmitry A. Kazakov
-- strict thread matches above, loose matches on Subject: below --
2004-12-16 4:37 APQ Christoph Karl Walter Grein
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox