From: "Björn Persson" <spam-away@nowhere.nil>
Subject: Re: Type detection
Date: Sat, 01 May 2004 12:42:46 GMT
Date: 2004-05-01T12:42:46+00:00 [thread overview]
Message-ID: <aXMkc.57738$mU6.235904@newsb.telia.net> (raw)
In-Reply-To: <QoydncxqQenacg_d4p2dnA@comcast.com>
Robert I. Eachus wrote:
> Björn Persson wrote:
>
>> For the special case of distinguishing integer types from enumeration
>> types, I've been thinking of using something like this...
>
> I extended the idea a little further, [...]
With these additions:
> type Unsigned_16 is mod 2**16;
subtype Usub is Unsigned_16 range 3 .. 12;
subtype Csub is Character range 'b' .. 'c';
> type Weekday is (Monday, Tuesday, Wednesday, Thursday, Friday);
>
> function Find_Boolean is new Find_Datatype(Boolean);
> function Find_Integer is new Find_Datatype(Integer);
> function Find_Character is new Find_Datatype(Character);
function Find_Csub is new Find_Datatype(Csub);
> function Find_Unsigned is new Find_Datatype(Unsigned_16);
function Find_Usub is new Find_Datatype(Usub);
> function Find_Enumeration is new Find_Datatype(Weekday);
>
> begin
>
> Ada.Text_IO.Put_Line(" Find_Boolean returned " & Find_Boolean);
> Ada.Text_IO.Put_Line(" Find_Integer returned " & Find_Integer);
> Ada.Text_IO.Put_Line(" Find_Character returned " & Find_Character);
Ada.Text_IO.Put_Line(" Find_Csub returned " & Find_Csub);
> Ada.Text_IO.Put_Line(" Find_Unsigned returned " & Find_Unsigned);
Ada.Text_IO.Put_Line(" Find_Usub returned " & Find_Usub);
> Ada.Text_IO.Put_Line(" Find_Enumeration returned " & Find_Enumeration);
I get this output:
Find_Boolean returned Enumeration
Find_Integer returned Integer
Find_Character returned Enumeration
Find_Csub returned Enumeration?
Find_Unsigned returned Unsigned
Find_Usub returned Enumeration?
Find_Enumeration returned Enumeration
I think using 'Base here too would be better:
> if Unknown'Succ(Unknown'Last) = Unknown'First
if Unknown'Succ(Unknown'Base'Last) = Unknown'Base'First
Then I get:
Find_Boolean returned Enumeration
Find_Integer returned Integer
Find_Character returned Enumeration
Find_Csub returned Enumeration too
Find_Unsigned returned Unsigned
Find_Usub returned Unsigned
Find_Enumeration returned Enumeration
--
Björn Persson
jor ers @sv ge.
b n_p son eri nu
next prev parent reply other threads:[~2004-05-01 12:42 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-04-30 12:17 Newbie Ada Axel Druesnes
2004-04-30 12:22 ` Preben Randhol
2004-04-30 13:20 ` Hyman Rosen
2004-04-30 13:54 ` Type detection Björn Persson
2004-04-30 15:04 ` Marius Amado Alves
2004-05-01 0:28 ` Robert I. Eachus
2004-05-01 5:01 ` James Rogers
2004-05-01 7:12 ` Robert I. Eachus
2004-05-01 12:43 ` Björn Persson
2004-05-01 12:42 ` Björn Persson [this message]
2004-04-30 14:49 ` Newbie Ada Lutz Donnerhacke
2004-05-02 13:33 ` Stephen Leake
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox