-- h (w) = (g (f1 (w)) + g (f2 (w))) mod m
- -- where f1 and f2 are functions that map strings into integers, and g is a
- -- function that maps integers into [0, m-1]. h can be order preserving.
+ -- where f1 and f2 are functions that map strings into integers, and g is
+ -- a function that maps integers into [0, m-1]. h can be order preserving.
-- For instance, let W = {w_0, ..., w_i, ..., w_m-1}, h can be defined
-- such that h (w_i) = i.
package WT is new GNAT.Table (Word_Type, Word_Id, 0, 32, 32);
package IT is new GNAT.Table (Integer, Integer, 0, 32, 32);
-- The two main tables. WT is used to store the words in their initial
- -- version and in their reduced version (that is words reduced to
- -- their significant characters). As an instance of GNAT.Table, WT does
- -- not initialize string pointers to null. This initialization has to be
- -- done manually when the table is allocated. IT is used to store several
+ -- version and in their reduced version (that is words reduced to their
+ -- significant characters). As an instance of GNAT.Table, WT does not
+ -- initialize string pointers to null. This initialization has to be done
+ -- manually when the table is allocated. IT is used to store several
-- tables of components containing only integers.
function Image (Int : Integer; W : Natural := 0) return String;
K_To_V : Float := Default_K_To_V;
Optim : Optimization := CPU_Time;
Tries : Positive := Default_Tries);
- -- Initialize the generator and its internal structures. Set the
- -- ratio of vertices over keys in the random graphs. This value
- -- has to be greater than 2.0 in order for the algorithm to
- -- succeed. The word set is not modified (in particular when it is
- -- already set). For instance, it is possible to run several times
- -- the generator with different settings on the same words.
-
- -- A classical way of doing is to Insert all the words and then to
- -- invoke Initialize and Compute. If Compute fails to find a
- -- perfect hash function, invoke Initialize another time with
- -- other configuration parameters (probably with a greater K_To_V
- -- ratio). Once successful, invoke Produce and Finalize.
+ -- Initialize the generator and its internal structures. Set the ratio of
+ -- vertices over keys in the random graphs. This value has to be greater
+ -- than 2.0 in order for the algorithm to succeed. The word set is not
+ -- modified (in particular when it is already set). For instance, it is
+ -- possible to run several times the generator with different settings on
+ -- the same words.
+ --
+ -- A classical way of doing is to Insert all the words and then to invoke
+ -- Initialize and Compute. If Compute fails to find a perfect hash
+ -- function, invoke Initialize another time with other configuration
+ -- parameters (probably with a greater K_To_V ratio). Once successful,
+ -- invoke Produce and Finalize.
procedure Finalize;
-- Deallocate the internal structures and the words table
Length_2 : out Natural);
-- Return the definition of the table Name. This includes the length of
-- dimensions 1 and 2 and the size of an unsigned integer item. When
- -- Length_2 is zero, the table has only one dimension. All the ranges start
- -- from zero.
+ -- Length_2 is zero, the table has only one dimension. All the ranges
+ -- start from zero.
function Value
(Name : Table_Name;