comp.lang.ada
 help / color / mirror / Atom feed
From: adam@irvine.com
Subject: Re: Pointer Arithmetic (was: Wanted: Ada STL....)
Date: 1999/02/02
Date: 1999-02-02T00:00:00+00:00	[thread overview]
Message-ID: <797na3$obg$1@nnrp1.dejanews.com> (raw)
In-Reply-To: Pine.A41.3.96-heb-2.07.990201214336.46206A-100000@pluto.mscc.huji.ac.il

In article
<Pine.A41.3.96-heb-2.07.990201214336.46206A-100000@pluto.mscc.huji.ac.il>,
  Ehud Lamm <mslamm@mscc.huji.ac.il> wrote:

> It seems that one problem in implementing STL in Ada95 is the lack of
> pointer arithmetic.  This causes perofremance problems in real sense (to
> be exact the result is worse from a complexity point of view). This is a
> "nice" result in that it tells you something about the price you pay for
> pointer abstraction etc. However it is sad from a practical point of view.
> I haven't really pursued this, so I can't vouch that there isn't some
> trick to solve this problem.

I don't know how this relates to STL, but I think I can see what the poster
is getting at.	Pointer arithmetic can be efficient when you're trying to
step through an array, since you don't have to keep multiplying an index by a
constant value to access the array elements.  I'm not sure how much of a
difference that makes these days---chips have gotten so fast that
multiplication might not be that big a deal any more.  But anyway, let's
assume for argument's sake that efficiency is a concern and that we want to
avoid multiplication if we can.

I believe one of the strengths of Ada is that it gives implementors choice
about how to implement data.  Unless you use Unchecked_Conversion or other
overlaying tricks, you really don't care just what bits are stored in a
variable.  (I don't believe C/C++ gives this kind of flexibility, although
I haven't read the standards for those languages.)  So is there any reason an
implementor couldn't provide pointer arithmetic with a pragma like:

    type My_Index is range 0 .. 100;
    Arr : array (My_Index range 1 .. 100) of Some_Nasty_Record_Type;
    pragma Index_Into_Array (My_Index, Arr);

This pragma states that all objects of type "My_Index" will be indexes into
the array object Arr, and that therefore they could be implemented as
pointers to array elements.  So if Index is declared as type "My_Index", then
"Index := 1;" would set Index to the address of Arr(1); "Index := Index+3;"
would increment Index by three times the size of Some_Nasty_Record_Type;
and indexing Arr (e.g. Arr(Index).Field) would be a pointer dereference, as
in C.

Questions:
(1) Is there anything in the RM that would make such an implementation of
    My_Index illegal?
(2) Has any compiler vendor tried something like this?

				-- Adam


-----------== Posted via Deja News, The Discussion Network ==----------
http://www.dejanews.com/       Search, Read, Discuss, or Start Your Own    




  parent reply	other threads:[~1999-02-02  0:00 UTC|newest]

Thread overview: 102+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1999-01-31  0:00 Wanted: Ada STL. Reward: Ada's Future Alexy V Khrabrov
1999-01-31  0:00 ` Simon Wright
1999-02-01  0:00 ` Matthew Heaney
1999-02-01  0:00   ` Alexy V Khrabrov
1999-02-01  0:00     ` Matthew Heaney
1999-02-01  0:00       ` Jeff Carter
1999-02-01  0:00 ` Brian Rogoff
1999-02-01  0:00   ` Ehud Lamm
1999-02-02  0:00     ` Brian Rogoff
1999-02-02  0:00       ` robert_dewar
1999-02-04  0:00         ` Ehud Lamm
1999-02-03  0:00       ` John English
1999-02-03  0:00         ` Matthew Heaney
1999-02-03  0:00           ` Brian Rogoff
1999-02-04  0:00             ` Stephen Leake
1999-02-04  0:00               ` Brian Rogoff
1999-02-05  0:00                 ` Stephen Leake
1999-02-05  0:00                   ` Brian Rogoff
1999-02-04  0:00               ` Matthew Heaney
1999-02-04  0:00               ` Hyman Rosen
1999-02-05  0:00                 ` Stephen Leake
1999-02-05  0:00                   ` Hyman Rosen
1999-02-05  0:00               ` John English
1999-02-05  0:00                 ` Tucker Taft
1999-02-05  0:00                   ` Brian Rogoff
1999-02-05  0:00                   ` Richard D Riehle
1999-02-05  0:00                 ` Brian Rogoff
1999-02-06  0:00                   ` Matthew Heaney
1999-02-05  0:00           ` John English
1999-02-05  0:00           ` Nick Roberts
1999-02-04  0:00         ` Ehud Lamm
1999-02-04  0:00           ` Brian Rogoff
1999-02-05  0:00             ` Matthew Heaney
1999-02-05  0:00               ` Brian Rogoff
1999-02-08  0:00                 ` John English
1999-02-04  0:00           ` Al Christians
1999-02-04  0:00           ` Pat Rogers
1999-02-04  0:00             ` Larry Kilgallen
1999-02-04  0:00               ` Pat Rogers
1999-02-04  0:00                 ` Larry Kilgallen
1999-02-05  0:00                   ` robert_dewar
1999-02-05  0:00                     ` Tom Moran
1999-02-05  0:00                       ` dewar
1999-02-05  0:00                         ` Tom Moran
1999-02-05  0:00                           ` dewar
1999-02-05  0:00                             ` dennison
1999-02-06  0:00                               ` dewar
1999-02-08  0:00                                 ` dennison
1999-02-08  0:00                                   ` robert_dewar
1999-02-08  0:00                                     ` dennison
1999-02-09  0:00                                       ` robert_dewar
1999-02-09  0:00                                         ` dennison
1999-02-09  0:00                                     ` Nick Roberts
1999-02-07  0:00                               ` Simon Wright
1999-02-08  0:00                               ` Corey Minyard
1999-02-08  0:00                                 ` Open Source Licensing (was: Wanted: Ada STL. Reward: Ada's Future) dennison
1999-02-08  0:00                                   ` Corey Minyard
1999-02-09  0:00                                     ` robert_dewar
1999-02-09  0:00                                       ` Corey Minyard
1999-02-09  0:00                                     ` dennison
1999-02-09  0:00                                       ` Corey Minyard
1999-02-09  0:00                                 ` Wanted: Ada STL. Reward: Ada's Future robert_dewar
1999-02-09  0:00                                   ` dennison
1999-02-10  0:00                                     ` robert_dewar
1999-02-07  0:00                           ` Simon Wright
1999-02-05  0:00                     ` Larry Kilgallen
     [not found]                     ` <36ba730b.35540068@ <79fmg1$fn0$1@nnrp1.dejanews.com>
1999-02-06  0:00                       ` Larry Kilgallen
1999-02-05  0:00                 ` robert_dewar
1999-02-05  0:00               ` robert_dewar
1999-02-05  0:00                 ` Larry Kilgallen
1999-02-05  0:00                   ` robert_dewar
1999-02-05  0:00                     ` dennison
1999-02-05  0:00                       ` robert_dewar
1999-02-05  0:00                         ` dennison
1999-02-06  0:00                       ` Nick Roberts
1999-02-05  0:00                     ` Tucker Taft
     [not found]                     ` <79f24e$t14 <36BB4162.52FC6D9F@averstar.com>
1999-02-05  0:00                       ` robert_dewar
1999-02-05  0:00                       ` dennison
1999-02-05  0:00           ` John English
1999-02-09  0:00             ` micro_ada
1999-02-05  0:00         ` Nick Roberts
1999-02-08  0:00           ` John English
1999-02-02  0:00     ` adam [this message]
1999-02-02  0:00       ` Pointer Arithmetic (was: Wanted: Ada STL....) William Clodius
1999-02-03  0:00         ` adam
1999-02-03  0:00           ` robert_dewar
1999-02-03  0:00             ` Jean-Pierre Rosen
1999-02-03  0:00           ` Nick Roberts
1999-02-03  0:00           ` William Clodius
1999-02-03  0:00       ` Nick Roberts
1999-02-03  0:00         ` robert_dewar
1999-02-03  0:00           ` Robert A Duff
1999-02-03  0:00       ` robert_dewar
1999-02-02  0:00     ` Wanted: Ada STL. Reward: Ada's Future Richard D Riehle
1999-02-03  0:00       ` robert_dewar
1999-02-01  0:00 ` Stanley R. Allen
1999-02-01  0:00 ` Jerry van Dijk
1999-02-01  0:00   ` Marin David Condic
1999-02-01  0:00 ` dennison
1999-02-01  0:00 ` Jeff Carter
1999-02-08  0:00   ` Michael F Brenner
1999-02-05  0:00 ` Corey Minyard
replies disabled

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