A.4.10 String Comparison
Static Semantics
function Ada.Strings.Equal_Case_Insensitive (Left, Right : String)
return Boolean;
pragma Pure(Ada.Strings.Equal_Case_Insensitive);
Returns True if
the strings consist of the same sequence of characters after applying
locale-independent simple case folding, as defined by documents referenced
in the note in Clause 1 of ISO/IEC 10646:2011. Otherwise, returns False.
This function uses the same method as is used to determine whether two
identifiers are the same.
Discussion: {
AI05-0286-1}
For String, this is equivalent to converting to lower case and comparing.
Not so for other string types. For Wide_Strings and Wide_Wide_Strings,
note that this result is a more accurate comparison than converting the
strings to lower case and comparing the results; it is possible that
the lower case conversions are the same but this routine will report
the strings as different. Additionally, Unicode says that the result
of this function will never change for strings made up solely of defined
code points; there is no such guarantee for case conversion to lower
case.
with Ada.Strings.Equal_Case_Insensitive;
function Ada.Strings.Fixed.Equal_Case_Insensitive
(Left, Right : String)
return Boolean
renames Ada.Strings.Equal_Case_Insensitive;
generic
with package Bounded
is
new Ada.Strings.Bounded.Generic_Bounded_Length (<>);
function Ada.Strings.Bounded.Equal_Case_Insensitive
(Left, Right : Bounded.Bounded_String)
return Boolean;
pragma Preelaborate(Ada.Strings.Bounded.Equal_Case_Insensitive);
Equivalent to Strings.Equal_Case_Insensitive
(Bounded.To_String (Left), Bounded.To_String (Right));
function Ada.Strings.Unbounded.Equal_Case_Insensitive
(Left, Right : Unbounded_String)
return Boolean;
pragma Preelaborate(Ada.Strings.Unbounded.Equal_Case_Insensitive);
Equivalent to Strings.Equal_Case_Insensitive
(To_String (Left), To_String (Right));
function Ada.Strings.Less_Case_Insensitive (Left, Right : String)
return Boolean;
pragma Pure(Ada.Strings.Less_Case_Insensitive);
Performs a lexicographic
comparison of strings Left and Right, converted to lower case.
with Ada.Strings.Less_Case_Insensitive;
function Ada.Strings.Fixed.Less_Case_Insensitive
(Left, Right : String)
return Boolean
renames Ada.Strings.Less_Case_Insensitive;
generic
with package Bounded
is
new Ada.Strings.Bounded.Generic_Bounded_Length (<>);
function Ada.Strings.Bounded.Less_Case_Insensitive
(Left, Right : Bounded.Bounded_String)
return Boolean;
pragma Preelaborate(Ada.Strings.Bounded.Less_Case_Insensitive);
Equivalent to Strings.Less_Case_Insensitive
(Bounded.To_String (Left), Bounded.To_String (Right));
function Ada.Strings.Unbounded.Less_Case_Insensitive
(Left, Right : Unbounded_String)
return Boolean;
pragma Preelaborate(Ada.Strings.Unbounded.Less_Case_Insensitive);
Equivalent to Strings.Less_Case_Insensitive
(To_String (Left), To_String (Right));
Extensions to Ada 2005
{
AI05-0001-1}
{
AI05-0286-1}
The Strings.Equal_Case_Insensitive, Strings.Fixed.Equal_Case_Insensitive,
Strings.Bounded.Equal_Case_Insensitive, Strings.Unbounded.Equal_Case_Insensitive,
Strings.Less_Case_Insensitive, Strings.Fixed.Less_Case_Insensitive, Strings.Bounded.Less_Case_Insensitive,
Strings.Unbounded.Less_Case_Insensitive functions are new.
Ada 2005 and 2012 Editions sponsored in part by Ada-Europe