Mercurial > hg > vamp-build-and-test
annotate DEPENDENCIES/generic/include/boost/variant/detail/hash_variant.hpp @ 125:34e428693f5d vext
Vext -> Repoint
author | Chris Cannam |
---|---|
date | Thu, 14 Jun 2018 11:15:39 +0100 |
parents | c530137014c0 |
children |
rev | line source |
---|---|
Chris@16 | 1 //----------------------------------------------------------------------------- |
Chris@16 | 2 // boost variant/detail/hash_variant.hpp header file |
Chris@16 | 3 // See http://www.boost.org for updates, documentation, and revision history. |
Chris@16 | 4 //----------------------------------------------------------------------------- |
Chris@16 | 5 // |
Chris@16 | 6 // Copyright (c) 2011 |
Chris@16 | 7 // Antony Polukhin |
Chris@16 | 8 // |
Chris@16 | 9 // Distributed under the Boost Software License, Version 1.0. (See |
Chris@16 | 10 // accompanying file LICENSE_1_0.txt or copy at |
Chris@16 | 11 // http://www.boost.org/LICENSE_1_0.txt) |
Chris@16 | 12 |
Chris@16 | 13 |
Chris@16 | 14 #ifndef BOOST_HASH_VARIANT_FUNCTION_HPP |
Chris@16 | 15 #define BOOST_HASH_VARIANT_FUNCTION_HPP |
Chris@16 | 16 |
Chris@101 | 17 #if defined(_MSC_VER) |
Chris@16 | 18 # pragma once |
Chris@16 | 19 #endif |
Chris@16 | 20 |
Chris@16 | 21 #include <boost/variant/variant_fwd.hpp> |
Chris@16 | 22 #include <boost/variant/static_visitor.hpp> |
Chris@16 | 23 #include <boost/variant/apply_visitor.hpp> |
Chris@16 | 24 #include <boost/functional/hash_fwd.hpp> |
Chris@16 | 25 |
Chris@16 | 26 namespace boost { |
Chris@16 | 27 |
Chris@16 | 28 namespace detail { namespace variant { |
Chris@16 | 29 struct variant_hasher: public boost::static_visitor<std::size_t> { |
Chris@16 | 30 template <class T> |
Chris@16 | 31 std::size_t operator()(T const& val) const { |
Chris@16 | 32 boost::hash<T> hasher; |
Chris@16 | 33 return hasher(val); |
Chris@16 | 34 } |
Chris@16 | 35 }; |
Chris@16 | 36 }} |
Chris@16 | 37 |
Chris@16 | 38 template < BOOST_VARIANT_ENUM_PARAMS(typename T) > |
Chris@16 | 39 std::size_t hash_value(variant< BOOST_VARIANT_ENUM_PARAMS(T) > const& val) { |
Chris@16 | 40 std::size_t seed = boost::apply_visitor(detail::variant::variant_hasher(), val); |
Chris@16 | 41 hash_combine(seed, val.which()); |
Chris@16 | 42 return seed; |
Chris@16 | 43 } |
Chris@16 | 44 } |
Chris@16 | 45 |
Chris@16 | 46 #endif |
Chris@16 | 47 |