comp.lang.ada
 help / color / mirror / Atom feed
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




  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