comp.lang.ada
 help / color / mirror / Atom feed
From: Matthew Heaney <matthewjheaney@earthlink.net>
Subject: Re: limited types (Was: Records that could be arrays)
Date: Sat, 25 Feb 2006 15:05:02 GMT
Date: 2006-02-25T15:05:02+00:00	[thread overview]
Message-ID: <ufym7tr6w.fsf@earthlink.net> (raw)
In-Reply-To: asr2qwci95ux.1qadozdgntmnv$.dlg@40tude.net

"Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> writes:

> I think that there should also be [limited] containers of limited types.
> For this we need a construction model, which would allow user-defined
> in-place constructors. After all Ada has always had arrays of limited
> components. We have to extend this model onto user-defined containers.

But you can pass in an Initialize procedure as a parameter of an insertion
operation, to perform whatever initialization needs to be done.

Also (see below for ex), you already have copy ctors for Ada 2005, even for
limited types.


> I think that this would require separation of assignment from copy
> constructor, as C++ does. Though the default must be that assignment is
> generated from destructor and copy constructor.

You could pass in a copy constructor if this were an unbounded form (I thik),
something like:

  procedure Insert
    (C : in out CT;
     E : in ET;
     Copy : not null access function (E : ET) return ET)
  is
     Node : Node_Access :=
       new Node_Type'(Element => Copy (E), others => <>);
  begin
     ...
  end;

Wouldn't that work?  I don't have a compiler that can do that yet, but I know
this would be legal:

  procedure Op (E : ET) is
    EE : ET := Copy (E);
  begin
    ...
  end;

so I assume initialization of an aggregate is the same.  (But I could be
wrong.)



  reply	other threads:[~2006-02-25 15:05 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-02-24 16:51 limited types (Was: Records that could be arrays) Thierry Bernier
2006-02-24 21:57 ` Randy Brukardt
2006-02-25  2:21   ` Matthew Heaney
2006-02-25  3:38     ` Matthew Heaney
2006-02-25 11:06   ` Dmitry A. Kazakov
2006-02-25 15:05     ` Matthew Heaney [this message]
2006-02-26  1:01       ` Randy Brukardt
2006-02-26  9:00       ` Dmitry A. Kazakov
2006-02-26 18:20         ` Matthew Heaney
2006-02-26 20:52           ` Dmitry A. Kazakov
2006-02-26 22:07             ` Matthew Heaney
2006-02-27  9:11               ` Dmitry A. Kazakov
2006-02-27 14:34                 ` Georg Bauhaus
2006-02-27 16:05                   ` Dmitry A. Kazakov
2006-02-27 16:52                     ` Matthew Heaney
2006-02-27 20:21                       ` Dmitry A. Kazakov
2006-02-27 21:40                         ` Georg Bauhaus
2006-02-28  9:38                           ` Dmitry A. Kazakov
2006-02-27 23:00                         ` Matthew Heaney
2006-02-28  9:39                           ` Dmitry A. Kazakov
2006-02-28 17:24                             ` Matthew Heaney
2006-02-28 19:06                               ` Dmitry A. Kazakov
2006-02-28 19:58                                 ` Matthew Heaney
2006-02-28 21:03                                   ` Dmitry A. Kazakov
2006-02-28 21:51                                   ` limited types Simon Wright
2006-03-01  1:59                                     ` Matthew Heaney
replies disabled

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