comp.lang.ada
 help / color / mirror / Atom feed
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/






  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