From: mockturtle <framefritti@gmail.com>
Subject: Re: What would be the Ada solution?
Date: Fri, 4 Feb 2011 09:14:10 -0800 (PST)
Date: 2011-02-04T09:14:10-08:00 [thread overview]
Message-ID: <635897a9-13a6-409c-948d-37d93c5e1c29@glegroupsg2000goo.googlegroups.com> (raw)
In-Reply-To: <0aa67233-4210-483b-b35c-8e872f87cb8f@r21g2000yqd.googlegroups.com>
On Friday, February 4, 2011 5:33:57 PM UTC+1, KK6GM wrote:
> A colleague is working on some old code, written in C, that uses an
> "out of range" integer value to indicate no valid value. Thus, a
> default value (in this case 0x7FFFFFFF) means no value has been
> entered. All code that uses any values should check for this no-value
> and act accordingly, but of course not all the code actually does
> that, and there are odd cases where the no-value value gets processed
> as a valid value and then Bad Things Happen.
>
> I'm curious what the Ada approach to this issue would be, the issue
> being to differentiate between valid and invalid values, and to catch
> (compile time or run time) any manipulation of an invalid value as if
> it were a valid value.
A solution that I saw used somewhere
type Extended_Values is new integer range -1 .. 1023;
subtype Valid_Values is Extended_Values range Extended_Values'first + 1 .. Extended_values'last;
No_Value : constant Extended_Values := Extended_Values'first;
A variable that should always have a valid value is declared of type Valid_Values and you should get an exception when you try to assign No_Value to it.
next prev parent reply other threads:[~2011-02-04 17:14 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-02-04 16:33 What would be the Ada solution? KK6GM
2011-02-04 16:38 ` Mark Lorenzen
2011-02-04 16:57 ` Robert A Duff
2011-02-04 18:59 ` Georg Bauhaus
2011-02-04 19:33 ` Robert A Duff
2011-02-04 17:14 ` mockturtle [this message]
2011-02-04 17:47 ` Robert A Duff
2011-02-04 17:26 ` Dmitry A. Kazakov
2011-02-04 17:38 ` Robert A Duff
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox