comp.lang.ada
 help / color / mirror / Atom feed
From: Robert A Duff <bobduff@shell01.TheWorld.com>
Subject: Re: Ensuring postconditions in the face of exceptions
Date: Mon, 15 Mar 2010 14:36:10 -0400
Date: 2010-03-15T14:36:10-04:00	[thread overview]
Message-ID: <wccr5nlph45.fsf@shell01.TheWorld.com> (raw)
In-Reply-To: 2e29400d-9fe2-467f-8858-f88f79cd4caf@a18g2000yqc.googlegroups.com

Ludovic Brenta <ludovic@ludovic-brenta.org> writes:

> 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.

Right, but you said you didn't like it, because of the "other unrelated
components".  So the type I'm suggesting above is a different one
than the existing one -- I'm suggesting this new type would NOT
have the unrelated components.

I haven't seen your code, of course, so I could be talking
complete nonsense.  ;-)

- Bob



  reply	other threads:[~2010-03-15 18:36 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
2010-03-15 18:36             ` Robert A Duff [this message]
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