comp.lang.ada
 help / color / mirror / Atom feed
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. 



  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