]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/bind/test/bind_fastcall_test.cpp
1 #include <boost/config.hpp>
11 #if defined(BOOST_MSVC)
12 #pragma warning(disable: 4786) // identifier truncated in debug info
13 #pragma warning(disable: 4710) // function not inlined
14 #pragma warning(disable: 4711) // function selected for automatic inline expansion
15 #pragma warning(disable: 4514) // unreferenced inline removed
19 // bind_fastcall_test.cpp - test for bind.hpp + __fastcall (free functions)
21 // Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
23 // Distributed under the Boost Software License, Version 1.0. (See
24 // accompanying file LICENSE_1_0.txt or copy at
25 // http://www.boost.org/LICENSE_1_0.txt)
28 #define BOOST_BIND_ENABLE_FASTCALL
30 #include <boost/bind.hpp>
32 #if defined(BOOST_MSVC) && (BOOST_MSVC < 1300)
33 #pragma warning(push, 3)
38 #if defined(BOOST_MSVC) && (BOOST_MSVC < 1300)
42 #include <boost/detail/lightweight_test.hpp>
51 long __fastcall
f_1(long a
)
56 long __fastcall
f_2(long a
, long b
)
61 long __fastcall
f_3(long a
, long b
, long c
)
63 return a
+ 10 * b
+ 100 * c
;
66 long __fastcall
f_4(long a
, long b
, long c
, long d
)
68 return a
+ 10 * b
+ 100 * c
+ 1000 * d
;
71 long __fastcall
f_5(long a
, long b
, long c
, long d
, long e
)
73 return a
+ 10 * b
+ 100 * c
+ 1000 * d
+ 10000 * e
;
76 long __fastcall
f_6(long a
, long b
, long c
, long d
, long e
, long f
)
78 return a
+ 10 * b
+ 100 * c
+ 1000 * d
+ 10000 * e
+ 100000 * f
;
81 long __fastcall
f_7(long a
, long b
, long c
, long d
, long e
, long f
, long g
)
83 return a
+ 10 * b
+ 100 * c
+ 1000 * d
+ 10000 * e
+ 100000 * f
+ 1000000 * g
;
86 long __fastcall
f_8(long a
, long b
, long c
, long d
, long e
, long f
, long g
, long h
)
88 return a
+ 10 * b
+ 100 * c
+ 1000 * d
+ 10000 * e
+ 100000 * f
+ 1000000 * g
+ 10000000 * h
;
91 long __fastcall
f_9(long a
, long b
, long c
, long d
, long e
, long f
, long g
, long h
, long i
)
93 return a
+ 10 * b
+ 100 * c
+ 1000 * d
+ 10000 * e
+ 100000 * f
+ 1000000 * g
+ 10000000 * h
+ 100000000 * i
;
98 using namespace boost
;
102 BOOST_TEST( bind(f_0
)(i
) == 17041L );
103 BOOST_TEST( bind(f_1
, _1
)(i
) == 1L );
104 BOOST_TEST( bind(f_2
, _1
, 2)(i
) == 21L );
105 BOOST_TEST( bind(f_3
, _1
, 2, 3)(i
) == 321L );
106 BOOST_TEST( bind(f_4
, _1
, 2, 3, 4)(i
) == 4321L );
107 BOOST_TEST( bind(f_5
, _1
, 2, 3, 4, 5)(i
) == 54321L );
108 BOOST_TEST( bind(f_6
, _1
, 2, 3, 4, 5, 6)(i
) == 654321L );
109 BOOST_TEST( bind(f_7
, _1
, 2, 3, 4, 5, 6, 7)(i
) == 7654321L );
110 BOOST_TEST( bind(f_8
, _1
, 2, 3, 4, 5, 6, 7, 8)(i
) == 87654321L );
111 BOOST_TEST( bind(f_9
, _1
, 2, 3, 4, 5, 6, 7, 8, 9)(i
) == 987654321L );
117 return boost::report_errors();