comp.lang.ada
 help / color / mirror / Atom feed
From: "Jeffrey R. Carter" <spam.not.jrcarter@acm.not.spam.org>
Subject: Re: Discriminant within discriminants
Date: Wed, 03 May 2006 16:45:33 GMT
Date: 2006-05-03T16:45:33+00:00	[thread overview]
Message-ID: <M656g.929814$x96.584697@attbi_s72> (raw)
In-Reply-To: <1146620953.878484.308430@i40g2000cwc.googlegroups.com>

stuart clark wrote:
> 
> 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);

Do you want an "is" in there before the '('?

>   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
> 
> the only way i can get my code to compile with a message size of 8 is
> to use
> 
> declare
>   msg:message_types.in_messages;
>   dispense_ack_msg:message_types.dispense_ack(size=>8);
> begin
>   msg:=(kind=>message_types.dispense_acknowledgement,
>             acknowledgements=>dispense_ack_msg);
> 
> end;
> 
> QUESTION : can i declare a message with a type and size in the one
> statement without using the intermediate message.

Msg : Message_Types.In_Messages :=
    (Kind => Message_Types.Dispense_Acknowledgement,
     Acknowledgements =>
        (Size => 8, Dispense_Acks => (1 .. 8 => Thing) ) );

This requires that a value of the (undefined) type Acks be available 
(Thing in the example).

If you don't have such a value, then something along the lines of your 
example is required. Note that you can also do

declare
    Msg : Message_Types.In_Messages
          (Kind => Message_Types.Dispense_Acknowledgement);
    DAM : Message_Types.Dispense_Ack (Size => 8);
begin
    Msg.Acknowledgements := DAM;
end;

(Note also that most dictionaries recommend the spelling "acknowledgment".)

-- 
Jeff Carter
"I would never want to belong to any club that
would have someone like me for a member."
Annie Hall
41



  reply	other threads:[~2006-05-03 16:45 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 [this message]
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
replies disabled

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