From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-0.3 required=5.0 tests=BAYES_00, REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 X-Google-Thread: 103376,5c89acd494ea9116 X-Google-Attributes: gid103376,public,usenet X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news2.google.com!news4.google.com!feeder1-2.proxad.net!proxad.net!feeder1-1.proxad.net!ecngs!feeder2.ecngs.de!newsfeed.freenet.de!newsfeed01.chello.at!newsfeed.arcor.de!newsspool2.arcor-online.net!news.arcor.de.POSTED!not-for-mail From: "Dmitry A. Kazakov" Subject: Re: Self pointer in limited record Newsgroups: comp.lang.ada User-Agent: 40tude_Dialog/2.0.15.1 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Reply-To: mailbox@dmitry-kazakov.de Organization: cbb software GmbH References: <1183577468.034566.57830@n60g2000hse.googlegroups.com> <46d968ee$0$30368$9b4e6d93@newsspool4.arcor-online.net> <137iu0lr82dtb$.wqy3zjz2vr9q.dlg@40tude.net> <46d972e8$0$30384$9b4e6d93@newsspool4.arcor-online.net> <1alyfwaig93sk$.99oy269uon$.dlg@40tude.net> <46d9c138$0$4531$9b4e6d93@newsspool3.arcor-online.net> <1rt8kdcrj6tf.1qgvycc6vh357$.dlg@40tude.net> <46db2bf4$0$7699$9b4e6d93@newsspool2.arcor-online.net> <1188816674.2630.25.camel@kartoffel.vocalweb.de> <9cdmw7k85sey.85sb2t1bjefy$.dlg@40tude.net> <1mbajw59c3eir.jyl8bdp6qvj8.dlg@40tude.net> <1188850449.2630.60.camel@kartoffel.vocalweb.de> <1aza6nzawgcnm.sf76q4dvzw4n$.dlg@40tude.net> <46de8897$0$16115$9b4e6d93@newsspool1.arcor-online.net> <15hzyyy3soem0.12hn79bwy27zt$.dlg@40tude.net> <1189017071.2630.246.camel@kartoffel.vocalweb.de> <46df20aa$0$30370$9b4e6d93@newsspool4.arcor-online.net> Date: Thu, 6 Sep 2007 09:37:34 +0200 Message-ID: <1rio4ocsymy4p$.5u8nabi3tmoq$.dlg@40tude.net> NNTP-Posting-Date: 06 Sep 2007 09:37:03 CEST NNTP-Posting-Host: ea8506cd.newsspool1.arcor-online.net X-Trace: DXC=jZfFcG_mAZf]BlmkiiU@Biic==]BZ:afn4Fo<]lROoRa4nDHegD_]Re34Q6J8mdIlgDNcfSJ;bb[eIRnRBaCd On Wed, 05 Sep 2007 23:38:34 +0200, Georg Bauhaus wrote: > They can avoid surprises and nasty issues because they enforce body > visibility of data objects. Example: > > > > package S is > type T is limited private; > procedure op(x: in out T); > private > type T is limited record > null; > end record; > end S; This is IMO bad design, it should be: package S is -- Stateless type T is limited private; ... end S; package Data is -- Stateful ... -- Operations having an instance of T as a hidden parameter end Data; with S; package body Data is Singleton : S.T; ... end Data; There is no need to "with" S for anybody else, provided that Singleton as an object indeed has no public interface. Otherwise it has to be typed anyway. You can also move T to the private part of Data or to its body, but you should never expose it. ----------------- I don't know if "true" typeless singletons exist. It is difficult to find one. Clock is *a* Time-valued function, current thread is *a* task, Gravitational constant is *a* floating-point number. Theological dispute. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de