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




  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