From: "Marin David Condic" <dont.bother.mcondic.auntie.spam@[acm.org>
Subject: Re: Hi byte and Lo Byte Question
Date: Fri, 24 Aug 2001 13:05:35 -0400
Date: 2001-08-24T17:05:35+00:00 [thread overview]
Message-ID: <9m61gv$b8s$1@nh.pace.co.uk> (raw)
In-Reply-To: 3B867ECA.80502@home.com
"Warren W. Gay VE3WWG" <ve3wwg@home.com> wrote in message
news:3B867ECA.80502@home.com...
>
> I see where you're going on the "efficiency" argument, but ignoring that
> for a moment, what about a different approach..
>
> Someone could craft an Ada subset (declaration) language, that is
> compiled by a small compiler (like a CORBA IDL compiler), and
> generates a resulting package body and spec, in existing Ada95
> terms to accomplish what you want.
>
> A better way might be to use ASIS with the necessary "code" added to
> generate your packages (some commercial venture has probably already
> done this at some point).
>
I'd really hate to have to be running some sort of preprocessor just to get
automatic creation of all the Unchecked_Conversions I might want. This would
be more painful than simply creating the Unchecked_Conversion or declaring
an overlay of a Stream_Element_Array on top of all the types I might want to
convert.
You aren't really extending the language per se. You're just adding another
type/object attribute, so syntactically it remains the same. I believe
implementations might have some latitude to create attributes like this and
not be in violation of the standard, so it could be an extension without a
language update.
>
> Of course, the draw back to this approach is that you don't avoid the
> data copying that would be required by the generated code. The advantage
> however, would be to keep the language from growing in size. If you
> look at:
>
> >>for X in My_Type'Raw_Data (My_Data)'Range loop
> >> Some_Storage_Element := My_Type'Raw_Data (My_Data) (X) ;
> >>end loop ;
>
>
> there is some data copying on a Some_Storage_Element basis anyway.
>
But no motion of My_Data to some intermediate structure just to be able to
treat it as bytes. The Some_Storage_Element part was just there to
demonstrate something syntactically correct. The important part is the
My_Type'Raw_Data (My_Data) (X) part. You can reference all the bytes of
My_Data without having to do:
Another_Block_Of_Data := My_Unchecked_Conversion (My_Data) ;
which requires allocation of two objects instead of one *and* requires
motion of the data from one place to the other (o.k. not if you pull stunts
with pointers, but thats a side issue.) **and** requires an appropriate
instantiation of Unchecked_Conversion ***AND*** has to be done for each and
every data type that you want to turn into a stream. Gimme the raw bytes in
an easy manner and I promise not to blame Ada when I shoot myself in the
foot.
> Unless Ada0Y were to gain endian representation features, I think
> a certain amount of copying (internal or external) would be
> necessary anyway. But I have to admit, that a representation
> clause for endianess would be extremely convenient. Then at least
> the compiler can do it in the most effective manner for the
> platform it was compiled on.
What's wrong with ARM 13.5.3 Bit Ordering and using "for X'Bit_Order use
High_Order_First ;" and similar (Low_Order_First )? I'm pretty sure that
should work and do what you want - never needed to mess with it myself -
yet. (Day ain't over, yet!)
MDC
--
Marin David Condic
Senior Software Engineer
Pace Micro Technology Americas www.pacemicro.com
Enabling the digital revolution
e-Mail: marin.condic@pacemicro.com
Web: http://www.mcondic.com/
next prev parent reply other threads:[~2001-08-24 17:05 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-08-22 14:48 Hi byte and Lo Byte Question mop
2001-08-22 15:56 ` Larry Kilgallen
2001-08-22 16:21 ` Ted Dennison
2001-08-22 23:11 ` Mark Johnson
2001-08-23 0:23 ` Darren New
2001-08-23 14:13 ` Mark Johnson
2001-08-23 17:15 ` Darren New
2001-08-24 0:00 ` Robert Dewar
2001-08-24 7:52 ` Martin Dowie
2001-08-23 14:43 ` Marin David Condic
2001-08-24 8:09 ` Peter Dulimov
2001-08-24 16:20 ` Warren W. Gay VE3WWG
2001-08-24 17:05 ` Marin David Condic [this message]
2001-08-24 17:46 ` Warren W. Gay VE3WWG
2001-08-25 7:15 ` Simon Wright
2001-08-27 16:33 ` Warren W. Gay VE3WWG
2001-08-23 1:26 ` DuckE
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox