epoc32/include/stdapis/boost/bind/bind_template.hpp
branchSymbian2
changeset 2 2fe1408b6811
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/epoc32/include/stdapis/boost/bind/bind_template.hpp	Tue Mar 16 16:12:26 2010 +0000
     1.3 @@ -0,0 +1,226 @@
     1.4 +//
     1.5 +//  bind/bind_template.hpp
     1.6 +//
     1.7 +//  Do not include this header directly.
     1.8 +//
     1.9 +//  Copyright (c) 2001-2004 Peter Dimov and Multi Media Ltd.
    1.10 +//
    1.11 +// Distributed under the Boost Software License, Version 1.0. (See
    1.12 +// accompanying file LICENSE_1_0.txt or copy at
    1.13 +// http://www.boost.org/LICENSE_1_0.txt)
    1.14 +//
    1.15 +//  See http://www.boost.org/libs/bind/bind.html for documentation.
    1.16 +//
    1.17 +
    1.18 +    typedef typename result_traits<R, F>::type result_type;
    1.19 +
    1.20 +    result_type operator()()
    1.21 +    {
    1.22 +        list0 a;
    1.23 +        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
    1.24 +    }
    1.25 +
    1.26 +    result_type operator()() const
    1.27 +    {
    1.28 +        list0 a;
    1.29 +        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
    1.30 +    }
    1.31 +
    1.32 +    template<class A1> result_type operator()(A1 & a1)
    1.33 +    {
    1.34 +        list1<A1 &> a(a1);
    1.35 +        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
    1.36 +    }
    1.37 +
    1.38 +    template<class A1> result_type operator()(A1 & a1) const
    1.39 +    {
    1.40 +        list1<A1 &> a(a1);
    1.41 +        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
    1.42 +    }
    1.43 +
    1.44 +#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
    1.45 + && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
    1.46 +
    1.47 +    template<class A1> result_type operator()(A1 const & a1)
    1.48 +    {
    1.49 +        list1<A1 const &> a(a1);
    1.50 +        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
    1.51 +    }
    1.52 +
    1.53 +    template<class A1> result_type operator()(A1 const & a1) const
    1.54 +    {
    1.55 +        list1<A1 const &> a(a1);
    1.56 +        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
    1.57 +    }
    1.58 +
    1.59 +#endif
    1.60 +
    1.61 +    template<class A1, class A2> result_type operator()(A1 & a1, A2 & a2)
    1.62 +    {
    1.63 +        list2<A1 &, A2 &> a(a1, a2);
    1.64 +        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
    1.65 +    }
    1.66 +
    1.67 +    template<class A1, class A2> result_type operator()(A1 & a1, A2 & a2) const
    1.68 +    {
    1.69 +        list2<A1 &, A2 &> a(a1, a2);
    1.70 +        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
    1.71 +    }
    1.72 +
    1.73 +#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
    1.74 + && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
    1.75 +
    1.76 +    template<class A1, class A2> result_type operator()(A1 const & a1, A2 & a2)
    1.77 +    {
    1.78 +        list2<A1 const &, A2 &> a(a1, a2);
    1.79 +        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
    1.80 +    }
    1.81 +
    1.82 +    template<class A1, class A2> result_type operator()(A1 const & a1, A2 & a2) const
    1.83 +    {
    1.84 +        list2<A1 const &, A2 &> a(a1, a2);
    1.85 +        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
    1.86 +    }
    1.87 +
    1.88 +
    1.89 +    template<class A1, class A2> result_type operator()(A1 & a1, A2 const & a2)
    1.90 +    {
    1.91 +        list2<A1 &, A2 const &> a(a1, a2);
    1.92 +        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
    1.93 +    }
    1.94 +
    1.95 +    template<class A1, class A2> result_type operator()(A1 & a1, A2 const & a2) const
    1.96 +    {
    1.97 +        list2<A1 &, A2 const &> a(a1, a2);
    1.98 +        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
    1.99 +    }
   1.100 +
   1.101 +
   1.102 +    template<class A1, class A2> result_type operator()(A1 const & a1, A2 const & a2)
   1.103 +    {
   1.104 +        list2<A1 const &, A2 const &> a(a1, a2);
   1.105 +        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
   1.106 +    }
   1.107 +
   1.108 +    template<class A1, class A2> result_type operator()(A1 const & a1, A2 const & a2) const
   1.109 +    {
   1.110 +        list2<A1 const &, A2 const &> a(a1, a2);
   1.111 +        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
   1.112 +    }
   1.113 +
   1.114 +#endif
   1.115 +
   1.116 +    template<class A1, class A2, class A3> result_type operator()(A1 & a1, A2 & a2, A3 & a3)
   1.117 +    {
   1.118 +        list3<A1 &, A2 &, A3 &> a(a1, a2, a3);
   1.119 +        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
   1.120 +    }
   1.121 +
   1.122 +    template<class A1, class A2, class A3> result_type operator()(A1 & a1, A2 & a2, A3 & a3) const
   1.123 +    {
   1.124 +        list3<A1 &, A2 &, A3 &> a(a1, a2, a3);
   1.125 +        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
   1.126 +    }
   1.127 +
   1.128 +    template<class A1, class A2, class A3, class A4> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4)
   1.129 +    {
   1.130 +        list4<A1 &, A2 &, A3 &, A4 &> a(a1, a2, a3, a4);
   1.131 +        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
   1.132 +    }
   1.133 +
   1.134 +    template<class A1, class A2, class A3, class A4> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4) const
   1.135 +    {
   1.136 +        list4<A1 &, A2 &, A3 &, A4 &> a(a1, a2, a3, a4);
   1.137 +        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
   1.138 +    }
   1.139 +
   1.140 +    template<class A1, class A2, class A3, class A4, class A5> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5)
   1.141 +    {
   1.142 +        list5<A1 &, A2 &, A3 &, A4 &, A5 &> a(a1, a2, a3, a4, a5);
   1.143 +        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
   1.144 +    }
   1.145 +
   1.146 +    template<class A1, class A2, class A3, class A4, class A5> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5) const
   1.147 +    {
   1.148 +        list5<A1 &, A2 &, A3 &, A4 &, A5 &> a(a1, a2, a3, a4, a5);
   1.149 +        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
   1.150 +    }
   1.151 +
   1.152 +    template<class A1, class A2, class A3, class A4, class A5, class A6> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6)
   1.153 +    {
   1.154 +        list6<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &> a(a1, a2, a3, a4, a5, a6);
   1.155 +        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
   1.156 +    }
   1.157 +
   1.158 +    template<class A1, class A2, class A3, class A4, class A5, class A6> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6) const
   1.159 +    {
   1.160 +        list6<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &> a(a1, a2, a3, a4, a5, a6);
   1.161 +        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
   1.162 +    }
   1.163 +
   1.164 +    template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7)
   1.165 +    {
   1.166 +        list7<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &> a(a1, a2, a3, a4, a5, a6, a7);
   1.167 +        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
   1.168 +    }
   1.169 +
   1.170 +    template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7) const
   1.171 +    {
   1.172 +        list7<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &> a(a1, a2, a3, a4, a5, a6, a7);
   1.173 +        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
   1.174 +    }
   1.175 +
   1.176 +    template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8)
   1.177 +    {
   1.178 +        list8<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &, A8 &> a(a1, a2, a3, a4, a5, a6, a7, a8);
   1.179 +        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
   1.180 +    }
   1.181 +
   1.182 +    template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8) const
   1.183 +    {
   1.184 +        list8<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &, A8 &> a(a1, a2, a3, a4, a5, a6, a7, a8);
   1.185 +        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
   1.186 +    }
   1.187 +
   1.188 +    template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8, A9 & a9)
   1.189 +    {
   1.190 +        list9<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &, A8 &, A9 &> a(a1, a2, a3, a4, a5, a6, a7, a8, a9);
   1.191 +        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
   1.192 +    }
   1.193 +
   1.194 +    template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8, A9 & a9) const
   1.195 +    {
   1.196 +        list9<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &, A8 &, A9 &> a(a1, a2, a3, a4, a5, a6, a7, a8, a9);
   1.197 +        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
   1.198 +    }
   1.199 +
   1.200 +    template<class A> result_type eval(A & a)
   1.201 +    {
   1.202 +        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
   1.203 +    }
   1.204 +
   1.205 +    template<class A> result_type eval(A & a) const
   1.206 +    {
   1.207 +        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
   1.208 +    }
   1.209 +
   1.210 +    template<class V> void accept(V & v) const
   1.211 +    {
   1.212 +#if !defined( BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP ) && !defined( __BORLANDC__ )
   1.213 +
   1.214 +        using boost::visit_each;
   1.215 +
   1.216 +#endif
   1.217 +        BOOST_BIND_VISIT_EACH(v, f_, 0);
   1.218 +        l_.accept(v);
   1.219 +    }
   1.220 +
   1.221 +    bool compare(this_type const & rhs) const
   1.222 +    {
   1.223 +        return ref_compare(f_, rhs.f_, 0) && l_ == rhs.l_;
   1.224 +    }
   1.225 +
   1.226 +private:
   1.227 +
   1.228 +    F f_;
   1.229 +    L l_;