comp.lang.ada
 help / color / mirror / Atom feed
From: ganesh.ramasivan@gdcanada.com (Ganesh Ramasivan)
Subject: Re: Variant records..
Date: 17 Feb 2004 06:56:50 -0800
Date: 2004-02-17T06:56:50-08:00	[thread overview]
Message-ID: <e8f9995c.0402170656.45b1aa3d@posting.google.com> (raw)
In-Reply-To: x7vwu6mwzm5.fsf@smaug.pushface.org

Simon Wright <simon@pushface.org> wrote in message news:<x7vwu6mwzm5.fsf@smaug.pushface.org>...
> ganesh.ramasivan@gdcanada.com (Ganesh Ramasivan) writes:
> 
> > type RADAR_TYPE_CHOICE is (RADAR_A, RADAR_B, RADAR_C);
> >     
> > type RADAR_A_COMMAND_CHOICE is (RADAR_A_STATE,
> >                                 RADAR_A_MODE,
> >                                 RADAR_A_DISPLAY_RANGE_SELECT);
> >                                       
> > type RADAR_B_COMMAND_CHOICE is (RADAR_B_STATE,
> >                                 RADAR_B_MODE,
> >                                 RADAR_B_DISPLAY_RANGE_SELECT);
> > 
> > type RADAR_C_COMMAND_CHOICE is (RADAR_C_STATE,
> >                                 RADAR_C_MODE,
> >                                 RADAR_C_DISPLAY_RANGE_SELECT);
> 
> I would say you seem to have a basic concept Radar with a set of
> Commands that might apply to any Radar, and three instances of Radar.
> 
>    type Radar_Kind is (Radar_A, Radar_B, Radar_C);
>    type Radar_Command is (State, Mode, Display_Range_Select);
> 
> I can see that you might have different sets of states for Radar_A
> than those for Radar_B, but so far your code doesn't say that.
> 
> > type RADAR_CHOICE(RADAR_TYPE : RADAR_TYPE_CHOICE :=
> > RADAR_TYPE_CHOICE'FIRST) is
> >       record   
> >         case RADAR_TYPE is
> >     	  when  RADAR_A =>
> >             null;
> >     	  when  RADAR_B  =>
> >             null;
> >     	  when  RADAR_C =>
> >             null;            
> >         end case;
> >       end record;
> > 
> > How would I specify a variant record which will only allow me to
> > select RADAR_A for the RADAR_TYPE_CHOICE and RADAR_A_STATE for the
> > command choice but not RADAR_C_STATE?
> 
> I don't see any command choice here?
> 
> I don't really grasp why you want this Radar_Choice thing, perhaps it
> would help if you could say what you would like to appear in the
> places you've marked 'null' ... is it
> 
> type RADAR_CHOICE
>   (RADAR_TYPE : RADAR_TYPE_CHOICE := RADAR_TYPE_CHOICE'FIRST) is
>       record   
>         case RADAR_TYPE is
>     	  when  RADAR_A =>
>             Radar_A_Command : Radar_A_Command_Choice;
>     	  when  RADAR_B  =>
>             Radar_B_Command : Radar_B_Command_Choice;
>     	  when  RADAR_C =>
>             Radar_C_Command : Radar_C_Command_Choice;
>         end case;
>       end record;
> 
> 
> 
> Sorry that I'm querying your design intent rather than your actual
> question, I haven't understood the question properly!

Sorry. I should not have put in null there. 

type RADAR_TYPE_CHOICE is (RADAR_A, RADAR_B);
     
type RADAR_A_COMMAND_CHOICE is (RADAR_A_STATE,
                                RADAR_A_MODE,
                                RADAR_A_DISPLAY_RANGE_SELECT);
                                      
type RADAR_B_COMMAND_CHOICE is (RADAR_B_STATE,
                                RADAR_B_MODE,
                                RADAR_B_DISPLAY_RANGE_SELECT);

type RADAR_A_COMMAND_TYPE
 (RADAR_COMMAND : RADAR_A_COMMAND_CHOICE :=
RADAR_A_COMMAND_CHOICE'FIRST) is
      record
          case RADAR_COMMAND is
	        when RADAR_A_DISPLAY_RANGE_SELECT =>
	            < a whole bunch of operations...>
            when others =>
                null;
          end case;
      end record;

type RADAR_B_COMMAND_TYPE
 (RADAR_COMMAND : RADAR_B_COMMAND_CHOICE :=
RADAR_B_COMMAND_CHOICE'FIRST) is
      record
          case RADAR_COMMAND is
	        when RADAR_B_DISPLAY_RANGE_SELECT =>
	            < a whole bunch of operations...>
            when others =>
                null;
          end case;
      end record;

type RADAR_CHOICE
   (RADAR_TYPE : RADAR_TYPE_CHOICE := RADAR_TYPE_CHOICE'FIRST) is
       record   
         case RADAR_TYPE is
     	  when  RADAR_A =>
             RADAR_A_COMMAND : RADAR_A_COMMAND_CHOICE(????)      	  
when  RADAR_B =>
             RADAR_B_COMMAND : RADAR_B_COMMAND_CHOICE(????)
         end case;
       end record;


Anyways, in the case above, how can I pass a second discriminant. This
is because I need to be able to select a particular command for a
particular radar.

Sorry for not having said this in the first place.

Ganesh



  reply	other threads:[~2004-02-17 14:56 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-02-15 22:51 Variant records Ganesh Ramasivan
2004-02-16 10:57 ` Preben Randhol
2004-02-16 15:25   ` Ganesh Ramasivan
2004-02-16 15:46     ` Ludovic Brenta
2004-02-16 16:16     ` Preben Randhol
2004-02-17 14:37       ` Ganesh Ramasivan
2004-02-17 15:43         ` Preben Randhol
2004-02-16 16:59   ` Ganesh Ramasivan
2004-02-16 20:14     ` Simon Wright
2004-02-17 14:56       ` Ganesh Ramasivan [this message]
2004-02-17 15:31         ` Robert I. Eachus
2004-02-16 23:17 ` tmoran
  -- strict thread matches above, loose matches on Subject: below --
1999-09-14  0:00 Variant Records Shawn Barber
1999-09-14  0:00 ` David C. Hoos, Sr.
1999-09-14  0:00 ` Matthew Heaney
1999-09-14  0:00 ` Mark Lundquist
1986-10-31  9:08 variant records Dean Luick
1986-11-03 14:17 ` Bev Sobelman
1986-11-05 16:35 ` stuart
1986-11-06 15:40 ` stt
replies disabled

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