comp.lang.ada
 help / color / mirror / Atom feed
From: Jeffrey Carter <jrcarter@acm.org>
Subject: Re: Porting from Modula-2 to Ada
Date: Fri, 18 Oct 2002 21:29:13 GMT
Date: 2002-10-18T21:29:13+00:00	[thread overview]
Message-ID: <3DB07D49.6090407@acm.org> (raw)
In-Reply-To: slrnaqvosa.nv.lutz@taranis.iks-jena.de

Lutz Donnerhacke wrote:
> generic
>   type T(<>) is limited private;
> procedure Xxx (data : T);
> 
> procedure Xxx (data : T) is
>   use System.Storage_Elements;
>   raw : Storage_Array (Storage_Offset'First ..
>         Storage_Offset'First + (data'Size + Storage_Unit - 1) / Storage_Unit);
>   pragma Import (Ada, raw);
>   for raw'Address use data'Address;
> begin
>   ...

System.Storage_Elements.Storage_Array is the best way to deal with 
untyped storage in Ada. This example is almost right; it seems to 
allocate one more Storage_Element than it should. A better way to 
achieve the same thing would be

Raw : Storage_Array (1 .. Data'Max_Size_In_Storage_Elements);

which avoids such off-by-one errors.

-- 
Jeff Carter
"Now look, Col. Batguano, if that really is your name."
Dr. Strangelove




  parent reply	other threads:[~2002-10-18 21:29 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-10-18  8:24 Porting from Modula-2 to Ada Manuel Collado
2002-10-18  9:45 ` Bernd Specht
2002-10-18 10:33   ` Lutz Donnerhacke
2002-10-18 10:55     ` Jeffrey Creem
2002-10-18 11:21       ` Lutz Donnerhacke
2002-10-18 22:01         ` Jeffrey Creem
2002-10-18 21:29     ` Jeffrey Carter [this message]
2002-10-18 21:39       ` Jeffrey Carter
2002-10-18 11:20 ` Nicolas Cailín Paul Gloster
2002-10-18 15:14   ` Pat Rogers
2002-10-24 14:51     ` Colin Paul Gloster
2002-10-25  3:43       ` Dennis Lee Bieber
2003-02-04 14:12       ` Colin Paul Gloster
2003-02-09  6:07         ` Robert I. Eachus
2002-10-19 13:30 ` SteveD
2002-10-22  7:48   ` Manuel Collado
2002-10-22  7:55 ` Manuel Collado
2002-10-22 18:56   ` Jeffrey Carter
2002-10-23  9:08     ` Manuel Collado
replies disabled

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