comp.lang.ada
 help / color / mirror / Atom feed
* Extending a third party tagged type while adding finalization
@ 2017-11-22 12:43 Jere
  2017-11-22 16:42 ` AdaMagica
  0 siblings, 1 reply; 45+ messages in thread
From: Jere @ 2017-11-22 12:43 UTC (permalink / raw)


Has anyone have any good tips for extending a third party type:

type Third_Party_Type is tagged private;

I want to extend it but also add finalization which is inheritable
by later descendants:

type My_Base_Type is new Third_Party_Type with private;
procedure Finalize(Object : in out My_Type);
procedure Initialize(Object : in out My_Type);
procedure Adjust(Object : in out My_Type);

That way, clients of My_Base_Type can use them along side Third_Party_Type such
as through a variable of Third_Party_Type'Class.  My first (untested) thought
is to maybe string together a proxy object inside My_Base_Type using the
Rosen technique and have it forward the Finalization operations through 
dispatch.  I haven't tested this to see if it works but even if it does, it
feels very hacky and is not my preferred way.

Does anyone have any techniques they have used in the past?  

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

end of thread, other threads:[~2017-12-12 20:32 UTC | newest]

Thread overview: 45+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-11-22 12:43 Extending a third party tagged type while adding finalization Jere
2017-11-22 16:42 ` AdaMagica
2017-11-26 17:33   ` Jere
2017-11-26 18:15     ` Dmitry A. Kazakov
2017-11-26 19:31       ` Jere
2017-11-27  9:46     ` AdaMagica
2017-11-27 12:56       ` Jere
2017-11-27 15:00         ` AdaMagica
2017-11-27 16:38           ` Jere
2017-11-27 18:37             ` AdaMagica
2017-11-27 19:53               ` Jere
2017-11-28 11:48                 ` AdaMagica
2017-12-03  2:22                   ` Jere
2017-12-03 21:53               ` Robert Eachus
2017-12-04  7:58                 ` Dmitry A. Kazakov
2017-12-04 14:59                   ` Robert Eachus
2017-12-04 15:39                     ` Dmitry A. Kazakov
2017-11-27 18:10     ` Shark8
2017-11-27 19:56       ` Jere
2017-11-28  1:55       ` Randy Brukardt
2017-12-03  2:47         ` Jere
2017-12-03  9:29           ` Dmitry A. Kazakov
2017-12-03 15:10             ` AdaMagica
2017-12-03 16:39               ` Dmitry A. Kazakov
2017-12-03 19:34             ` AdaMagica
2017-12-03 19:41               ` Dmitry A. Kazakov
2017-12-04 12:38                 ` AdaMagica
2017-12-04 13:19                   ` AdaMagica
2017-12-04 13:55                     ` Dmitry A. Kazakov
2017-12-04 15:44                       ` AdaMagica
2017-12-04 16:19                         ` Dmitry A. Kazakov
2017-12-04 20:54           ` Randy Brukardt
2017-12-04 21:02             ` Dmitry A. Kazakov
2017-12-05 21:09               ` Randy Brukardt
2017-12-05 21:29                 ` Dmitry A. Kazakov
2017-12-07  1:13                   ` Randy Brukardt
2017-12-07  8:36                     ` Dmitry A. Kazakov
2017-12-07 23:22                       ` Randy Brukardt
2017-12-08  9:30                         ` Dmitry A. Kazakov
2017-12-09  0:17                           ` Randy Brukardt
2017-12-11  9:03                             ` Dmitry A. Kazakov
2017-12-11 22:42                               ` Randy Brukardt
2017-12-12 16:11                                 ` AdaMagica
2017-12-12 20:08                               ` G. B.
2017-12-12 20:32                                 ` Dmitry A. Kazakov

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