comp.lang.ada
 help / color / mirror / Atom feed
From: Ted Dennison<dennison@telepath.com>
Subject: Re: C-style 'union' in Ada?
Date: Tue, 14 Aug 2001 13:38:53 GMT
Date: 2001-08-14T13:38:53+00:00	[thread overview]
Message-ID: <NR9e7.850$2u.25965@www.newsranger.com> (raw)
In-Reply-To: 9l7qon$d78$1@nntp9.atl.mindspring.net

In article <9l7qon$d78$1@nntp9.atl.mindspring.net>, Brian Catlin says...
>
>I'm still trying to get both lobes around the Ada paradigm.  I have a record 
>that I want to hold a pointer to a buffer which is either a String or 
>Wide_String, but I don't want to statically declare which, so using a variant 
>record won't work (at least given my understanding).  Likewise, I don't want 
>to have two record definitions, one for String, and one for Wide_String.  In 
>the package I'm designing, I don't care whether it is a String or Wide_String, 
>I will just pass it to the file I/O packages (stream, in this case).  In C, I 
>would:

First off, its wrong that you have to staticly declare which one you are using
for a variant record. If you define the record to have a default value for the
variant, then you can change it at runtime. The catch is that you have to change
*all* the record fields along with the variant when you do it.

Secondly, I don't ever end up with structures like this in my Ada code (unless
I'm interfacing to some OS routine that uses them). I'm not saying that its
impossible that you actually need this, just that its highly unlikely. Its even
more unlikely that you really need a pointer to it. So you really ought to tell
us *why* you feel like you need this structure.

Thirdly, if I *did* have to have something like this for some reason (which
right now I cannot fathom), I'd probably define two structures (no more or less
work than defining one structure with both of them in it), and use pointer-based
unchecked_conversion to change my view of the buffer between them. But its more
likely I'd find a way to structurally arrange things so that I didn't need to do
that...

---
T.E.D.    homepage   - http://www.telepath.com/dennison/Ted/TED.html
          home email - mailto:dennison@telepath.com



  parent reply	other threads:[~2001-08-14 13:38 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-08-13  6:06 C-style 'union' in Ada? Brian Catlin
2001-08-13  7:34 ` tmoran
2001-08-14  3:09 ` DuckE
2001-08-14  3:49   ` Brian Catlin
2001-08-14  7:37     ` Martin Dowie
2001-08-14  9:39       ` Ole-Hjalmar Kristensen
2001-08-14 11:49         ` Martin Dowie
2001-08-14 13:38 ` Ted Dennison [this message]
2001-08-16 22:35   ` David Brown
2001-08-17  3:14     ` Brian Catlin
2001-08-17 14:44       ` Ted Dennison
2001-08-17 16:38         ` Jeffrey Carter
2001-08-17 18:17           ` Ted Dennison
2001-08-17 18:45         ` Samuel T. Harris
2001-08-17  3:18     ` Variable sizes for record fields (was: C-style 'union' in Ada) Larry Kilgallen
2001-08-17  6:34       ` Variable sizes for record fields David Brown
2001-08-17 10:44         ` Larry Kilgallen
2001-08-17 19:18           ` Warren W. Gay VE3WWG
2001-08-17 21:36             ` Ken Burtch
replies disabled

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