comp.lang.ada
 help / color / mirror / Atom feed
* Visibility issue
@ 2020-09-11 10:37 Daniel
  2020-09-11 11:51 ` Maxim Reznik
                   ` (6 more replies)
  0 siblings, 7 replies; 32+ messages in thread
From: Daniel @ 2020-09-11 10:37 UTC (permalink / raw)


Hello,
I want to use a tagged type as a link to communicate users of a library, in the way to make one part visible to them and also to hide some content that is only needed for the implementing of the library.

Lets say i have the "Library" packages to expose things to users, and Implementing_Library packages to deal with the implementation:

package Library.Users is
   type User_type is tagged with private;
   procedure foo_public (S: User_Type);
private
   type User_Type is tagged with record
      hide_content_to_user : Natural;
   end record;
function Access_to_hide_content return User_type;
end Library.Users;

private with Library.Users;
package Internal_Library_Implementing is
-- Some internal public developer stuff
private
--Here I want to get access to User_Type hide content.
end Internal_Library_Implementing;

I've tried using "private with" but gnat says the next:
   move subprogram to the visible part (RM 3.9.3(10))
   private function with tagged result must override visible-part function

Compiler says Im forced to make all private User_type functions public.
So,  are there more ways to see the hided content of this tagged type without extending the type itself in a child package? I needed to see this content outside of Library package.



^ permalink raw reply	[flat|nested] 32+ messages in thread

end of thread, other threads:[~2020-09-18  8:08 UTC | newest]

Thread overview: 32+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-11 10:37 Visibility issue Daniel
2020-09-11 11:51 ` Maxim Reznik
2020-09-11 20:11   ` Daniel
2020-09-11 14:23 ` Jeffrey R. Carter
2020-09-11 20:17   ` Daniel
2020-09-11 22:36     ` Jeffrey R. Carter
2020-09-14 10:47       ` Daniel
2020-09-14 16:10         ` Jeffrey R. Carter
2020-09-15 19:11           ` Daniel
2020-09-15 20:03             ` Jeffrey R. Carter
2020-09-11 21:05 ` Dmitry A. Kazakov
2020-09-14 11:33   ` Daniel
2020-09-14 14:42     ` Dmitry A. Kazakov
2020-09-15 19:35       ` Daniel
2020-09-16  7:14         ` Dmitry A. Kazakov
2020-09-16 10:23           ` Daniel
2020-09-16 10:58             ` Dmitry A. Kazakov
2020-09-16 14:35               ` Daniel
2020-09-16 14:49                 ` Jeffrey R. Carter
2020-09-16 15:05                 ` Dmitry A. Kazakov
2020-09-16 20:09                   ` Daniel
2020-09-16 21:48                     ` Simon Wright
2020-09-17 13:31                       ` Daniel
2020-09-17 15:00                         ` Dmitry A. Kazakov
2020-09-17 15:32                           ` Daniel
2020-09-17 16:47                             ` Dmitry A. Kazakov
2020-09-18  8:05                         ` Simon Wright
2020-09-14 16:18 ` Simon Wright
2020-09-17 15:58 ` Jere
2020-09-17 16:10 ` Jere
2020-09-18  8:08   ` Simon Wright
2020-09-17 21:47 ` Shark8

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox