From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-2.9 required=5.0 tests=BAYES_00,MAILING_LIST_MULTI autolearn=unavailable autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,488864006f91ea7a X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2001-04-06 15:01:42 PST Path: supernews.google.com!sn-xit-02!supernews.com!isdnet!enst!enst.fr!not-for-mail From: "Beard, Frank" Newsgroups: comp.lang.ada Subject: RE: Pascal's: Variant Record or C's union Date: Fri, 6 Apr 2001 17:59:29 -0400 Organization: ENST, France Sender: comp.lang.ada-admin@ada.eu.org Message-ID: Reply-To: comp.lang.ada@ada.eu.org NNTP-Posting-Host: marvin.enst.fr Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" X-Trace: avanie.enst.fr 986594491 3146 137.194.161.2 (6 Apr 2001 22:01:31 GMT) X-Complaints-To: usenet@enst.fr NNTP-Posting-Date: Fri, 6 Apr 2001 22:01:31 +0000 (UTC) To: "'comp.lang.ada@ada.eu.org'" Return-Path: X-Mailer: Internet Mail Service (5.5.2448.0) Errors-To: comp.lang.ada-admin@ada.eu.org X-BeenThere: comp.lang.ada@ada.eu.org X-Mailman-Version: 2.0.3 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: comp.lang.ada mail<->news gateway List-Unsubscribe: , List-Archive: Errors-To: comp.lang.ada-admin@ada.eu.org X-BeenThere: comp.lang.ada@ada.eu.org Xref: supernews.google.com comp.lang.ada:6596 Date: 2001-04-06T17:59:29-04:00 It's very similar to Pascal. type Type_Of_Goods is (LIQUID, TEXTILE); type TYPE_GOODS (GOODS_TYPE : Type_Of_Goods) is record ITEM_NAME : string(1..6); case GOODS_TYPE is when LIQUID => LITRE : float; VOLUME_PCT : float; when TEXTILE => LENGTH : float; WIDTH : float; end case; end record; Frank -----Original Message----- From: Frank [mailto:franjoe@frisurf.no] Sent: Friday, April 06, 2001 5:48 PM To: comp.lang.ada@ada.eu.org Subject: Pascal's: Variant Record or C's union Hi! How do I create a record in Ada, that behaves as the variant record in Pascal or similar to the union in C? It seems to me that the expression "variant" in Ada is used on how you define?/declare? :-) types based on a "type with many possible apperances":-). Something like: type TYPE_GOODS is record ITEM_NAME : string(1..6); GOODS_TYPE : integer; case GOODS_TYPE <--------??? when LIQUID: <---------??? LITRE : float; VOLUME_PCT : float; when TEXTILE: LENGTH : float; WIDTH : float; end case; end record; A : TYPE_GOODS; .. .. A.ITEM_NAME := 'COGNAC'; A.GOODS_TYPE := LIQUID; A.LITRE := 0.7; A.VOLUME_PCT := 45; A.ITEM_NAME := 'RED '; A.GOODS_TYPE := TEXTILE; A.LENGTH := 10.0; A.WIDTH := 0.6; Frank _______________________________________________ comp.lang.ada mailing list comp.lang.ada@ada.eu.org http://ada.eu.org/mailman/listinfo/comp.lang.ada