]> AND Private Git Repository - canny.git/blob - stc/exp/ml_stc_linux_make_v1.0/include/boost/bind/make_adaptable.hpp
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
06ecccffdc6261b8bbdb59c517637f2b1e64ad03
[canny.git] / stc / exp / ml_stc_linux_make_v1.0 / include / boost / bind / make_adaptable.hpp
1 #ifndef BOOST_BIND_MAKE_ADAPTABLE_HPP_INCLUDED\r
2 #define BOOST_BIND_MAKE_ADAPTABLE_HPP_INCLUDED\r
3 \r
4 //\r
5 //  make_adaptable.hpp\r
6 //\r
7 //  Copyright (c) 2002 Peter Dimov and Multi Media Ltd.\r
8 //\r
9 // Distributed under the Boost Software License, Version 1.0. (See\r
10 // accompanying file LICENSE_1_0.txt or copy at\r
11 // http://www.boost.org/LICENSE_1_0.txt)\r
12 //\r
13 \r
14 namespace boost\r
15 {\r
16 \r
17 namespace _bi\r
18 {\r
19 \r
20 template<class R, class F> class af0\r
21 {\r
22 public:\r
23 \r
24     typedef R result_type;\r
25 \r
26     explicit af0(F f): f_(f)\r
27     {\r
28     }\r
29 \r
30     result_type operator()()\r
31     {\r
32         return f_();\r
33     }\r
34 \r
35     result_type operator()() const\r
36     {\r
37         return f_();\r
38     }\r
39 \r
40 private:\r
41 \r
42     F f_;\r
43 };\r
44 \r
45 template<class R, class A1, class F> class af1\r
46 {\r
47 public:\r
48 \r
49     typedef R result_type;\r
50     typedef A1 argument_type;\r
51     typedef A1 arg1_type;\r
52 \r
53     explicit af1(F f): f_(f)\r
54     {\r
55     }\r
56 \r
57     result_type operator()(A1 a1)\r
58     {\r
59         return f_(a1);\r
60     }\r
61 \r
62     result_type operator()(A1 a1) const\r
63     {\r
64         return f_(a1);\r
65     }\r
66 \r
67 private:\r
68 \r
69     F f_;\r
70 };\r
71 \r
72 template<class R, class A1, class A2, class F> class af2\r
73 {\r
74 public:\r
75 \r
76     typedef R result_type;\r
77     typedef A1 first_argument_type;\r
78     typedef A2 second_argument_type;\r
79     typedef A1 arg1_type;\r
80     typedef A2 arg2_type;\r
81 \r
82     explicit af2(F f): f_(f)\r
83     {\r
84     }\r
85 \r
86     result_type operator()(A1 a1, A2 a2)\r
87     {\r
88         return f_(a1, a2);\r
89     }\r
90 \r
91     result_type operator()(A1 a1, A2 a2) const\r
92     {\r
93         return f_(a1, a2);\r
94     }\r
95 \r
96 private:\r
97 \r
98     F f_;\r
99 };\r
100 \r
101 template<class R, class A1, class A2, class A3, class F> class af3\r
102 {\r
103 public:\r
104 \r
105     typedef R result_type;\r
106     typedef A1 arg1_type;\r
107     typedef A2 arg2_type;\r
108     typedef A3 arg3_type;\r
109 \r
110     explicit af3(F f): f_(f)\r
111     {\r
112     }\r
113 \r
114     result_type operator()(A1 a1, A2 a2, A3 a3)\r
115     {\r
116         return f_(a1, a2, a3);\r
117     }\r
118 \r
119     result_type operator()(A1 a1, A2 a2, A3 a3) const\r
120     {\r
121         return f_(a1, a2, a3);\r
122     }\r
123 \r
124 private:\r
125 \r
126     F f_;\r
127 };\r
128 \r
129 template<class R, class A1, class A2, class A3, class A4, class F> class af4\r
130 {\r
131 public:\r
132 \r
133     typedef R result_type;\r
134     typedef A1 arg1_type;\r
135     typedef A2 arg2_type;\r
136     typedef A3 arg3_type;\r
137     typedef A4 arg4_type;\r
138 \r
139     explicit af4(F f): f_(f)\r
140     {\r
141     }\r
142 \r
143     result_type operator()(A1 a1, A2 a2, A3 a3, A4 a4)\r
144     {\r
145         return f_(a1, a2, a3, a4);\r
146     }\r
147 \r
148     result_type operator()(A1 a1, A2 a2, A3 a3, A4 a4) const\r
149     {\r
150         return f_(a1, a2, a3, a4);\r
151     }\r
152 \r
153 private:\r
154 \r
155     F f_;\r
156 };\r
157 \r
158 } // namespace _bi\r
159 \r
160 template<class R, class F> _bi::af0<R, F> make_adaptable(F f)\r
161 {\r
162     return _bi::af0<R, F>(f);\r
163 }\r
164 \r
165 template<class R, class A1, class F> _bi::af1<R, A1, F> make_adaptable(F f)\r
166 {\r
167     return _bi::af1<R, A1, F>(f);\r
168 }\r
169 \r
170 template<class R, class A1, class A2, class F> _bi::af2<R, A1, A2, F> make_adaptable(F f)\r
171 {\r
172     return _bi::af2<R, A1, A2, F>(f);\r
173 }\r
174 \r
175 template<class R, class A1, class A2, class A3, class F> _bi::af3<R, A1, A2, A3, F> make_adaptable(F f)\r
176 {\r
177     return _bi::af3<R, A1, A2, A3, F>(f);\r
178 }\r
179 \r
180 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)\r
181 {\r
182     return _bi::af4<R, A1, A2, A3, A4, F>(f);\r
183 }\r
184 \r
185 } // namespace boost\r
186 \r
187 #endif // #ifndef BOOST_BIND_MAKE_ADAPTABLE_HPP_INCLUDED\r