From: Simon Wright <simon@pushface.org>
Subject: Re: Char type verification
Date: Fri, 17 Nov 2006 21:22:05 +0000
Date: 2006-11-17T21:22:05+00:00 [thread overview]
Message-ID: <m2irhdbwg2.fsf@grendel.local> (raw)
In-Reply-To: 455cf4f8$0$17901$426a74cc@news.free.fr
Yves Bailly <kafka.fr@laposte.net> writes:
> First create a generic package:
> --8<-----8<-----8<-----8<-----8<-----8<-----8<---
> generic
> type T is private;
> type H is range <>;
> with function Hash(val: in T) return H;
> package P is
> function Is_In_Range(lower: in T;
> upper: in T;
> value: in T)
> return Boolean;
> end P;
> --8<-----8<-----8<-----8<-----8<-----8<-----8<---
>
> The body performs the actual check of validity:
> --8<-----8<-----8<-----8<-----8<-----8<-----8<---
> package body P is
>
> function Is_In_Range(lower: in T;
> upper: in T;
> value: in T)
> return Boolean is
> begin
> return Hash(value) in Hash(lower)..Hash(upper);
> end Is_In_Range;
>
> end P;
> --8<-----8<-----8<-----8<-----8<-----8<-----8<---
I would have thought it would be a lot clearer if you required "<" say
instead of Hash. To me a hash is typically a pseudo-random conversion
of a private value to an integral type; if you want ordering, use
functions with ordering-related names!
Then you could say
return not (upper < value) and then not (value < lower);
(I think! that's the third time I've rewritten that ...)
By the way, did you know you can have (library-level, even) generic
subprograms?
generic
type T is private;
type H is range <>;
with function Hash(val: in T) return H;
function Is_In_Range(lower: in T;
upper: in T;
value: in T)
return Boolean;
next prev parent reply other threads:[~2006-11-17 21:22 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-11-15 22:00 Char type verification KE
2006-11-15 21:57 ` Georg Bauhaus
2006-11-15 23:15 ` KE
2006-11-16 4:48 ` Jeffrey R. Carter
2006-11-16 19:53 ` Adam Beneschan
2006-11-16 23:30 ` Yves Bailly
2006-11-17 0:48 ` Jeffrey R. Carter
2006-11-17 1:59 ` Adam Beneschan
2006-11-17 11:30 ` Stephen Leake
2006-11-17 15:33 ` KE
2006-11-17 15:10 ` Georg Bauhaus
2006-11-17 18:30 ` Ludovic Brenta
2006-11-18 2:29 ` Brian May
2006-11-17 19:45 ` Jeffrey R. Carter
[not found] ` <mQm7h.8782$ig4.3262@newsread2.news.pas.earthlink.net>
2006-11-17 19:56 ` Jeffrey R. Carter
[not found] ` <omz7h.222$1s6.165@newsread2.news.pas.earthlink.net>
2006-11-19 2:19 ` OT: French Idioms (was Re: Char type verification) Jeffrey R. Carter
2006-11-19 9:04 ` Dmitry A. Kazakov
2006-11-17 21:22 ` Simon Wright [this message]
2006-11-17 23:59 ` Char type verification Yves Bailly
2006-11-15 23:23 ` Simon Wright
2006-11-15 23:33 ` KE
2006-11-16 4:52 ` Jeffrey R. Carter
2006-11-15 23:36 ` Adam Beneschan
2006-11-15 23:55 ` KE
2006-11-16 4:54 ` Jeffrey R. Carter
2006-11-16 1:08 ` jimmaureenrogers
2006-11-16 1:45 ` KE
2006-11-16 2:15 ` jimmaureenrogers
2006-11-16 2:42 ` Steve Whalen
2006-11-16 9:36 ` Alex R. Mosteo
2006-11-16 7:02 ` KE
2006-11-16 17:04 ` Dmitry A. Kazakov
2006-11-16 22:43 ` Brian May
-- strict thread matches above, loose matches on Subject: below --
2006-11-16 16:01 Anh Vo
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox