comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: [Newbie] doubly constrained array, dumb question
Date: Mon, 26 Feb 2018 22:40:24 +0100
Date: 2018-02-26T22:40:24+01:00	[thread overview]
Message-ID: <p71us6$14o8$1@gioia.aioe.org> (raw)
In-Reply-To: p71rvj$vgh$1@gioia.aioe.org

On 2018-02-26 18:02, J-P. Rosen wrote:
> Le 26/02/2018 à 17:26, Mehdi Saada a écrit :
>> Hello.
>>
>> I would like an constrained String subtype with narrower bounds that Positive'Range.
>> How can I do something like:
>> subtype Possible_Length is NATURAL range 1..80;
>> subtype T_Line is String (Possible_Length range <>);
>> ? I know "range <>" isn't included in the definition of "range_constraint". How can I express the same thing.
>> So that I can get after, a dynamic string with:
>> A: access T_LINE := new T_LINE'("BLABLABLA"); while checking for its range.
>>
> You can't do that, because a subtype can't be both constrained and
> unconstrainde at the same time...

Yes, this is quite annoying that composite types cannot be constrained. 
AFAIK, neither of these can be constrained to produce a subtype:

1. array's index
2. array's element
3. record's component
4. access type's target type
5. discriminant
6. argument of a subroutine access type
7. class-wide types (closed range of descendants T'Class (T..S))
8. tagged type primitive operations (disallowing operations)
9. protected and task type entries (disallowing operations)
10. task type entry family

The list is likely incomplete.

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de

  reply	other threads:[~2018-02-26 21:40 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-26 16:26 [Newbie] doubly constrained array, dumb question Mehdi Saada
2018-02-26 17:02 ` J-P. Rosen
2018-02-26 21:40   ` Dmitry A. Kazakov [this message]
2018-02-26 23:26   ` Randy Brukardt
2018-02-27  9:01     ` Simon Wright
2018-02-27 22:11       ` Randy Brukardt
2018-02-26 20:52 ` Niklas Holsti
2018-02-27  1:29 ` Mehdi Saada
2018-02-27  9:18   ` Dmitry A. Kazakov
2018-02-27 11:43     ` Mehdi Saada
2018-02-27 14:19       ` Dmitry A. Kazakov
2018-02-27 17:08     ` G. B.
2018-02-27 17:37       ` Dmitry A. Kazakov
2018-02-27 14:34   ` Jere
2018-02-27 15:13     ` Dmitry A. Kazakov
2018-02-27  7:38 ` Jacob Sparre Andersen
replies disabled

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