From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=unavailable autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!feeder.eternal-september.org!aioe.org!.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: [Newbie] doubly constrained array, dumb question Date: Mon, 26 Feb 2018 22:40:24 +0100 Organization: Aioe.org NNTP Server Message-ID: References: <62f83fe5-15d6-41cf-952f-bc3cb077d42f@googlegroups.com> NNTP-Posting-Host: MkNQz6BoaDgvXhrVWKmDUw.user.gioia.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 X-Notice: Filtered by postfilter v. 0.8.3 Content-Language: en-US Xref: reader02.eternal-september.org comp.lang.ada:50662 Date: 2018-02-26T22:40:24+01:00 List-Id: 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