From: Ludovic Brenta <ludovic@ludovic-brenta.org>
Subject: Re: Ensuring postconditions in the face of exceptions
Date: Mon, 15 Mar 2010 10:33:12 -0700 (PDT)
Date: 2010-03-15T10:33:12-07:00 [thread overview]
Message-ID: <2e29400d-9fe2-467f-8858-f88f79cd4caf@a18g2000yqc.googlegroups.com> (raw)
In-Reply-To: wccljdtlel2.fsf@shell01.TheWorld.com
Robert A Duff wrote on comp.lang.ada:
> Ludovic Brenta <ludo...@ludovic-brenta.org> writes:
> > No, Dirty is not a property of the object; the type T is used in
> > several places, only some of which (a one-line cache, essentially) has
> > a Dirty property.
>
> OK, then Dirty is a property of the cache. So how about:
>
> type Cache is limited
> record
> X : T;
> Dirty : Boolean := True;
> end record;
> type Cache_Ref is access all Cache;
>
> and pass a parameter of type Cache_Ref? (Or perhaps
> X could be an access type, and point to the T object.)
>
> You need to pass some sort of pointer, explicitly or implicitly,
> because when you raise an exception, the copy-back is skipped.
> You said that relying on limitedness to force pass-by-referrence
> is confusing -- I agree. So pass an explicit pointer.
>
> I recommend a named access type, because anonymous access parameters
> have dynamic accessibility, which is a tripping hazard, and is
> less efficient.
Yes, that's the solution I have, currently, i.e. (5); except that the
Cache type already existed before, has other unrelated components and
is not limited.
--
Ludovic Brenta.
next prev parent reply other threads:[~2010-03-15 17:33 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-03-12 9:13 Ensuring postconditions in the face of exceptions Ludovic Brenta
2010-03-12 9:24 ` Ludovic Brenta
2010-03-12 9:29 ` Niklas Holsti
2010-03-12 11:08 ` Ludovic Brenta
2010-03-12 14:00 ` Jeffrey R. Carter
2010-03-13 3:15 ` Randy Brukardt
2010-03-13 15:14 ` Robert A Duff
2010-03-16 3:13 ` Randy Brukardt
2010-03-16 15:18 ` Robert A Duff
2010-03-16 19:00 ` Adam Beneschan
2010-03-16 20:04 ` Robert A Duff
2010-03-16 23:23 ` Randy Brukardt
2010-03-13 17:34 ` Jeffrey R. Carter
2010-03-13 7:54 ` Stephen Leake
[not found] ` <ruqub2y84rqj.179q01lxzgatj$.dlg@40tude.net>
2010-03-13 19:33 ` Georg Bauhaus
2010-03-14 14:05 ` Alex Mentis
2010-03-14 14:21 ` Ludovic Brenta
2010-03-14 15:12 ` Alex Mentis
2010-03-15 9:14 ` Ludovic Brenta
2010-03-15 11:05 ` cjpsimon
2010-03-15 13:04 ` Ludovic Brenta
2010-03-15 14:16 ` J-P. Rosen
2010-03-15 19:14 ` Jeffrey R. Carter
2010-03-16 19:25 ` Robert Matthews
2010-03-14 15:38 ` Robert A Duff
2010-03-15 8:54 ` Ludovic Brenta
2010-03-15 16:44 ` Robert A Duff
2010-03-15 17:33 ` Ludovic Brenta [this message]
2010-03-15 18:36 ` Robert A Duff
2010-03-14 18:57 ` Jeffrey R. Carter
2010-03-15 8:56 ` Ludovic Brenta
2010-03-15 11:04 ` AdaMagica
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox