3 // Copyright (c) 2006-2007 Matias Capeletto
5 // Distributed under the Boost Software License, Version 1.0.
6 // (See accompanying file LICENSE_1_0.txt or copy at
7 // http://www.boost.org/LICENSE_1_0.txt)
9 /// \file detail/modifier_adaptor.hpp
10 /// \brief A binary to unary functor relation modifier adaptor.
12 #ifndef BOOST_BIMAP_DETAIL_MODIFIER_ADAPTOR_HPP
13 #define BOOST_BIMAP_DETAIL_MODIFIER_ADAPTOR_HPP
15 #if defined(_MSC_VER) && (_MSC_VER>=1200)
19 #include <boost/config.hpp>
27 /// \brief A binary to unary functor relation modifier adaptor.
36 struct relation_modifier_adaptor :
37 public std::unary_function<NewArgument,bool>,
42 relation_modifier_adaptor( const Modifier & m ) : Modifier(m) {}
43 relation_modifier_adaptor( const Modifier & m,
44 const FirstExtractor & fe,
45 const SecondExtractor & se ) :
46 Modifier(m), FirstExtractor(fe), SecondExtractor(se) {}
48 void operator()( NewArgument & x ) const
51 FirstExtractor ::operator()( x ),
52 SecondExtractor::operator()( x )
57 /// \brief A simple unary modifier adaptor.
58 // This modifier is equivalent to bind( Modifier, bind( Extractor, _1 ) )
59 // It may be a good idea to start using Boost.Bind instead of it.
67 struct unary_modifier_adaptor :
68 public std::unary_function<NewArgument,bool>,
72 unary_modifier_adaptor( const Modifier & m ) : Modifier(m) {}
73 unary_modifier_adaptor( const Modifier & m,
74 const Extractor & fe) :
75 Modifier(m), Extractor(fe) {}
77 void operator()( NewArgument & x ) const
79 Modifier::operator()( Extractor::operator()( x ) );
89 #endif // BOOST_BIMAP_DETAIL_MODIFIER_ADAPTOR_HPP