comp.lang.ada
 help / color / mirror / Atom feed
From: Mark Lorenzen <mark.lorenzen@gmail.com>
Subject: Re: What would be the Ada solution?
Date: Fri, 4 Feb 2011 08:38:13 -0800 (PST)
Date: 2011-02-04T08:38:13-08:00	[thread overview]
Message-ID: <37361431-c3a5-4b51-a2f2-aa0e0b485d60@d28g2000yqc.googlegroups.com> (raw)
In-Reply-To: 0aa67233-4210-483b-b35c-8e872f87cb8f@r21g2000yqd.googlegroups.com

On 4 Feb., 17:33, KK6GM <mjsi...@scriptoriumdesigns.com> 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.

I guess something like this:

type T is range ...;

type Opt_T (Is_Valid : Boolean := False) is
   record
      case Is_Valid is
         when True =>
            Value : T;
         when False =>
            null;
      end case;
  end record;

- Mark L



  reply	other threads:[~2011-02-04 16:38 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 [this message]
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
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