]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/phoenix/test/boost_bind_compatibility/bind_fastcall_test.cpp
1 /*==============================================================================
2 Copyright (c) 2002 Peter Dimov
3 Copyright (c) 2005-2010 Joel de Guzman
4 Copyright (c) 2010 Thomas Heller
6 Distributed under the Boost Software License, Version 1.0. (See accompanying
7 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
8 ==============================================================================*/
10 #include <boost/config.hpp>
12 #if defined(BOOST_MSVC)
13 #pragma warning(disable: 4786) // identifier truncated in debug info
14 #pragma warning(disable: 4710) // function not inlined
15 #pragma warning(disable: 4711) // function selected for automatic inline expansion
16 #pragma warning(disable: 4514) // unreferenced inline removed
19 #define BOOST_BIND_ENABLE_FASTCALL
21 #include <boost/phoenix/core.hpp>
22 #include <boost/phoenix/bind.hpp>
24 #if defined(BOOST_MSVC) && (BOOST_MSVC < 1300)
25 #pragma warning(push, 3)
30 #if defined(BOOST_MSVC) && (BOOST_MSVC < 1300)
34 #include <boost/detail/lightweight_test.hpp>
43 long __fastcall
f_1(long a
)
48 long __fastcall
f_2(long a
, long b
)
53 long __fastcall
f_3(long a
, long b
, long c
)
55 return a
+ 10 * b
+ 100 * c
;
58 long __fastcall
f_4(long a
, long b
, long c
, long d
)
60 return a
+ 10 * b
+ 100 * c
+ 1000 * d
;
63 long __fastcall
f_5(long a
, long b
, long c
, long d
, long e
)
65 return a
+ 10 * b
+ 100 * c
+ 1000 * d
+ 10000 * e
;
68 long __fastcall
f_6(long a
, long b
, long c
, long d
, long e
, long f
)
70 return a
+ 10 * b
+ 100 * c
+ 1000 * d
+ 10000 * e
+ 100000 * f
;
73 long __fastcall
f_7(long a
, long b
, long c
, long d
, long e
, long f
, long g
)
75 return a
+ 10 * b
+ 100 * c
+ 1000 * d
+ 10000 * e
+ 100000 * f
+ 1000000 * g
;
78 long __fastcall
f_8(long a
, long b
, long c
, long d
, long e
, long f
, long g
, long h
)
80 return a
+ 10 * b
+ 100 * c
+ 1000 * d
+ 10000 * e
+ 100000 * f
+ 1000000 * g
+ 10000000 * h
;
83 long __fastcall
f_9(long a
, long b
, long c
, long d
, long e
, long f
, long g
, long h
, long i
)
85 return a
+ 10 * b
+ 100 * c
+ 1000 * d
+ 10000 * e
+ 100000 * f
+ 1000000 * g
+ 10000000 * h
+ 100000000 * i
;
90 using boost::phoenix::bind
;
94 BOOST_TEST( bind(f_0
)(i
) == 17041L );
95 BOOST_TEST( bind(f_1
, _1
)(i
) == 1L );
96 BOOST_TEST( bind(f_2
, _1
, 2)(i
) == 21L );
97 BOOST_TEST( bind(f_3
, _1
, 2, 3)(i
) == 321L );
98 BOOST_TEST( bind(f_4
, _1
, 2, 3, 4)(i
) == 4321L );
99 BOOST_TEST( bind(f_5
, _1
, 2, 3, 4, 5)(i
) == 54321L );
100 BOOST_TEST( bind(f_6
, _1
, 2, 3, 4, 5, 6)(i
) == 654321L );
101 BOOST_TEST( bind(f_7
, _1
, 2, 3, 4, 5, 6, 7)(i
) == 7654321L );
102 BOOST_TEST( bind(f_8
, _1
, 2, 3, 4, 5, 6, 7, 8)(i
) == 87654321L );
103 BOOST_TEST( bind(f_9
, _1
, 2, 3, 4, 5, 6, 7, 8, 9)(i
) == 987654321L );
109 return boost::report_errors();