comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: generic parameter Copy for primitifs types.
Date: Fri, 24 Jun 2005 09:28:10 +0200
Date: 2005-06-24T09:27:48+02:00	[thread overview]
Message-ID: <1ormc6uaytixb.v2ogsw0x6y8k.dlg@40tude.net> (raw)
In-Reply-To: 1119555704.527944.224770@g49g2000cwa.googlegroups.com

On 23 Jun 2005 12:41:44 -0700, nblanpain@hotmail.com wrote:

> But I want to use Copy for other types other than primitifs (integer,
> float, boolean...).

Though other types have assignment too. So the cleanest way would be either
to consistently use it or to make the formal parameter T_Item limited and
provide Copy procedure as you did.

> The best solution is to set ":=" by default but it
> is not possible...

True. You can try generic "specialization" like this:

------------
generic
   type T_Item is limited private;
   with procedure Copy (Left : out T_Item; Right : in T_Item);
package Toto is
   ...
end Toto;

with Toto;
generic
   type T_Item is private;
package Specialized_Toto is
   procedure Copy (Left : out T_Item; Right : T_Item);
   package Toto_Instance is new Toto (T_Item, Copy);
end Specialized_Toto;

package body Specialized_Toto is
   procedure Copy (Left : out T_Item; Right : T_Item) is
   begin
      Left := Right;
   end Copy;
end Specialized_Toto;
-------------

So instantiation with Integer might look like:

package Integer_Toto_Implementation is new Specialized_Toto (Integer);
package Integer_Toto renames Integer_Toto_Implementation.Toto_Instance;

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de



  parent reply	other threads:[~2005-06-24  7:28 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-06-23 16:41 generic parameter Copy for primitifs types nblanpain
2005-06-23 17:47 ` Marc A. Criley
2005-06-23 17:54 ` Dmitry A. Kazakov
2005-06-23 19:41   ` nblanpain
2005-06-23 23:44     ` Marius Amado Alves
2005-06-28 10:30       ` Matthew Heaney
2005-06-28 11:21         ` Marius Amado Alves
2005-06-24  7:28     ` Dmitry A. Kazakov [this message]
2005-06-24 11:45       ` Marius Amado Alves
2005-06-24 14:53         ` Dmitry A. Kazakov
2005-06-24 15:11           ` Marius Amado Alves
2005-06-25 15:05           ` Martin Krischik
2005-06-23 18:30 ` Björn Persson
2005-06-23 19:39   ` nblanpain
2005-06-23 19:52     ` Marc A. Criley
2005-06-24  3:10 ` Jeffrey Carter
2005-06-27  4:28 ` Christoph 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