Merge pull request #45 from dimztimz/develop

Implement boost hash for string_view
This commit is contained in:
Marshall Clow 2018-05-01 07:51:36 -07:00 committed by GitHub
commit d4170ccdb5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 21 additions and 0 deletions

View File

@ -192,6 +192,9 @@ install:
- git submodule update --init libs/static_assert
- git submodule update --init libs/throw_exception
- git submodule update --init libs/type_traits
- git submodule update --init libs/container_hash
- git submodule update --init libs/integer
- git submodule update --init libs/detail
- cp -r $TRAVIS_BUILD_DIR/* libs/utility
- ./bootstrap.sh
- ./b2 headers

View File

@ -36,6 +36,9 @@ install:
- git submodule update --init libs/static_assert
- git submodule update --init libs/throw_exception
- git submodule update --init libs/type_traits
- git submodule update --init libs/container_hash
- git submodule update --init libs/integer
- git submodule update --init libs/detail
- xcopy /s /e /q %APPVEYOR_BUILD_FOLDER% libs\utility
- cmd /c bootstrap
- b2 -d0 headers

View File

@ -21,6 +21,7 @@
#include <boost/detail/workaround.hpp>
#include <boost/utility/string_view_fwd.hpp>
#include <boost/throw_exception.hpp>
#include <boost/container_hash/hash_fwd.hpp>
#include <cstddef>
#include <stdexcept>
@ -690,6 +691,10 @@ namespace boost {
}
#endif
template <class charT, class traits>
std::size_t hash_value(basic_string_view<charT, traits> s) {
return boost::hash_range(s.begin(), s.end());
}
}
#if 0

View File

@ -12,6 +12,7 @@
#include <string>
#include <boost/utility/string_view.hpp>
#include <boost/container_hash/hash.hpp>
#include <boost/core/lightweight_test.hpp>
@ -85,6 +86,14 @@ void test_remove ( const std::string &str ) {
}
}
void test_hash(const std::string& str) {
string_view ref = str;
BOOST_TEST(boost::hash_value(ref) == boost::hash_value(str));
boost::hash<std::string> hstr;
boost::hash<string_view> hsv;
BOOST_TEST(hsv(ref) == hstr(str));
}
const char *test_strings [] = {
"",
"1",
@ -102,6 +111,7 @@ int main()
test_substr ( *p );
test_remove ( *p );
null_tests ( *p );
test_hash( *p );
p++;
}