From: "Adam Beneschan" <adam@irvine.com>
Subject: Re: generic question
Date: 20 Nov 2006 09:31:17 -0800
Date: 2006-11-20T09:31:17-08:00 [thread overview]
Message-ID: <1164043877.922144.53120@m73g2000cwd.googlegroups.com> (raw)
In-Reply-To: 1163959439.299036.129940@e3g2000cwe.googlegroups.com
markww wrote:
> Hi,
>
> I've been going through ada tutorials, and am looking at the generics
> support. I can't quite understand how to accomplish having a record
> which has a generic data member. For example, something like:
>
> type NODE_REC is
> record
> unknown_data_type : generic; -- not sure how to express
> this in ada
> Next_Node : NODE_REC_PTR;
> Prev_Node : NODE_REC_PTR;
> end record;
>
> I'd like to be able to store either an integer, a float, or some other
> user defined record type in there so that this node record becomes a
> container. Is this possible?
Before we possibly get too far off track, I think we need to know: Are
all of the "unknown_data_type" fields in the same container going to
have the *same* type? Or are you planning on mixing types---e.g.
creating a linked list where some elements in the list have an integer
for the unknown_data_type field and some elements in the same list
store a float or a user-defined record or something.
If it's the second, the generic solutions others have posted won't
work. When you declare a generic, you can instantiate it with, say,
"integer", "float", or any other type; but then each generic instance
will define its own version of NODE_REC and NODE_REC_PTR, and those are
*different* types even though they have the same name. Therefore, a
NODE_REC_PTR from one generic instance cannot point to a NODE_REC in a
different generic instance.
If this is what you're trying to do, we'll need a different approach,
probably one that will involve tagged types and classwide types.
-- Adam
next prev parent reply other threads:[~2006-11-20 17:31 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-11-19 18:03 generic question markww
2006-11-19 19:17 ` Ludovic Brenta
2006-11-19 19:23 ` Stefan Bellon
2006-11-19 20:16 ` markww
2006-11-19 22:07 ` Pascal Obry
2006-11-20 10:35 ` Alex R. Mosteo
2006-11-20 17:03 ` Pascal Obry
2006-11-20 18:10 ` Alex R. Mosteo
2006-11-20 21:16 ` markww
2006-11-20 21:40 ` Matthew Heaney
2006-11-20 21:50 ` Matthew Heaney
2006-11-21 7:04 ` Pascal Obry
2006-11-21 8:25 ` Alex R. Mosteo
2006-11-21 14:25 ` Matthew Heaney
2006-11-21 15:47 ` Matthew Heaney
2006-11-21 17:14 ` Pascal Obry
2006-11-21 18:15 ` Matthew Heaney
2006-11-21 18:28 ` Dmitry A. Kazakov
2006-11-21 14:21 ` Matthew Heaney
2006-11-21 17:12 ` Pascal Obry
2006-11-21 17:25 ` Lutz Donnerhacke
2006-11-21 17:35 ` Alex R. Mosteo
2006-11-21 18:18 ` Matthew Heaney
2006-11-22 23:58 ` Randy Brukardt
2006-11-23 8:32 ` Dmitry A. Kazakov
2006-11-28 21:23 ` Randy Brukardt
2006-11-29 15:57 ` Matthew Heaney
2006-11-21 18:14 ` Matthew Heaney
2006-11-23 0:02 ` Randy Brukardt
2006-11-21 18:17 ` Dmitry A. Kazakov
2006-11-21 18:32 ` Matthew Heaney
2006-11-19 20:24 ` Jeffrey R. Carter
2006-11-19 20:33 ` markww
2006-11-20 17:31 ` Adam Beneschan [this message]
2006-11-21 16:22 ` Matthew Heaney
-- strict thread matches above, loose matches on Subject: below --
2003-11-23 20:59 shoko
2003-11-23 21:41 ` Marius Amado Alves
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox