#include <db_cxx.h>
 
extern "C" {
    typedef u_int32_t (*h_hash_fcn_type)
	(DB *, const void *bytes, u_int32_t length);
};
int
Db::set_h_hash(h_hash_fcn_type h_hash_fcn);
      Set a user-defined hash function; if no hash function is specified, a default hash function is used. Because no hash function performs equally well on all possible data, the user may find that the built-in hash function performs poorly with a particular data set.
         The Db::set_h_hash() method configures operations performed using the
         specified Db  handle, not
         all operations performed on the underlying database.
    
         The Db::set_h_hash() method may not be called after the 
         Db::open()  method is called. If
         the database already exists when Db::open()  
         is called, the information specified to Db::set_h_hash() must be the same as that
         historically used to create the database or corruption can occur.
    
         The Db::set_h_hash() 
            
            
                method either returns a non-zero error value or throws an
                exception that encapsulates a non-zero error value on
                failure, and returns 0 on success.
            
        
    
The h_hash_fcn parameter is the application-specified hash function.
Application-specified hash functions take a pointer to a byte string and a length as parameters, and return a value of type u_int32_t. The hash function must handle any key values used by the application (possibly including zero-length keys).
                         The Db::set_h_hash() 
            
            
                method may fail and throw a DbException 
                exception, encapsulating one of the following non-zero errors, or return one
                of the following non-zero errors:
            
        
                    
If the method was called after Db::open() was called; or if an invalid flag value or parameter was specified.