Contents   Index   Search   Related Documents   Previous   Next


A.4.9 String Hashing

Static Semantics

1/2
     The library function Strings.Hash has the following declaration:
2/2
with Ada.Containers;
function Ada.Strings.Hash (Key : String) return Containers.Hash_Type;
pragma Pure (Hash);
3/2
Returns an implementation-defined value which is a function of the value of Key. If A and B are strings such that A equals B, Hash(A) equals Hash(B).
4/2
     The library function Strings.Fixed.Hash has the following declaration:
5/2
with Ada.Containers, Ada.Strings.Hash;
function Ada.Strings.Fixed.Hash (Key : String) return Containers.Hash_Type
   renames Ada.Strings.Hash;
pragma Pure (Hash);
6/2
     The generic library function Strings.Bounded.Hash has the following declaration:
7/2
with Ada.Containers;
generic
   with package Bounded is
                     new Ada.Strings.Bounded.Generic_Bounded_Length (<>);
function Ada.Strings.Bounded.Hash (Key : Bounded.Bounded_String)
   return Containers.Hash_Type;
pragma Preelaborate (Hash);
8/2
Strings.Bounded.Hash is equivalent to the function call Strings.Hash (Bounded.To_String (Key));
9/2
     The library function Strings.Unbounded.Hash has the following declaration:
10/2
with Ada.Containers;
function Ada.Strings.Unbounded.Hash (Key : Unbounded_String)
   return Containers.Hash_Type;
pragma Preelaborate (Hash);
11/2
Strings.Unbounded.Hash is equivalent to the function call Strings.Hash (To_String (Key));

Implementation Advice

12/2
      The Hash functions should be good hash functions, returning a wide spread of values for different string values. It should be unlikely for similar strings to return the same value.

Contents   Index   Search   Related Documents   Previous   Next   Legal