diff -r 666f914201fb -r 2fe1408b6811 epoc32/include/stdapis/boost/pending/indirect_cmp.hpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/epoc32/include/stdapis/boost/pending/indirect_cmp.hpp Tue Mar 16 16:12:26 2010 +0000 @@ -0,0 +1,86 @@ +// +//======================================================================= +// Copyright 1997, 1998, 1999, 2000 University of Notre Dame. +// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek +// +// 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) +//======================================================================= +// + +#ifndef BOOST_INDIRECT_CMP_HPP +#define BOOST_INDIRECT_CMP_HPP + +#include +#include +#include + +namespace boost { + + //: indirect_cmp + // + // could also do this with compose_f_gx_hx, and the member binder... + // + //!category: functors + //!component: type + //!tparam: ReadablePropertyMap - a model of ReadablePropertyMap + //!definition: functor.h + template + class indirect_cmp { + public: + typedef typename boost::property_traits::value_type T; + typedef typename boost::property_traits::key_type K; + typedef K first_argument_type; + typedef K second_argument_type; + typedef T result_type; + inline indirect_cmp(const ReadablePropertyMap& df, const Compare& c = Compare()) + : d(df), cmp(c) { } + + template + inline bool + operator()(const A& u, const B& v) const { + T du = get(d, u), dv = get(d, v); + return cmp(du, dv); + } + protected: + ReadablePropertyMap d; + Compare cmp; + }; + + template + indirect_cmp + make_indirect_cmp(const Compare& cmp, ReadablePropertyMap pmap) { + indirect_cmp p(pmap, cmp); + return p; + } + + template + class indirect_pmap { + public: + typedef typename boost::property_traits::value_type T; + typedef typename boost::property_traits::key_type K; + typedef K argument_type; + typedef T result_type; + inline indirect_pmap(const ReadablePropertyMap& df) + : d(df) { } + + inline bool operator()(const K& u) const { + return get(d, u); + } + protected: + ReadablePropertyMap d; + }; + + template + indirect_pmap + make_indirect_pmap(ReadablePropertyMap pmap) { + indirect_pmap f(pmap); + return f; + } + + +} // namespace boost + + +#endif // GGCL_INDIRECT_CMP_HPP