comp.lang.ada
 help / color / mirror / Atom feed
From: Tucker Taft <stt@averstar.com>
Subject: Re: Elimination of "use" clauses
Date: 1999/07/23
Date: 1999-07-23T00:00:00+00:00	[thread overview]
Message-ID: <3798E50D.100976B@averstar.com> (raw)
In-Reply-To: 7n0icj$1je@dfw-ixnews21.ix.netcom.com

Richard D Riehle wrote:
> 
> In article <dale-1807991510420001@192.168.0.2>,
>         dale@cs.rmit.edu.au (Dale Stanbrough) wrote:
> 
> >Export directives -could- do it (and it is not a bad idea at all),
> >but we shouldn't forget that Ada already has the ability to export
> >-just- the operators we want, and it's called using a private type
> >and only advertising the appropriate operations.
> 
> I fully agree that the private type is underused for this purpose.
> However, you will need to declare the arithmetic and logical
> operators for a private type.  This is the ideal place for using
> a nested Ops package to restrict the set of operators to exactly
> those you want available in your design.
> 
> package P is
>    type T is private;
>    -- operations on T
>    package Ops is
>      function ">" (L, R : T) return Boolean;
>      function "+" (L, R : T) return T;
>    end Ops;
> end P;
> 
> Now, use P.Ops makes sense and exports only the operators the
> designer feels are appropriate but still restricts them to an
> Ops package.  Of course, if they were not in the nested Ops package,
> one could still invoke the "use type" clause.  In the end, I think it
> it will be a matter of preference rather than a matter of which is
> better.

The major difference is that the operators are no longer inherited
as part of a derived type definition.

In general, the "ops" package idiom was an Ada 83 work-around.
Now that we have use-type, I recommend against proliferating it further.

There are ways to work with a language, and ways to fight against it.
In Ada 95, the "use type" is definitely the language-defined way to
deal with operator visibility.  In Ada 83, there really wasn't
any particularly good language support for operator visibility,
so various approaches were adopted.

> ...
> Richard Riehle
> richard@adaworks.com
> http://www.adaworks.com
> 

-- 
-Tucker Taft   stt@averstar.com   http://www.averstar.com/~stt/
Technical Director, Distributed IT Solutions  (www.averstar.com/tools)
AverStar (formerly Intermetrics, Inc.)   Burlington, MA  USA




  parent reply	other threads:[~1999-07-23  0:00 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1999-07-01  0:00 Elimination of "use" clauses Dr. Neil C. Audsley
1999-07-01  0:00 ` Joe Wisniewski
1999-07-01  0:00 ` Samuel T. Harris
1999-07-01  0:00 ` czgrr
1999-07-01  0:00   ` Ted Dennison
1999-07-02  0:00     ` czgrr
1999-07-02  0:00       ` Ted Dennison
1999-07-02  0:00 ` Robert Dewar
1999-07-02  0:00   ` Samuel T. Harris
1999-07-02  0:00     ` Robert Dewar
1999-07-08  0:00       ` R. Tim Coslet
1999-07-09  0:00         ` Robert Dewar
1999-07-09  0:00           ` tmoran
     [not found]       ` <7ltl2q$mog$1@nnrp1.deja.com>
1999-07-08  0:00         ` Michael F. Yoder
1999-07-09  0:00           ` Richard D Riehle
1999-07-09  0:00             ` Marin David Condic
1999-07-09  0:00             ` Michael F. Yoder
1999-07-09  0:00           ` Robert Dewar
1999-07-09  0:00             ` Michael F. Yoder
1999-07-14  0:00               ` Tucker Taft
1999-07-09  0:00             ` Dale Stanbrough
1999-07-12  0:00               ` Robert Dewar
1999-07-12  0:00                 ` Ted Dennison
1999-07-10  0:00             ` Simon Wright
1999-07-12  0:00               ` Robert Dewar
1999-07-02  0:00   ` Ed Falis
1999-07-03  0:00     ` Joe Wisniewski
1999-07-03  0:00       ` Ed Falis
1999-07-03  0:00       ` Keith Thompson
1999-07-13  0:00     ` Peter Amey
1999-07-02  0:00   ` Ted Dennison
1999-07-02  0:00     ` Ed Falis
1999-07-02  0:00     ` Robert Dewar
     [not found]       ` <7ltus1$ah1@dfw-ixnews19.ix.netcom.com>
1999-07-13  0:00         ` Robert A Duff
1999-07-18  0:00           ` Richard D Riehle
1999-07-18  0:00             ` jerry
1999-07-19  0:00               ` Vladimir Olensky
1999-07-20  0:00               ` Richard D Riehle
1999-07-20  0:00                 ` jerry
1999-07-20  0:00                 ` Opaque Types (was Elimination of "use" clauses) David C. Hoos, Sr.
1999-07-18  0:00             ` Elimination of "use" clauses Dale Stanbrough
1999-07-20  0:00               ` Richard D Riehle
1999-07-19  0:00                 ` Brian Rogoff
1999-07-20  0:00                   ` Robert Dewar
1999-07-20  0:00                     ` Brian Rogoff
1999-07-21  0:00                       ` Robert Dewar
1999-07-21  0:00                         ` Brian Rogoff
1999-07-22  0:00                           ` Robert Dewar
1999-07-22  0:00                             ` Brian Rogoff
1999-07-22  0:00                           ` Robert Dewar
1999-07-22  0:00                             ` Brian Rogoff
1999-07-21  0:00                       ` Ted Dennison
1999-07-21  0:00                         ` Robert A Duff
1999-07-21  0:00                         ` Robert Dewar
1999-07-21  0:00                     ` Robert A Duff
1999-07-21  0:00                       ` Michael F. Yoder
1999-07-21  0:00                         ` Robert A Duff
1999-07-23  0:00                 ` Tucker Taft [this message]
1999-08-03  0:00                   ` Richard D Riehle
1999-07-20  0:00               ` David Kristola
1999-07-19  0:00             ` Ted Dennison
1999-07-19  0:00               ` Tucker Taft
1999-07-19  0:00                 ` Ted Dennison
1999-07-02  0:00     ` 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