Skip to content

Commit

Permalink
Change signature of HashAlgorithm::update to (void const*, size_t)
Browse files Browse the repository at this point in the history
  • Loading branch information
pdimov committed Dec 11, 2023
1 parent 66d8f84 commit 4dd4d36
Show file tree
Hide file tree
Showing 21 changed files with 89 additions and 96 deletions.
16 changes: 10 additions & 6 deletions benchmark/keys.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,13 +44,15 @@ class mul31_32
{
}

void update( unsigned char const * p, std::ptrdiff_t n )
void update( void const * pv, std::size_t n )
{
unsigned char const* p = static_cast<unsigned char const*>( pv );

std::uint32_t h = st_;

#if 0

for( std::ptrdiff_t i = 0; i < n; ++i )
for( std::size_t i = 0; i < n; ++i )
{
h = h * 31 + static_cast<std::uint32_t>( p[i] );
}
Expand Down Expand Up @@ -104,13 +106,15 @@ class mul31_64
{
}

void update( unsigned char const * p, std::ptrdiff_t n )
void update( void const * pv, std::size_t n )
{
unsigned char const* p = static_cast<unsigned char const*>( pv );

std::uint64_t h = st_;

#if 0

for( std::ptrdiff_t i = 0; i < n; ++i )
for( std::size_t i = 0; i < n; ++i )
{
h = h * 31 + static_cast<std::uint64_t>( p[i] );
}
Expand Down Expand Up @@ -216,7 +220,7 @@ template<class H> class hasher3
typename T::value_type const * p = v.data();
typename T::size_type n = v.size();

h.update( reinterpret_cast<unsigned char const*>( p ), n );
h.update( p, n * sizeof(T) );

using boost::hash2::get_integral_result;
return get_integral_result<std::size_t>( h.result() );
Expand Down Expand Up @@ -245,7 +249,7 @@ template<class H> class hasher4
typename T::value_type const * p = v.data();
typename T::size_type n = v.size();

h.update( reinterpret_cast<unsigned char const*>( p ), n );
h.update( p, n * sizeof(T) );

using boost::hash2::get_integral_result;
return get_integral_result<std::size_t>( h.result() );
Expand Down
16 changes: 10 additions & 6 deletions benchmark/unordered.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,11 +45,13 @@ class mul31_32
{
}

void update( unsigned char const * p, std::ptrdiff_t n )
void update( void const * pv, std::size_t n )
{
unsigned char const* p = static_cast<unsigned char const*>( pv );

std::uint32_t h = st_;

for( std::ptrdiff_t i = 0; i < n; ++i )
for( std::size_t i = 0; i < n; ++i )
{
h = h * 31 + static_cast<std::uint32_t>( p[i] );
}
Expand Down Expand Up @@ -84,11 +86,13 @@ class mul31_64
{
}

void update( unsigned char const * p, std::ptrdiff_t n )
void update( void const * pv, std::size_t n )
{
unsigned char const* p = static_cast<unsigned char const*>( pv );

std::uint64_t h = st_;

for( std::ptrdiff_t i = 0; i < n; ++i )
for( std::size_t i = 0; i < n; ++i )
{
h = h * 31 + static_cast<std::uint64_t>( p[i] );
}
Expand Down Expand Up @@ -174,7 +178,7 @@ template<class H> class hasher3
typename T::value_type const * p = v.data();
typename T::size_type n = v.size();

h.update( reinterpret_cast<unsigned char const*>( p ), n );
h.update( p, n * sizeof(T) );

using boost::hash2::get_integral_result;
return get_integral_result<std::size_t>( h.result() );
Expand Down Expand Up @@ -203,7 +207,7 @@ template<class H> class hasher4
typename T::value_type const * p = v.data();
typename T::size_type n = v.size();

h.update( reinterpret_cast<unsigned char const*>( p ), n );
h.update( p, n * sizeof(T) );

using boost::hash2::get_integral_result;
return get_integral_result<std::size_t>( h.result() );
Expand Down
12 changes: 6 additions & 6 deletions include/boost/hash2/fnv1a.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ template<class T> class fnv1a
}
}

fnv1a( unsigned char const * p, std::ptrdiff_t n ): st_( fnv1a_const<T>::basis )
fnv1a( unsigned char const * p, std::size_t n ): st_( fnv1a_const<T>::basis )
{
BOOST_ASSERT( n >= 0 );

Expand All @@ -80,13 +80,13 @@ template<class T> class fnv1a
}
}

void update( unsigned char const * p, std::ptrdiff_t n )
void update( void const * pv, std::size_t n )
{
BOOST_ASSERT( n >= 0 );
unsigned char const* p = static_cast<unsigned char const*>( pv );

T h = st_;

for( std::ptrdiff_t i = 0; i < n; ++i )
for( std::size_t i = 0; i < n; ++i )
{
h ^= static_cast<T>( p[i] );
h *= fnv1a_const<T>::prime;
Expand Down Expand Up @@ -123,7 +123,7 @@ class fnv1a_32: public detail::fnv1a<std::uint32_t>
{
}

fnv1a_32( unsigned char const * p, std::ptrdiff_t n ): detail::fnv1a<std::uint32_t>( p, n )
fnv1a_32( unsigned char const * p, std::size_t n ): detail::fnv1a<std::uint32_t>( p, n )
{
}
};
Expand All @@ -140,7 +140,7 @@ class fnv1a_64: public detail::fnv1a<std::uint64_t>
{
}

fnv1a_64( unsigned char const * p, std::ptrdiff_t n ): detail::fnv1a<std::uint64_t>( p, n )
fnv1a_64( unsigned char const * p, std::size_t n ): detail::fnv1a<std::uint64_t>( p, n )
{
}
};
Expand Down
5 changes: 1 addition & 4 deletions include/boost/hash2/hash_append.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -65,10 +65,7 @@ template<class H, class T>
is_contiguously_hashable<T, endian::native>::value, void >::type
hash_append_range_( H & h, T * first, T * last )
{
unsigned char const * f2 = reinterpret_cast<unsigned char const*>( first );
unsigned char const * l2 = reinterpret_cast<unsigned char const*>( last );

h.update( f2, l2 - f2 );
h.update( first, (last - first) * sizeof(T) );
}

} // namespace detail
Expand Down
10 changes: 4 additions & 6 deletions include/boost/hash2/hmac.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ template<class H> class hmac

private:

void init( unsigned char const * p, std::ptrdiff_t n )
void init( unsigned char const * p, std::size_t n )
{
int const m = block_size;

Expand Down Expand Up @@ -96,16 +96,14 @@ template<class H> class hmac
}
}

hmac( unsigned char const * p, std::ptrdiff_t n )
hmac( unsigned char const * p, std::size_t n )
{
BOOST_ASSERT( n >= 0 );
init( p, n );
}

void update( unsigned char const * p, std::ptrdiff_t n )
void update( void const * pv, std::size_t n )
{
BOOST_ASSERT( n >= 0 );
inner_.update( p, n );
inner_.update( pv, n );
}

result_type result()
Expand Down
8 changes: 4 additions & 4 deletions include/boost/hash2/md5.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,7 @@ class md5_128
}
}

md5_128( unsigned char const * p, std::ptrdiff_t n ): m_( 0 ), n_( 0 )
md5_128( unsigned char const * p, std::size_t n ): m_( 0 ), n_( 0 )
{
BOOST_ASSERT( n >= 0 );

Expand All @@ -238,9 +238,9 @@ class md5_128
}
}

void update( unsigned char const * p, std::ptrdiff_t n )
void update( void const * pv, std::size_t n )
{
BOOST_ASSERT( n >= 0 );
unsigned char const* p = static_cast<unsigned char const*>( pv );

BOOST_ASSERT( m_ == static_cast<int>( n_ & (N-1) ) );

Expand Down Expand Up @@ -335,7 +335,7 @@ class hmac_md5_128: public hmac<md5_128>
{
}

hmac_md5_128( unsigned char const * p, std::ptrdiff_t n ): hmac<md5_128>( p, n )
hmac_md5_128( unsigned char const * p, std::size_t n ): hmac<md5_128>( p, n )
{
}
};
Expand Down
28 changes: 12 additions & 16 deletions include/boost/hash2/murmur3.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -50,11 +50,11 @@ class murmur3_32
h = h * 5 + 0xe6546b64;
}

void update_( unsigned char const * p, std::ptrdiff_t m )
void update_( unsigned char const * p, std::size_t m )
{
std::uint32_t h = h_;

for( std::ptrdiff_t i = 0; i < m; ++i, p += 4 )
for( std::size_t i = 0; i < m; ++i, p += 4 )
{
std::uint32_t k = detail::read32le( p );
mix( h, k );
Expand All @@ -80,10 +80,8 @@ class murmur3_32
}
}

murmur3_32( unsigned char const * p, std::ptrdiff_t n ): m_( 0 ), n_( 0 )
murmur3_32( unsigned char const * p, std::size_t n ): m_( 0 ), n_( 0 )
{
BOOST_ASSERT( n >= 0 );

if( n == 0 )
{
h_ = 0;
Expand All @@ -107,9 +105,9 @@ class murmur3_32
}
}

void update( unsigned char const * p, std::ptrdiff_t n )
void update( void const * pv, std::size_t n )
{
BOOST_ASSERT( n >= 0 );
unsigned char const* p = static_cast<unsigned char const*>( pv );

BOOST_ASSERT( m_ == static_cast<int>( n_ & 3 ) );

Expand Down Expand Up @@ -143,7 +141,7 @@ class murmur3_32
BOOST_ASSERT( m_ == 0 );

{
std::ptrdiff_t k = n / 4;
std::size_t k = n / 4;

update_( p, k );

Expand Down Expand Up @@ -232,11 +230,11 @@ class murmur3_128

private:

void update_( unsigned char const * p, std::ptrdiff_t k )
void update_( unsigned char const * p, std::size_t k )
{
std::uint64_t h1 = h1_, h2 = h2_;

for( std::ptrdiff_t i = 0; i < k; ++i, p += 16 )
for( std::size_t i = 0; i < k; ++i, p += 16 )
{
std::uint64_t k1 = detail::read64le( p + 0 );
std::uint64_t k2 = detail::read64le( p + 8 );
Expand Down Expand Up @@ -281,10 +279,8 @@ class murmur3_128
h2_ = seed2;
}

murmur3_128( unsigned char const * p, std::ptrdiff_t n ): m_( 0 ), n_( 0 )
murmur3_128( unsigned char const * p, std::size_t n ): m_( 0 ), n_( 0 )
{
BOOST_ASSERT( n >= 0 );

if( n == 0 )
{
h1_ = h2_ = 0;
Expand Down Expand Up @@ -317,9 +313,9 @@ class murmur3_128
}
}

void update( unsigned char const * p, std::ptrdiff_t n )
void update( void const * pv, std::size_t n )
{
BOOST_ASSERT( n >= 0 );
unsigned char const* p = static_cast<unsigned char const*>( pv );

BOOST_ASSERT( m_ == static_cast<int>( n_ & 15 ) );

Expand Down Expand Up @@ -353,7 +349,7 @@ class murmur3_128
BOOST_ASSERT( m_ == 0 );

{
std::ptrdiff_t k = n / 16;
std::size_t k = n / 16;

update_( p, k );

Expand Down
10 changes: 4 additions & 6 deletions include/boost/hash2/sha1.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -222,10 +222,8 @@ class sha1_160
}
}

sha1_160( unsigned char const * p, std::ptrdiff_t n ): m_( 0 ), n_( 0 )
sha1_160( unsigned char const * p, std::size_t n ): m_( 0 ), n_( 0 )
{
BOOST_ASSERT( n >= 0 );

init();

if( n != 0 )
Expand All @@ -235,9 +233,9 @@ class sha1_160
}
}

void update( unsigned char const * p, std::ptrdiff_t n )
void update( void const * pv, std::size_t n )
{
BOOST_ASSERT( n >= 0 );
unsigned char const* p = static_cast<unsigned char const*>( pv );

BOOST_ASSERT( m_ == static_cast<int>( n_ & (N-1) ) );

Expand Down Expand Up @@ -332,7 +330,7 @@ class hmac_sha1_160: public hmac<sha1_160>
{
}

hmac_sha1_160( unsigned char const * p, std::ptrdiff_t n ): hmac<sha1_160>( p, n )
hmac_sha1_160( unsigned char const * p, std::size_t n ): hmac<sha1_160>( p, n )
{
}
};
Expand Down
16 changes: 6 additions & 10 deletions include/boost/hash2/siphash.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -85,10 +85,8 @@ class siphash_64
init( k0, k1 );
}

siphash_64( unsigned char const * p, std::ptrdiff_t n ): m_( 0 ), n_( 0 )
siphash_64( unsigned char const * p, std::size_t n ): m_( 0 ), n_( 0 )
{
BOOST_ASSERT( n >= 0 );

if( n == 0 )
{
init( 0, 0 );
Expand Down Expand Up @@ -119,9 +117,9 @@ class siphash_64
}
}

void update( unsigned char const * p, std::ptrdiff_t n )
void update( void const * pv, std::size_t n )
{
BOOST_ASSERT( n >= 0 );
unsigned char const* p = static_cast<unsigned char const*>( pv );

BOOST_ASSERT( m_ == static_cast<int>( n_ & 7 ) );

Expand Down Expand Up @@ -277,10 +275,8 @@ class siphash_32
init( k0, k1 );
}

siphash_32( unsigned char const * p, std::ptrdiff_t n ): m_( 0 ), n_( 0 )
siphash_32( unsigned char const * p, std::size_t n ): m_( 0 ), n_( 0 )
{
BOOST_ASSERT( n >= 0 );

if( n == 0 )
{
init( 0, 0 );
Expand Down Expand Up @@ -311,9 +307,9 @@ class siphash_32
}
}

void update( unsigned char const * p, std::ptrdiff_t n )
void update( void const * pv, std::size_t n )
{
BOOST_ASSERT( n >= 0 );
unsigned char const* p = static_cast<unsigned char const*>( pv );

BOOST_ASSERT( m_ == static_cast<int>( n_ & 3 ) );

Expand Down
Loading

0 comments on commit 4dd4d36

Please sign in to comment.