comp.lang.ada
 help / color / mirror / Atom feed
From: jsa@alexandria (Jon S Anthony)
Subject: Re: C to Ada : a piece of code
Date: 1996/09/09
Date: 1996-09-09T00:00:00+00:00	[thread overview]
Message-ID: <JSA.96Sep8202531@alexandria> (raw)
In-Reply-To: JSA.96Sep7205717@alexandria


In article <01bb9d61$537fe5e0$2b8371a5@dhoossr.iquest.com> "David C. Hoos, Sr." <david.c.hoos.sr@ada95.com> writes:

> Jon S Anthony <jsa@alexandria> wrote in article
> <JSA.96Sep7205717@alexandria>...
> > In article <3231732C.2781@virgoa4.in2p3.fr> Grave Xavier
> <xavier@virgoa4.in2p3.fr> writes:
> > 
> >     type Vec_Array_Type is array ( Positive range <> ) of Long_Float;
> >     Size : Natural;
> > ...
> >     Integer_Text_IO.Get(Size);
> >     declare
> >         Vec : Vec_Array_Type(1..Size); -- No malloc, no linked list.
> >     begin
> >         for I in Vec'Range loop
> >             Vec(i) := ....;
> >         end loop;
> >     end;
> > /Jon
> Hi Jon,
> Two things about your solution are not direct translations, viz.:
>     1.  The declare block is not equivalent to calloc or malloc, inasmuch
> as the array goes out of scope when exiting the block.  Your declaration
> would be equivalent to alloca.  Xavier doesn't say whether he intends to
> pass this pointer off to somewhere that's out of scope, in which case the
> malloc or new is required.

Well, sure.  I guess I should have included an ellipsis after the end
loop to show the rest of whatever you might want to do.  Also, there's
no reason why you couldn't just eliminate the declare block by means
of a subprogram.  As for not using malloc in this case, I see that as
a real good thing - no memory management to deal with.  As far as
calloc, you can just add an initializer (for unknown reasons since he
just sets all the values anyway).  And you can always pass such an
array around via parameters or function returns - again no need for
the allocator.


>     2.  Xavier specified a 0-based index for the array, whereas your
> is 1-based.  I know that C gives no choice in the matter, but Ada
> does, and many times the 0-based index is more mathematically
> convenient, depending on the application.

Shrug.  It uglifies the dynamic array allocation (needing a -1).  He
said _equivalent_ Ada, not "identical" word for word translation.  In
fact, an identical word for word translation of this particular case
is just bad Ada.

/Jon
-- 
Jon Anthony
Organon Motives, Inc.
1 Williston Road, Suite 4
Belmont, MA 02178

617.484.3383
jsa@organon.com





  parent reply	other threads:[~1996-09-09  0:00 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1996-09-07  0:00 C to Ada : a piece of code Grave Xavier
1996-09-07  0:00 ` Robert A Duff
1996-09-07  0:00 ` David C. Hoos, Sr.
1996-09-08  0:00 ` Jon S Anthony
1996-09-08  0:00   ` David C. Hoos, Sr.
1996-09-09  0:00     ` nasser
1996-09-09  0:00   ` Jon S Anthony [this message]
1996-09-09  0:00     ` David C. Hoos, Sr.
1996-09-09  0:00       ` Robert Dewar
1996-09-10  0:00         ` Geert Bosch
1996-09-11  0:00           ` Robert Dewar
1996-09-13  0:00             ` Geert Bosch
1996-09-14  0:00               ` Robert Dewar
1996-09-11  0:00           ` Robert Dewar
1996-09-11  0:00             ` Jonas Nygren
1996-09-13  0:00             ` Geert Bosch
1996-09-14  0:00               ` Robert Dewar
1996-09-09  0:00       ` John G. Volan
1996-09-10  0:00 ` Jon S Anthony
replies disabled

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