1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/os/ossrv/ossrv_pub/boost_apis/boost/bind/make_adaptable.hpp Fri Jun 15 03:10:57 2012 +0200
1.3 @@ -0,0 +1,187 @@
1.4 +#ifndef BOOST_BIND_MAKE_ADAPTABLE_HPP_INCLUDED
1.5 +#define BOOST_BIND_MAKE_ADAPTABLE_HPP_INCLUDED
1.6 +
1.7 +//
1.8 +// make_adaptable.hpp
1.9 +//
1.10 +// Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
1.11 +//
1.12 +// Distributed under the Boost Software License, Version 1.0. (See
1.13 +// accompanying file LICENSE_1_0.txt or copy at
1.14 +// http://www.boost.org/LICENSE_1_0.txt)
1.15 +//
1.16 +
1.17 +namespace boost
1.18 +{
1.19 +
1.20 +namespace _bi
1.21 +{
1.22 +
1.23 +template<class R, class F> class af0
1.24 +{
1.25 +public:
1.26 +
1.27 + typedef R result_type;
1.28 +
1.29 + explicit af0(F f): f_(f)
1.30 + {
1.31 + }
1.32 +
1.33 + result_type operator()()
1.34 + {
1.35 + return f_();
1.36 + }
1.37 +
1.38 + result_type operator()() const
1.39 + {
1.40 + return f_();
1.41 + }
1.42 +
1.43 +private:
1.44 +
1.45 + F f_;
1.46 +};
1.47 +
1.48 +template<class R, class A1, class F> class af1
1.49 +{
1.50 +public:
1.51 +
1.52 + typedef R result_type;
1.53 + typedef A1 argument_type;
1.54 + typedef A1 arg1_type;
1.55 +
1.56 + explicit af1(F f): f_(f)
1.57 + {
1.58 + }
1.59 +
1.60 + result_type operator()(A1 a1)
1.61 + {
1.62 + return f_(a1);
1.63 + }
1.64 +
1.65 + result_type operator()(A1 a1) const
1.66 + {
1.67 + return f_(a1);
1.68 + }
1.69 +
1.70 +private:
1.71 +
1.72 + F f_;
1.73 +};
1.74 +
1.75 +template<class R, class A1, class A2, class F> class af2
1.76 +{
1.77 +public:
1.78 +
1.79 + typedef R result_type;
1.80 + typedef A1 first_argument_type;
1.81 + typedef A2 second_argument_type;
1.82 + typedef A1 arg1_type;
1.83 + typedef A2 arg2_type;
1.84 +
1.85 + explicit af2(F f): f_(f)
1.86 + {
1.87 + }
1.88 +
1.89 + result_type operator()(A1 a1, A2 a2)
1.90 + {
1.91 + return f_(a1, a2);
1.92 + }
1.93 +
1.94 + result_type operator()(A1 a1, A2 a2) const
1.95 + {
1.96 + return f_(a1, a2);
1.97 + }
1.98 +
1.99 +private:
1.100 +
1.101 + F f_;
1.102 +};
1.103 +
1.104 +template<class R, class A1, class A2, class A3, class F> class af3
1.105 +{
1.106 +public:
1.107 +
1.108 + typedef R result_type;
1.109 + typedef A1 arg1_type;
1.110 + typedef A2 arg2_type;
1.111 + typedef A3 arg3_type;
1.112 +
1.113 + explicit af3(F f): f_(f)
1.114 + {
1.115 + }
1.116 +
1.117 + result_type operator()(A1 a1, A2 a2, A3 a3)
1.118 + {
1.119 + return f_(a1, a2, a3);
1.120 + }
1.121 +
1.122 + result_type operator()(A1 a1, A2 a2, A3 a3) const
1.123 + {
1.124 + return f_(a1, a2, a3);
1.125 + }
1.126 +
1.127 +private:
1.128 +
1.129 + F f_;
1.130 +};
1.131 +
1.132 +template<class R, class A1, class A2, class A3, class A4, class F> class af4
1.133 +{
1.134 +public:
1.135 +
1.136 + typedef R result_type;
1.137 + typedef A1 arg1_type;
1.138 + typedef A2 arg2_type;
1.139 + typedef A3 arg3_type;
1.140 + typedef A4 arg4_type;
1.141 +
1.142 + explicit af4(F f): f_(f)
1.143 + {
1.144 + }
1.145 +
1.146 + result_type operator()(A1 a1, A2 a2, A3 a3, A4 a4)
1.147 + {
1.148 + return f_(a1, a2, a3, a4);
1.149 + }
1.150 +
1.151 + result_type operator()(A1 a1, A2 a2, A3 a3, A4 a4) const
1.152 + {
1.153 + return f_(a1, a2, a3, a4);
1.154 + }
1.155 +
1.156 +private:
1.157 +
1.158 + F f_;
1.159 +};
1.160 +
1.161 +} // namespace _bi
1.162 +
1.163 +template<class R, class F> _bi::af0<R, F> make_adaptable(F f)
1.164 +{
1.165 + return _bi::af0<R, F>(f);
1.166 +}
1.167 +
1.168 +template<class R, class A1, class F> _bi::af1<R, A1, F> make_adaptable(F f)
1.169 +{
1.170 + return _bi::af1<R, A1, F>(f);
1.171 +}
1.172 +
1.173 +template<class R, class A1, class A2, class F> _bi::af2<R, A1, A2, F> make_adaptable(F f)
1.174 +{
1.175 + return _bi::af2<R, A1, A2, F>(f);
1.176 +}
1.177 +
1.178 +template<class R, class A1, class A2, class A3, class F> _bi::af3<R, A1, A2, A3, F> make_adaptable(F f)
1.179 +{
1.180 + return _bi::af3<R, A1, A2, A3, F>(f);
1.181 +}
1.182 +
1.183 +template<class R, class A1, class A2, class A3, class A4, class F> _bi::af4<R, A1, A2, A3, A4, F> make_adaptable(F f)
1.184 +{
1.185 + return _bi::af4<R, A1, A2, A3, A4, F>(f);
1.186 +}
1.187 +
1.188 +} // namespace boost
1.189 +
1.190 +#endif // #ifndef BOOST_BIND_MAKE_ADAPTABLE_HPP_INCLUDED