mirror of
https://github.com/boostorg/container_hash.git
synced 2026-03-13 14:31:04 +01:00
Compare commits
16 Commits
boost-1.56
...
boost-1.62
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f184dd019f | ||
|
|
0361d416b7 | ||
|
|
7838c3678f | ||
|
|
5856bff480 | ||
|
|
468516ed71 | ||
|
|
c8d8c7edd4 | ||
|
|
e76c3dc1a2 | ||
|
|
8171dbb465 | ||
|
|
99d4923496 | ||
|
|
29865a5bca | ||
|
|
8b05fd5fdf | ||
|
|
ada1369a14 | ||
|
|
4977373964 | ||
|
|
8b19e7eaa0 | ||
|
|
75ae18ef54 | ||
|
|
754d5f535e |
39
.travis.yml
Normal file
39
.travis.yml
Normal file
@@ -0,0 +1,39 @@
|
||||
# Copyright (C) 2016 Daniel James.
|
||||
# Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
# Use Trusty to get a reasonably recent version of Boost.
|
||||
sudo: required
|
||||
dist: trusty
|
||||
|
||||
language: c++
|
||||
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- libboost-dev
|
||||
- libboost-tools-dev
|
||||
|
||||
matrix:
|
||||
include:
|
||||
- compiler: gcc
|
||||
env: BJAM_TOOLSET=gcc-std03
|
||||
- compiler: gcc
|
||||
env: BJAM_TOOLSET=gcc-std11
|
||||
- compiler: clang
|
||||
env: BJAM_TOOLSET=clang-std03
|
||||
- compiler: clang
|
||||
env: BJAM_TOOLSET=clang-std11
|
||||
|
||||
before_script:
|
||||
- |
|
||||
echo "using gcc : std03 : g++-4.8 --std=c++03 ;" > ~/user-config.jam
|
||||
echo "using gcc : std11 : g++-4.8 --std=c++11 ;" >> ~/user-config.jam
|
||||
echo "using clang : std03 : clang++ --std=c++03 ;" >> ~/user-config.jam
|
||||
echo "using clang : std11 : clang++ --std=c++11 ;" >> ~/user-config.jam
|
||||
- cat ~/user-config.jam
|
||||
- touch Jamroot.jam
|
||||
|
||||
script:
|
||||
- cd ${TRAVIS_BUILD_DIR}/test
|
||||
- bjam -q ${BJAM_TOOLSET} include=${TRAVIS_BUILD_DIR}/include
|
||||
@@ -174,4 +174,9 @@
|
||||
* Ongoing work on improving `hash_combine`. This changes the combine function
|
||||
which was previously defined in the reference documentation.
|
||||
|
||||
[h2 Boost 1.58.0]
|
||||
|
||||
* Fixed strict aliasing violation
|
||||
([@https://github.com/boostorg/functional/pull/3 GitHub #3]).
|
||||
|
||||
[endsect]
|
||||
|
||||
@@ -3,6 +3,11 @@
|
||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
// Force use of assert.
|
||||
#if defined(NDEBUG)
|
||||
#undef NDEBUG
|
||||
#endif
|
||||
|
||||
#include <boost/functional/hash.hpp>
|
||||
#include <cassert>
|
||||
|
||||
|
||||
@@ -3,6 +3,11 @@
|
||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
// Force use of assert.
|
||||
#if defined(NDEBUG)
|
||||
#undef NDEBUG
|
||||
#endif
|
||||
|
||||
#include <boost/functional/hash.hpp>
|
||||
#include <cassert>
|
||||
|
||||
|
||||
@@ -68,7 +68,7 @@ namespace boost
|
||||
std::size_t seed = 0;
|
||||
|
||||
if (length >= sizeof(std::size_t)) {
|
||||
seed = *(std::size_t*) ptr;
|
||||
std::memcpy(&seed, ptr, sizeof(std::size_t));
|
||||
length -= sizeof(std::size_t);
|
||||
ptr += sizeof(std::size_t);
|
||||
|
||||
|
||||
@@ -212,7 +212,6 @@ namespace boost
|
||||
seed ^= value + 0x9e3779b9 + (seed<<6) + (seed>>2);
|
||||
}
|
||||
|
||||
template <typename SizeT>
|
||||
inline void hash_combine_impl(boost::uint32_t& h1,
|
||||
boost::uint32_t k1)
|
||||
{
|
||||
@@ -229,12 +228,11 @@ namespace boost
|
||||
}
|
||||
|
||||
|
||||
// Don't define 64-bit hash combine on platforms with 64 bit integers,
|
||||
// Don't define 64-bit hash combine on platforms without 64 bit integers,
|
||||
// and also not for 32-bit gcc as it warns about the 64-bit constant.
|
||||
#if !defined(BOOST_NO_INT64_T) && \
|
||||
!(defined(__GNUC__) && ULONG_MAX == 0xffffffff)
|
||||
|
||||
template <typename SizeT>
|
||||
inline void hash_combine_impl(boost::uint64_t& h,
|
||||
boost::uint64_t k)
|
||||
{
|
||||
@@ -247,6 +245,10 @@ namespace boost
|
||||
|
||||
h ^= k;
|
||||
h *= m;
|
||||
|
||||
// Completely arbitrary number, to prevent 0's
|
||||
// from hashing to 0.
|
||||
h += 0xe6546b64;
|
||||
}
|
||||
|
||||
#endif // BOOST_NO_INT64_T
|
||||
@@ -411,7 +413,7 @@ namespace boost
|
||||
// passed by copy.
|
||||
//
|
||||
// BOOST_HASH_SPECIALIZE_REF - define a specialization for a type which is
|
||||
// passed by copy.
|
||||
// passed by const reference.
|
||||
//
|
||||
// These are undefined later.
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@ project hash-tests
|
||||
|
||||
test-suite functional/hash
|
||||
:
|
||||
[ compile check_float_funcs.cpp ]
|
||||
[ run hash_fwd_test_1.cpp ]
|
||||
[ run hash_fwd_test_2.cpp ]
|
||||
[ run hash_number_test.cpp ]
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
|
||||
# Copyright 2012 Daniel James.
|
||||
# Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
import testing ;
|
||||
|
||||
build-project .. ;
|
||||
|
||||
test-suite functional/hash/config
|
||||
:
|
||||
[ compile check_float_funcs.cpp ]
|
||||
;
|
||||
@@ -58,8 +58,6 @@ void numeric_extra_tests(typename
|
||||
template <class T>
|
||||
void numeric_test(T*)
|
||||
{
|
||||
typedef boost::hash_detail::limits<T> limits;
|
||||
|
||||
compile_time_tests((T*) 0);
|
||||
|
||||
BOOST_HASH_TEST_NAMESPACE::hash<T> x1;
|
||||
|
||||
@@ -38,6 +38,23 @@ void string_tests()
|
||||
#endif
|
||||
}
|
||||
|
||||
void string0_tests()
|
||||
{
|
||||
std::string x1(1, '\0');
|
||||
std::string x2(2, '\0');
|
||||
std::string x3(3, '\0');
|
||||
std::string x4(10, '\0');
|
||||
|
||||
BOOST_HASH_TEST_NAMESPACE::hash<std::string> hasher;
|
||||
|
||||
BOOST_TEST(hasher(x1) != hasher(x2));
|
||||
BOOST_TEST(hasher(x1) != hasher(x3));
|
||||
BOOST_TEST(hasher(x1) != hasher(x4));
|
||||
BOOST_TEST(hasher(x2) != hasher(x3));
|
||||
BOOST_TEST(hasher(x2) != hasher(x4));
|
||||
BOOST_TEST(hasher(x3) != hasher(x4));
|
||||
}
|
||||
|
||||
#if !defined(BOOST_NO_STD_WSTRING)
|
||||
void wstring_tests()
|
||||
{
|
||||
@@ -66,6 +83,7 @@ void wstring_tests()
|
||||
int main()
|
||||
{
|
||||
string_tests();
|
||||
string0_tests();
|
||||
#if !defined(BOOST_NO_STD_WSTRING)
|
||||
wstring_tests();
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user