New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
protect.hpp in vendors/XIOS/current/extern/boost/include/boost/bind – NEMO

source: vendors/XIOS/current/extern/boost/include/boost/bind/protect.hpp @ 3428

Last change on this file since 3428 was 3428, checked in by rblod, 12 years ago

importing initial XIOS vendor drop

File size: 9.5 KB
Line 
1#ifndef BOOST_BIND_PROTECT_HPP_INCLUDED
2#define BOOST_BIND_PROTECT_HPP_INCLUDED
3
4//
5//  protect.hpp
6//
7//  Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
8//  Copyright (c) 2009 Steven Watanabe
9//
10// Distributed under the Boost Software License, Version 1.0. (See
11// accompanying file LICENSE_1_0.txt or copy at
12// http://www.boost.org/LICENSE_1_0.txt)
13//
14
15#include <boost/config.hpp>
16#include <boost/detail/workaround.hpp>
17
18namespace boost
19{
20
21namespace _bi
22{
23
24template<class F> class protected_bind_t
25{
26public:
27
28    typedef typename F::result_type result_type;
29
30    explicit protected_bind_t(F f): f_(f)
31    {
32    }
33
34    result_type operator()()
35    {
36        return f_();
37    }
38
39    result_type operator()() const
40    {
41        return f_();
42    }
43
44    template<class A1> result_type operator()(A1 & a1)
45    {
46        return f_(a1);
47    }
48
49    template<class A1> result_type operator()(A1 & a1) const
50    {
51        return f_(a1);
52    }
53
54
55#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
56 && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
57
58    template<class A1> result_type operator()(const A1 & a1)
59    {
60        return f_(a1);
61    }
62
63    template<class A1> result_type operator()(const A1 & a1) const
64    {
65        return f_(a1);
66    }
67
68#endif
69
70    template<class A1, class A2> result_type operator()(A1 & a1, A2 & a2)
71    {
72        return f_(a1, a2);
73    }
74
75    template<class A1, class A2> result_type operator()(A1 & a1, A2 & a2) const
76    {
77        return f_(a1, a2);
78    }
79
80#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
81 && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
82
83    template<class A1, class A2> result_type operator()(A1 const & a1, A2 & a2)
84    {
85        return f_(a1, a2);
86    }
87
88    template<class A1, class A2> result_type operator()(A1 const & a1, A2 & a2) const
89    {
90        return f_(a1, a2);
91    }
92
93    template<class A1, class A2> result_type operator()(A1 & a1, A2 const & a2)
94    {
95        return f_(a1, a2);
96    }
97
98    template<class A1, class A2> result_type operator()(A1 & a1, A2 const & a2) const
99    {
100        return f_(a1, a2);
101    }
102
103    template<class A1, class A2> result_type operator()(A1 const & a1, A2 const & a2)
104    {
105        return f_(a1, a2);
106    }
107
108    template<class A1, class A2> result_type operator()(A1 const & a1, A2 const & a2) const
109    {
110        return f_(a1, a2);
111    }
112
113#endif
114
115    template<class A1, class A2, class A3> result_type operator()(A1 & a1, A2 & a2, A3 & a3)
116    {
117        return f_(a1, a2, a3);
118    }
119
120    template<class A1, class A2, class A3> result_type operator()(A1 & a1, A2 & a2, A3 & a3) const
121    {
122        return f_(a1, a2, a3);
123    }
124   
125#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
126 && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
127
128    template<class A1, class A2, class A3> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3)
129    {
130        return f_(a1, a2, a3);
131    }
132
133    template<class A1, class A2, class A3> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3) const
134    {
135        return f_(a1, a2, a3);
136    }
137   
138#endif
139
140    template<class A1, class A2, class A3, class A4> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4)
141    {
142        return f_(a1, a2, a3, a4);
143    }
144
145    template<class A1, class A2, class A3, class A4> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4) const
146    {
147        return f_(a1, a2, a3, a4);
148    }
149   
150#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
151 && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
152
153    template<class A1, class A2, class A3, class A4> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4)
154    {
155        return f_(a1, a2, a3, a4);
156    }
157
158    template<class A1, class A2, class A3, class A4> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4) const
159    {
160        return f_(a1, a2, a3, a4);
161    }
162
163#endif
164
165    template<class A1, class A2, class A3, class A4, class A5> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5)
166    {
167        return f_(a1, a2, a3, a4, a5);
168    }
169
170    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
171    {
172        return f_(a1, a2, a3, a4, a5);
173    }
174   
175#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
176 && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
177
178    template<class A1, class A2, class A3, class A4, class A5> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5)
179    {
180        return f_(a1, a2, a3, a4, a5);
181    }
182
183    template<class A1, class A2, class A3, class A4, class A5> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5) const
184    {
185        return f_(a1, a2, a3, a4, a5);
186    }
187
188#endif
189
190    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)
191    {
192        return f_(a1, a2, a3, a4, a5, a6);
193    }
194
195    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
196    {
197        return f_(a1, a2, a3, a4, a5, a6);
198    }
199   
200#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
201 && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
202
203    template<class A1, class A2, class A3, class A4, class A5, class A6> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6)
204    {
205        return f_(a1, a2, a3, a4, a5, a6);
206    }
207
208    template<class A1, class A2, class A3, class A4, class A5, class A6> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6) const
209    {
210        return f_(a1, a2, a3, a4, a5, a6);
211    }
212
213#endif
214
215    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)
216    {
217        return f_(a1, a2, a3, a4, a5, a6, a7);
218    }
219
220    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
221    {
222        return f_(a1, a2, a3, a4, a5, a6, a7);
223    }
224   
225#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
226 && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
227
228    template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7)
229    {
230        return f_(a1, a2, a3, a4, a5, a6, a7);
231    }
232
233    template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7) const
234    {
235        return f_(a1, a2, a3, a4, a5, a6, a7);
236    }
237
238#endif
239
240    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)
241    {
242        return f_(a1, a2, a3, a4, a5, a6, a7, a8);
243    }
244
245    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
246    {
247        return f_(a1, a2, a3, a4, a5, a6, a7, a8);
248    }
249   
250#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
251 && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
252
253    template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7, A8 const & a8)
254    {
255        return f_(a1, a2, a3, a4, a5, a6, a7, a8);
256    }
257
258    template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7, A8 const & a8) const
259    {
260        return f_(a1, a2, a3, a4, a5, a6, a7, a8);
261    }
262
263#endif
264
265    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)
266    {
267        return f_(a1, a2, a3, a4, a5, a6, a7, a8, a9);
268    }
269
270    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
271    {
272        return f_(a1, a2, a3, a4, a5, a6, a7, a8, a9);
273    }
274   
275#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
276 && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
277
278    template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7, A8 const & a8, A9 const & a9)
279    {
280        return f_(a1, a2, a3, a4, a5, a6, a7, a8, a9);
281    }
282
283    template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7, A8 const & a8, A9 const & a9) const
284    {
285        return f_(a1, a2, a3, a4, a5, a6, a7, a8, a9);
286    }
287
288#endif
289
290private:
291
292    F f_;
293};
294
295} // namespace _bi
296
297template<class F> _bi::protected_bind_t<F> protect(F f)
298{
299    return _bi::protected_bind_t<F>(f);
300}
301
302} // namespace boost
303
304#endif // #ifndef BOOST_BIND_PROTECT_HPP_INCLUDED
Note: See TracBrowser for help on using the repository browser.