From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.5-pre1 (2020-06-20) on ip-172-31-74-118.ec2.internal X-Spam-Level: X-Spam-Status: No, score=-0.0 required=3.0 tests=BAYES_20 autolearn=ham autolearn_force=no version=3.4.5-pre1 Date: 28 Jan 93 01:22:24 GMT From: kanderso@mabillon.ICS.UCI.EDU (Kenneth Anderson) Subject: Re: private types and recompilation Message-ID: <9301271722.aa25516@Paris.ics.uci.edu> List-Id: 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. >generic > type ATOM is private; >package LIST_ADT is > type POSITION is private; > type LIST is private; > procedure CREATE(L: in out LIST); > procedure INSERT_AFTER(L: in out LIST; P: POSITION; A: ATOM); > ... >private > type LIST; > type POSITION is access LIST; You only need the previous two lines. The declaration below can be hidden in the body of the package. > type LIST is record > A: ATOM; > NEXT: POSITION; > end record; >end LIST_ADT; >-Dave Erickson Ken -- ------------------------------------------------------------------------------- - Ken Anderson | "I'd much rather live in perfection, U.C. Irvine | than deal with reality." -- Kenbod ------------------------------------------------------------------------------- - Happy! Happy! Happy! Joy! Joy! Joy! | Practice random kindness and -- Stimpy | senseless acts of beauty. | -- Anne Herbert ------------------------------------------------------------------------------- -