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.3 required=5.0 tests=BAYES_00,MAILING_LIST_MULTI, REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,a85dd10bdbdb69d4 X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2002-12-11 23:22:02 PST Path: archiver1.google.com!news1.google.com!newsfeed.stanford.edu!logbridge.uoregon.edu!fr.usenet-edu.net!usenet-edu.net!enst.fr!not-for-mail From: "Grein, Christoph" Newsgroups: comp.lang.ada Subject: Re: Giving a package specification access to the private types of another package Date: Thu, 12 Dec 2002 08:14:10 +0100 (MET) Organization: ENST, France Sender: comp.lang.ada-admin@ada.eu.org Message-ID: Reply-To: comp.lang.ada@ada.eu.org NNTP-Posting-Host: marvin.enst.fr Mime-Version: 1.0 Content-Type: TEXT/plain; charset=us-ascii X-Trace: avanie.enst.fr 1039677721 20296 137.194.161.2 (12 Dec 2002 07:22:01 GMT) X-Complaints-To: usenet@enst.fr NNTP-Posting-Date: Thu, 12 Dec 2002 07:22:01 +0000 (UTC) Return-Path: X-Authentication-Warning: mail.eurocopter.com: uucp set sender to using -f Content-MD5: L8bMqT/uREjLpj4xcm3j7A== X-Mailer: dtmail 1.2.1 CDE Version 1.2.1 SunOS 5.6 sun4u sparc Errors-To: comp.lang.ada-admin@ada.eu.org X-BeenThere: comp.lang.ada@ada.eu.org X-Mailman-Version: 2.0.13 Precedence: bulk X-Reply-To: "Grein, Christoph" List-Unsubscribe: , List-Id: comp.lang.ada mail<->news gateway List-Post: List-Help: List-Subscribe: , Errors-To: comp.lang.ada-admin@ada.eu.org X-BeenThere: comp.lang.ada@ada.eu.org Xref: archiver1.google.com comp.lang.ada:31724 Date: 2002-12-12T08:14:10+01:00 > Grein, Christoph wrote: > > This is indeed the perfect design for your problem. > > > >>I think this is what I have done - and it works. My code is equivalent > >>to the example below. This works and seems to be the best way to do it. > >> > >>package B is > >> procedure Proc_B; > >>private > >> type Private_Type is new Integer; > >>end B; > >> > >>with B.A; > >>package body B is > >> procedure Proc_B is > >> Temp: Private_Type; > >> begin > >> A.Foobar(Temp); > >> end; > >>end B; > >> > >>private package B.A is > >> procedure Foobar(Temp: in Private_Type); > >>end B.A; > >> > >>package body B.A is > >> procedure Foobar(Temp: in Private_Type) is > >> begin > >> null; > >> end; > >>end B.A; > > Perfect? That's a bit strong. It's a good design, but as given, I think > that putting Foobar in B (perhaps with "is separate") is as good. I beg to differ. For this tiny example, you're right. But IIRC, the OP said that his package B.A was quite big and held a big part of the implementation stuff of B. Then child packages are the "perfect" design because you can split one big body (B) is several smaller children dedicated to specific subproblems.