comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Containers - nontrivial element access
Date: Wed, 3 Oct 2007 21:35:57 +0200
Date: 2007-10-03T21:36:00+02:00	[thread overview]
Message-ID: <1xme76ugfqkxc$.4f6zomz823re$.dlg@40tude.net> (raw)
In-Reply-To: qvRMi.133522$Fc.79348@attbi_s21

On Wed, 03 Oct 2007 18:49:58 GMT, Jeffrey R. Carter wrote:

> Dmitry A. Kazakov wrote:
>> 
>> This is IMO utterly wrong. The semantics of swapping element's fields is
>> well-defined independently on the way of access. In question in not the
>> semantics of, but the syntax sugar, namely an array-like indexing of the
>> container.
> 
> Swapping was only an example. Essentially, the OP was looking for the
> ability to do
> 
> People.Element (X).Salary := S;
> 
> and have it modify the value in the data structure.

Which is no problem if Element is an array field of records having the
field Salary. Ada does not prescribe whether that would be by reference.
AFAIK, the compiler is allowed to rewrite the whole People if it wanted to.

The compiler is free to choose between the decompositions:

":=" (People.Element (X).Salary, 3)
":=" (People.Element (X), ".Salary", 3)
":=" (People, "Element", X, "Salary", 3)

This freedom is not offered to the developer of a component library.

> C++ uses reference semantics, so that a modification of a field modifies 
> the value in the data structure. Ada uses value semantics, so that 
> modification of a field does not modify the value in the data structure.

? For by-value things Ada compiler just does copy-out / copy-in,
transparently.

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de



  parent reply	other threads:[~2007-10-03 19:35 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-10-01 21:55 Containers - nontrivial element access Maciej Sobczak
2007-10-01 23:52 ` Alex R. Mosteo
2007-10-02 16:40   ` Matthew Heaney
2007-10-02 23:16     ` Alex R. Mosteo
2007-10-02 20:47   ` Maciej Sobczak
2007-10-02 23:23     ` Alex R. Mosteo
2007-10-02  0:39 ` Jeffrey R. Carter
2007-10-02 16:44   ` Matthew Heaney
2007-10-03  0:20     ` Jeffrey R. Carter
2007-10-03 19:40       ` Maciej Sobczak
2007-10-03 19:56         ` Matthew Heaney
2007-10-03 20:21           ` Dmitry A. Kazakov
2007-10-03 22:37             ` Matthew Heaney
2007-10-04  8:06               ` Dmitry A. Kazakov
2007-10-03 22:02         ` Jeffrey R. Carter
2007-10-04  0:16         ` Robert A Duff
2007-10-07  8:41           ` Jacob Sparre Andersen
2007-10-11 19:15             ` Robert A Duff
2007-10-14  4:59               ` Jacob Sparre Andersen
2007-10-14  7:24                 ` Dmitry A. Kazakov
2007-10-14 13:49                   ` Georg Bauhaus
2007-10-14 15:07                     ` Dmitry A. Kazakov
2007-10-02 20:50   ` Maciej Sobczak
2007-10-03  0:22     ` Jeffrey R. Carter
2007-10-03  8:26       ` Dmitry A. Kazakov
2007-10-03 18:49         ` Jeffrey R. Carter
2007-10-03 19:09           ` Matthew Heaney
2007-10-03 19:15           ` Simon Wright
2007-10-03 19:48             ` Maciej Sobczak
2007-10-03 19:58             ` Matthew Heaney
2007-10-03 19:35           ` Dmitry A. Kazakov [this message]
2007-10-02  2:34 ` Randy Brukardt
2007-10-02 16:47   ` Matthew Heaney
2007-10-02  7:23 ` Dmitry A. Kazakov
2007-10-02 16:37 ` Matthew Heaney
2007-10-02 21:02   ` Maciej Sobczak
2007-10-02 22:20     ` Matthew Heaney
2007-10-03 19:59       ` Maciej Sobczak
2007-10-03 22:55         ` Matthew Heaney
2007-10-04  0:22         ` Robert A Duff
2007-10-04 13:01         ` Georg Bauhaus
2007-10-04 14:01           ` Matthew Heaney
2007-10-04 21:58           ` 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