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=-2.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, MAILING_LIST_MULTI autolearn=unavailable autolearn_force=no version=3.4.4 X-Google-Thread: 103376,115cdbb394b3e615 X-Google-Attributes: gid103376,public X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news1.google.com!news1.google.com!proxad.net!usenet-fr.net!enst.fr!melchior!cuivre.fr.eu.org!melchior.frmug.org!not-for-mail From: Marius Amado Alves Newsgroups: comp.lang.ada Subject: Re: Why can't you create a out of order subtype? Date: Thu, 3 Feb 2005 20:22:02 +0000 Organization: Cuivre, Argent, Or Message-ID: References: <1107301914.648240.237290@g14g2000cwa.googlegroups.com> NNTP-Posting-Host: lovelace.ada-france.org Mime-Version: 1.0 (Apple Message framework v619) Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit X-Trace: melchior.cuivre.fr.eu.org 1107462019 73475 212.85.156.195 (3 Feb 2005 20:20:19 GMT) X-Complaints-To: usenet@melchior.cuivre.fr.eu.org NNTP-Posting-Date: Thu, 3 Feb 2005 20:20:19 +0000 (UTC) Cc: comp.lang.ada@ada-france.org Return-Path: In-Reply-To: X-Mailer: Apple Mail (2.619) X-OriginalArrivalTime: 03 Feb 2005 20:19:46.0231 (UTC) FILETIME=[B428DC70:01C50A2D] X-Virus-Scanned: by amavisd-new-20030616-p10 (Debian) at ada-france.org X-BeenThere: comp.lang.ada@ada-france.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Gateway to the comp.lang.ada Usenet newsgroup" List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Xref: g2news1.google.com comp.lang.ada:8153 Date: 2005-02-03T20:22:02+00:00 On 3 Feb 2005, at 19:40, Robert A Duff wrote: > Martin Dowie writes: > >> Marius Amado Alves wrote: >>> For run-time I find the "Value of Image" idiom a better one. It's >>> readily available. No Unchecked_Conversion required. >>> declare >>> M : Msg := Whatever; >>> V : Vowelmsg; >>> begin >>> V := Vowelmsg'Value (Msg'Image (M)); >>> -- if control reaches here then M is a vowel >>> exception >>> when Constraint_Error => -- M is not a vowel >>> end; > > If there are no further uses of V, then I think 11.6 allows the > compiler > to eliminate the raising of Constraint_Error. I don't much like > 11.6... > >> That's very, very, very slow... > > True (if it works at all). Before I though you were complaining about the slowness of the Image (Value) operations (because there is probably parsing involved and string values on and off the stack) compared with unchecked conversion and 'Valid (which is very probably faster). Now I realise that you were probably complaining about the slowness of the exception handling mechanism. In that case, my experience with GNAT is that it is not that slow at all. I've made controlled experiments in the past. I think I reported them here. Now, you made me take a look at 11.6 and yes, it seems if V is not used it can simply hold an undefined result and the exception not raised. But I bet you'll get a compiler warning. And rightly so, as unused variables are almost certainly a logic bug. It would in this case. Unless Vowelmsg were controlled and the logic put on Adjust or something. But then the compiler would consider V used, no?