comp.lang.ada
 help / color / mirror / Atom feed
* Protected Objects: Scoping problem.
@ 1998-06-15  0:00 Robert Worne
  1998-06-15  0:00 ` Matthew Heaney
  1998-06-17  0:00 ` Stephen Leake
  0 siblings, 2 replies; 4+ messages in thread
From: Robert Worne @ 1998-06-15  0:00 UTC (permalink / raw)



I am having a problem with scoping on protected objects.

I am working on a package that has a protected object that
communicates to other packages via a "read".  A "write" in that object 
should be visible only as an internal subprogram, and not visible to the
outside world.  A simplified version from the Ada documents on-line is:

package Protected_Variable is

type T is new integer;
    
   protected Variable is
   function Read return T;
   procedure Write(Value: T);  -- I do NOT want this accessible to outside
                               -- packages!
private
   Data: T;
end Variable;
end Protected_Variable;

package body Protected_Variable is
protected body Variable is
   function Read return T is
   begin
      return Data;
   end Read; 

   procedure Write(Value: T) is
   begin
      Data := Value;
end Write is separate;
end Variable; 
end Protected_Variable;

What I want is for the procedure "Write" to not be externally visible,
as if it were commented out of the spec file.  However, that makes it not
visible to the package body (at least during elaboration).

How can I accomplish this seemingly simple task?  Am I going about it in a
totally incorrect fashion? I need the mutual exclusion a protected object
will provide, but in a read-only fashion to the outside.

If anyone needs to know the compiler I'm using, it's ObjectAda.  Although
I tend to believe it's my problem and not the compiler's.




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

end of thread, other threads:[~1998-06-17  0:00 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1998-06-15  0:00 Protected Objects: Scoping problem Robert Worne
1998-06-15  0:00 ` Matthew Heaney
1998-06-17  0:00 ` Stephen Leake
1998-06-17  0:00   ` Robert A Duff

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