comp.lang.ada
 help / color / mirror / Atom feed
From: Georg Bauhaus <bauhaus@futureapps.de>
Subject: Re: Generic Collection
Date: Fri, 11 May 2007 23:28:34 +0200
Date: 2007-05-11T23:28:35+02:00	[thread overview]
Message-ID: <1178918914.8423.47.camel@localhost.localdomain> (raw)
In-Reply-To: <1178916106.931240.40880@p77g2000hsh.googlegroups.com>

On Fri, 2007-05-11 at 13:41 -0700, andrew wrote:
> On May 11, 3:10 am, Georg Bauhaus <bauh...@futureapps.de> wrote:
> > On Thu, 2007-05-10 at 15:48 -0700, andrew wrote:
> > > On May 10, 2:31 pm, Simon Wright <simon.j.wri...@mac.com> wrote:
> > > > > So, I'm thinking that many of the "capabilities" or operations I
> > > > > desire of the collection would have to be "dispatching" to the type of
> > > > > the collection object.
> >
> > When is the type of the collection object determined? How?
> The statement I made may be misleading.  It's not dispatching on the
> type of the collection object but on the type of the object stored in
> the collection.  Does that make better sense?

OK.

tuples: collection;
tables: collection;

declare
 item: ? := get(tables, key);

If you don't care that there is only one type of collection for
all kinds of objects, then indeed references to DB_thing'class
objects seem a plausible choice for storing table objects in
collection. Where

   type DB_thing is abstract tagged private;
   type DB_thing_ref is access DB_thing'class;

   type attribute is new DB_thing with private;
   type tuple is new DB_thing with private; 
   ...

   package DB_collections is new Containers.Hashed_Sets
      (Element_Type => DB_thing_ref, ...);

   subtype collection is DB_collections.Set;

Is there really a sufficiently common algorithm for schemas,
tables, tuples, and attributes?


> > If you want a collection that doesn't collect either Apples
> > or Oranges, but instead is capable of holding Apples, Oranges,
> > Cabbage, Motor_Oil, Whatever, you can have that, too. Is this
> > what you want?
> Yes, but I wouldn't really be storing apples, oranges, cabbage, ... I
> would be storing a common object type like "Object".  Right?

Right.


> > > I don't understand why I would have run-time errors.  Please expand
> > > that thought.
> >
> > Just think of the consequences of Java pre-1.5 collections delivering
> > nothing but Object objects.
> There was a problem with delivering objects of type Object?

Yes, there was a problem with everything being of type Object.
For example, retrieving references from collections forces
type checking at run time and throwing ClassCastException
when there is a mismatch.
    some_ref = (IKnowWhatType) container.get(some_key);
That is a reason why Java now has generics.





  reply	other threads:[~2007-05-11 21:28 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-05-08 19:29 Generic Collection andrew
2007-05-08 21:00 ` Georg Bauhaus
2007-05-08 21:59   ` andrew
2007-05-09 14:51     ` andrew
2007-05-09 16:12       ` Georg Bauhaus
2007-05-09 18:54         ` andrew
2007-05-10 19:31           ` Simon Wright
2007-05-10 22:48             ` andrew
2007-05-11  8:10               ` Georg Bauhaus
2007-05-11 20:41                 ` andrew
2007-05-11 21:28                   ` Georg Bauhaus [this message]
2007-05-11 21:55                     ` andrew
2007-05-12  7:18               ` Simon Wright
2007-05-12  7:52                 ` Dmitry A. Kazakov
2007-05-13 11:00                   ` Simon Wright
2007-05-13 12:11                     ` Dmitry A. Kazakov
2007-05-16  0:27                     ` Randy Brukardt
2007-05-16  6:05                       ` Simon Wright
2007-05-16  7:17                         ` Untagged types don't work right - was: " Grein, Christoph (Fa. ESG)
2007-05-16 13:27                       ` Benjamin Place
2007-05-14 17:09                 ` andrew
2007-05-14 20:00                   ` Simon Wright
replies disabled

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