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-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,d60e0492375aa57a X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2002-07-31 02:12:01 PST Path: archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!newsfeed.icl.net!newsfeed.fjserv.net!colt.net!kibo.news.demon.net!news.demon.co.uk!demon!pipehawk.demon.co.uk!not-for-mail From: john.nospam@nospamassen.nospamdemon.co.uk (John McCabe) Newsgroups: comp.lang.ada Subject: Re: Visibility of private packages?? Date: Wed, 31 Jul 2002 09:13:56 GMT Message-ID: <3d47a99e.4548109@news.demon.co.uk> References: NNTP-Posting-Host: pipehawk.demon.co.uk X-NNTP-Posting-Host: pipehawk.demon.co.uk:158.152.226.81 X-Trace: news.demon.co.uk 1028106662 nnrp-01:6601 NO-IDENT pipehawk.demon.co.uk:158.152.226.81 X-Complaints-To: abuse@demon.net X-Newsreader: Forte Free Agent 1.21/32.243 Xref: archiver1.google.com comp.lang.ada:27510 Date: 2002-07-31T09:13:56+00:00 List-Id: On Tue, 30 Jul 2002 15:23:40 -0600, "Peter Coventry" wrote: >I am trying to get my head around the visibility rules applicable to private >packages. > >If I have the following package hierarchy: > > A > / \ > A.B1 A.B2 > / > A.B1.C1 > >A.B1 contains the interface that I wish to export to clients (i.e a type >plus routines for client manipulation). >A.B1.C1 contains additional routines for the type not meant for client use. >A.B2 contains some inner workings, that need to use the additional routines >in A.B1.C1. > >I want to make A.B1.C1 a private package to stop it from being misused by >clients, however the compiler disallows it, citing RM 10.1.2(8): > >" If a with_clause of a given compilation_unit mentions a private child of >some library unit, then the given compilation_unit shall be either the >declaration of a private descendant of that library unit or the body or >subunit of a (public or private) descendant of that library unit." > >Does this mean that if A.B1.C1 is private, it can only be withed by the >bodies of A.B1 and other descendants of A.B1, and specs of private packages >of descendants of A.B1? > >If this is the case, how could I structure things to give the desired >effect? As far as I remember, "Ada As A Second Language" by Norman Cohen has some reasonable stuff on private child packages so it might be worth looking there. If the type you are referring to is tagged, would it help to declare the A.B1.C1 facilities as dispatching operations in the private part of A?