Annotated Ada Reference Manual (Ada 202y Draft 1)Legal Information
Contents   Index   References   Search   Previous   Next 

A.4.10 String Comparison

Static Semantics

1/3
{AI05-0001-1} {AI05-0286-1} {AI05-0298-1} The library function Strings.Equal_Case_Insensitive has the following declaration:
2/5
{AI12-0414-1} function Ada.Strings.Equal_Case_Insensitive (Left, Right : String)
   return Boolean with Pure;
3/5
{AI12-0263-1} {AI12-0450-1} 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 Clause 2 of ISO/IEC 10646:2020. Otherwise, returns False. This function uses the same method as is used to determine whether two identifiers are the same.
3.a/3
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.
3.b/5
{AI12-0263-1} The “documents referenced” means Unicode, Chapter 4 (specifically, section 4.2 — Case). See the Implementation Notes in 2.3 for a source for machine-readable definitions of these properties. 
4/3
{AI05-0001-1} {AI05-0248-1} {AI05-0298-1} The library function Strings.Fixed.Equal_Case_Insensitive has the following declaration:
5/3
with Ada.Strings.Equal_Case_Insensitive;
function Ada.Strings.Fixed.Equal_Case_Insensitive
   (Left, Right : String) return Boolean
      renames Ada.Strings.Equal_Case_Insensitive;
6/3
{AI05-0001-1} {AI05-0248-1} {AI05-0298-1} The generic library function Strings.Bounded.Equal_Case_Insensitive has the following declaration:
7/5
{AI12-0241-1} {AI12-0302-1} 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
   with Preelaborate, Nonblocking, Global => in out synchronized;
8/3
Equivalent to Strings.Equal_Case_Insensitive (Bounded.To_String (Left), Bounded.To_String (Right)); 
9/3
{AI05-0001-1} {AI05-0248-1} {AI05-0298-1} The library function Strings.Unbounded.Equal_Case_Insensitive has the following declaration:
10/5
{AI12-0241-1} {AI12-0302-1} function Ada.Strings.Unbounded.Equal_Case_Insensitive
   (Left, Right : Unbounded_String) return Boolean
   with Preelaborate, Nonblocking, Global => in out synchronized;
11/3
Equivalent to Strings.Equal_Case_Insensitive (To_String (Left), To_String (Right)); 
12/3
{AI05-0001-1} {AI05-0298-1} The library function Strings.Less_Case_Insensitive has the following declaration:
13/5
{AI12-0414-1} function Ada.Strings.Less_Case_Insensitive (Left, Right : String)
   return Boolean with Pure;
14/3
Performs a lexicographic comparison of strings Left and Right, converted to lower case. 
15/3
{AI05-0001-1} {AI05-0248-1} {AI05-0298-1} The library function Strings.Fixed.Less_Case_Insensitive has the following declaration:
16/3
with Ada.Strings.Less_Case_Insensitive;
function Ada.Strings.Fixed.Less_Case_Insensitive
   (Left, Right : String) return Boolean
      renames Ada.Strings.Less_Case_Insensitive;
17/3
{AI05-0001-1} {AI05-0248-1} {AI05-0298-1} The generic library function Strings.Bounded.Less_Case_Insensitive has the following declaration:
18/5
{AI12-0241-1} {AI12-0302-1} 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
   with Preelaborate, Nonblocking, Global => in out synchronized;
19/3
Equivalent to Strings.Less_Case_Insensitive (Bounded.To_String (Left), Bounded.To_String (Right)); 
20/3
{AI05-0001-1} {AI05-0248-1} {AI05-0298-1} The library function Strings.Unbounded.Less_Case_Insensitive has the following declaration:
21/5
{AI12-0241-1} {AI12-0302-1} function Ada.Strings.Unbounded.Less_Case_Insensitive
  (Left, Right : Unbounded_String) return Boolean
   with Preelaborate, Nonblocking, Global => in out synchronized;
22/3
Equivalent to Strings.Less_Case_Insensitive (To_String (Left), To_String (Right)); 

Extensions to Ada 2005

22.a/3
{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. 

Contents   Index   References   Search   Previous   Next 
Ada-Europe Ada 2005 and 2012 Editions sponsored in part by Ada-Europe