home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
BURKS 2
/
BURKS_AUG97.ISO
/
BURKS
/
LANGUAGE
/
ADA
/
LOVELACE
/
directio.adb
< prev
next >
Wrap
Text File
|
1996-03-01
|
2KB
|
82 lines
--
-- Copyright (C) 1996 Ada Resource Association (ARA), Columbus, Ohio.
-- Author: David A. Wheeler
--
with Ada.Characters.Handling;
use Ada.Characters.Handling;
package body Directions is
Abbreviations : constant String := "nsewud";
procedure To_Direction(Text : in Unbounded_String;
Is_Direction : out Boolean;
Dir : out Direction) is
Lower_Text : String := To_Lower(To_String(Text));
-- Attempt to turn "Text" into a direction.
-- If successful, set "Is_Direction" True and "Dir" to the value.
-- If not successful, set "Is_Direction" False and "Dir" to arbitrary value.
begin
if Length(Text) = 1 then
-- Check if it's a one-letter abbreviation.
for D in Direction'Range loop
if Lower_Text(1) = Abbreviations(Direction'Pos(D) + 1) then
Is_Direction := True;
Dir := D;
return;
end if;
end loop;
Is_Direction := False;
Dir := North;
return;
else
-- Not a one-letter abbreviation, try a full name.
for D in Direction'Range loop
if Lower_Text = To_Lower(Direction'Image(D)) then
Is_Direction := True;
Dir := D;
return;
end if;
end loop;
Is_Direction := False;
Dir := North;
return;
end if;
end To_Direction;
function To_Direction(Text : in Unbounded_String) return Direction is
Is_Direction : Boolean;
Dir : Direction;
begin
To_Direction(Text, Is_Direction, Dir);
if Is_Direction then
return Dir;
else
raise Constraint_Error;
end if;
end To_Direction;
function Is_Direction(Text : in Unbounded_String) return Boolean is
Is_Direction : Boolean;
Dir : Direction;
begin
To_Direction(Text, Is_Direction, Dir);
return Is_Direction;
end Is_Direction;
end Directions;
--
-- Permission to use, copy, modify, and distribute this software and its
-- documentation for any purpose and without fee is hereby granted,
-- provided that the above copyright and authorship notice appear in all
-- copies and that both that copyright notice and this permission notice
-- appear in supporting documentation.
--
-- The ARA makes no representations about the suitability of this software
-- for any purpose. It is provided "as is" without express
-- or implied warranty.
--