comp.lang.ada
 help / color / mirror / Atom feed
From: eachus@spectre.mitre.org (Robert I. Eachus)
Subject: Re: Importing C Structures
Date: 24 Mar 1995 16:08:16 GMT
Date: 1995-03-24T16:08:16+00:00	[thread overview]
Message-ID: <EACHUS.95Mar24110816@spectre.mitre.org> (raw)
In-Reply-To: rswhite@cacd.rockwell.com's message of 23 Mar 1995 18:55:02 GMT

In article <3ksg66$h1c@newssvr.cacd.rockwell.com> rswhite@cacd.rockwell.com (Robert S. White) writes:

   > I know "use at" for Ada 83 can overide this but it seems to be
   > not in the spirit of the 83 LRM;

   >  13.5 "Address clauses should not be used to achieve overlays of
   >	   objects...Any program using address clauses to achieve
   >	   such effects is erroneous."

   This is a common misunderstanding.  When the Ada 83 RM says that
"misusing this freedom is erroneous," the intent was to lay the onus
for proper use on the programmer not the compiler. Since the stated
use does not violate the first sentence--the objects are overlayed by
the hardware, not the users program--the effect is not erroneous, but
it sure is implementation dependent.

   The wording in the 95 RM is much clearer about this, but the intent
has always been the same.  There are certain areas where compilers
cannot do sanity checks, and in those areas the responsibility for
correctness and testing falls on the user.

   > A work around is to have a dual meaning name for the register and
   > use one procedure, appropriately named, to write to it and a function,
   > again with a suitable name, for reading it.

   > This is a case where C programmers use the union structure.  I
   > confess that I have not ferreted out in the Ada 95 RM or Rational
   > the right (and very concise) way to do this now.

   > Recommendations?

    If the right C analog is a union with a field in the struct which
can be used to determine which choice is correct, write it in Ada as a
discriminated record.  If the necessary information is stored
separately or not at all, do the Ada equivalent with
Unchecked_Conversion between variants, and recognize that coding
errors are the responsibility of the programmer.  (Or fix the record
so you can let the compiler do the checking, even if it means fixing
the bug in the C code as well.)

--

					Robert I. Eachus

with Standard_Disclaimer;
use  Standard_Disclaimer;
function Message (Text: in Clever_Ideas) return Better_Ideas is...



  parent reply	other threads:[~1995-03-24 16:08 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1995-03-23  6:34 Importing C Structures Chris O'Regan
1995-03-23  7:55 ` Vladimir Vukicevic
1995-03-23 18:55   ` Robert S. White
1995-03-24  8:51     ` Vladimir Vukicevic
1995-03-25  9:57       ` Keith Thompson
1995-03-26 13:16         ` Larry Kilgallen, LJK Software
1995-03-27  0:00           ` Kevin F. Quinn
1995-04-07  0:00             ` Larry Kilgallen
1995-03-27 15:35           ` Theodore Dennison
1995-03-28  0:00             ` Robert Dewar
1995-03-28 11:44             ` Keith Thompson
1995-03-29  0:00               ` misattrubation (was: Re: Importing C Structures) Theodore Dennison
1995-03-31  0:00                 ` Theodore Dennison
1995-03-27 23:39           ` Importing C Structures Keith Thompson
1995-03-27 16:00       ` Norman H. Cohen
1995-03-24 16:08     ` Robert I. Eachus [this message]
1995-03-24 20:20     ` Bob Gilbert
1995-03-25 18:07     ` Robert Dewar
1995-03-24 17:30   ` Robert Dewar
1995-03-24 15:32 ` Robert Dewar
replies disabled

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