From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.5-pre1 (2020-06-20) on ip-172-31-74-118.ec2.internal X-Spam-Level: X-Spam-Status: No, score=0.8 required=3.0 tests=BAYES_50,FREEMAIL_FROM autolearn=ham autolearn_force=no version=3.4.5-pre1 X-Received: by 2002:a37:6786:: with SMTP id b128mr23669514qkc.396.1600266910557; Wed, 16 Sep 2020 07:35:10 -0700 (PDT) X-Received: by 2002:a37:9f57:: with SMTP id i84mr23469960qke.101.1600266910316; Wed, 16 Sep 2020 07:35:10 -0700 (PDT) Path: eternal-september.org!reader02.eternal-september.org!feeder.eternal-september.org!news.gegeweb.eu!gegeweb.org!usenet-fr.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail Newsgroups: comp.lang.ada Date: Wed, 16 Sep 2020 07:35:10 -0700 (PDT) In-Reply-To: Complaints-To: groups-abuse@google.com Injection-Info: google-groups.googlegroups.com; posting-host=92.56.166.72; posting-account=C8J7NQoAAAD_ybGY7--QIRi6KpLjoH1Z NNTP-Posting-Host: 92.56.166.72 References: <27269975-58eb-407b-98ca-344bee6894d2n@googlegroups.com> <28481dfd-7127-4106-bcfd-f085ffbf228fn@googlegroups.com> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: Subject: Re: Visibility issue From: Daniel Injection-Date: Wed, 16 Sep 2020 14:35:10 +0000 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Xref: reader02.eternal-september.org comp.lang.ada:60168 List-Id: El mi=C3=A9rcoles, 16 de septiembre de 2020 a las 12:58:58 UTC+2, Dmitry A.= Kazakov escribi=C3=B3: > On 16/09/2020 12:23, Daniel wrote:=20 > > El mi=C3=A9rcoles, 16 de septiembre de 2020 a las 9:14:23 UTC+2, Dmitry= A. Kazakov escribi=C3=B3:=20 >=20 > > Let's try to set and construct all hidden part details from Internal si= de, not from user side. > [...]=20 >=20 > Assuming "internal side" means "implementation side", this is in clear=20 > contradiction with the code you posted. Your package Internal is=20 > implementation and thus must be able to access whatever implementation=20 > details it needs.=20 >=20 > Otherwise the API must provide means of construction. [Must be done=20 > anyway in order to ensure the contract of Handle, provided default=20 > initialization does not do that.] Then, I assume there is not a clear solution in Ada due to my imposed requi= rements (I'm not sure if it's possible with another language also) So if the "Implementation side" needs all details, I only think in two opti= ons : 1.- Put the details of implementation in a children package in the API hier= archy, and try to explain users to don't "with it". I can try to make it re= ally empty in the public part of the children package and only put what its= needed for the implementation. 2.- Take out the details from "API hierarchy packages" to the "Implementati= on package hierarchy" and make visible everything I need in the "API side",= and try also to explain users to don't use them. I think will go for the first option. If you think there is another solutio= n I will be glad to hear that. In any case, thank you for the help! I'm Learning every day with the help o= f this group.