]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/ada/libgnat/a-slcain.adb
[Ada] Bump copyright year
[thirdparty/gcc.git] / gcc / ada / libgnat / a-slcain.adb
CommitLineData
4c2d6a70
AC
1------------------------------------------------------------------------------
2-- --
3-- GNAT LIBRARY COMPONENTS --
4-- --
5-- ADA.STRINGS.LESS_CASE_INSENSITIVE --
6-- --
7-- B o d y --
8-- --
4b490c1e 9-- Copyright (C) 2004-2020, Free Software Foundation, Inc. --
4c2d6a70
AC
10-- --
11-- GNAT is free software; you can redistribute it and/or modify it under --
12-- terms of the GNU General Public License as published by the Free Soft- --
748086b7 13-- ware Foundation; either version 3, or (at your option) any later ver- --
4c2d6a70
AC
14-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
15-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
748086b7
JJ
16-- or FITNESS FOR A PARTICULAR PURPOSE. --
17-- --
18-- As a special exception under Section 7 of GPL version 3, you are granted --
19-- additional permissions described in the GCC Runtime Library Exception, --
20-- version 3.1, as published by the Free Software Foundation. --
21-- --
22-- You should have received a copy of the GNU General Public License and --
23-- a copy of the GCC Runtime Library Exception along with this program; --
24-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --
25-- <http://www.gnu.org/licenses/>. --
4c2d6a70
AC
26-- --
27-- This unit was originally developed by Matthew J Heaney. --
28------------------------------------------------------------------------------
29
9de61fcb 30with Ada.Characters.Handling; use Ada.Characters.Handling;
4c2d6a70
AC
31
32function Ada.Strings.Less_Case_Insensitive
33 (Left, Right : String) return Boolean
34is
35 LI : Integer := Left'First;
36 RI : Integer := Right'First;
37
38 LC, RC : Character;
39
40begin
41 if LI > Left'Last then
42 return RI <= Right'Last;
43 end if;
44
45 if RI > Right'Last then
46 return False;
47 end if;
48
49 loop
50 LC := To_Lower (Left (LI));
51 RC := To_Lower (Right (RI));
52
53 if LC < RC then
54 return True;
55 end if;
56
57 if LC > RC then
58 return False;
59 end if;
60
61 if LI = Left'Last then
62 return RI < Right'Last;
63 end if;
64
65 if RI = Right'Last then
66 return False;
67 end if;
68
69 LI := LI + 1;
70 RI := RI + 1;
71 end loop;
72end Ada.Strings.Less_Case_Insensitive;