From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: APQ
Date: Wed, 22 Dec 2004 10:14:45 +0100
Date: 2004-12-22T10:14:45+01:00 [thread overview]
Message-ID: <zj01txsolhws$.1l49jvgadzcgz$.dlg@40tude.net> (raw)
In-Reply-To: sa4sm5zmds2.fsf@snoopy.apana.org.au
On Wed, 22 Dec 2004 10:29:01 +1100, Brian May wrote:
>>>>>> "Dmitry" == Dmitry A Kazakov <mailbox@dmitry-kazakov.de> writes:
> Dmitry> function Copy (C : Root_Connection_Type)
> Dmitry> return Root_Connection_Ptr is abstract;
>
> Dmitry> This would allocate a copy and connect it to the same
> Dmitry> DB. Because reference counting is intended you will need
> Dmitry> dynamic allocation anyway. The user will of course do it
> Dmitry> all with handles:
>
> I have a suspicion this would not work as Root_Connection_Type is a
> limited type. Or am I yet again mistaken?
You probably mean this:
function Copy (C : Root_Connection_Type'Class)
return Root_Connection_Ptr is
begin
return new Root_Connection_Type'Class'(C);
end Copy;
This indeed cannot work for limited types. This was the reason why Copy was
declared abstract primitive instead:
function Copy (C : Root_Connection_Type)
return Root_Connection_Ptr is abstract;
It will dispatch to an implementation which knows how to copy itself:
function Copy (C : My_Connection_Type)
return Root_Connection_Ptr is
Result : Root_Connection_Ptr := new My_Connection_Type;
Object : My_Connection_Type renames My_Connection_Type (Result.all);
begin
Object.Field_Foo := C.Field_Foo;
... -- Clone me tender
return Result;
exception
when others =>
Free (Result); -- No memory leaks!
raise;
end Copy;
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
next prev parent reply other threads:[~2004-12-22 9:14 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 ` APQ Dmitry A. Kazakov
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 ` Dmitry A. Kazakov [this message]
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