comp.lang.ada
 help / color / mirror / Atom feed
From: "Björn Persson" <spam-away@nowhere.nil>
Subject: Re: generic parameter Copy for primitifs types.
Date: Thu, 23 Jun 2005 18:30:08 GMT
Date: 2005-06-23T18:30:08+00:00	[thread overview]
Message-ID: <QcDue.27850$d5.180415@newsb.telia.net> (raw)
In-Reply-To: <1119544911.159343.288010@g43g2000cwa.googlegroups.com>

nblanpain@hotmail.com wrote:
> generic
> type T_Item is private;
> with procedure Copy (Left : in out T_Item; Right : in T_Item);
> package Toto is
> ....
> end Toto;
> ------
> 
> At instanciation, for T_Item = Integer for example, is there a methode
> to take for Copy => ":=". Must I redefined Copy ? Can I say that, by
> default, take ":=" ?

The normal way when you need to do special things during assignment is 
to use a controlled type. That is, you derive from 
Ada.Finalization.Controlled and override Adjust:

    type Special_Type is new Ada.Finalization.Controlled with record ...

    procedure Adjust (Object : in out Special_Type) is ...

Then, instead of a Copy procedure you just use ":=", and Adjust will be 
called. (See RM 7.6.)

Your generic package would then look like this:

    generic
       type T_Item is private;
    package Toto is
       ...
    end Toto;

    package Integer_Toto is new Toto (Integer);
    package Special_Toto is new Toto (Special_Type);

Or is there a reason why controlled types wouldn't work in your case?

-- 
Bj�rn Persson                              PGP key A88682FD
                    omb jor ers @sv ge.
                    r o.b n.p son eri nu



  parent reply	other threads:[~2005-06-23 18:30 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
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 [this message]
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