comp.lang.ada
 help / color / mirror / Atom feed
From: Niklas Holsti <niklas.holsti@tidorum.invalid>
Subject: Re: Creating several types from a base type and conversion
Date: Sun, 19 Jan 2020 17:24:27 +0200
Date: 2020-01-19T17:24:27+02:00	[thread overview]
Message-ID: <h8jalbF9meU1@mid.individual.net> (raw)
In-Reply-To: <lyr1zvwlc7.fsf@pushface.org>

On 2020-01-19 16:51, Simon Wright wrote:
> AdaMagica <christ-usch.grein@t-online.de> writes:
> 
>> Am Sonntag, 19. Januar 2020 10:37:21 UTC+1 schrieb Simon Wright:
>>> representation clauses where endianness is involved are a lot more
>>> confusing than shifts and masks.

In my experience, record-representation clauses with non-default 
Bit_Order work well as long as you don't exceed the size of the largest 
machine scalar (so 32 bits are ok for most systems, 64 bits for some) 
and as long as you don't use record components whose types are 
themselves records with representation clauses (if Bit_Order is not the 
default, GNAT insists on widening the component types to the nearest 
larger-or-equal machine scalar, so a 5-bit record, say, is widened to an 
8-bit record and GNAT then insists on using at least 8 bits for any 
component of that type, which usually breaks the lay-out of the 
higher-level record).

>> See https://en.wikibooks.org/wiki/Ada_Programming/Attributes/%27Bit_Order
>>
>> This is a complete description of how far we can get with endian
>> independence in current Ada. Ada 202x won't change anything in this
>> respect.
> 
> The description is still, I feel, confusing.
> 
> That said, I found this incantation (for an SNTP packet, which is
> transmitted in network byte order) works a treat on this LE machine. I
> don't have a BE machine to check it on (but the original code was used
> on both BE and LE machines).
> 
>     end record
>       with
>         Bit_Order => System.High_Order_First,
>         Scalar_Storage_Order => System.High_Order_First,

Note that Scalar_Storage_Order is GNAT-specific and not Ada standard.

>         Size => 48 * 8;
>

-- 
Niklas Holsti
Tidorum Ltd
niklas holsti tidorum fi
       .      @       .

  reply	other threads:[~2020-01-19 15:24 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-18  7:32 Creating several types from a base type and conversion Ken Roberts
2020-01-18 12:16 ` Simon Wright
2020-01-18 12:49   ` Ken Roberts
2020-01-18 14:56     ` Bill Findlay
2020-01-18 16:13       ` Jeffrey R. Carter
2020-01-18 18:20         ` Bill Findlay
2020-01-18 18:32           ` Jeffrey R. Carter
2020-01-18 20:34             ` Simon Wright
2020-01-20 16:38               ` Bill Findlay
2020-01-18 22:20       ` Ken Roberts
2020-01-18 15:09     ` Simon Wright
2020-01-18 22:16       ` Ken Roberts
2020-01-18 22:35         ` Simon Wright
2020-01-18 23:03           ` Ken Roberts
2020-01-18 23:38             ` Simon Wright
2020-01-19  0:12               ` Ken Roberts
2020-01-19  9:37                 ` Simon Wright
2020-01-19 11:48                   ` AdaMagica
2020-01-19 14:51                     ` Simon Wright
2020-01-19 15:24                       ` Niklas Holsti [this message]
2020-01-19 16:11                     ` Optikos
2020-01-19  0:33               ` Ken Roberts
2020-01-19  0:07         ` Niklas Holsti
2020-01-18 15:47     ` Simon Wright
2020-01-21 21:35     ` Shark8
2020-01-21 23:06       ` Niklas Holsti
2020-01-22  1:08         ` Ken Roberts
2020-01-22 14:18           ` Ken Roberts
2020-01-22  8:37       ` Simon Wright
2020-01-22 14:32         ` Shark8
2020-01-22 15:40           ` Simon Wright
2020-01-18 14:17   ` Optikos
2020-01-18 17:57 ` Niklas Holsti
2020-01-18 22:59   ` Ken Roberts
2020-01-19  0:30     ` Niklas Holsti
2020-01-19  1:07       ` Ken Roberts
2020-01-19  3:37 ` Ken Roberts
2020-01-23 21:39 ` Optikos
2020-01-24  9:35   ` Ken Roberts
2020-01-24 10:04     ` AdaMagica
2020-01-24 12:38     ` Optikos
2020-01-24 15:01       ` Ken Roberts
2020-01-24 15:22         ` Simon Wright
2020-01-24 15:40           ` Ken Roberts
2020-01-24 15:54   ` Simon Wright
2020-01-25 10:37 ` Ken Roberts
2020-01-25 10:44   ` Ken Roberts
2020-01-25 20:26   ` Shark8
2020-01-27 14:10 ` Ken Roberts
replies disabled

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