From: Simon Wright <simon@pushface.org>
Subject: Re: Stream_Element_Array
Date: Wed, 14 Sep 2011 09:31:18 +0100
Date: 2011-09-14T09:31:18+01:00 [thread overview]
Message-ID: <m2boun4jah.fsf@pushface.org> (raw)
In-Reply-To: edfcce02-7d80-4186-a281-c8a4983a3efd@p25g2000pri.googlegroups.com
Alexander Korolev <antonovkablog@gmail.com> writes:
> I have a Type
>
> type Message_Header is
> record
> -- Components -- 8 bit
> Length : Unsigned_16; -- 16 bit (MSB)
> -- other components -- 8 bit
> end record;
>
> How I could split the Lenght component on two subsequent
> Stream_Element ( 8-bit)?
>
> Command: Stream_Element_Array (1 .. 64);
I think the best way is using unchecked conversion. Below adds the
complication of converting to network byte order if not already so:
subtype Two_Byte_Slice is Ada.Streams.Stream_Element_Array (1 .. 2);
Big_Endian : constant Boolean
:= System."=" (System.Default_Bit_Order, System.High_Order_First);
function To_Two_Byte_Slice (S : Unsigned_16) return Two_Byte_Slice is
function Convert is new Ada.Unchecked_Conversion (Unsigned_16,
Two_Byte_Slice);
Tmp : constant Two_Byte_Slice := Convert (S);
begin
if Big_Endian then
return Tmp;
else
return (1 => Tmp (2),
2 => Tmp (1));
end if;
end To_Two_Byte_Slice;
Command (11 .. 12) := To_Two_Byte_Slice (42);
next prev parent reply other threads:[~2011-09-14 8:31 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-09-14 3:13 Stream_Element_Array Alexander Korolev
2011-09-14 5:29 ` Stream_Element_Array Per Sandberg
2011-09-14 8:34 ` Stream_Element_Array Alexander Korolev
2011-09-14 8:31 ` Simon Wright [this message]
2011-09-14 9:09 ` Stream_Element_Array Alexander Korolev
2011-09-14 9:40 ` Stream_Element_Array Dmitry A. Kazakov
2011-09-14 9:41 ` Stream_Element_Array Dmitry A. Kazakov
2011-09-14 10:18 ` Stream_Element_Array Simon Wright
2011-09-14 12:42 ` Stream_Element_Array Dmitry A. Kazakov
2011-09-14 16:20 ` Stream_Element_Array Simon Wright
2011-09-14 19:53 ` Stream_Element_Array Dmitry A. Kazakov
2011-09-14 10:53 ` Stream_Element_Array Simon Wright
2011-09-14 12:48 ` Stream_Element_Array Dmitry A. Kazakov
2011-09-14 14:48 ` Stream_Element_Array Alexander Korolev
2011-09-14 15:08 ` Stream_Element_Array Dmitry A. Kazakov
2011-09-14 17:16 ` Stream_Element_Array Alexander Korolev
2011-09-14 20:13 ` Stream_Element_Array Dmitry A. Kazakov
2011-09-14 21:29 ` Stream_Element_Array Alexander Korolev
2011-09-15 8:20 ` Stream_Element_Array Dmitry A. Kazakov
2011-09-15 18:58 ` Stream_Element_Array Alexander Korolev
2011-09-15 20:48 ` Stream_Element_Array Dmitry A. Kazakov
2011-09-16 0:20 ` Stream_Element_Array Alexander Korolev
2011-09-15 19:15 ` Stream_Element_Array Alexander Korolev
2011-09-15 20:11 ` Stream_Element_Array Simon Wright
2011-09-15 20:34 ` Stream_Element_Array Alexander Korolev
2011-09-15 21:42 ` Stream_Element_Array Simon Wright
2011-09-15 21:50 ` Stream_Element_Array Simon Wright
2011-09-16 0:01 ` Stream_Element_Array Alexander Korolev
2011-09-16 0:18 ` Stream_Element_Array Adam Beneschan
2011-09-16 7:22 ` Stream_Element_Array Dmitry A. Kazakov
2011-09-16 10:21 ` Stream_Element_Array Simon Wright
2011-09-16 12:13 ` Stream_Element_Array Dmitry A. Kazakov
2011-09-16 17:20 ` Stream_Element_Array Simon Wright
2011-09-16 19:32 ` Stream_Element_Array Dmitry A. Kazakov
2011-09-16 22:18 ` Stream_Element_Array Simon Wright
2011-09-17 8:18 ` Stream_Element_Array Dmitry A. Kazakov
2011-09-19 23:22 ` Stream_Element_Array Randy Brukardt
2011-09-15 21:28 ` Stream_Element_Array Alexander Korolev
2011-09-15 2:33 ` Stream_Element_Array Alexander Korolev
2011-09-19 23:11 ` Stream_Element_Array Randy Brukardt
2011-09-14 12:19 ` Stream_Element_Array Gautier write-only
2011-09-16 11:17 ` Stream_Element_Array anon
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox