AshanGimhana's picture
Upload folder using huggingface_hub
9375c9a verified
raw
history blame
2.39 kB
// Copyright (C) 2003 Davis E. King ([email protected])
// License: Boost Software License See LICENSE.txt for the full license.
#ifndef DLIB_GENERAL_HASh_
#define DLIB_GENERAL_HASh_
#include <string>
#include "hash.h"
namespace dlib
{
// ----------------------------------------------------------------------------------------
// ----------------------------------------------------------------------------------------
// ----------------------- provide a general hashing function object ----------------------
// ----------------------------------------------------------------------------------------
// ----------------------------------------------------------------------------------------
template <
typename T
>
class general_hash
{
public:
inline unsigned long operator() (
const T& item
) const;
};
/*!
Note that the default behavior of general hash is to attempt to cast
an object of type T to an unsigned long and use that as the hash.
REQUIREMENTS ON general_hash
- must have a default constructor
- must be a function object which overloads operator() as follows:
unsigned long operator()(const T& item)
- must take item, compute a hash number and return it
- must not throw
- must define the hash in such a way that all equivalent objects have
the same hash. where equivalent means the following:
definition of equivalent:
a is equivalent to b if
a < b == false and
b < a == false
!*/
// ---------------
template <
typename T
>
unsigned long general_hash<T>::
operator() (
const T& item
) const
{
// hash any types that have a conversion to uint64
return hash(static_cast<uint64>(item));
}
// ---------------
// std::string hash
template <>
inline unsigned long general_hash<std::string>::
operator() (
const std::string& item
) const
{
return hash(item);
}
// ----------------------------------------------------------------------------------------
// ----------------------------------------------------------------------------------------
}
#endif // DLIB_GENERAL_HASh_