comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Private discrete type as index
Date: Sat, 11 Jan 2003 13:22:51 +0100
Date: 2003-01-11T13:22:51+01:00	[thread overview]
Message-ID: <avp29v$hkrki$1@ID-77047.news.dfncis.de> (raw)
In-Reply-To: cRQT9.21756$F63.404030@news.xtra.co.nz

AG wrote:

> package test is
> 
> type X is new Integer; -- What I'd like here is "limited private" instead
> of "new integer"
> 
> type Test is array(X) of Boolean;
> 
> function "+"(Left: X) return X; -- Unary increment (however that may be
> implemented)
> 
> function "+"(Left:X; N: Integer) return X; -- Shift by N positions (does
> not equal N times other "+")
> 
> private
> 
> -- Defiinition of "X" here whatever it may be
> 
> end test;
> 
> The code above compiles fine. Replacing "new Integer" with "limited
> private" does not.
> 
> But, if it did, it would allow the user of the package to do things like
> 10th position from
> 
> wherever the index is now and it would be the responsibility of the
> implementation
> 
> to know what/where it is. At the same time, the client package would have
> no clue
> 
> as to what the type is or be able to operate on it directly (only through
> any functions
> 
> provided by the package which was the whole point).

Ada does not have user index types other than publicly derived from discrete 
types. "limited private" is not such a type. You could make a sort of 
private type out of a discrete type by disallowing some of its predefined 
operations (making them abstract), but you are unable to make it limited, 
because ":=" is not overridable. Neither can you expose a private type as 
an array. Alas, ADT is far incomplete in Ada.

-- 
Regards,
Dmitry A. Kazakov
www.dmitry-kazakov.de



  reply	other threads:[~2003-01-11 12:22 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-01-11 21:42 Private discrete type as index AG
2003-01-11  2:34 ` James S. Rogers
2003-01-12  0:09   ` AG
2003-01-11  7:16     ` James S. Rogers
2003-01-12  5:47       ` AG
2003-01-11 12:22         ` Dmitry A. Kazakov [this message]
2003-01-11 14:36         ` Charles H. Sampson
2003-01-12 19:23 ` Keith Thompson
2003-01-12 19:48   ` tmoran
2003-01-15 16:45     ` Dmitry A. Kazakov
2003-01-18  6:24       ` AG
2003-01-17 14:14         ` tmoran
2003-01-19  1:38           ` AG
2003-01-18  8:36             ` tmoran
2003-01-19  6:06               ` AG
2003-01-17 16:28         ` Dmitry A. Kazakov
replies disabled

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