PageRenderTime 34ms CodeModel.GetById 12ms app.highlight 19ms RepoModel.GetById 1ms app.codeStats 0ms

/Src/Dependencies/Boost/libs/phoenix/test/boost_bind_compatibility/bind_fastcall_test.cpp

http://hadesmem.googlecode.com/
C++ | 110 lines | 78 code | 23 blank | 9 comment | 12 complexity | f897cd0fafa7740d0c95424f4d7931a2 MD5 | raw file
  1/*==============================================================================
  2    Copyright (c) 2002 Peter Dimov
  3    Copyright (c) 2005-2010 Joel de Guzman
  4    Copyright (c) 2010 Thomas Heller
  5
  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==============================================================================*/
  9
 10#include <boost/config.hpp>
 11
 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
 17#endif
 18
 19#define BOOST_BIND_ENABLE_FASTCALL
 20
 21#include <boost/phoenix/core.hpp>
 22#include <boost/phoenix/bind.hpp>
 23
 24#if defined(BOOST_MSVC) && (BOOST_MSVC < 1300)
 25#pragma warning(push, 3)
 26#endif
 27
 28#include <iostream>
 29
 30#if defined(BOOST_MSVC) && (BOOST_MSVC < 1300)
 31#pragma warning(pop)
 32#endif
 33
 34#include <boost/detail/lightweight_test.hpp>
 35
 36//
 37
 38long __fastcall f_0()
 39{
 40    return 17041L;
 41}
 42
 43long __fastcall f_1(long a)
 44{
 45    return a;
 46}
 47
 48long __fastcall f_2(long a, long b)
 49{
 50    return a + 10 * b;
 51}
 52
 53long __fastcall f_3(long a, long b, long c)
 54{
 55    return a + 10 * b + 100 * c;
 56}
 57
 58long __fastcall f_4(long a, long b, long c, long d)
 59{
 60    return a + 10 * b + 100 * c + 1000 * d;
 61}
 62
 63long __fastcall f_5(long a, long b, long c, long d, long e)
 64{
 65    return a + 10 * b + 100 * c + 1000 * d + 10000 * e;
 66}
 67
 68long __fastcall f_6(long a, long b, long c, long d, long e, long f)
 69{
 70    return a + 10 * b + 100 * c + 1000 * d + 10000 * e + 100000 * f;
 71}
 72
 73long __fastcall f_7(long a, long b, long c, long d, long e, long f, long g)
 74{
 75    return a + 10 * b + 100 * c + 1000 * d + 10000 * e + 100000 * f + 1000000 * g;
 76}
 77
 78long __fastcall f_8(long a, long b, long c, long d, long e, long f, long g, long h)
 79{
 80    return a + 10 * b + 100 * c + 1000 * d + 10000 * e + 100000 * f + 1000000 * g + 10000000 * h;
 81}
 82
 83long __fastcall f_9(long a, long b, long c, long d, long e, long f, long g, long h, long i)
 84{
 85    return a + 10 * b + 100 * c + 1000 * d + 10000 * e + 100000 * f + 1000000 * g + 10000000 * h + 100000000 * i;
 86}
 87
 88void function_test()
 89{
 90    using boost::phoenix::bind;
 91
 92    int const i = 1;
 93
 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 );
104}
105
106int main()
107{
108    function_test();
109    return boost::report_errors();
110}