comp.lang.ada
 help / color / mirror / Atom feed
From: Charles Hixson <charleshixson@earthling.net>
Subject: Re: Looping over a tagged record?
Date: Thu, 21 Jun 2001 23:02:01 GMT
Date: 2001-06-21T23:02:01+00:00	[thread overview]
Message-ID: <Xns90C7A319CCC90charleshixsonearthli@207.217.77.21> (raw)
In-Reply-To: ltrY6.111132$%i7.79731461@news1.rdc1.sfba.home.com

tmoran@acm.org wrote in
news:ltrY6.111132$%i7.79731461@news1.rdc1.sfba.home.com: 

>> basically need to do is examine the incoming data and
>...
>  Look at packages Ada.Streams and Ada.Stream_IO
> Stream_IO lets you read an arbitrary number of bytes into a
> Stream_Element_Array, and Streams lets you conveniently
> convert those raw bytes into an object of type whatever.
>   Suppose your data stream has a series of objects.  Each
>   object 
> is preceded by a single character identifying code.  Then
> you could 
>   Character'Read((Stream, ID_Code);
>   case ID_Code is
>     when 'A' => An_Object_Type'Read(Stream, An_Object);
>     when 'B' => A_Different_Type'Read(Stream,
>     A_Different_Object); ...
> If An_Object_Type is a record, Ada will automatically read
> it by a series of 'Read, of the correct type, on each
> component - or you could override that and instead supply
> your own 'Read. 
> 
That looks quite interesting.  I would definitely need to supply 
my own read, and probably my own write too, since the objects 
will likely need to be stored in non-contiguous areas of the 
file. (If freed space can't be reused, the process would be 
unacceptably inefficient.  And when dealing with small chunks of 
data I would also need to be able to pack then into blocks.)

If I can make that work it will certainly be better than the 
alternatives that had occurred to me. (Address mapped storage, 
e.g., with arbitrary mappings needing to be defined.  Ugh!  Or 
tagged types, with all of the basic types defined for every 
possible offset into the block.  Ugh! again.)

 ...
After looking at the package:  Perhaps I need to rethink things 
to use arbitrary sized blocks rather than fixed size blocks.  
Otherwise it looks like just what I was looking for!


-- 
Charles Hixson

Copy software legally, the GNU way!
Use GNU software, and legally make and share copies of software.
See http://www.gnu.org
    http://www.redhat.com
    http://www.linux-mandrake.com
    http://www.calderasystems.com/
    http://www.linuxapps.com/



  reply	other threads:[~2001-06-21 23:02 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-06-19 20:39 Looping over a tagged record? M R Goodwin
2001-06-19 21:31 ` Pascal Obry
2001-06-19 21:32 ` Pascal Obry
2001-06-19 22:20   ` Samuel T. Harris
2001-06-19 23:45     ` mgoodwinSPAMMY
2001-06-20  1:33 ` Pat Rogers
2001-06-20  3:13   ` Pat Rogers
2001-06-20  2:58 ` DuckE
2001-06-20 13:15 ` Ted Dennison
2001-06-20 15:01   ` M. A. Alves
2001-06-21  2:36     ` DuckE
2001-06-21 10:14       ` M. A. Alves
2001-06-21 13:24         ` Pat Rogers
2001-06-21 17:08     ` Charles Hixson
2001-06-21 18:58       ` tmoran
2001-06-21 23:02         ` Charles Hixson [this message]
2001-06-22 19:04           ` B.Gaffney
2001-06-22 20:36             ` Pascal Obry
2001-06-22  2:18       ` DuckE
2001-06-22 17:33         ` Charles Hixson
2001-06-22 18:24           ` tmoran
2001-09-13  0:29           ` Gnat Windows load error tmoran
2001-09-13 18:15             ` Jerry van Dijk
2001-09-13 23:17               ` tmoran
2001-09-13  3:58           ` Ada web crawler tmoran
2001-11-17 21:50           ` ada.strings.bounded slice errors tmoran
2001-11-18 17:16             ` Florian Weimer
2001-11-18 19:31               ` tmoran
2001-11-19  7:12                 ` Florian Weimer
2002-02-08 20:55           ` How to get a traceback in Gnat 3.14p tmoran
2002-02-08 21:24             ` Pascal Obry
2002-02-08 22:28               ` tmoran
2002-02-11  0:10           ` How to use gnatelim in Gnat 3.14p? tmoran
2002-02-15 17:23           ` does gnatelim work? tmoran
2002-02-15 18:18             ` Stephen Leake
2002-02-15 21:58               ` tmoran
2002-02-18  1:31                 ` Stephen Leake
2002-04-15  3:05           ` Announce: .rc files with Gnat tmoran
2002-04-15 14:48             ` Ted Dennison
2002-05-25  7:06           ` slice'access? tmoran
2002-05-25 16:47             ` slice'access? Robert Dewar
2002-05-25 18:28               ` slice'access? tmoran
2002-05-25 20:20                 ` slice'access? Jeffrey Carter
2002-05-25 23:39                   ` slice'access? tmoran
2002-05-26 14:22                     ` slice'access? Robert Dewar
2002-09-30  1:54           ` 'write of bounded string? tmoran
2002-09-30 16:06             ` Stephen Leake
2002-10-27 23:01           ` phone# etc bdean
2002-10-28  3:04             ` tmoran
2002-11-06  3:14           ` A little Ada app tmoran
2002-11-06 11:37             ` Larry Kilgallen
2002-11-06 15:08             ` Ted Dennison
2002-11-06 18:02               ` tmoran
2001-06-21  3:09 ` Looping over a tagged record? gresset1
replies disabled

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