comp.lang.ada
 help / color / mirror / Atom feed
* Proposal: Auto-allocation of Indefinite Objects
@ 2020-04-03 22:48 Stephen Davies
  2020-04-03 23:45 ` Stephen Leake
                   ` (4 more replies)
  0 siblings, 5 replies; 47+ messages in thread
From: Stephen Davies @ 2020-04-03 22:48 UTC (permalink / raw)


Firstly, apologies if this has already been discussed or,
more likely, if it's a really stupid idea for some reason
that I haven't thought of.

My proposal is that it should (sometimes?) be possible to declare
objects of indefinite types such as String and have the compiler
automatically declare the space for them without the programmer
having to resort to access types.

Benefits:

1. Easier, especially for newbies/students.
2. Safer due to reduced use of access types.
3. Remove the need to have definite and indefinite verions of generic units.

It is the 3rd reason that initially got me thinking about this.
It seems excessive to have two versions of packages just because
one version can say "Node.Item := New_Item;" but the other has to say
"Node.Item_Ptr := new Element_Type'(New_Item);".

It's probably not a good idea for auto-allocation to be the default
behaviour, so I suggest something like:

   type Node_Type is record
      Item : new Element_Type;
      Prev : Node_Ptr_Type;
      Next : Node_Ptr_Type;
   end record;

If Element_Type is a definite type in the instantiation then
Node.Item will be a normal object of that type. Otherwise, it is
implemented as a pointer but the code still treats it as an object.
The target of the pointer is allocated on assignment of the object.
The pointer cannot be copied to any other object. Assignments of the
whole record will perform a deep-copy of the auto-allocated component.
The target of the Node.Item pointer can be auto-deallocated when Node
goes out of scope or is deallocated.

Ok, I've probably missed something obvious and have been wasting my
time, but at least I've got plenty of time to waste at the moment. 

^ permalink raw reply	[flat|nested] 47+ messages in thread

end of thread, other threads:[~2020-09-03  4:30 UTC | newest]

Thread overview: 47+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-03 22:48 Proposal: Auto-allocation of Indefinite Objects Stephen Davies
2020-04-03 23:45 ` Stephen Leake
2020-04-04 10:54   ` Jeffrey R. Carter
2020-04-04 20:55     ` Stephen Davies
2020-04-04  8:31 ` Dmitry A. Kazakov
2020-07-27  7:47 ` Yannick Moy
2020-07-27  9:21   ` J-P. Rosen
2020-07-27  9:49     ` Dmitry A. Kazakov
2020-07-27 17:48   ` Brian Drummond
2020-07-27 20:02     ` Dmitry A. Kazakov
2020-07-28 14:28       ` Brian Drummond
2020-07-28 14:59         ` Dmitry A. Kazakov
2020-07-29 15:33           ` Brian Drummond
2020-07-29 16:20             ` Dmitry A. Kazakov
2020-07-30 13:37               ` Stephen Davies
2020-07-30 14:23                 ` Dmitry A. Kazakov
2020-07-30 17:04               ` Brian Drummond
2020-07-30 18:28                 ` Dmitry A. Kazakov
2020-08-10  0:39                   ` Randy Brukardt
2020-08-10  8:57                     ` Dmitry A. Kazakov
2020-08-20  0:10                       ` Randy Brukardt
2020-08-20 17:49                         ` Dmitry A. Kazakov
2020-08-20 20:19                           ` Dennis Lee Bieber
2020-08-20 23:33                             ` Randy Brukardt
2020-08-21  6:45                               ` Dmitry A. Kazakov
2020-08-23  4:52                                 ` Randy Brukardt
2020-08-23 12:28                                   ` Dmitry A. Kazakov
2020-08-20 23:30                           ` Randy Brukardt
2020-08-21  6:46                             ` Dmitry A. Kazakov
2020-08-23  4:48                               ` Randy Brukardt
2020-08-23 12:29                                 ` Dmitry A. Kazakov
2020-08-10  0:31               ` Randy Brukardt
2020-08-10  8:58                 ` Dmitry A. Kazakov
2020-08-20  0:13                   ` Randy Brukardt
2020-08-20 17:49                     ` Dmitry A. Kazakov
2020-08-20 23:25                       ` Randy Brukardt
2020-08-21  7:08                         ` Dmitry A. Kazakov
2020-08-23  5:03                           ` Randy Brukardt
2020-08-23 12:28                             ` Dmitry A. Kazakov
2020-07-27 20:31     ` Jeffrey R. Carter
2020-07-31  9:25 ` Stephen Davies
2020-07-31 10:20   ` Dmitry A. Kazakov
2020-08-01 11:22     ` Stephen Davies
2020-08-01 12:58       ` Dmitry A. Kazakov
2020-08-01 20:35         ` Stephen Davies
2020-08-01 20:56           ` Dmitry A. Kazakov
2020-09-03  4:30 ` linda white

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