comp.lang.ada
 help / color / mirror / Atom feed
From: progers@ajpo.sei.cmu.edu (Pat Rogers)
Subject: Re: private types and recompilation
Date: 28 Jan 93 15:58:29 GMT	[thread overview]
Message-ID: <1993Jan28.105829.5919@sei.cmu.edu> (raw)

In article <9301271722.aa25516@Paris.ics.uci.edu> kanderso@mabillon.ICS.UCI.EDU
 (Kenneth Anderson) writes:
>In comp.lang.ada you write:
>
>>When Ada 83 was designed, why did the designers choose to put
>>the details of private types in package specifications, rather than
>>in package bodies (which is more in the spirit of information hiding, and
>>better supports independent compilation).
>
>I'm not sure, but I think because the compiler needs to know the size
>of the types so that it can allocate space for parameters in the
>subprograms that are defined in the spec.
>
>

Well, not really that, so much as that objects of the private type can be 
allocated by users of the package before the package body is ever compiled.  
So the compiler must have sufficient info from the package spec.  Incomplete
type definitions might help you (sometimes called the "Deferred Implementation
Scheme"):

package P is

  type Exported is private;
  ...  operations on the type Exported ...
private
  type Implementation; -- incomplete type def
  type Exported is access Implementation;
end P;

package body P is
  
  type Implementation is ...

end P;

Note however that the language doesn't always force a recompilation, say,
when a comment is added, or a private part is altered. It depends upon
what was changed, but some implementations are "smart" about it.

Pat

             reply	other threads:[~1993-01-28 15:58 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1993-01-28 15:58 Pat Rogers [this message]
  -- strict thread matches above, loose matches on Subject: below --
1993-01-28 23:44 private types and recompilation Alex Blakemore
1993-01-28 18:08 Mark A Biggar
1993-01-28 15:25 Tucker Taft
1993-01-28 14:13 David Emery
1993-01-28  8:07 Christian S. Collberg
1993-01-28  1:22 Kenneth Anderson
1993-01-27 22:15 David Erickson
replies disabled

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