comp.lang.ada
 help / color / mirror / Atom feed
From: Niklas Holsti <niklas.holsti@tidorum.invalid>
Subject: Re: Runtime type selection
Date: Sun, 11 Oct 2009 22:54:34 +0300
Date: 2009-10-11T22:54:34+03:00	[thread overview]
Message-ID: <4ad23819$0$6256$4f793bc4@news.tdc.fi> (raw)
In-Reply-To: <61d081f4-cccc-4575-927f-5c400b73ff90@k19g2000yqc.googlegroups.com>

xorque wrote:
> On Oct 11, 5:02 pm, Niklas Holsti <niklas.hol...@tidorum.invalid>
> wrote:
>> Keep a list or array of (accesses to) a factory function for each
>> possible (derived) type.
> 
> 'Lo,
> 
> That does sound like the sort of thing I'd have done in C.

Yes. Ada makes it easier since you can use elaboration-time statement 
blocks in package bodies to register stuff.

> I still
> have a nagging sensation that Ada actually provides other means to
> do this based on such things as the 'Tag attribute.

Did you read about the package Ada.Tags (RM 3.9)? There is a generic 
function Ada.Tags.Generic_Dispatching_Constructor that takes a tag as 
parameter and creates an object with that tag, but I don't hink there is 
any way to find the tags for all types in a given derivation class. So 
even with  Ada.Tags.Generic_Dispatching_Constructor your program still 
has to register the types, or their tags, or a prototype object of each 
type, to create the program-accessible set of types/tags that can be in 
the graph.

Perhaps some expert can explain why this reflection capability (find 
tags for all derived types in a class) was not included in Ada.Tags? 
Perhaps because Ada run-time systems do not need such a function for 
their own purposes?

-- 
Niklas Holsti
Tidorum Ltd
niklas holsti tidorum fi
       .      @       .



  reply	other threads:[~2009-10-11 19:54 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-10-11 16:41 Runtime type selection xorque
2009-10-11 17:02 ` Niklas Holsti
2009-10-11 17:15   ` xorque
2009-10-11 19:54     ` Niklas Holsti [this message]
2009-10-12  9:26       ` Georg Bauhaus
2009-10-12 12:02         ` xorque
2009-10-12 23:42       ` Randy Brukardt
2009-10-13  6:50         ` Niklas Holsti
2009-10-13  0:59       ` Adam Beneschan
2009-10-13  7:01         ` Niklas Holsti
2009-10-11 17:15 ` mockturtle
2009-10-11 20:06 ` Dmitry A. Kazakov
2009-10-13 10:45   ` Colin Paul Gloster
2009-10-13 10:17     ` Dmitry A. Kazakov
2009-10-13 15:11 ` xorque
2009-10-13 15:50   ` Dmitry A. Kazakov
2009-10-13 16:02     ` xorque
replies disabled

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