comp.lang.ada
 help / color / mirror / Atom feed
From: Stephen Leake <stephen_leake@acm.org>
Subject: Re: Discriminant within discriminants
Date: Fri, 05 May 2006 05:03:36 -0400
Date: 2006-05-05T05:03:36-04:00	[thread overview]
Message-ID: <uac9wdes7.fsf@acm.org> (raw)
In-Reply-To: 1146620953.878484.308430@i40g2000cwc.googlegroups.com

"stuart clark" <stuart.clark@baesystems.com> writes:

> package message_types
>
>   type id_type is range 1..8;
>
>  type dispense_ack (size:id_type:=id_Type'first) is
>    record
>      dispense_acks:array(1..size) of acks;
>    end record;
>
>   type message_types(dispense_acknowledgement, dispense_request);
>
>   type in_messages(kind :msg_types:=msg_types'first) is
>    record
>     case type is
>       when dispense_acknowledgement =>
>          acknowledgements:dispense_ack;
>       when dispense_request
>          request:integer;
>     end case
>   end record;
>
> end message_types;
>
> i want to declare a message that is of dispense_acknowledgment type
> with a size of 8

Try:

procedure Message_Acks is
   type Id_Type is range 1 .. 8;

   type Acks is new Boolean;

   type Ack_List is array (Id_Type range <>) of Acks;

   type Dispense_Ack (Size : Id_Type := Id_Type'First) is record
      Dispense_Acks : Ack_List (1 .. Size);
   end record;

   type Message_Types is (Dispense_Acknowledgement, Dispense_Request);

   type In_Messages
     (Kind : Message_Types := Message_Types'First;
      Size : ID_Type := Id_Type'First) is
      record
         case Kind is
         when Dispense_Acknowledgement =>
            Acknowledgements : Dispense_Ack (Size);
         when Dispense_Request =>
            Request : Integer;
         end case;
      end record;

    Msg : In_Messages (Dispense_Acknowledgement, Size => 8);
begin -- Message_Test
    null;
end Message_Acks;

-- 
-- Stephe



      parent reply	other threads:[~2006-05-05  9:03 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-05-03  1:49 Discriminant within discriminants stuart clark
2006-05-03 16:45 ` Jeffrey R. Carter
2006-05-03 21:05   ` Randy Brukardt
2006-05-04  0:14     ` stuart clark
2006-05-04  0:57       ` Jeffrey R. Carter
     [not found]         ` <4a9k52ha4ohqkcd01ghn6c7785d6pvf91e@4ax.com>
2006-05-04 17:57           ` Jeffrey R. Carter
2006-05-04  0:45     ` Jeffrey R. Carter
2006-05-05  9:03 ` Stephen Leake [this message]
replies disabled

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