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=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,5d3a1501d97dab65 X-Google-Attributes: gid103376,public From: jsa@alexandria (Jon S Anthony) Subject: Re: C to Ada : a piece of code Date: 1996/09/09 Message-ID: #1/1 X-Deja-AN: 179350120 sender: news@organon.com (news) references: <3231732C.2781@virgoa4.in2p3.fr> organization: Organon Motives, Inc. newsgroups: comp.lang.ada Date: 1996-09-09T00:00:00+00:00 List-Id: In article <01bb9d61$537fe5e0$2b8371a5@dhoossr.iquest.com> "David C. Hoos, Sr." writes: > Jon S Anthony wrote in article > ... > > In article <3231732C.2781@virgoa4.in2p3.fr> Grave Xavier > 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