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=-1.9 required=5.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.4 X-Google-Thread: 103376,2586a992fd399bf8 X-Google-NewGroupId: yes X-Google-Attributes: gida07f3367d7,domainid0,public,usenet X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news2.google.com!news4.google.com!feeder2.cambriumusenet.nl!feed.tweaknews.nl!195.71.90.67.MISMATCH!news.unit0.net!news.uni-stuttgart.de!news.belwue.de!newsfeed.ision.net!newsfeed2.easynews.net!ision!newsfeed.arcor.de!newsspool1.arcor-online.net!news.arcor.de.POSTED!not-for-mail Date: Fri, 04 Mar 2011 21:10:30 +0100 From: Georg Bauhaus User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.14) Gecko/20110123 Thunderbird/3.1.8 MIME-Version: 1.0 Newsgroups: comp.lang.ada Subject: Re: limited /non-limited tagged type References: <40bfb845-7868-4536-886b-496e8dc82cb4@hd10g2000vbb.googlegroups.com> In-Reply-To: <40bfb845-7868-4536-886b-496e8dc82cb4@hd10g2000vbb.googlegroups.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Message-ID: <4d714736$0$6979$9b4e6d93@newsspool4.arcor-online.net> Organization: Arcor NNTP-Posting-Date: 04 Mar 2011 21:10:30 CET NNTP-Posting-Host: 68465b43.newsspool4.arcor-online.net X-Trace: DXC=V5eg=3oMnGVV;Ef1`Jk54\4IUKejVXRb>^e;]TfjWAZWG^Lg3G;W X-Complaints-To: usenet-abuse@arcor.de Xref: g2news2.google.com comp.lang.ada:18806 Date: 2011-03-04T21:10:30+01:00 List-Id: On 3/4/11 7:56 PM, Hacid wrote: > I understand why I can't define my type limited in the public part and > not limited in the private part. But is there a way to do what I > want ? > > Something like : > > package Foo is > > type Object is tagged private; > > function ":=" (Left : out Object,; Right : in Object) is abstract; > -- I know this looks strange > > end Foo; Maybe something along these lines? package Foo_3 is type Object is tagged limited private; private type Wrapped is record null; -- ... end record; procedure Copy_Constructor (Source : in Object; Target : out Object ); type Object is tagged limited record Data : Wrapped; end record; end Foo_3; package body Foo_3 is procedure Copy_Constructor (Source : in Object; Target : out Object ) is begin Target.Data := Source.Data; end Copy_Constructor; end Foo_3;