From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-2.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, MAILING_LIST_MULTI autolearn=unavailable autolearn_force=no version=3.4.4 X-Google-Thread: 103376,8ca14c11fd6d2e56 X-Google-Attributes: gid103376,public X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news1.google.com!news3.google.com!news2.google.com!news.maxwell.syr.edu!newsfeed.icl.net!newsfeed.fjserv.net!oleane.net!oleane!freenix!news.enst.fr!melchior!cuivre.fr.eu.org!melchior.frmug.org!not-for-mail From: Marius Amado Alves Newsgroups: comp.lang.ada Subject: Re: generic parameter Copy for primitifs types. Date: Fri, 24 Jun 2005 12:45:19 +0100 Organization: Cuivre, Argent, Or Message-ID: References: <1119544911.159343.288010@g43g2000cwa.googlegroups.com> <837ivwsz8r2d$.j16zz1529zb9$.dlg@40tude.net> <1119555704.527944.224770@g49g2000cwa.googlegroups.com> <1ormc6uaytixb.v2ogsw0x6y8k.dlg@40tude.net> NNTP-Posting-Host: lovelace.ada-france.org Mime-Version: 1.0 (Apple Message framework v622) Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit X-Trace: melchior.cuivre.fr.eu.org 1119613561 94322 212.85.156.195 (24 Jun 2005 11:46:01 GMT) X-Complaints-To: usenet@melchior.cuivre.fr.eu.org NNTP-Posting-Date: Fri, 24 Jun 2005 11:46:01 +0000 (UTC) To: comp.lang.ada@ada-france.org Return-Path: In-Reply-To: <1ormc6uaytixb.v2ogsw0x6y8k.dlg@40tude.net> X-Mailer: Apple Mail (2.622) X-Virus-Scanned: by amavisd-new at dcc.fc.up.pt X-Virus-Scanned: by amavisd-new-20030616-p10 (Debian) at ada-france.org X-BeenThere: comp.lang.ada@ada-france.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Gateway to the comp.lang.ada Usenet newsgroup" List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Xref: g2news1.google.com comp.lang.ada:11613 Date: 2005-06-24T12:45:19+01:00 On 24 Jun 2005, at 08:28, Dmitry A. Kazakov wrote: >> 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 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; > ... True. But then the use is not uniform. A different generic package must be selected for each case: package Default_Pkg is new Specialized_Toto (T); package Special_Pkg is new Toto (T, Special_Copy); The idiom I have posted earlier does not have this problem. But, granted, may have others instead, e.g. requiring two instantiations instead of one for each case. All this would go away if packages were first class citizens of Ada, i.e. objects. This is one thing I'm trying to do with Ocpotus (softdevelcoop.org/ocpotus).