comp.lang.ada
 help / color / mirror / Atom feed
From: adam@irvine.com (Adam Beneschan)
Subject: Re: Easily-Read C++?
Date: Tue, 1 Nov 1994 21:19:27 GMT
Date: 1994-11-01T21:19:27+00:00	[thread overview]
Message-ID: <CyLxwF.7LK@irvine.com> (raw)
In-Reply-To: bobduff@dsd.camb.inmet.com's message of Thu, 27 Oct 1994 14:54:46 GMT

bobduff@dsd.camb.inmet.com (Bob Duff) writes:

> In article <38k8g2INNiff@marble.summit.novell.com>,
> -mlc-+Schilling J. <jls@summit.novell.com> wrote:
> >Pragma Suppress doesn't relate to carrying around array bounds at runtime,
> >but rather to whether index checks are done.  If the array bounds are
> >dynamic, then it is necessary to carry them around in order to generate
> >correct indexing offset code, whether or not you are also doing the checks.
>
> I don't think that's quite right.  The compiler can always store the
> address of the zero-th element (even if there is no such element), and
> then the indexing calculation doesn't need to subtract the lower bound.
> Thus, if checks are suppressed, there should be no need to store the
> bounds.
>
> On the other hand, if there are any whole-array assignments, then the
> size has to be stored (or some information from which the size can be
> calculated).

Also, if you use the 'FIRST, 'LAST, 'RANGE, or 'LENGTH attributes, you
will need to carry the bounds.  Otherwise the following can't be
compiled:

    pragma SUPPRESS (ALL_CHECKS);

    type INT_ARRAY is array (NATURAL range <>) of INTEGER;

    function SUM (A : INT_ARRAY) return INTEGER is
        RESULT : INTEGER;
    begin
        RESULT := 0;
        for I in A'RANGE loop
            RESULT := RESULT + A(I);
        end loop;
        return RESULT;
    end SUM;

I suppose that your suggestion will work if the *only* operation you
perform on a dynamic one-dimensional array is indexing, but quite
frankly I can't imagine anyone wanting to write a routine that takes a
dynamic array, uses only indexing, and doesn't use 'FIRST, 'LAST, or
'RANGE (or pass the array on to another routine that does).

Also, it should be noted that your suggestion won't work on dynamic
two-dimensional or higher-dimensional arrays.

                                -- Adam




  parent reply	other threads:[~1994-11-01 21:19 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <3719k1$11gt@watnews1.watson.ibm.com>
     [not found] ` <85C92963672@annwfn.com>
1994-10-11 18:37   ` Easily-Read C++? Norman H. Cohen
1994-10-12 16:54     ` David Emery
1994-10-14 21:13       ` Kevin Cline
1994-10-21 14:38         ` Thomas M. Breuel
1994-10-22  3:10           ` Michael M. Bishop
1994-10-26  0:39             ` -mlc-+Schilling J.
1994-10-27 14:54               ` Bob Duff
1994-10-27 15:35                 ` Richard Kenner
1994-10-27 23:09                 ` Robert Dewar
1994-11-01 21:19                 ` Adam Beneschan [this message]
1994-11-02  0:46                   ` Bob Duff
1994-10-14 10:50 Bob Wells #402
  -- strict thread matches above, loose matches on Subject: below --
1994-10-12  3:06 Easily-Read C++ Ken Garlington
1994-10-05  3:00 Easily-Read C++? Ken Garlington
1994-10-05  9:42 ` Pierre Castori
1994-10-05 13:28   ` Robert Dewar
1994-10-06  2:20     ` Benjamin Ketcham
     [not found]     ` <CxDL8H.KGE@csn.org>
     [not found]       ` <milodCxH2E4.7F4@netcom.com>
     [not found]         ` <CxHJv0.Kw0@csn.org>
1994-10-12 17:03           ` John DiCamillo
1994-10-05 14:26 ` Eric S. Sessoms
1994-10-05 17:47 ` Kevin Cline
1994-10-05 22:02   ` Robert Dewar
1994-10-05 22:23     ` Richard Kenner
     [not found]       ` <124377@cup.portal.com>
1994-10-11 18:11         ` David Weller
1994-10-11 18:43         ` Robert Dewar
1994-10-12 13:15           ` Norman H. Cohen
1994-10-12 14:10             ` Robert Firth
1994-10-13 19:33             ` John D. Reading
1994-10-13  0:51         ` Keith Thompson @pulsar
1994-10-05 18:24 ` Magnus Kempe
     [not found] ` <EACHUS.94Oct6101347@spectre.mitre.org>
     [not found]   ` <371a3p$nos@gnat.cs.nyu.edu>
     [not found]     ` <1994Oct7.153254.29848@swlvx2.msd.ray.com>
     [not found]       ` <374uke$8mo@delphi.cs.ucla.edu>
     [not found]         ` <37bno4$ko4@gnat.cs.nyu.edu>
1994-10-11 13:00           ` Robert Firth
1994-10-11 13:44             ` Casper H.S. Dik
1994-10-11 19:03               ` Robert Dewar
1994-10-12 16:38               ` John DiCamillo
1994-10-11 18:52             ` Robert Dewar
1994-10-12 13:49               ` Norman H. Cohen
     [not found]           ` <37eej8$6ie@siberia.gatech.edu>
1994-10-11 18:55             ` Robert Dewar
1994-10-12 13:35               ` John M. Mills
1994-10-12 19:48                 ` Robert Dewar
     [not found]         ` <CxFr5B.K1G@news.otago.ac.nz>
     [not found]           ` <DAG.94Oct10075533@bellman.control.lth.se>
1994-10-11 17:50             ` Norman H. Cohen
     [not found]     ` <373vd2$39n@theopolis.orl.mmc.com>
     [not found]       ` <CxBvq7.GrH@inmet.camb.inmet.com>
     [not found]         ` <37bnic$kj2@gnat.cs.nyu.edu>
1994-10-11 18:02           ` Norman H. Cohen
replies disabled

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