comp.lang.ada
 help / color / mirror / Atom feed
* package organization (is this doable?)
@ 2018-06-29 15:45 Alejandro R. Mosteo
  2018-06-29 16:34 ` Simon Wright
  0 siblings, 1 reply; 5+ messages in thread
From: Alejandro R. Mosteo @ 2018-06-29 15:45 UTC (permalink / raw)


So the problem: I'm binding a C library with several types/features that 
I'm splitting into several Ada packages. These packages must talk to each 
other sometimes in terms of auxiliary types that I want to hide from the 
user.

Even if I hide these types in a private package, or in the common parent 
private part, I cannot think of a way of exposing some subprograms in one 
package to the other, without also exposing them to users.

Example:

package Lib; -- Root package

package Lib.Feat_1; -- Some feature

package Lib.Feat_2; -- Another feature

private package Lib.Impl; -- Things I want to keep secret, conceptually 
they're in the private part of Lib IIUC.

Am I right that it is impossible for Feat_1 and Feat_2 to communicate 
using something that's private in Lib or Lib.Impl? That would mean 
exposing those private types in their respective public parts, which is a 
no go.

Right now I'm moving the things I don't want the user to see to a further 
child, e.g.:

Lib.Feat_1.Impl;
Lib.Feat_2.Impl;

There, implementation type names/subprograms are visible but the idea is 
that users never need these packages. And they can call each other. The 
thing is, I feel like I'm missing some way of organizing things to make 
what I want possible (that some types are never visible to the user). It 
feels like a diamond problem in that I need a child of two packages 
simultaneously (that could be entirely private).

Thanks,
Álex.


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

end of thread, other threads:[~2018-07-02  8:23 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-06-29 15:45 package organization (is this doable?) Alejandro R. Mosteo
2018-06-29 16:34 ` Simon Wright
2018-06-29 18:47   ` Alejandro R. Mosteo
2018-06-29 19:37     ` Simon Wright
2018-07-02  8:23       ` Alejandro R. Mosteo

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