From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=BAYES_00,INVALID_DATE autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,18069d15345a10c8 X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 1994-10-14 05:59:32 PST Newsgroups: comp.lang.ada Path: bga.com!news.sprintlink.net!howland.reston.ans.net!news.moneng.mei.com!uwm.edu!lll-winken.llnl.gov!noc.near.net!inmet!dsd!stt From: stt@dsd.camb.inmet.com (Tucker Taft) Subject: Re: Modulus and Remainder operations (Was Re: Help with a bit of C code) Message-ID: Sender: news@inmet.camb.inmet.com Organization: Intermetrics, Inc. References: <1994Oct11.161048.1058@nosc.mil> <37er8t$oh0@watnews1.watson.ibm.com> Date: Thu, 13 Oct 1994 10:38:43 GMT Date: 1994-10-13T10:38:43+00:00 List-Id: In article , Henry G. Baker wrote: >In article <37er8t$oh0@watnews1.watson.ibm.com> ncohen@watson.ibm.com writes: >>4. In Ada 9X, the parameter-passing mechanism is mandated in many cases >> where Ada 83 leaves it up to the implementation. ... >So I've been told. But this policy is still a crock, especially for >Ada 'limited' types, because the definer of the type has lost control >of the type. The 'textbook' definitions of prototypical limited types >such as 'bank accounts' are no longer safe in the presence of such >equivocation. The "definer" of a limited type can decide whether to require pass-by-reference, so they have not lost control of the type. If you want to ensure pass-by-reference, then just declare your limited (full) type as: type T is limited record ... -- whatever end T; All objects of such a type are always passed by reference. On the other hand, if the full type of a limited private type is in fact nonlimited, then the definer has "lost control" over the parameter passing, though clearly, in Ada 9X, they had the choice not to. There are good reasons for this flexibility. Being able to pass by copy is essential in certain circumstances, such as extracting from a bit-packed data structure, or in a distributed system. The Ada rules give flexiblity here, but as you have noted there is a price. In Ada 9X, the definer of a type can choose whether they want the flexibility, or the control, by whether they make the full type nonlimited (might be passed by copy), or limited (will be passed by reference). >See "How to Steal from a Limited Private Account--Why Mode INOUT >Parameters for Limited Types MUST be Passed by Reference". Ada >Letters XIII, 3 (May/June 1993), 91-95. This paper is also in my ftp >directory. In Ada 9X, these attempts at theft can be prevented by the definer of the type, by simply making the full type itself limited. > Henry Baker > Read ftp.netcom.com:/pub/hbaker/README for info on ftp-able papers. S. Tucker Taft stt@inmet.com Ada 9X Mapping/Revision Team Intermetrics, Inc. Cambridge, MA 02138