comp.lang.ada
 help / color / mirror / Atom feed
From: Richard D Riehle <laoXhai@ix.netcom.com>
Subject: Re: Elimination of "use" clauses
Date: 1999/07/20
Date: 1999-07-19T20:11:47-05:00	[thread overview]
Message-ID: <7n0icj$1je@dfw-ixnews21.ix.netcom.com> (raw)
In-Reply-To: dale-1807991510420001@192.168.0.2

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.

>However this has the disadvantage that you can't use the private
>type in all the places that you might want to use an integer type.

 That is  exactly the point.  We need to explicitly define the operators
 for the private type so it is not exactly like a free integer.

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




  reply	other threads:[~1999-07-20  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 ` czgrr
1999-07-01  0:00   ` Ted Dennison
1999-07-02  0:00     ` czgrr
1999-07-02  0:00       ` Ted Dennison
1999-07-01  0:00 ` Samuel T. Harris
1999-07-02  0:00 ` Robert Dewar
1999-07-02  0:00   ` Samuel T. Harris
1999-07-02  0:00     ` Robert Dewar
     [not found]       ` <7ltl2q$mog$1@nnrp1.deja.com>
1999-07-08  0:00         ` Michael F. Yoder
1999-07-09  0:00           ` Robert Dewar
1999-07-09  0:00             ` Dale Stanbrough
1999-07-12  0:00               ` Robert Dewar
1999-07-12  0:00                 ` Ted Dennison
1999-07-09  0:00             ` Michael F. Yoder
1999-07-14  0:00               ` Tucker Taft
1999-07-10  0:00             ` Simon Wright
1999-07-12  0:00               ` Robert Dewar
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-08  0:00       ` R. Tim Coslet
1999-07-09  0:00         ` Robert Dewar
1999-07-09  0:00           ` tmoran
1999-07-02  0:00   ` Ted Dennison
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             ` Dale Stanbrough
1999-07-20  0:00               ` Richard D Riehle [this message]
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 Dewar
1999-07-21  0:00                         ` Robert A Duff
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
1999-08-03  0:00                   ` Richard D Riehle
1999-07-20  0:00               ` David Kristola
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-19  0:00             ` Elimination of "use" clauses Ted Dennison
1999-07-19  0:00               ` Tucker Taft
1999-07-19  0:00                 ` Ted Dennison
1999-07-02  0:00     ` Stephen Leake
1999-07-02  0:00     ` Ed Falis
1999-07-02  0:00   ` Ed Falis
1999-07-03  0:00     ` Joe Wisniewski
1999-07-03  0:00       ` Keith Thompson
1999-07-03  0:00       ` Ed Falis
1999-07-13  0:00     ` Peter Amey
replies disabled

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