comp.lang.ada
 help / color / mirror / Atom feed
From: Jeff Carter <jrcarter@acm.org>
Subject: Re: Variable length raw-byte data
Date: Wed, 13 Dec 2000 23:10:46 GMT
Date: 2000-12-13T23:10:46+00:00	[thread overview]
Message-ID: <3A37F5FE.E6E2CBB4@acm.org> (raw)
In-Reply-To: 00d101c0651c$24e3ea60$f8ffa8c0@dbdell2000

David Botton wrote:
> 
> Since Byte_List is unconstrained is there not a potential for problem here
> with additional data associated with the type for bounds?
> 
> > type Byte_List is array (Positive range <>) of Unsigned_8;

This shouldn't cause a problem, because in

Thing : Byte_List (1 .. Length);
for Thing'Address use Pointer;

Thing'Address is defined to be the address of Thing (Thing'First). If
the compiler needs to store any additional information, it has to put
that information elsewhere.

> 
> Would this be a better solution:
> 
> C_Thing (Length, Pointer)
> 
> declare
>     type Byte_List is array (1 .. Length) of Unsigned_8;
>     Thing : Byte_List;
>     for Thing'Address use Pointer;
> 
> begin
>    ...
> end;

This is certainly OK, too.

> 
> I frequently code the above as:
> 
> C_Thing (Length, Pointer)
> 
> declare
>     type Byte_List is array (1 .. Length) of Unsigned_8;
>     type Pointer_To_Byte_List is access all Byte_List;
> 
>     function To_Pointer_To_Byte_List is
>        new Ada.Unchecked_Conversion (System.Address, Pointer_To_Byte_List);
> 
>     Thing : Pointer_To_Byte_List := To_Pointer_To_Byte_List
> (Pointer'Address);
> begin
>  ...
> end;
> 
> Is there a reason that using the for Thing'Address would be a better
> solution then the second method?

Yes, the second method is not portable. While Unchecked_Conversion
between System.Address and an access type may work with some compilers,
it definitely does NOT work with all compilers.

Since you have a constrained type here, you could use
System.Address_To_Access_Conversions to obtain a valid access value, but
why add the added baggage of access-type semantics when you can make
Thing a Byte_List?

-- 
Jeff Carter
"You tiny-brained wipers of other people's bottoms!"
Monty Python & the Holy Grail





  parent reply	other threads:[~2000-12-13 23:10 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2000-12-12 21:00 Variable length raw-byte data Beard, Frank
2000-12-13 15:48 ` David Botton
2000-12-13 15:51   ` Lutz Donnerhacke
2000-12-13 19:34     ` Robert Dewar
2000-12-14  8:54       ` Lutz Donnerhacke
2000-12-13 23:10   ` Jeff Carter [this message]
  -- strict thread matches above, loose matches on Subject: below --
2000-12-13 20:39 Beard, Frank
2000-12-14 13:30 ` Robert Dewar
2000-12-13  2:56 Beard, Frank
2000-12-13 15:52 ` Robert Dewar
2000-12-13 18:23   ` Larry Kilgallen
2000-12-13 19:26     ` Robert Dewar
2000-12-12 21:11 Beard, Frank
2000-12-12  3:30 Beard, Frank
2000-12-12  5:54 ` tmoran
2000-12-11 19:38 Julian Morrison
2000-12-12  5:19 ` Jeff Carter
2000-12-13  0:50 ` Robert Dewar
2000-12-13  8:56   ` Tristan Gingold
replies disabled

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