comp.lang.ada
 help / color / mirror / Atom feed
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



  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