comp.lang.ada
 help / color / mirror / Atom feed
* generic formal object parameters of mode 'in out'
@ 2000-11-06  0:00 Steve Folly
  2000-11-06  0:00 ` mark_lundquist
  2000-11-06  0:00 ` Robert A Duff
  0 siblings, 2 replies; 3+ messages in thread
From: Steve Folly @ 2000-11-06  0:00 UTC (permalink / raw)


Hi,

While reading the ARM today I noticed it's possible to specify generic
formal objects of mode 'in out'.

I was just wondering what use this could have?

Para 12.4 [1b] does state that it's like a renaming declaration of the
explicit actual parameter.

In my program I have the following generic package...

subtype Template_String is string(1..4);

generic
   type T is private;
   Default : T;
   Template : Template_String;
package P
   The_Template : constant String := Template;
   .
   .
end P;


We have had to declare The_Template because we've found that the
parameters are not visible from an instantiation, ie.

declare
  package X is new P ( T => Integer, Default => 0, Template => "NNNN"
);
begin
   Ada.Text_Io.Put_Line("The template is " & X.Template ); -- uh oh!
   Ada.Text_Io.Put_Line("The template is " & X.The_Template ); -- OK
end;

Am I right in thinking that by making Template an 'in out', I don't
need The_Template.

And, if it is now an 'in out', can I change Template at any time
outside of the instantiation (or inside it) ?

Just my disjointed ramblings at the end of long day...

Cheers,
Steve Folly.




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

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

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2000-11-06  0:00 generic formal object parameters of mode 'in out' Steve Folly
2000-11-06  0:00 ` mark_lundquist
2000-11-06  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