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=-1.9 required=5.0 tests=BAYES_00 autolearn=unavailable autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!news.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Simon Wright Newsgroups: comp.lang.ada Subject: Re: Getting the index for an element in mutually referencing containers Date: Sat, 11 Mar 2017 20:05:09 +0000 Organization: A noiseless patient Spider Message-ID: References: <86o9xa36oq.fsf@gaheris.avalon.lan> <86k27xpikd.fsf@gaheris.avalon.lan> <86wpbxneuz.fsf@gaheris.avalon.lan> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: mx02.eternal-september.org; posting-host="e0d0b3f1bf9184545c3b313ce0263385"; logging-data="6404"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+7oDG0VFxhh/2uwqobB9qZ4BcDcWexZ70=" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (darwin) Cancel-Lock: sha1:3w2XJF7+hkD6nf1c1WKfLI+Djhg= sha1:Ae+V9uRI7UYTiKSP3UFKks/zZS8= Xref: news.eternal-september.org comp.lang.ada:27840 Date: 2017-03-11T20:05:09+00:00 List-Id: "Dmitry A. Kazakov" writes: > On 2017-03-11 12:21, Simon Wright wrote: >> "Dmitry A. Kazakov" writes: >> >>> This looks like a clear case for reference counted objects. A handle >>> to Person to be put into containers (for search) and into other >>> objects for referencing. No problem with limited types. Weak handles >>> are for backward referencing and so on. >> >> Does that mean reference-counted _handles_? > > Objects are reference-counted. Handles are not. > >> If you have multiple handles >> to a particular Person object, which gets deleted, you'd want all those >> handles to be invalidated. > > It is in essence the difference between weak and strong references. If > you want a reference invalidated when the object vanishes that would > be a weak reference. In order to access object through weak reference > you first elevate it to a strong one. You drop the strong reference > once you used the object. > > The semantics of "object deleted" is in question. Usually it is merely > throwing it out of some list (container) and thus decreasing object's > reference count. The object stays alive until nobody else uses it = > nobody holds a strong reference to it. That seems to be a very computer-oriented viewpoint. If your objects represent real-world objects (or roles, or events - OOA view) then you wouldn't want them to hang around! If you decide to abort an engagement and therefore delete the Missile object, whose finalization sends a self-destruct command to the corresponding missile in flight, you want it to happen Right Now.