diff options
Diffstat (limited to 'src/third_party/boost-1.60.0/boost/container/detail/compare_functors.hpp')
-rw-r--r-- | src/third_party/boost-1.60.0/boost/container/detail/compare_functors.hpp | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/src/third_party/boost-1.60.0/boost/container/detail/compare_functors.hpp b/src/third_party/boost-1.60.0/boost/container/detail/compare_functors.hpp new file mode 100644 index 00000000000..4220d509962 --- /dev/null +++ b/src/third_party/boost-1.60.0/boost/container/detail/compare_functors.hpp @@ -0,0 +1,74 @@ +/////////////////////////////////////////////////////////////////////////////// +// +// (C) Copyright Ion Gaztanaga 2014-2014. 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) +// +// See http://www.boost.org/libs/container for documentation. +// +/////////////////////////////////////////////////////////////////////////////// + +#ifndef BOOST_CONTAINER_DETAIL_COMPARE_FUNCTORS_HPP +#define BOOST_CONTAINER_DETAIL_COMPARE_FUNCTORS_HPP + +#ifndef BOOST_CONFIG_HPP +# include <boost/config.hpp> +#endif + +#if defined(BOOST_HAS_PRAGMA_ONCE) +# pragma once +#endif + +namespace boost { +namespace container { + +template<class Allocator> +class equal_to_value +{ + typedef typename Allocator::value_type value_type; + const value_type &t_; + + public: + explicit equal_to_value(const value_type &t) + : t_(t) + {} + + bool operator()(const value_type &t)const + { return t_ == t; } +}; + +template<class Node, class Pred> +struct value_to_node_compare + : Pred +{ + typedef Pred predicate_type; + typedef Node node_type; + + value_to_node_compare() + : Pred() + {} + + explicit value_to_node_compare(Pred pred) + : Pred(pred) + {} + + bool operator()(const Node &a, const Node &b) const + { return static_cast<const Pred&>(*this)(a.m_data, b.m_data); } + + bool operator()(const Node &a) const + { return static_cast<const Pred&>(*this)(a.m_data); } + + bool operator()(const Node &a, const Node &b) + { return static_cast<Pred&>(*this)(a.m_data, b.m_data); } + + bool operator()(const Node &a) + { return static_cast<Pred&>(*this)(a.m_data); } + + predicate_type & predicate() { return static_cast<predicate_type&>(*this); } + const predicate_type & predicate() const { return static_cast<predicate_type&>(*this); } +}; + +} //namespace container { +} //namespace boost { + +#endif //BOOST_CONTAINER_DETAIL_COMPARE_FUNCTORS_HPP |