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=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,2203a21a136b39cc X-Google-Attributes: gid103376,public From: dewar@merv.cs.nyu.edu (Robert Dewar) Subject: Re: Fortran's Equivalence Date: 1997/03/26 Message-ID: #1/1 X-Deja-AN: 228493514 References: <333840D1.7B12@cae.ca> Organization: New York University Newsgroups: comp.lang.ada Date: 1997-03-26T00:00:00+00:00 List-Id: Vigar says << I have a BIT_PATTERN : System.Unsigned_32. The first 4 bits represent an integer A, the next 17 represent another record B, the last eleven represent an integer C. Ada gives something beautiful, in the "use at" clause, which lets me define a record to superimpose onto the bit pattern. The big problem with this approach is that it isn't guaranteed by the LRM, and I need my application to be portable to other Ada implementations. The Ada Quality and Style Guide, Clause 5.9.4, also tells us that we should not use the "use at" clause to do such things. I am using the GNAT compiler, 3.07 on the SGI. The final system will be delivered for a VAX.>> Isn't it amazing how Ada's concentration on precision sometimes works to its disadvantage :-) Here we have a case where someone is used to misusing a construct in Fortran (EQUIVALENCE) to do something highly non-portable (go look at the Fortran standard with the same care that you have looked at the Ada standard!) Sure the RM does not "guarantee" anything here, because it has very little to say about representation, but if you are doing low level mucking around the use of "use at" is exactly equivalent to Fortran EQUIVALENCE, and there is no reason to be shy of it. The statement in the AQ&S is a holdover from Ada 83 days, and I see no justification for it. If "use at" does what you want, use it!