comp.lang.ada
 help / color / mirror / Atom feed
From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Should representation clauses be complete for each bit?
Date: Fri, 22 Jul 2011 18:50:19 -0500
Date: 2011-07-22T18:50:19-05:00	[thread overview]
Message-ID: <j0d2bt$n6k$1@munin.nbi.dk> (raw)
In-Reply-To: wcczkk9ngxy.fsf@shell01.TheWorld.com

"Robert A Duff" <bobduff@shell01.TheWorld.com> wrote in message 
news:wcczkk9ngxy.fsf@shell01.TheWorld.com...
...
> I think the unused bits should be explicitly declared.

I agree.

...
> How about the following?
>
> package P is
>   type Bits2 is mod 2**2;
>   pragma Assert (Bits2'Size = 2);
>   type Bits11 is mod 2**11;
>   pragma Assert (Bits11'Size = 11);
>
>   type T is
>      record
>         One : Boolean;
>         Gap1 : Bits2; -- must be zero
>         Tooth : Boolean;
>         Gap2 : Bits11; -- must be zero
>         Ree : Boolean;
>      end record
>        with Predicate => T.Gap1 = 0 and T.Gap2 = 0;

I would do this slightly differently (in fact we did, in Claw where we had 
this exact problem):

   type T is
      record
         One : Boolean;
         Gap1 : Bits2 := 0; -- must be zero
         Tooth : Boolean;
         Gap2 : Bits11 := 0; -- must be zero
         Ree : Boolean;
      end record
       with Predicate => T.Gap1 = 0 and T.Gap2 = 0;

with the same record rep clause.
Then the (correct) aggregates don't need to mention the gaps explicitly:

with Ada.Assertions; use Ada.Assertions;
procedure P.Main is
--   X : T := (One | Tooth | Ree => True, Gap1 => 0, Gap2 => 0); -- OK
    X : T := (One | Tooth | Ree => True, others =>  <>); -- OK

                             Randy.





  parent reply	other threads:[~2011-07-22 23:50 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-07-20 10:34 Should representation clauses be complete for each bit? okellogg
2011-07-20 14:51 ` Robert A Duff
2011-07-20 15:24   ` Georg Bauhaus
2011-07-20 17:28     ` Robert A Duff
2011-07-21  7:37       ` Martin
2011-07-21  8:22         ` Simon Wright
2011-07-21 14:58           ` Robert A Duff
2011-07-23  0:13             ` Randy Brukardt
2011-07-27 14:12               ` okellogg
2011-07-28  0:03                 ` Randy Brukardt
2011-07-21  9:43         ` Georg Bauhaus
2011-07-21 15:06           ` Robert A Duff
2011-07-31 15:02             ` BrianG
2011-07-21 21:11           ` Brian Drummond
2011-07-21  7:59     ` Stephen Leake
2011-07-20 15:29   ` okellogg
2011-07-20 16:24     ` Dmitry A. Kazakov
2011-07-20 16:58       ` okellogg
2011-07-20 19:38         ` Dmitry A. Kazakov
2011-07-20 17:27     ` Robert A Duff
2011-07-20 19:14       ` okellogg
2011-07-20 20:13         ` J-P. Rosen
2011-07-20 21:23           ` Robert A Duff
2011-07-20 21:21         ` Robert A Duff
2011-07-21  8:02         ` Stephen Leake
2011-07-21  8:00     ` Stephen Leake
2011-07-21  7:36   ` Martin
2011-07-22 23:50   ` Randy Brukardt [this message]
2011-07-23  2:16     ` tmoran
2011-07-23 15:12     ` Robert A Duff
2011-07-26 21:10       ` Randy Brukardt
2011-07-23  0:01   ` Randy Brukardt
  -- strict thread matches above, loose matches on Subject: below --
1998-04-17  0:00 Should Representation Clauses " Marin David Condic, 561.796.8997, M/S 731-96
     [not found] <3533C3C5.3F25CB91@cacd.rockwell.com>
1998-04-16  0:00 ` Stephen Leake
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox