Initial Commit
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2001-2011 Joel de Guzman
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
==============================================================================*/
|
||||
#if !defined(FUSION_SEQUENCE_FACADE_09252006_1044)
|
||||
#define FUSION_SEQUENCE_FACADE_09252006_1044
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/support/sequence_base.hpp>
|
||||
#include <boost/mpl/bool.hpp>
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct sequence_facade_tag;
|
||||
|
||||
template <typename Derived, typename Category, typename IsView = mpl::false_>
|
||||
struct sequence_facade : sequence_base<Derived>
|
||||
{
|
||||
typedef fusion_sequence_tag tag;
|
||||
typedef sequence_facade_tag fusion_tag;
|
||||
typedef Derived derived_type;
|
||||
typedef Category category;
|
||||
typedef IsView is_view;
|
||||
typedef mpl::false_ is_segmented;
|
||||
};
|
||||
}}
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,76 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2005-2012 Joel de Guzman
|
||||
Copyright (c) 2005-2006 Dan Marsden
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
==============================================================================*/
|
||||
#if !defined(BOOST_FUSION_DEQUE_DETAIL_CPP11_DEQUE_KEYED_VALUES_07042012_1901)
|
||||
#define BOOST_FUSION_DEQUE_DETAIL_CPP11_DEQUE_KEYED_VALUES_07042012_1901
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/support/detail/access.hpp>
|
||||
#include <boost/fusion/container/deque/detail/keyed_element.hpp>
|
||||
#include <boost/mpl/int.hpp>
|
||||
|
||||
namespace boost { namespace fusion { namespace detail
|
||||
{
|
||||
template<typename Key, typename Value, typename Rest>
|
||||
struct keyed_element;
|
||||
|
||||
template <typename N, typename ...Elements>
|
||||
struct deque_keyed_values_impl;
|
||||
|
||||
template <typename N, typename Head, typename ...Tail>
|
||||
struct deque_keyed_values_impl<N, Head, Tail...>
|
||||
{
|
||||
typedef mpl::int_<(N::value + 1)> next_index;
|
||||
typedef typename deque_keyed_values_impl<next_index, Tail...>::type tail;
|
||||
typedef keyed_element<N, Head, tail> type;
|
||||
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type construct(
|
||||
typename detail::call_param<Head>::type head
|
||||
, typename detail::call_param<Tail>::type... tail)
|
||||
{
|
||||
return type(
|
||||
head
|
||||
, deque_keyed_values_impl<next_index, Tail...>::construct(tail...)
|
||||
);
|
||||
}
|
||||
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||
template <typename Head_, typename ...Tail_>
|
||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type forward_(Head_&& head, Tail_&&... tail)
|
||||
{
|
||||
return type(
|
||||
BOOST_FUSION_FWD_ELEM(Head_, head)
|
||||
, deque_keyed_values_impl<next_index, Tail_...>::
|
||||
forward_(BOOST_FUSION_FWD_ELEM(Tail_, tail)...)
|
||||
);
|
||||
}
|
||||
#endif
|
||||
};
|
||||
|
||||
struct nil_keyed_element;
|
||||
|
||||
template <typename N>
|
||||
struct deque_keyed_values_impl<N>
|
||||
{
|
||||
typedef nil_keyed_element type;
|
||||
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type construct() { return type(); }
|
||||
|
||||
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type forward_() { return type(); }
|
||||
#endif
|
||||
};
|
||||
|
||||
template <typename ...Elements>
|
||||
struct deque_keyed_values
|
||||
: deque_keyed_values_impl<mpl::int_<0>, Elements...> {};
|
||||
}}}
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,38 @@
|
||||
# /* **************************************************************************
|
||||
# * *
|
||||
# * (C) Copyright Paul Mensonides 2002.
|
||||
# * Distributed under the Boost Software License, Version 1.0. (See
|
||||
# * accompanying file LICENSE_1_0.txt or copy at
|
||||
# * http://www.boost.org/LICENSE_1_0.txt)
|
||||
# * *
|
||||
# ************************************************************************** */
|
||||
#
|
||||
# /* See http://www.boost.org for most recent version. */
|
||||
#
|
||||
# ifndef BOOST_PREPROCESSOR_LOGICAL_BITOR_HPP
|
||||
# define BOOST_PREPROCESSOR_LOGICAL_BITOR_HPP
|
||||
#
|
||||
# include <boost/preprocessor/config/config.hpp>
|
||||
#
|
||||
# /* BOOST_PP_BITOR */
|
||||
#
|
||||
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
|
||||
# define BOOST_PP_BITOR(x, y) BOOST_PP_BITOR_I(x, y)
|
||||
# else
|
||||
# define BOOST_PP_BITOR(x, y) BOOST_PP_BITOR_OO((x, y))
|
||||
# define BOOST_PP_BITOR_OO(par) BOOST_PP_BITOR_I ## par
|
||||
# endif
|
||||
#
|
||||
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
|
||||
# define BOOST_PP_BITOR_I(x, y) BOOST_PP_BITOR_ ## x ## y
|
||||
# else
|
||||
# define BOOST_PP_BITOR_I(x, y) BOOST_PP_BITOR_ID(BOOST_PP_BITOR_ ## x ## y)
|
||||
# define BOOST_PP_BITOR_ID(id) id
|
||||
# endif
|
||||
#
|
||||
# define BOOST_PP_BITOR_00 0
|
||||
# define BOOST_PP_BITOR_01 1
|
||||
# define BOOST_PP_BITOR_10 1
|
||||
# define BOOST_PP_BITOR_11 1
|
||||
#
|
||||
# endif
|
||||
@@ -0,0 +1,449 @@
|
||||
|
||||
// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes,
|
||||
// Aleksey Gurtovoy, Howard Hinnant & John Maddock 2000.
|
||||
// Use, modification and distribution are subject to the Boost Software License,
|
||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt).
|
||||
//
|
||||
// See http://www.boost.org/libs/type_traits for most recent version including documentation.
|
||||
|
||||
#if !defined(BOOST_PP_IS_ITERATING)
|
||||
|
||||
///// header body
|
||||
|
||||
#ifndef BOOST_TT_DETAIL_IS_FUNCTION_PTR_TESTER_HPP_INCLUDED
|
||||
#define BOOST_TT_DETAIL_IS_FUNCTION_PTR_TESTER_HPP_INCLUDED
|
||||
|
||||
#include <boost/type_traits/detail/yes_no_type.hpp>
|
||||
|
||||
#if defined(BOOST_TT_PREPROCESSING_MODE)
|
||||
//
|
||||
// Hide include dependencies from analysers since they're
|
||||
// only require in maintenance mode:
|
||||
//
|
||||
#define PP1 <boost/preprocessor/iterate.hpp>
|
||||
#define PP2 <boost/preprocessor/enum_params.hpp>
|
||||
#define PP3 <boost/preprocessor/comma_if.hpp>
|
||||
#include PP1
|
||||
#include PP2
|
||||
#include PP3
|
||||
#undef PP1
|
||||
#undef PP2
|
||||
#undef PP3
|
||||
#endif
|
||||
|
||||
namespace boost {
|
||||
namespace type_traits {
|
||||
|
||||
// Note it is acceptable to use ellipsis here, since the argument will
|
||||
// always be a pointer type of some sort (JM 2005/06/04):
|
||||
no_type BOOST_TT_DECL is_function_ptr_tester(...);
|
||||
|
||||
#if !defined(BOOST_TT_PREPROCESSING_MODE)
|
||||
// pre-processed code, don't edit, try GNU cpp with
|
||||
// cpp -I../../../ -DBOOST_TT_PREPROCESSING_MODE -x c++ -P filename
|
||||
|
||||
template <class R >
|
||||
yes_type is_function_ptr_tester(R (*)());
|
||||
template <class R >
|
||||
yes_type is_function_ptr_tester(R (*)( ...));
|
||||
#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
|
||||
template <class R >
|
||||
yes_type is_function_ptr_tester(R (__stdcall*)());
|
||||
#ifndef _MANAGED
|
||||
template <class R >
|
||||
yes_type is_function_ptr_tester(R (__fastcall*)());
|
||||
#endif
|
||||
template <class R >
|
||||
yes_type is_function_ptr_tester(R (__cdecl*)());
|
||||
#endif
|
||||
template <class R , class T0 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0));
|
||||
template <class R , class T0 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 ...));
|
||||
#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
|
||||
template <class R , class T0 >
|
||||
yes_type is_function_ptr_tester(R (__stdcall*)( T0));
|
||||
#ifndef _MANAGED
|
||||
template <class R , class T0 >
|
||||
yes_type is_function_ptr_tester(R (__fastcall*)( T0));
|
||||
#endif
|
||||
template <class R , class T0 >
|
||||
yes_type is_function_ptr_tester(R (__cdecl*)( T0));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1));
|
||||
template <class R , class T0 , class T1 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 ...));
|
||||
#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
|
||||
template <class R , class T0 , class T1 >
|
||||
yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1));
|
||||
#ifndef _MANAGED
|
||||
template <class R , class T0 , class T1 >
|
||||
yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 >
|
||||
yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2));
|
||||
template <class R , class T0 , class T1 , class T2 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 ...));
|
||||
#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
|
||||
template <class R , class T0 , class T1 , class T2 >
|
||||
yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2));
|
||||
#ifndef _MANAGED
|
||||
template <class R , class T0 , class T1 , class T2 >
|
||||
yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 >
|
||||
yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3));
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 ...));
|
||||
#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 >
|
||||
yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3));
|
||||
#ifndef _MANAGED
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 >
|
||||
yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 >
|
||||
yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4));
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 ...));
|
||||
#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 >
|
||||
yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4));
|
||||
#ifndef _MANAGED
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 >
|
||||
yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 >
|
||||
yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5));
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 ...));
|
||||
#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
|
||||
yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5));
|
||||
#ifndef _MANAGED
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
|
||||
yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
|
||||
yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6));
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...));
|
||||
#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
|
||||
yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6));
|
||||
#ifndef _MANAGED
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
|
||||
yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
|
||||
yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7));
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...));
|
||||
#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
|
||||
yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7));
|
||||
#ifndef _MANAGED
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
|
||||
yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
|
||||
yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8));
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...));
|
||||
#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
|
||||
yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8));
|
||||
#ifndef _MANAGED
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
|
||||
yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
|
||||
yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9));
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...));
|
||||
#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
|
||||
yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9));
|
||||
#ifndef _MANAGED
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
|
||||
yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
|
||||
yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10));
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...));
|
||||
#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
|
||||
yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10));
|
||||
#ifndef _MANAGED
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
|
||||
yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
|
||||
yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11));
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...));
|
||||
#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
|
||||
yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11));
|
||||
#ifndef _MANAGED
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
|
||||
yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
|
||||
yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12));
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...));
|
||||
#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
|
||||
yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12));
|
||||
#ifndef _MANAGED
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
|
||||
yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
|
||||
yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13));
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...));
|
||||
#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
|
||||
yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13));
|
||||
#ifndef _MANAGED
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
|
||||
yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
|
||||
yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14));
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...));
|
||||
#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
|
||||
yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14));
|
||||
#ifndef _MANAGED
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
|
||||
yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
|
||||
yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15));
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...));
|
||||
#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
|
||||
yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15));
|
||||
#ifndef _MANAGED
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
|
||||
yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
|
||||
yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16));
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...));
|
||||
#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
|
||||
yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16));
|
||||
#ifndef _MANAGED
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
|
||||
yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
|
||||
yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17));
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...));
|
||||
#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
|
||||
yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17));
|
||||
#ifndef _MANAGED
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
|
||||
yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
|
||||
yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18));
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...));
|
||||
#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
|
||||
yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18));
|
||||
#ifndef _MANAGED
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
|
||||
yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
|
||||
yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19));
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...));
|
||||
#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
|
||||
yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19));
|
||||
#ifndef _MANAGED
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
|
||||
yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
|
||||
yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20));
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...));
|
||||
#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
|
||||
yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20));
|
||||
#ifndef _MANAGED
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
|
||||
yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
|
||||
yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21));
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...));
|
||||
#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
|
||||
yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21));
|
||||
#ifndef _MANAGED
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
|
||||
yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
|
||||
yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22));
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...));
|
||||
#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
|
||||
yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22));
|
||||
#ifndef _MANAGED
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
|
||||
yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
|
||||
yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23));
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...));
|
||||
#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
|
||||
yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23));
|
||||
#ifndef _MANAGED
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
|
||||
yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
|
||||
yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24));
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
|
||||
yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...));
|
||||
#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
|
||||
yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24));
|
||||
#ifndef _MANAGED
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
|
||||
yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24));
|
||||
#endif
|
||||
template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
|
||||
yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24));
|
||||
#endif
|
||||
#else
|
||||
|
||||
#define BOOST_PP_ITERATION_PARAMS_1 \
|
||||
(3, (0, 25, "boost/type_traits/detail/is_function_ptr_tester.hpp"))
|
||||
#include BOOST_PP_ITERATE()
|
||||
|
||||
#endif // BOOST_TT_PREPROCESSING_MODE
|
||||
|
||||
} // namespace type_traits
|
||||
} // namespace boost
|
||||
|
||||
#endif // BOOST_TT_DETAIL_IS_FUNCTION_PTR_TESTER_HPP_INCLUDED
|
||||
|
||||
///// iteration
|
||||
|
||||
#else
|
||||
#define BOOST_PP_COUNTER BOOST_PP_FRAME_ITERATION(1)
|
||||
#undef __stdcall
|
||||
#undef __fastcall
|
||||
#undef __cdecl
|
||||
|
||||
template <class R BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
|
||||
yes_type is_function_ptr_tester(R (*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)));
|
||||
@#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
|
||||
template <class R BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
|
||||
yes_type is_function_ptr_tester(R (*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...));
|
||||
@#endif
|
||||
@#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
|
||||
template <class R BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
|
||||
yes_type is_function_ptr_tester(R (__stdcall*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)));
|
||||
@#ifndef _MANAGED
|
||||
template <class R BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
|
||||
yes_type is_function_ptr_tester(R (__fastcall*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)));
|
||||
@#endif
|
||||
template <class R BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
|
||||
yes_type is_function_ptr_tester(R (__cdecl*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)));
|
||||
@#endif
|
||||
|
||||
#undef BOOST_PP_COUNTER
|
||||
#endif // BOOST_PP_IS_ITERATING
|
||||
@@ -0,0 +1,141 @@
|
||||
# /* Copyright (C) 2001
|
||||
# * Housemarque Oy
|
||||
# * http://www.housemarque.com
|
||||
# *
|
||||
# * Distributed under the Boost Software License, Version 1.0. (See
|
||||
# * accompanying file LICENSE_1_0.txt or copy at
|
||||
# * http://www.boost.org/LICENSE_1_0.txt)
|
||||
# */
|
||||
#
|
||||
# /* Revised by Paul Mensonides (2002) */
|
||||
#
|
||||
# /* See http://www.boost.org for most recent version. */
|
||||
#
|
||||
# ifndef BOOST_PREPROCESSOR_LIST_FOR_EACH_PRODUCT_HPP
|
||||
# define BOOST_PREPROCESSOR_LIST_FOR_EACH_PRODUCT_HPP
|
||||
#
|
||||
# include <boost/preprocessor/config/config.hpp>
|
||||
# include <boost/preprocessor/control/if.hpp>
|
||||
# include <boost/preprocessor/list/adt.hpp>
|
||||
# include <boost/preprocessor/list/to_tuple.hpp>
|
||||
# include <boost/preprocessor/repetition/for.hpp>
|
||||
# include <boost/preprocessor/tuple/elem.hpp>
|
||||
# include <boost/preprocessor/tuple/to_list.hpp>
|
||||
# include <boost/preprocessor/tuple/rem.hpp>
|
||||
# include <boost/preprocessor/tuple/reverse.hpp>
|
||||
#
|
||||
# /* BOOST_PP_LIST_FOR_EACH_PRODUCT */
|
||||
#
|
||||
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT(macro, size, tuple) BOOST_PP_LIST_FOR_EACH_PRODUCT_E(BOOST_PP_FOR, macro, size, BOOST_PP_TUPLE_TO_LIST(size, tuple))
|
||||
# else
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT(macro, size, tuple) BOOST_PP_LIST_FOR_EACH_PRODUCT_Q(macro, size, tuple)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_Q(macro, size, tuple) BOOST_PP_LIST_FOR_EACH_PRODUCT_E(BOOST_PP_FOR, macro, size, BOOST_PP_TUPLE_TO_LIST(size, tuple))
|
||||
# endif
|
||||
#
|
||||
# /* BOOST_PP_LIST_FOR_EACH_PRODUCT_R */
|
||||
#
|
||||
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_R(r, macro, size, tuple) BOOST_PP_LIST_FOR_EACH_PRODUCT_E(BOOST_PP_FOR_ ## r, macro, size, BOOST_PP_TUPLE_TO_LIST(size, tuple))
|
||||
# else
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_R(r, macro, size, tuple) BOOST_PP_LIST_FOR_EACH_PRODUCT_R_Q(r, macro, size, tuple)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_R_Q(r, macro, size, tuple) BOOST_PP_LIST_FOR_EACH_PRODUCT_E(BOOST_PP_FOR_ ## r, macro, size, BOOST_PP_TUPLE_TO_LIST(size, tuple))
|
||||
# endif
|
||||
#
|
||||
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_E(impl, macro, size, lists) impl((BOOST_PP_LIST_FIRST(lists), BOOST_PP_LIST_REST(lists), BOOST_PP_NIL, macro, size), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_0)
|
||||
# else
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_E(impl, macro, size, lists) BOOST_PP_LIST_FOR_EACH_PRODUCT_E_D(impl, macro, size, lists)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_E_D(impl, macro, size, lists) impl((BOOST_PP_LIST_FIRST(lists), BOOST_PP_LIST_REST(lists), BOOST_PP_NIL, macro, size), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_0)
|
||||
# endif
|
||||
#
|
||||
# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_P(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_P_I data
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_P_I(a, b, res, macro, size) BOOST_PP_LIST_IS_CONS(a)
|
||||
# else
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_P(r, data) BOOST_PP_LIST_IS_CONS(BOOST_PP_TUPLE_ELEM(5, 0, data))
|
||||
# endif
|
||||
#
|
||||
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_O(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_O_I data
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_O_I(a, b, res, macro, size) (BOOST_PP_LIST_REST(a), b, res, macro, size)
|
||||
# else
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_O(r, data) (BOOST_PP_LIST_REST(BOOST_PP_TUPLE_ELEM(5, 0, data)), BOOST_PP_TUPLE_ELEM(5, 1, data), BOOST_PP_TUPLE_ELEM(5, 2, data), BOOST_PP_TUPLE_ELEM(5, 3, data), BOOST_PP_TUPLE_ELEM(5, 4, data))
|
||||
# endif
|
||||
#
|
||||
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_I(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_I(r, BOOST_PP_TUPLE_ELEM(5, 0, data), BOOST_PP_TUPLE_ELEM(5, 1, data), BOOST_PP_TUPLE_ELEM(5, 2, data), BOOST_PP_TUPLE_ELEM(5, 3, data), BOOST_PP_TUPLE_ELEM(5, 4, data))
|
||||
# else
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_I(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_D(r, BOOST_PP_TUPLE_REM_5 data)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_I_D(r, data_e) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_I(r, data_e)
|
||||
# endif
|
||||
#
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_I_I(r, a, b, res, macro, size) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_II(r, macro, BOOST_PP_LIST_TO_TUPLE_R(r, (BOOST_PP_LIST_FIRST(a), res)), size)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_I_II(r, macro, args, size) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_III(r, macro, args, size)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_I_III(r, macro, args, size) macro(r, BOOST_PP_TUPLE_REVERSE(size, args))
|
||||
#
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, i) BOOST_PP_IF(BOOST_PP_LIST_IS_CONS(BOOST_PP_TUPLE_ELEM(5, 1, data)), BOOST_PP_LIST_FOR_EACH_PRODUCT_N_ ## i, BOOST_PP_LIST_FOR_EACH_PRODUCT_I)
|
||||
#
|
||||
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data) BOOST_PP_LIST_FOR_EACH_PRODUCT_H_I data
|
||||
# else
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data) BOOST_PP_LIST_FOR_EACH_PRODUCT_H_I(BOOST_PP_TUPLE_ELEM(5, 0, data), BOOST_PP_TUPLE_ELEM(5, 1, data), BOOST_PP_TUPLE_ELEM(5, 2, data), BOOST_PP_TUPLE_ELEM(5, 3, data), BOOST_PP_TUPLE_ELEM(5, 4, data))
|
||||
# endif
|
||||
#
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_H_I(a, b, res, macro, size) (BOOST_PP_LIST_FIRST(b), BOOST_PP_LIST_REST(b), (BOOST_PP_LIST_FIRST(a), res), macro, size)
|
||||
#
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_0(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 0)(r, data)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_1(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 1)(r, data)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_2(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 2)(r, data)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_3(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 3)(r, data)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_4(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 4)(r, data)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_5(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 5)(r, data)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_6(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 6)(r, data)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_7(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 7)(r, data)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_8(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 8)(r, data)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_9(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 9)(r, data)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_10(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 10)(r, data)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_11(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 11)(r, data)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_12(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 12)(r, data)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_13(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 13)(r, data)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_14(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 14)(r, data)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_15(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 15)(r, data)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_16(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 16)(r, data)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_17(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 17)(r, data)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_18(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 18)(r, data)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_19(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 19)(r, data)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_20(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 20)(r, data)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_21(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 21)(r, data)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_22(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 22)(r, data)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_23(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 23)(r, data)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_24(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 24)(r, data)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_25(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 25)(r, data)
|
||||
#
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_0(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_1)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_1(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_2)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_2(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_3)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_3(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_4)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_4(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_5)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_5(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_6)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_6(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_7)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_7(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_8)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_8(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_9)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_9(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_10)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_10(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_11)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_11(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_12)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_12(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_13)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_13(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_14)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_14(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_15)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_15(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_16)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_16(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_17)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_17(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_18)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_18(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_19)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_19(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_20)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_20(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_21)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_21(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_22)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_22(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_23)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_23(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_24)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_24(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_25)
|
||||
# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_25(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_26)
|
||||
#
|
||||
# endif
|
||||
@@ -0,0 +1,97 @@
|
||||
|
||||
// Copyright Aleksey Gurtovoy 2002-2004
|
||||
//
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt)
|
||||
//
|
||||
|
||||
// *Preprocessed* version of the main "unpack_args.hpp" header
|
||||
// -- DO NOT modify by hand!
|
||||
|
||||
namespace boost { namespace mpl {
|
||||
|
||||
namespace aux {
|
||||
|
||||
template< int size, typename F, typename Args >
|
||||
struct unpack_args_impl;
|
||||
|
||||
template< typename F, typename Args >
|
||||
struct unpack_args_impl< 0,F,Args >
|
||||
: apply0<
|
||||
F
|
||||
>
|
||||
{
|
||||
};
|
||||
|
||||
template< typename F, typename Args >
|
||||
struct unpack_args_impl< 1,F,Args >
|
||||
: apply1<
|
||||
F
|
||||
, typename at_c< Args,0 >::type
|
||||
>
|
||||
{
|
||||
};
|
||||
|
||||
template< typename F, typename Args >
|
||||
struct unpack_args_impl< 2,F,Args >
|
||||
: apply2<
|
||||
F
|
||||
, typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
|
||||
>
|
||||
{
|
||||
};
|
||||
|
||||
template< typename F, typename Args >
|
||||
struct unpack_args_impl< 3,F,Args >
|
||||
: apply3<
|
||||
F
|
||||
, typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
|
||||
, typename at_c< Args,2 >::type
|
||||
>
|
||||
{
|
||||
};
|
||||
|
||||
template< typename F, typename Args >
|
||||
struct unpack_args_impl< 4,F,Args >
|
||||
: apply4<
|
||||
F
|
||||
, typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
|
||||
, typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
|
||||
>
|
||||
{
|
||||
};
|
||||
|
||||
template< typename F, typename Args >
|
||||
struct unpack_args_impl< 5,F,Args >
|
||||
: apply5<
|
||||
F
|
||||
, typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
|
||||
, typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
|
||||
, typename at_c< Args,4 >::type
|
||||
>
|
||||
{
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
template<
|
||||
typename F
|
||||
>
|
||||
struct unpack_args
|
||||
{
|
||||
template< typename Args > struct apply
|
||||
{
|
||||
typedef typename aux::unpack_args_impl<
|
||||
size<Args>::value
|
||||
, F
|
||||
, Args
|
||||
>::type type;
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
|
||||
|
||||
}}
|
||||
|
||||
@@ -0,0 +1,304 @@
|
||||
//
|
||||
// Copyright (c) 2000-2002
|
||||
// Joerg Walter, Mathias Koch
|
||||
//
|
||||
// Distributed under the Boost Software License, Version 1.0. (See
|
||||
// accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt)
|
||||
//
|
||||
// The authors gratefully acknowledge the support of
|
||||
// GeNeSys mbH & Co. KG in producing this work.
|
||||
//
|
||||
|
||||
#ifndef _BOOST_UBLAS_CONFIG_
|
||||
#define _BOOST_UBLAS_CONFIG_
|
||||
|
||||
#include <cassert>
|
||||
#include <cstddef>
|
||||
#include <algorithm>
|
||||
#include <limits>
|
||||
|
||||
#include <boost/config.hpp>
|
||||
#include <boost/static_assert.hpp>
|
||||
#include <boost/noncopyable.hpp>
|
||||
#include <boost/mpl/if.hpp>
|
||||
#include <boost/mpl/and.hpp>
|
||||
#include <boost/type_traits/is_same.hpp>
|
||||
#include <boost/type_traits/is_convertible.hpp>
|
||||
#include <boost/type_traits/is_const.hpp>
|
||||
#include <boost/type_traits/remove_reference.hpp>
|
||||
|
||||
// C++11
|
||||
#if defined(__cplusplus) && __cplusplus >= 201103L
|
||||
|
||||
#define BOOST_UBLAS_CPP_GE_2011
|
||||
|
||||
#elif BOOST_MSVC >= 1800
|
||||
|
||||
#define BOOST_UBLAS_CPP_GE_2011
|
||||
|
||||
#else
|
||||
|
||||
#undef BOOST_UBLAS_CPP_GE_2011 // Make sure no one defined it
|
||||
|
||||
#endif
|
||||
|
||||
// Microsoft Visual C++
|
||||
#if defined (BOOST_MSVC) && ! defined (BOOST_STRICT_CONFIG)
|
||||
|
||||
// Version 7.1
|
||||
#if BOOST_MSVC == 1310
|
||||
// One of these workarounds is needed for MSVC 7.1 AFAIK
|
||||
// (thanks to John Maddock and Martin Lauer).
|
||||
#if !(defined(BOOST_UBLAS_NO_NESTED_CLASS_RELATION) || defined(BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION))
|
||||
#define BOOST_UBLAS_NO_NESTED_CLASS_RELATION
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
// GNU Compiler Collection
|
||||
#if defined (__GNUC__) && ! defined (BOOST_STRICT_CONFIG)
|
||||
|
||||
#if __GNUC__ >= 4 || (__GNUC__ >= 3 && __GNUC_MINOR__ >= 4)
|
||||
// Specified by ABI definition see GCC bug id 9982
|
||||
#define BOOST_UBLAS_USEFUL_ARRAY_PLACEMENT_NEW
|
||||
#endif
|
||||
|
||||
#if __GNUC__ < 3
|
||||
#define BOOST_UBLAS_UNSUPPORTED_COMPILER 1
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
// Intel Compiler
|
||||
#if defined (BOOST_INTEL) && ! defined (BOOST_STRICT_CONFIG)
|
||||
|
||||
#if defined (BOOST_INTEL_LINUX) && (BOOST_INTEL_LINUX >= 800)
|
||||
// By inspection of compiler results
|
||||
#define BOOST_UBLAS_USEFUL_ARRAY_PLACEMENT_NEW
|
||||
#endif
|
||||
|
||||
#if (BOOST_INTEL < 700)
|
||||
#define BOOST_UBLAS_UNSUPPORTED_COMPILER 1
|
||||
#endif
|
||||
|
||||
// Define swap for index_pair and triple.
|
||||
#if (BOOST_INTEL <= 800)
|
||||
namespace boost { namespace numeric { namespace ublas {
|
||||
template<class C, class IC>
|
||||
class indexed_iterator;
|
||||
|
||||
template<class V>
|
||||
class index_pair;
|
||||
template<class M>
|
||||
class index_triple;
|
||||
}}}
|
||||
|
||||
namespace std {
|
||||
template<class V>
|
||||
inline
|
||||
void swap (boost::numeric::ublas::index_pair<V> i1, boost::numeric::ublas::index_pair<V> i2) {
|
||||
i1.swap (i2);
|
||||
}
|
||||
template<class M>
|
||||
inline
|
||||
void swap (boost::numeric::ublas::index_triple<M> i1, boost::numeric::ublas::index_triple<M> i2) {
|
||||
i1.swap (i2);
|
||||
}
|
||||
// iter_swap also needed for ICC on Itanium?
|
||||
template<class C, class IC>
|
||||
inline
|
||||
void iter_swap (boost::numeric::ublas::indexed_iterator<C, IC> it1,
|
||||
boost::numeric::ublas::indexed_iterator<C, IC> it2) {
|
||||
swap (*it1, *it2);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
// Comeau compiler - thanks to Kresimir Fresl
|
||||
#if defined (__COMO__) && ! defined (BOOST_STRICT_CONFIG)
|
||||
|
||||
// Missing std::abs overloads for float types in <cmath> are in <cstdlib>
|
||||
#if defined(__LIBCOMO__) && (__LIBCOMO_VERSION__ <= 31)
|
||||
#include <cstdlib>
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
// PGI compiler
|
||||
#ifdef __PGIC__
|
||||
#define BOOST_UBLAS_UNSUPPORTED_COMPILER 0
|
||||
#endif
|
||||
|
||||
// HP aCC C++ compiler
|
||||
#if defined (__HP_aCC) && ! defined (BOOST_STRICT_CONFIG)
|
||||
# if (__HP_aCC >= 60000 )
|
||||
# define BOOST_UBLAS_USEFUL_ARRAY_PLACEMENT_NEW
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
// SGI MIPSpro C++ compiler
|
||||
#if defined (__sgi) && ! defined (BOOST_STRICT_CONFIG)
|
||||
|
||||
// Missing std::abs overloads for float types in <cmath> are in <cstdlib>
|
||||
// This test should be library version specific.
|
||||
#include <cstdlib>
|
||||
|
||||
#if __COMPILER_VERSION >=650
|
||||
// By inspection of compiler results - thanks to Peter Schmitteckert
|
||||
#define BOOST_UBLAS_USEFUL_ARRAY_PLACEMENT_NEW
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
// Metrowerks Codewarrior
|
||||
#if defined (__MWERKS__) && ! defined (BOOST_STRICT_CONFIG)
|
||||
|
||||
// 8.x
|
||||
#if __MWERKS__ <= 0x3003
|
||||
#define BOOST_UBLAS_UNSUPPORTED_COMPILER 1
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
// Detect other compilers with serious defects - override by defineing BOOST_UBLAS_UNSUPPORTED_COMPILER=0
|
||||
#ifndef BOOST_UBLAS_UNSUPPORTED_COMPILER
|
||||
#if defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) || defined(BOOST_NO_SFINAE) || defined(BOOST_NO_STDC_NAMESPACE)
|
||||
#define BOOST_UBLAS_UNSUPPORTED_COMPILER 1
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Cannot continue with an unsupported compiler
|
||||
#if defined(BOOST_UBLAS_UNSUPPORTED_COMPILER) && (BOOST_UBLAS_UNSUPPORTED_COMPILER != 0)
|
||||
#error Your compiler and/or configuration is unsupported by this verions of uBLAS. Define BOOST_UBLAS_UNSUPPORTED_COMPILER=0 to override this message. Boost 1.32.0 includes uBLAS with support for many older compilers.
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
// Enable performance options in RELEASE mode
|
||||
#if defined (NDEBUG) || defined (BOOST_UBLAS_NDEBUG)
|
||||
|
||||
#ifndef BOOST_UBLAS_INLINE
|
||||
#define BOOST_UBLAS_INLINE inline
|
||||
#endif
|
||||
|
||||
// Do not check sizes!
|
||||
#define BOOST_UBLAS_USE_FAST_SAME
|
||||
|
||||
// NO runtime error checks with BOOST_UBLAS_CHECK macro
|
||||
#ifndef BOOST_UBLAS_CHECK_ENABLE
|
||||
#define BOOST_UBLAS_CHECK_ENABLE 0
|
||||
#endif
|
||||
|
||||
// NO type compatibility numeric checks
|
||||
#ifndef BOOST_UBLAS_TYPE_CHECK
|
||||
#define BOOST_UBLAS_TYPE_CHECK 0
|
||||
#endif
|
||||
|
||||
|
||||
// Disable performance options in DEBUG mode
|
||||
#else
|
||||
|
||||
#ifndef BOOST_UBLAS_INLINE
|
||||
#define BOOST_UBLAS_INLINE
|
||||
#endif
|
||||
|
||||
// Enable runtime error checks with BOOST_UBLAS_CHECK macro. Check bounds etc
|
||||
#ifndef BOOST_UBLAS_CHECK_ENABLE
|
||||
#define BOOST_UBLAS_CHECK_ENABLE 1
|
||||
#endif
|
||||
|
||||
// Type compatibiltity numeric checks
|
||||
#ifndef BOOST_UBLAS_TYPE_CHECK
|
||||
#define BOOST_UBLAS_TYPE_CHECK 1
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* Type compatibility checks
|
||||
* Control type compatibility numeric runtime checks for non dense matrices.
|
||||
* Require additional storage and complexity
|
||||
*/
|
||||
#if BOOST_UBLAS_TYPE_CHECK
|
||||
template <class Dummy>
|
||||
struct disable_type_check
|
||||
{
|
||||
static bool value;
|
||||
};
|
||||
template <class Dummy>
|
||||
bool disable_type_check<Dummy>::value = false;
|
||||
#endif
|
||||
#ifndef BOOST_UBLAS_TYPE_CHECK_EPSILON
|
||||
#define BOOST_UBLAS_TYPE_CHECK_EPSILON (type_traits<real_type>::type_sqrt (std::numeric_limits<real_type>::epsilon ()))
|
||||
#endif
|
||||
#ifndef BOOST_UBLAS_TYPE_CHECK_MIN
|
||||
#define BOOST_UBLAS_TYPE_CHECK_MIN (type_traits<real_type>::type_sqrt ( (std::numeric_limits<real_type>::min) ()))
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* General Configuration
|
||||
*/
|
||||
|
||||
// Proxy shortcuts overload the alreadly heavily over used operator ()
|
||||
//#define BOOST_UBLAS_ENABLE_PROXY_SHORTCUTS
|
||||
|
||||
// In order to simplify debugging is is possible to simplify expression template
|
||||
// so they are restricted to a single operation
|
||||
// #define BOOST_UBLAS_SIMPLE_ET_DEBUG
|
||||
|
||||
// Use invariant hoisting.
|
||||
// #define BOOST_UBLAS_USE_INVARIANT_HOISTING
|
||||
|
||||
// Use Duff's device in element access loops
|
||||
// #define BOOST_UBLAS_USE_DUFF_DEVICE
|
||||
|
||||
// Choose evaluation method for dense vectors and matrices
|
||||
#if !(defined(BOOST_UBLAS_USE_INDEXING) || defined(BOOST_UBLAS_USE_ITERATING))
|
||||
#define BOOST_UBLAS_USE_INDEXING
|
||||
#endif
|
||||
// #define BOOST_UBLAS_ITERATOR_THRESHOLD 0
|
||||
|
||||
// Use indexed iterators - unsupported implementation experiment
|
||||
// #define BOOST_UBLAS_USE_INDEXED_ITERATOR
|
||||
|
||||
// Alignment of bounded_array type
|
||||
#ifndef BOOST_UBLAS_BOUNDED_ARRAY_ALIGN
|
||||
#define BOOST_UBLAS_BOUNDED_ARRAY_ALIGN
|
||||
#endif
|
||||
|
||||
// Enable different sparse element proxies
|
||||
#ifndef BOOST_UBLAS_NO_ELEMENT_PROXIES
|
||||
// Sparse proxies prevent reference invalidation problems in expressions such as:
|
||||
// a [1] = a [0] = 1 Thanks to Marc Duflot for spotting this.
|
||||
// #define BOOST_UBLAS_STRICT_MAP_ARRAY
|
||||
#define BOOST_UBLAS_STRICT_VECTOR_SPARSE
|
||||
#define BOOST_UBLAS_STRICT_MATRIX_SPARSE
|
||||
// Hermitian matrices use element proxies to allow assignment to conjugate triangle
|
||||
#define BOOST_UBLAS_STRICT_HERMITIAN
|
||||
#endif
|
||||
|
||||
// Define to configure special settings for reference returning members
|
||||
// #define BOOST_UBLAS_REFERENCE_CONST_MEMBER
|
||||
// #define BOOST_UBLAS_PROXY_CONST_MEMBER
|
||||
|
||||
|
||||
// Include type declerations and functions
|
||||
#include <boost/numeric/ublas/fwd.hpp>
|
||||
#include <boost/numeric/ublas/detail/definitions.hpp>
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
// declval.hpp -------------------------------------------------------------//
|
||||
|
||||
// Copyright 2010 Vicente J. Botet Escriba
|
||||
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
// See http://www.boost.org/LICENSE_1_0.txt
|
||||
|
||||
#ifndef BOOST_TYPE_TRAITS_DECLVAL_HPP_INCLUDED
|
||||
#define BOOST_TYPE_TRAITS_DECLVAL_HPP_INCLUDED
|
||||
|
||||
#include <boost/config.hpp>
|
||||
|
||||
//----------------------------------------------------------------------------//
|
||||
|
||||
#include <boost/type_traits/add_rvalue_reference.hpp>
|
||||
|
||||
//----------------------------------------------------------------------------//
|
||||
// //
|
||||
// C++03 implementation of //
|
||||
// 20.2.4 Function template declval [declval] //
|
||||
// Written by Vicente J. Botet Escriba //
|
||||
// //
|
||||
// 1 The library provides the function template declval to simplify the
|
||||
// definition of expressions which occur as unevaluated operands.
|
||||
// 2 Remarks: If this function is used, the program is ill-formed.
|
||||
// 3 Remarks: The template parameter T of declval may be an incomplete type.
|
||||
// [ Example:
|
||||
//
|
||||
// template <class To, class From>
|
||||
// decltype(static_cast<To>(declval<From>())) convert(From&&);
|
||||
//
|
||||
// declares a function template convert which only participates in overloading
|
||||
// if the type From can be explicitly converted to type To. For another example
|
||||
// see class template common_type (20.9.7.6). -end example ]
|
||||
//----------------------------------------------------------------------------//
|
||||
|
||||
namespace boost {
|
||||
|
||||
template <typename T>
|
||||
typename add_rvalue_reference<T>::type declval() BOOST_NOEXCEPT; // as unevaluated operand
|
||||
|
||||
} // namespace boost
|
||||
|
||||
#endif // BOOST_TYPE_TRAITS_DECLVAL_HPP_INCLUDED
|
||||
@@ -0,0 +1,213 @@
|
||||
/*
|
||||
ftrsd2.c
|
||||
|
||||
A soft-decision decoder for the JT65 (63,12) Reed-Solomon code.
|
||||
|
||||
This decoding scheme is built around Phil Karn's Berlekamp-Massey
|
||||
errors and erasures decoder. The approach is inspired by a number of
|
||||
publications, including the stochastic Chase decoder described
|
||||
in "Stochastic Chase Decoding of Reed-Solomon Codes", by Leroux et al.,
|
||||
IEEE Communications Letters, Vol. 14, No. 9, September 2010 and
|
||||
"Soft-Decision Decoding of Reed-Solomon Codes Using Successive Error-
|
||||
and-Erasure Decoding," by Soo-Woong Lee and B. V. K. Vijaya Kumar.
|
||||
|
||||
Steve Franke K9AN and Joe Taylor K1JT
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <time.h>
|
||||
#include <string.h>
|
||||
#include "rs2.h"
|
||||
|
||||
static void *rs;
|
||||
void getpp_(int workdat[], float *pp);
|
||||
|
||||
void ftrsd2_(int mrsym[], int mrprob[], int mr2sym[], int mr2prob[],
|
||||
int* ntrials0, int correct[], int param[], int ntry[])
|
||||
{
|
||||
int rxdat[63], rxprob[63], rxdat2[63], rxprob2[63];
|
||||
int workdat[63];
|
||||
int indexes[63];
|
||||
int era_pos[51];
|
||||
int i, j, numera, nerr, nn=63;
|
||||
int ntrials = *ntrials0;
|
||||
int nhard=0,nhard_min=32768,nsoft=0,nsoft_min=32768;
|
||||
int ntotal=0,ntotal_min=32768,ncandidates;
|
||||
int nera_best=0;
|
||||
float pp,pp1,pp2;
|
||||
static unsigned int nseed;
|
||||
|
||||
// Power-percentage symbol metrics - composite gnnf/hf
|
||||
int perr[8][8] = {
|
||||
{ 4, 9, 11, 13, 14, 14, 15, 15},
|
||||
{ 2, 20, 20, 30, 40, 50, 50, 50},
|
||||
{ 7, 24, 27, 40, 50, 50, 50, 50},
|
||||
{13, 25, 35, 46, 52, 70, 50, 50},
|
||||
{17, 30, 42, 54, 55, 64, 71, 70},
|
||||
{25, 39, 48, 57, 64, 66, 77, 77},
|
||||
{32, 45, 54, 63, 66, 75, 78, 83},
|
||||
{51, 58, 57, 66, 72, 77, 82, 86}};
|
||||
|
||||
|
||||
// Initialize the KA9Q Reed-Solomon encoder/decoder
|
||||
unsigned int symsize=6, gfpoly=0x43, fcr=3, prim=1, nroots=51;
|
||||
rs=init_rs_int(symsize, gfpoly, fcr, prim, nroots, 0);
|
||||
|
||||
// Reverse the received symbol vectors for BM decoder
|
||||
for (i=0; i<63; i++) {
|
||||
rxdat[i]=mrsym[62-i];
|
||||
rxprob[i]=mrprob[62-i];
|
||||
rxdat2[i]=mr2sym[62-i];
|
||||
rxprob2[i]=mr2prob[62-i];
|
||||
}
|
||||
|
||||
// Sort rxprob to find indexes of the least reliable symbols
|
||||
int k, pass, tmp, nsym=63;
|
||||
int probs[63];
|
||||
for (i=0; i<63; i++) {
|
||||
indexes[i]=i;
|
||||
probs[i]=rxprob[i];
|
||||
}
|
||||
for (pass = 1; pass <= nsym-1; pass++) {
|
||||
for (k = 0; k < nsym - pass; k++) {
|
||||
if( probs[k] < probs[k+1] ) {
|
||||
tmp = probs[k];
|
||||
probs[k] = probs[k+1];
|
||||
probs[k+1] = tmp;
|
||||
tmp = indexes[k];
|
||||
indexes[k] = indexes[k+1];
|
||||
indexes[k+1] = tmp;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// See if we can decode using BM HDD, and calculate the syndrome vector.
|
||||
memset(era_pos,0,51*sizeof(int));
|
||||
numera=0;
|
||||
memcpy(workdat,rxdat,sizeof(rxdat));
|
||||
nerr=decode_rs_int(rs,workdat,era_pos,numera,1);
|
||||
if( nerr >= 0 ) {
|
||||
// Hard-decision decoding succeeded. Save codeword and some parameters.
|
||||
nhard=0;
|
||||
for (i=0; i<63; i++) {
|
||||
if( workdat[i] != rxdat[i] ) nhard=nhard+1;
|
||||
}
|
||||
memcpy(correct,workdat,63*sizeof(int));
|
||||
param[0]=0;
|
||||
param[1]=nhard;
|
||||
param[2]=0;
|
||||
param[3]=0;
|
||||
param[4]=0;
|
||||
param[5]=0;
|
||||
param[7]=1000*1000;
|
||||
ntry[0]=0;
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
Hard-decision decoding failed. Try the FT soft-decision method.
|
||||
Generate random erasure-locator vectors and see if any of them
|
||||
decode. This will generate a list of "candidate" codewords. The
|
||||
soft distance between each candidate codeword and the received
|
||||
word is estimated by finding the largest (pp1) and second-largest
|
||||
(pp2) outputs from a synchronized filter-bank operating on the
|
||||
symbol spectra, and using these to decide which candidate
|
||||
codeword is "best".
|
||||
*/
|
||||
|
||||
nseed=1; //Seed for random numbers
|
||||
float ratio;
|
||||
int thresh, nsum;
|
||||
int thresh0[63];
|
||||
ncandidates=0;
|
||||
nsum=0;
|
||||
int ii,jj;
|
||||
for (i=0; i<nn; i++) {
|
||||
nsum=nsum+rxprob[i];
|
||||
j = indexes[62-i];
|
||||
ratio = (float)rxprob2[j]/((float)rxprob[j]+0.01);
|
||||
ii = 7.999*ratio;
|
||||
jj = (62-i)/8;
|
||||
thresh0[i] = 1.3*perr[ii][jj];
|
||||
}
|
||||
if(nsum<=0) return;
|
||||
|
||||
pp1=0.0;
|
||||
pp2=0.0;
|
||||
for (k=1; k<=ntrials; k++) {
|
||||
memset(era_pos,0,51*sizeof(int));
|
||||
memcpy(workdat,rxdat,sizeof(rxdat));
|
||||
|
||||
/*
|
||||
Mark a subset of the symbols as erasures.
|
||||
Run through the ranked symbols, starting with the worst, i=0.
|
||||
NB: j is the symbol-vector index of the symbol with rank i.
|
||||
*/
|
||||
numera=0;
|
||||
for (i=0; i<nn; i++) {
|
||||
j = indexes[62-i];
|
||||
thresh=thresh0[i];
|
||||
long int ir;
|
||||
|
||||
// Generate a random number ir, 0 <= ir < 100 (see POSIX.1-2001 example).
|
||||
nseed = nseed * 1103515245 + 12345;
|
||||
ir = (unsigned)(nseed/65536) % 32768;
|
||||
ir = (100*ir)/32768;
|
||||
|
||||
if((ir < thresh ) && numera < 51) {
|
||||
era_pos[numera]=j;
|
||||
numera=numera+1;
|
||||
}
|
||||
}
|
||||
|
||||
nerr=decode_rs_int(rs,workdat,era_pos,numera,0);
|
||||
if( nerr >= 0 ) {
|
||||
// We have a candidate codeword. Find its hard and soft distance from
|
||||
// the received word. Also find pp1 and pp2 from the full array
|
||||
// s3(64,63) of synchronized symbol spectra.
|
||||
ncandidates=ncandidates+1;
|
||||
nhard=0;
|
||||
nsoft=0;
|
||||
for (i=0; i<63; i++) {
|
||||
if(workdat[i] != rxdat[i]) {
|
||||
nhard=nhard+1;
|
||||
if(workdat[i] != rxdat2[i]) {
|
||||
nsoft=nsoft+rxprob[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
nsoft=63*nsoft/nsum;
|
||||
ntotal=nsoft+nhard;
|
||||
|
||||
getpp_(workdat,&pp);
|
||||
if(pp>pp1) {
|
||||
pp2=pp1;
|
||||
pp1=pp;
|
||||
nsoft_min=nsoft;
|
||||
nhard_min=nhard;
|
||||
ntotal_min=ntotal;
|
||||
memcpy(correct,workdat,63*sizeof(int));
|
||||
nera_best=numera;
|
||||
ntry[0]=k;
|
||||
} else {
|
||||
if(pp>pp2 && pp!=pp1) pp2=pp;
|
||||
}
|
||||
if(nhard_min <= 41 && ntotal_min <= 71) break;
|
||||
}
|
||||
if(k == ntrials) ntry[0]=k;
|
||||
}
|
||||
|
||||
param[0]=ncandidates;
|
||||
param[1]=nhard_min;
|
||||
param[2]=nsoft_min;
|
||||
param[3]=nera_best;
|
||||
param[4]=1000.0*pp2/pp1;
|
||||
param[5]=ntotal_min;
|
||||
param[6]=ntry[0];
|
||||
param[7]=1000.0*pp2;
|
||||
param[8]=1000.0*pp1;
|
||||
if(param[0]==0) param[2]=-1;
|
||||
return;
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
3
|
||||
2 3 7
|
||||
0.521814 0.271293 0.206893
|
||||
@@ -0,0 +1,281 @@
|
||||
|
||||
// Copyright Aleksey Gurtovoy 2000-2004
|
||||
//
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt)
|
||||
//
|
||||
|
||||
// Preprocessed version of "boost/mpl/vector/vector40_c.hpp" header
|
||||
// -- DO NOT modify by hand!
|
||||
|
||||
namespace boost { namespace mpl {
|
||||
|
||||
template<
|
||||
typename T
|
||||
, T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
|
||||
, T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
|
||||
, T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
|
||||
>
|
||||
struct vector31_c
|
||||
: vector31<
|
||||
integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
|
||||
, integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
|
||||
, integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
|
||||
, integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
|
||||
, integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
|
||||
, integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
|
||||
, integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
|
||||
, integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
|
||||
, integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
|
||||
, integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
|
||||
>
|
||||
{
|
||||
typedef vector31_c type;
|
||||
typedef T value_type;
|
||||
};
|
||||
|
||||
template<
|
||||
typename T
|
||||
, T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
|
||||
, T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
|
||||
, T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
|
||||
, T C31
|
||||
>
|
||||
struct vector32_c
|
||||
: vector32<
|
||||
integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
|
||||
, integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
|
||||
, integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
|
||||
, integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
|
||||
, integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
|
||||
, integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
|
||||
, integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
|
||||
, integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
|
||||
, integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
|
||||
, integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >, integral_c<T
|
||||
, C31>
|
||||
>
|
||||
{
|
||||
typedef vector32_c type;
|
||||
typedef T value_type;
|
||||
};
|
||||
|
||||
template<
|
||||
typename T
|
||||
, T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
|
||||
, T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
|
||||
, T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
|
||||
, T C31, T C32
|
||||
>
|
||||
struct vector33_c
|
||||
: vector33<
|
||||
integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
|
||||
, integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
|
||||
, integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
|
||||
, integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
|
||||
, integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
|
||||
, integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
|
||||
, integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
|
||||
, integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
|
||||
, integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
|
||||
, integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
|
||||
, integral_c< T,C31 >, integral_c< T,C32 >
|
||||
>
|
||||
{
|
||||
typedef vector33_c type;
|
||||
typedef T value_type;
|
||||
};
|
||||
|
||||
template<
|
||||
typename T
|
||||
, T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
|
||||
, T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
|
||||
, T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
|
||||
, T C31, T C32, T C33
|
||||
>
|
||||
struct vector34_c
|
||||
: vector34<
|
||||
integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
|
||||
, integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
|
||||
, integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
|
||||
, integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
|
||||
, integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
|
||||
, integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
|
||||
, integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
|
||||
, integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
|
||||
, integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
|
||||
, integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
|
||||
, integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 >
|
||||
>
|
||||
{
|
||||
typedef vector34_c type;
|
||||
typedef T value_type;
|
||||
};
|
||||
|
||||
template<
|
||||
typename T
|
||||
, T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
|
||||
, T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
|
||||
, T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
|
||||
, T C31, T C32, T C33, T C34
|
||||
>
|
||||
struct vector35_c
|
||||
: vector35<
|
||||
integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
|
||||
, integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
|
||||
, integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
|
||||
, integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
|
||||
, integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
|
||||
, integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
|
||||
, integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
|
||||
, integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
|
||||
, integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
|
||||
, integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
|
||||
, integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 >, integral_c<T
|
||||
, C34>
|
||||
>
|
||||
{
|
||||
typedef vector35_c type;
|
||||
typedef T value_type;
|
||||
};
|
||||
|
||||
template<
|
||||
typename T
|
||||
, T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
|
||||
, T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
|
||||
, T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
|
||||
, T C31, T C32, T C33, T C34, T C35
|
||||
>
|
||||
struct vector36_c
|
||||
: vector36<
|
||||
integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
|
||||
, integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
|
||||
, integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
|
||||
, integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
|
||||
, integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
|
||||
, integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
|
||||
, integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
|
||||
, integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
|
||||
, integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
|
||||
, integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
|
||||
, integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 >
|
||||
, integral_c< T,C34 >, integral_c< T,C35 >
|
||||
>
|
||||
{
|
||||
typedef vector36_c type;
|
||||
typedef T value_type;
|
||||
};
|
||||
|
||||
template<
|
||||
typename T
|
||||
, T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
|
||||
, T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
|
||||
, T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
|
||||
, T C31, T C32, T C33, T C34, T C35, T C36
|
||||
>
|
||||
struct vector37_c
|
||||
: vector37<
|
||||
integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
|
||||
, integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
|
||||
, integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
|
||||
, integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
|
||||
, integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
|
||||
, integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
|
||||
, integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
|
||||
, integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
|
||||
, integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
|
||||
, integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
|
||||
, integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 >
|
||||
, integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 >
|
||||
>
|
||||
{
|
||||
typedef vector37_c type;
|
||||
typedef T value_type;
|
||||
};
|
||||
|
||||
template<
|
||||
typename T
|
||||
, T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
|
||||
, T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
|
||||
, T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
|
||||
, T C31, T C32, T C33, T C34, T C35, T C36, T C37
|
||||
>
|
||||
struct vector38_c
|
||||
: vector38<
|
||||
integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
|
||||
, integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
|
||||
, integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
|
||||
, integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
|
||||
, integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
|
||||
, integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
|
||||
, integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
|
||||
, integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
|
||||
, integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
|
||||
, integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
|
||||
, integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 >
|
||||
, integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 >, integral_c<T
|
||||
, C37>
|
||||
>
|
||||
{
|
||||
typedef vector38_c type;
|
||||
typedef T value_type;
|
||||
};
|
||||
|
||||
template<
|
||||
typename T
|
||||
, T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
|
||||
, T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
|
||||
, T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
|
||||
, T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38
|
||||
>
|
||||
struct vector39_c
|
||||
: vector39<
|
||||
integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
|
||||
, integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
|
||||
, integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
|
||||
, integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
|
||||
, integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
|
||||
, integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
|
||||
, integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
|
||||
, integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
|
||||
, integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
|
||||
, integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
|
||||
, integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 >
|
||||
, integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 >
|
||||
, integral_c< T,C37 >, integral_c< T,C38 >
|
||||
>
|
||||
{
|
||||
typedef vector39_c type;
|
||||
typedef T value_type;
|
||||
};
|
||||
|
||||
template<
|
||||
typename T
|
||||
, T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
|
||||
, T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
|
||||
, T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
|
||||
, T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39
|
||||
>
|
||||
struct vector40_c
|
||||
: vector40<
|
||||
integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
|
||||
, integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
|
||||
, integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
|
||||
, integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
|
||||
, integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
|
||||
, integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
|
||||
, integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
|
||||
, integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
|
||||
, integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
|
||||
, integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
|
||||
, integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 >
|
||||
, integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 >
|
||||
, integral_c< T,C37 >, integral_c< T,C38 >, integral_c< T,C39 >
|
||||
>
|
||||
{
|
||||
typedef vector40_c type;
|
||||
typedef T value_type;
|
||||
};
|
||||
|
||||
}}
|
||||
@@ -0,0 +1,199 @@
|
||||
/*
|
||||
[auto_generated]
|
||||
boost/numeric/odeint/stepper/rosenbrock4_dense_output.hpp
|
||||
|
||||
[begin_description]
|
||||
Dense output for Rosenbrock 4.
|
||||
[end_description]
|
||||
|
||||
Copyright 2011-2012 Karsten Ahnert
|
||||
Copyright 2011-2015 Mario Mulansky
|
||||
Copyright 2012 Christoph Koke
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE_1_0.txt or
|
||||
copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
|
||||
|
||||
#ifndef BOOST_NUMERIC_ODEINT_STEPPER_ROSENBROCK4_DENSE_OUTPUT_HPP_INCLUDED
|
||||
#define BOOST_NUMERIC_ODEINT_STEPPER_ROSENBROCK4_DENSE_OUTPUT_HPP_INCLUDED
|
||||
|
||||
|
||||
#include <utility>
|
||||
|
||||
#include <boost/numeric/odeint/util/bind.hpp>
|
||||
|
||||
#include <boost/numeric/odeint/stepper/rosenbrock4_controller.hpp>
|
||||
#include <boost/numeric/odeint/util/is_resizeable.hpp>
|
||||
|
||||
#include <boost/numeric/odeint/integrate/max_step_checker.hpp>
|
||||
|
||||
|
||||
namespace boost {
|
||||
namespace numeric {
|
||||
namespace odeint {
|
||||
|
||||
template< class ControlledStepper >
|
||||
class rosenbrock4_dense_output
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
typedef ControlledStepper controlled_stepper_type;
|
||||
typedef typename controlled_stepper_type::stepper_type stepper_type;
|
||||
typedef typename stepper_type::value_type value_type;
|
||||
typedef typename stepper_type::state_type state_type;
|
||||
typedef typename stepper_type::wrapped_state_type wrapped_state_type;
|
||||
typedef typename stepper_type::time_type time_type;
|
||||
typedef typename stepper_type::deriv_type deriv_type;
|
||||
typedef typename stepper_type::wrapped_deriv_type wrapped_deriv_type;
|
||||
typedef typename stepper_type::resizer_type resizer_type;
|
||||
typedef dense_output_stepper_tag stepper_category;
|
||||
|
||||
typedef rosenbrock4_dense_output< ControlledStepper > dense_output_stepper_type;
|
||||
|
||||
rosenbrock4_dense_output( const controlled_stepper_type &stepper = controlled_stepper_type() )
|
||||
: m_stepper( stepper ) ,
|
||||
m_x1() , m_x2() ,
|
||||
m_current_state_x1( true ) ,
|
||||
m_t() , m_t_old() , m_dt()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
template< class StateType >
|
||||
void initialize( const StateType &x0 , time_type t0 , time_type dt0 )
|
||||
{
|
||||
m_resizer.adjust_size( x0 , detail::bind( &dense_output_stepper_type::template resize_impl< StateType > , detail::ref( *this ) , detail::_1 ) );
|
||||
get_current_state() = x0;
|
||||
m_t = t0;
|
||||
m_dt = dt0;
|
||||
}
|
||||
|
||||
template< class System >
|
||||
std::pair< time_type , time_type > do_step( System system )
|
||||
{
|
||||
failed_step_checker fail_checker; // to throw a runtime_error if step size adjustment fails
|
||||
controlled_step_result res = fail;
|
||||
m_t_old = m_t;
|
||||
do
|
||||
{
|
||||
res = m_stepper.try_step( system , get_current_state() , m_t , get_old_state() , m_dt );
|
||||
fail_checker(); // check for overflow of failed steps
|
||||
}
|
||||
while( res == fail );
|
||||
m_stepper.stepper().prepare_dense_output();
|
||||
this->toggle_current_state();
|
||||
return std::make_pair( m_t_old , m_t );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* The two overloads are needed in order to solve the forwarding problem.
|
||||
*/
|
||||
template< class StateOut >
|
||||
void calc_state( time_type t , StateOut &x )
|
||||
{
|
||||
m_stepper.stepper().calc_state( t , x , get_old_state() , m_t_old , get_current_state() , m_t );
|
||||
}
|
||||
|
||||
template< class StateOut >
|
||||
void calc_state( time_type t , const StateOut &x )
|
||||
{
|
||||
m_stepper.stepper().calc_state( t , x , get_old_state() , m_t_old , get_current_state() , m_t );
|
||||
}
|
||||
|
||||
|
||||
template< class StateType >
|
||||
void adjust_size( const StateType &x )
|
||||
{
|
||||
m_stepper.adjust_size( x );
|
||||
resize_impl( x );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
const state_type& current_state( void ) const
|
||||
{
|
||||
return get_current_state();
|
||||
}
|
||||
|
||||
time_type current_time( void ) const
|
||||
{
|
||||
return m_t;
|
||||
}
|
||||
|
||||
const state_type& previous_state( void ) const
|
||||
{
|
||||
return get_old_state();
|
||||
}
|
||||
|
||||
time_type previous_time( void ) const
|
||||
{
|
||||
return m_t_old;
|
||||
}
|
||||
|
||||
time_type current_time_step( void ) const
|
||||
{
|
||||
return m_dt;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
state_type& get_current_state( void )
|
||||
{
|
||||
return m_current_state_x1 ? m_x1.m_v : m_x2.m_v ;
|
||||
}
|
||||
|
||||
const state_type& get_current_state( void ) const
|
||||
{
|
||||
return m_current_state_x1 ? m_x1.m_v : m_x2.m_v ;
|
||||
}
|
||||
|
||||
state_type& get_old_state( void )
|
||||
{
|
||||
return m_current_state_x1 ? m_x2.m_v : m_x1.m_v ;
|
||||
}
|
||||
|
||||
const state_type& get_old_state( void ) const
|
||||
{
|
||||
return m_current_state_x1 ? m_x2.m_v : m_x1.m_v ;
|
||||
}
|
||||
|
||||
void toggle_current_state( void )
|
||||
{
|
||||
m_current_state_x1 = ! m_current_state_x1;
|
||||
}
|
||||
|
||||
|
||||
template< class StateIn >
|
||||
bool resize_impl( const StateIn &x )
|
||||
{
|
||||
bool resized = false;
|
||||
resized |= adjust_size_by_resizeability( m_x1 , x , typename is_resizeable<state_type>::type() );
|
||||
resized |= adjust_size_by_resizeability( m_x2 , x , typename is_resizeable<state_type>::type() );
|
||||
return resized;
|
||||
}
|
||||
|
||||
|
||||
controlled_stepper_type m_stepper;
|
||||
resizer_type m_resizer;
|
||||
wrapped_state_type m_x1 , m_x2;
|
||||
bool m_current_state_x1;
|
||||
time_type m_t , m_t_old , m_dt;
|
||||
};
|
||||
|
||||
|
||||
|
||||
} // namespace odeint
|
||||
} // namespace numeric
|
||||
} // namespace boost
|
||||
|
||||
|
||||
#endif // BOOST_NUMERIC_ODEINT_STEPPER_ROSENBROCK4_DENSE_OUTPUT_HPP_INCLUDED
|
||||
@@ -0,0 +1,281 @@
|
||||
// (C) Copyright 2002-2008, Fernando Luis Cacciola Carballal.
|
||||
//
|
||||
// Distributed under the Boost Software License, Version 1.0. (See
|
||||
// accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt)
|
||||
//
|
||||
// 21 Ago 2002 (Created) Fernando Cacciola
|
||||
// 24 Dec 2007 (Refactored and worked around various compiler bugs) Fernando Cacciola, Niels Dekker
|
||||
// 23 May 2008 (Fixed operator= const issue, added initialized_value) Niels Dekker, Fernando Cacciola
|
||||
// 21 Ago 2008 (Added swap) Niels Dekker, Fernando Cacciola
|
||||
// 20 Feb 2009 (Fixed logical const-ness issues) Niels Dekker, Fernando Cacciola
|
||||
// 03 Apr 2010 (Added initialized<T>, suggested by Jeffrey Hellrung, fixing #3472) Niels Dekker
|
||||
// 30 May 2010 (Made memset call conditional, fixing #3869) Niels Dekker
|
||||
//
|
||||
#ifndef BOOST_UTILITY_VALUE_INIT_21AGO2002_HPP
|
||||
#define BOOST_UTILITY_VALUE_INIT_21AGO2002_HPP
|
||||
|
||||
// Note: The implementation of boost::value_initialized had to deal with the
|
||||
// fact that various compilers haven't fully implemented value-initialization.
|
||||
// The constructor of boost::value_initialized<T> works around these compiler
|
||||
// issues, by clearing the bytes of T, before constructing the T object it
|
||||
// contains. More details on these issues are at libs/utility/value_init.htm
|
||||
|
||||
#include <boost/aligned_storage.hpp>
|
||||
#include <boost/config.hpp> // For BOOST_NO_COMPLETE_VALUE_INITIALIZATION.
|
||||
#include <boost/detail/workaround.hpp>
|
||||
#include <boost/static_assert.hpp>
|
||||
#include <boost/type_traits/cv_traits.hpp>
|
||||
#include <boost/type_traits/alignment_of.hpp>
|
||||
#include <boost/swap.hpp>
|
||||
#include <cstring>
|
||||
#include <new>
|
||||
|
||||
#ifdef BOOST_MSVC
|
||||
#pragma warning(push)
|
||||
// It is safe to ignore the following warning from MSVC 7.1 or higher:
|
||||
// "warning C4351: new behavior: elements of array will be default initialized"
|
||||
#pragma warning(disable: 4351)
|
||||
// It is safe to ignore the following MSVC warning, which may pop up when T is
|
||||
// a const type: "warning C4512: assignment operator could not be generated".
|
||||
#pragma warning(disable: 4512)
|
||||
#endif
|
||||
|
||||
#ifdef BOOST_NO_COMPLETE_VALUE_INITIALIZATION
|
||||
// Implementation detail: The macro BOOST_DETAIL_VALUE_INIT_WORKAROUND_SUGGESTED
|
||||
// suggests that a workaround should be applied, because of compiler issues
|
||||
// regarding value-initialization.
|
||||
#define BOOST_DETAIL_VALUE_INIT_WORKAROUND_SUGGESTED
|
||||
#endif
|
||||
|
||||
// Implementation detail: The macro BOOST_DETAIL_VALUE_INIT_WORKAROUND
|
||||
// switches the value-initialization workaround either on or off.
|
||||
#ifndef BOOST_DETAIL_VALUE_INIT_WORKAROUND
|
||||
#ifdef BOOST_DETAIL_VALUE_INIT_WORKAROUND_SUGGESTED
|
||||
#define BOOST_DETAIL_VALUE_INIT_WORKAROUND 1
|
||||
#else
|
||||
#define BOOST_DETAIL_VALUE_INIT_WORKAROUND 0
|
||||
#endif
|
||||
#endif
|
||||
|
||||
namespace boost {
|
||||
|
||||
template<class T>
|
||||
class initialized
|
||||
{
|
||||
private :
|
||||
struct wrapper
|
||||
{
|
||||
#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x592))
|
||||
typename
|
||||
#endif
|
||||
remove_const<T>::type data;
|
||||
|
||||
BOOST_GPU_ENABLED
|
||||
wrapper()
|
||||
:
|
||||
data()
|
||||
{
|
||||
}
|
||||
|
||||
BOOST_GPU_ENABLED
|
||||
wrapper(T const & arg)
|
||||
:
|
||||
data(arg)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
mutable
|
||||
#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x592))
|
||||
typename
|
||||
#endif
|
||||
aligned_storage<sizeof(wrapper), alignment_of<wrapper>::value>::type x;
|
||||
|
||||
BOOST_GPU_ENABLED
|
||||
wrapper * wrapper_address() const
|
||||
{
|
||||
return static_cast<wrapper *>( static_cast<void*>(&x));
|
||||
}
|
||||
|
||||
public :
|
||||
|
||||
BOOST_GPU_ENABLED
|
||||
initialized()
|
||||
{
|
||||
#if BOOST_DETAIL_VALUE_INIT_WORKAROUND
|
||||
std::memset(&x, 0, sizeof(x));
|
||||
#endif
|
||||
new (wrapper_address()) wrapper();
|
||||
}
|
||||
|
||||
BOOST_GPU_ENABLED
|
||||
initialized(initialized const & arg)
|
||||
{
|
||||
new (wrapper_address()) wrapper( static_cast<wrapper const &>(*(arg.wrapper_address())));
|
||||
}
|
||||
|
||||
BOOST_GPU_ENABLED
|
||||
explicit initialized(T const & arg)
|
||||
{
|
||||
new (wrapper_address()) wrapper(arg);
|
||||
}
|
||||
|
||||
BOOST_GPU_ENABLED
|
||||
initialized & operator=(initialized const & arg)
|
||||
{
|
||||
// Assignment is only allowed when T is non-const.
|
||||
BOOST_STATIC_ASSERT( ! is_const<T>::value );
|
||||
*wrapper_address() = static_cast<wrapper const &>(*(arg.wrapper_address()));
|
||||
return *this;
|
||||
}
|
||||
|
||||
BOOST_GPU_ENABLED
|
||||
~initialized()
|
||||
{
|
||||
wrapper_address()->wrapper::~wrapper();
|
||||
}
|
||||
|
||||
BOOST_GPU_ENABLED
|
||||
T const & data() const
|
||||
{
|
||||
return wrapper_address()->data;
|
||||
}
|
||||
|
||||
BOOST_GPU_ENABLED
|
||||
T& data()
|
||||
{
|
||||
return wrapper_address()->data;
|
||||
}
|
||||
|
||||
BOOST_GPU_ENABLED
|
||||
void swap(initialized & arg)
|
||||
{
|
||||
::boost::swap( this->data(), arg.data() );
|
||||
}
|
||||
|
||||
BOOST_GPU_ENABLED
|
||||
operator T const &() const
|
||||
{
|
||||
return wrapper_address()->data;
|
||||
}
|
||||
|
||||
BOOST_GPU_ENABLED
|
||||
operator T&()
|
||||
{
|
||||
return wrapper_address()->data;
|
||||
}
|
||||
|
||||
} ;
|
||||
|
||||
template<class T>
|
||||
BOOST_GPU_ENABLED
|
||||
T const& get ( initialized<T> const& x )
|
||||
{
|
||||
return x.data() ;
|
||||
}
|
||||
|
||||
template<class T>
|
||||
BOOST_GPU_ENABLED
|
||||
T& get ( initialized<T>& x )
|
||||
{
|
||||
return x.data() ;
|
||||
}
|
||||
|
||||
template<class T>
|
||||
BOOST_GPU_ENABLED
|
||||
void swap ( initialized<T> & lhs, initialized<T> & rhs )
|
||||
{
|
||||
lhs.swap(rhs) ;
|
||||
}
|
||||
|
||||
template<class T>
|
||||
class value_initialized
|
||||
{
|
||||
private :
|
||||
|
||||
// initialized<T> does value-initialization by default.
|
||||
initialized<T> m_data;
|
||||
|
||||
public :
|
||||
|
||||
BOOST_GPU_ENABLED
|
||||
value_initialized()
|
||||
:
|
||||
m_data()
|
||||
{ }
|
||||
|
||||
BOOST_GPU_ENABLED
|
||||
T const & data() const
|
||||
{
|
||||
return m_data.data();
|
||||
}
|
||||
|
||||
BOOST_GPU_ENABLED
|
||||
T& data()
|
||||
{
|
||||
return m_data.data();
|
||||
}
|
||||
|
||||
BOOST_GPU_ENABLED
|
||||
void swap(value_initialized & arg)
|
||||
{
|
||||
m_data.swap(arg.m_data);
|
||||
}
|
||||
|
||||
BOOST_GPU_ENABLED
|
||||
operator T const &() const
|
||||
{
|
||||
return m_data;
|
||||
}
|
||||
|
||||
BOOST_GPU_ENABLED
|
||||
operator T&()
|
||||
{
|
||||
return m_data;
|
||||
}
|
||||
} ;
|
||||
|
||||
|
||||
template<class T>
|
||||
BOOST_GPU_ENABLED
|
||||
T const& get ( value_initialized<T> const& x )
|
||||
{
|
||||
return x.data() ;
|
||||
}
|
||||
|
||||
template<class T>
|
||||
BOOST_GPU_ENABLED
|
||||
T& get ( value_initialized<T>& x )
|
||||
{
|
||||
return x.data() ;
|
||||
}
|
||||
|
||||
template<class T>
|
||||
BOOST_GPU_ENABLED
|
||||
void swap ( value_initialized<T> & lhs, value_initialized<T> & rhs )
|
||||
{
|
||||
lhs.swap(rhs) ;
|
||||
}
|
||||
|
||||
|
||||
class initialized_value_t
|
||||
{
|
||||
public :
|
||||
|
||||
template <class T> BOOST_GPU_ENABLED operator T() const
|
||||
{
|
||||
return initialized<T>().data();
|
||||
}
|
||||
};
|
||||
|
||||
initialized_value_t const initialized_value = {} ;
|
||||
|
||||
|
||||
} // namespace boost
|
||||
|
||||
#ifdef BOOST_MSVC
|
||||
#pragma warning(pop)
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,256 @@
|
||||
-25.6 1.000 -9.966 1.000000 0.000000
|
||||
-25.4 1.000 -9.966 1.000000 0.000000
|
||||
-25.2 1.000 -9.966 1.000000 0.000000
|
||||
-25.0 1.000 -9.966 1.000000 0.000000
|
||||
-24.8 1.000 -9.966 1.000000 0.000000
|
||||
-24.6 1.000 -9.966 1.000000 0.000000
|
||||
-24.4 1.000 -9.966 1.000000 0.000000
|
||||
-24.2 1.000 -9.966 1.000000 0.000000
|
||||
-24.0 1.000 -9.966 1.000000 0.000000
|
||||
-23.8 1.000 -9.966 1.000000 0.000000
|
||||
-23.6 1.000 -9.966 1.000000 0.000000
|
||||
-23.4 1.000 -9.966 1.000000 0.000000
|
||||
-23.2 1.000 -9.966 1.000000 0.000000
|
||||
-23.0 1.000 -9.966 1.000000 0.000000
|
||||
-22.8 1.000 -9.966 1.000000 0.000000
|
||||
-22.6 1.000 -9.966 1.000000 0.000000
|
||||
-22.4 1.000 -9.966 1.000000 0.000000
|
||||
-22.2 1.000 -9.966 1.000000 0.000000
|
||||
-22.0 1.000 -9.966 1.000000 0.000000
|
||||
-21.8 1.000 -9.966 1.000000 0.000000
|
||||
-21.6 1.000 -9.966 1.000000 0.000000
|
||||
-21.4 1.000 -9.966 1.000000 0.000000
|
||||
-21.2 1.000 -9.966 1.000000 0.000000
|
||||
-21.0 1.000 -9.966 1.000000 0.000000
|
||||
-20.8 1.000 -9.966 1.000000 0.000000
|
||||
-20.6 1.000 -9.966 1.000000 0.000000
|
||||
-20.4 1.000 -9.966 1.000000 0.000000
|
||||
-20.2 1.000 -9.966 1.000000 0.000000
|
||||
-20.0 1.000 -9.966 1.000000 0.000000
|
||||
-19.8 1.000 -9.966 1.000000 0.000000
|
||||
-19.6 1.000 -9.966 1.000000 0.000000
|
||||
-19.4 1.000 -9.966 1.000000 0.000000
|
||||
-19.2 1.000 -9.966 1.000000 0.000000
|
||||
-19.0 1.000 -9.966 1.000000 0.000000
|
||||
-18.8 1.000 -9.966 1.000000 0.000000
|
||||
-18.6 1.000 -9.966 1.000000 0.000000
|
||||
-18.4 1.000 -9.966 1.000000 0.000000
|
||||
-18.2 1.000 -9.966 1.000000 0.000000
|
||||
-18.0 1.000 -9.966 1.000000 0.000000
|
||||
-17.8 1.000 -9.966 1.000000 0.000000
|
||||
-17.6 1.000 -9.966 1.000000 0.000000
|
||||
-17.4 1.000 -9.966 1.000000 0.000000
|
||||
-17.2 1.000 -9.966 1.000000 0.000000
|
||||
-17.0 1.000 -9.966 1.000000 0.000000
|
||||
-16.8 1.000 -9.966 1.000000 0.000000
|
||||
-16.6 1.000 -9.966 1.000000 0.000000
|
||||
-16.4 1.000 -9.966 1.000000 0.000000
|
||||
-16.2 1.000 -9.966 1.000000 0.000000
|
||||
-16.0 0.988 -5.858 0.991379 0.008621
|
||||
-15.8 1.000 -9.966 1.000000 0.000000
|
||||
-15.6 0.991 -6.313 0.993711 0.006289
|
||||
-15.4 0.993 -6.629 0.994950 0.005051
|
||||
-15.2 1.000 -9.966 1.000000 0.000000
|
||||
-15.0 0.995 -7.055 0.996241 0.003759
|
||||
-14.8 1.000 -9.966 1.000000 0.000000
|
||||
-14.6 0.991 -6.371 0.993958 0.006042
|
||||
-14.4 1.000 -9.966 1.000000 0.000000
|
||||
-14.2 0.991 -6.313 0.993711 0.006289
|
||||
-14.0 0.992 -6.426 0.994186 0.005814
|
||||
-13.8 0.991 -6.288 0.993600 0.006400
|
||||
-13.6 0.990 -6.113 0.992775 0.007225
|
||||
-13.4 0.990 -6.152 0.992968 0.007032
|
||||
-13.2 0.992 -6.534 0.994606 0.005394
|
||||
-13.0 0.996 -7.332 0.996898 0.003102
|
||||
-12.8 0.990 -6.184 0.993121 0.006879
|
||||
-12.6 0.994 -7.016 0.996136 0.003864
|
||||
-12.4 0.993 -6.658 0.995049 0.004950
|
||||
-12.2 0.991 -6.369 0.993953 0.006047
|
||||
-12.0 0.992 -6.559 0.994699 0.005301
|
||||
-11.8 0.989 -6.002 0.992197 0.007803
|
||||
-11.6 0.991 -6.304 0.993671 0.006329
|
||||
-11.4 0.987 -5.826 0.991188 0.008812
|
||||
-11.2 0.985 -5.632 0.989919 0.010081
|
||||
-11.0 0.989 -5.995 0.992162 0.007838
|
||||
-10.8 0.984 -5.544 0.989284 0.010717
|
||||
-10.6 0.983 -5.377 0.987966 0.012034
|
||||
-10.4 0.979 -5.108 0.985502 0.014498
|
||||
-10.2 0.977 -4.954 0.983869 0.016131
|
||||
-10.0 0.971 -4.652 0.980118 0.019882
|
||||
-9.8 0.975 -4.870 0.982896 0.017104
|
||||
-9.6 0.974 -4.822 0.982324 0.017676
|
||||
-9.4 0.970 -4.608 0.979490 0.020510
|
||||
-9.2 0.970 -4.623 0.979702 0.020298
|
||||
-9.0 0.970 -4.621 0.979679 0.020321
|
||||
-8.8 0.967 -4.472 0.977465 0.022535
|
||||
-8.6 0.962 -4.261 0.973915 0.026085
|
||||
-8.4 0.960 -4.186 0.972538 0.027462
|
||||
-8.2 0.957 -4.098 0.970806 0.029194
|
||||
-8.0 0.956 -4.062 0.970061 0.029939
|
||||
-7.8 0.953 -3.975 0.968209 0.031791
|
||||
-7.6 0.942 -3.677 0.960918 0.039082
|
||||
-7.4 0.946 -3.768 0.963301 0.036699
|
||||
-7.2 0.937 -3.550 0.957308 0.042692
|
||||
-7.0 0.933 -3.463 0.954652 0.045348
|
||||
-6.8 0.929 -3.377 0.951866 0.048134
|
||||
-6.6 0.920 -3.212 0.946042 0.053958
|
||||
-6.4 0.917 -3.164 0.944202 0.055798
|
||||
-6.2 0.911 -3.058 0.939981 0.060019
|
||||
-6.0 0.903 -2.939 0.934818 0.065182
|
||||
-5.8 0.895 -2.829 0.929642 0.070358
|
||||
-5.6 0.884 -2.690 0.922540 0.077459
|
||||
-5.4 0.877 -2.608 0.917972 0.082028
|
||||
-5.2 0.869 -2.531 0.913509 0.086491
|
||||
-5.0 0.858 -2.411 0.905967 0.094033
|
||||
-4.8 0.846 -2.301 0.898525 0.101475
|
||||
-4.6 0.834 -2.201 0.891269 0.108731
|
||||
-4.4 0.821 -2.096 0.883085 0.116915
|
||||
-4.2 0.806 -1.992 0.874340 0.125660
|
||||
-4.0 0.790 -1.882 0.864307 0.135693
|
||||
-3.8 0.775 -1.790 0.855445 0.144555
|
||||
-3.6 0.755 -1.678 0.843726 0.156274
|
||||
-3.4 0.737 -1.587 0.833538 0.166462
|
||||
-3.2 0.713 -1.473 0.819841 0.180159
|
||||
-3.0 0.691 -1.376 0.807345 0.192655
|
||||
-2.8 0.667 -1.280 0.794093 0.205907
|
||||
-2.6 0.640 -1.181 0.779404 0.220596
|
||||
-2.4 0.612 -1.084 0.764178 0.235822
|
||||
-2.2 0.581 -0.987 0.747708 0.252292
|
||||
-2.0 0.548 -0.895 0.731037 0.268963
|
||||
-1.8 0.510 -0.796 0.712035 0.287965
|
||||
-1.6 0.472 -0.706 0.693474 0.306526
|
||||
-1.4 0.425 -0.606 0.671514 0.328486
|
||||
-1.2 0.378 -0.514 0.649948 0.350053
|
||||
-1.0 0.328 -0.425 0.627452 0.372548
|
||||
-0.8 0.274 -0.338 0.604549 0.395451
|
||||
-0.6 0.212 -0.249 0.579151 0.420849
|
||||
-0.4 0.146 -0.163 0.553389 0.446611
|
||||
-0.2 0.075 -0.079 0.526648 0.473352
|
||||
0.0 0.000 0.000 0.500000 0.500000
|
||||
0.2 -0.079 0.075 0.473352 0.526648
|
||||
0.4 -0.163 0.146 0.446611 0.553389
|
||||
0.6 -0.249 0.212 0.420849 0.579151
|
||||
0.8 -0.338 0.274 0.395451 0.604549
|
||||
1.0 -0.425 0.328 0.372548 0.627452
|
||||
1.2 -0.514 0.378 0.350053 0.649948
|
||||
1.4 -0.606 0.425 0.328486 0.671514
|
||||
1.6 -0.706 0.472 0.306526 0.693474
|
||||
1.8 -0.796 0.510 0.287965 0.712035
|
||||
2.0 -0.895 0.548 0.268963 0.731037
|
||||
2.2 -0.987 0.581 0.252292 0.747708
|
||||
2.4 -1.084 0.612 0.235822 0.764178
|
||||
2.6 -1.181 0.640 0.220596 0.779404
|
||||
2.8 -1.280 0.667 0.205907 0.794093
|
||||
3.0 -1.376 0.691 0.192655 0.807345
|
||||
3.2 -1.473 0.713 0.180159 0.819841
|
||||
3.4 -1.587 0.737 0.166462 0.833538
|
||||
3.6 -1.678 0.755 0.156274 0.843726
|
||||
3.8 -1.790 0.775 0.144555 0.855445
|
||||
4.0 -1.882 0.790 0.135693 0.864307
|
||||
4.2 -1.992 0.806 0.125660 0.874340
|
||||
4.4 -2.096 0.821 0.116915 0.883085
|
||||
4.6 -2.201 0.834 0.108731 0.891269
|
||||
4.8 -2.301 0.846 0.101475 0.898525
|
||||
5.0 -2.411 0.858 0.094033 0.905967
|
||||
5.2 -2.531 0.869 0.086491 0.913509
|
||||
5.4 -2.608 0.877 0.082028 0.917972
|
||||
5.6 -2.690 0.884 0.077459 0.922540
|
||||
5.8 -2.829 0.895 0.070358 0.929642
|
||||
6.0 -2.939 0.903 0.065182 0.934818
|
||||
6.2 -3.058 0.911 0.060019 0.939981
|
||||
6.4 -3.164 0.917 0.055798 0.944202
|
||||
6.6 -3.212 0.920 0.053958 0.946042
|
||||
6.8 -3.377 0.929 0.048134 0.951866
|
||||
7.0 -3.463 0.933 0.045348 0.954652
|
||||
7.2 -3.550 0.937 0.042692 0.957308
|
||||
7.4 -3.768 0.946 0.036699 0.963301
|
||||
7.6 -3.677 0.942 0.039082 0.960918
|
||||
7.8 -3.975 0.953 0.031791 0.968210
|
||||
8.0 -4.062 0.956 0.029939 0.970061
|
||||
8.2 -4.098 0.957 0.029194 0.970806
|
||||
8.4 -4.186 0.960 0.027462 0.972538
|
||||
8.6 -4.261 0.962 0.026085 0.973915
|
||||
8.8 -4.472 0.967 0.022535 0.977465
|
||||
9.0 -4.621 0.970 0.020321 0.979679
|
||||
9.2 -4.623 0.970 0.020298 0.979702
|
||||
9.4 -4.608 0.970 0.020510 0.979490
|
||||
9.6 -4.822 0.974 0.017676 0.982324
|
||||
9.8 -4.870 0.975 0.017104 0.982896
|
||||
10.0 -4.652 0.971 0.019882 0.980118
|
||||
10.2 -4.954 0.977 0.016131 0.983869
|
||||
10.4 -5.108 0.979 0.014498 0.985502
|
||||
10.6 -5.377 0.983 0.012034 0.987966
|
||||
10.8 -5.544 0.984 0.010717 0.989284
|
||||
11.0 -5.995 0.989 0.007838 0.992162
|
||||
11.2 -5.632 0.985 0.010081 0.989919
|
||||
11.4 -5.826 0.987 0.008812 0.991188
|
||||
11.6 -6.304 0.991 0.006329 0.993671
|
||||
11.8 -6.002 0.989 0.007803 0.992197
|
||||
12.0 -6.559 0.992 0.005301 0.994699
|
||||
12.2 -6.369 0.991 0.006047 0.993953
|
||||
12.4 -6.658 0.993 0.004950 0.995049
|
||||
12.6 -7.016 0.994 0.003864 0.996136
|
||||
12.8 -6.184 0.990 0.006879 0.993121
|
||||
13.0 -7.332 0.996 0.003102 0.996898
|
||||
13.2 -6.534 0.992 0.005394 0.994606
|
||||
13.4 -6.152 0.990 0.007032 0.992968
|
||||
13.6 -6.113 0.990 0.007225 0.992775
|
||||
13.8 -6.288 0.991 0.006400 0.993600
|
||||
14.0 -6.426 0.992 0.005814 0.994186
|
||||
14.2 -6.313 0.991 0.006289 0.993711
|
||||
14.4 -9.966 1.000 0.000000 1.000000
|
||||
14.6 -6.371 0.991 0.006042 0.993958
|
||||
14.8 -9.966 1.000 0.000000 1.000000
|
||||
15.0 -7.055 0.995 0.003759 0.996241
|
||||
15.2 -9.966 1.000 0.000000 1.000000
|
||||
15.4 -6.629 0.993 0.005051 0.994949
|
||||
15.6 -6.313 0.991 0.006289 0.993711
|
||||
15.8 -9.966 1.000 0.000000 1.000000
|
||||
16.0 -5.858 0.988 0.008621 0.991379
|
||||
16.2 -9.966 1.000 0.000000 1.000000
|
||||
16.4 -9.966 1.000 0.000000 1.000000
|
||||
16.6 -9.966 1.000 0.000000 1.000000
|
||||
16.8 -9.966 1.000 0.000000 1.000000
|
||||
17.0 -9.966 1.000 0.000000 1.000000
|
||||
17.2 -9.966 1.000 0.000000 1.000000
|
||||
17.4 -9.966 1.000 0.000000 1.000000
|
||||
17.6 -9.966 1.000 0.000000 1.000000
|
||||
17.8 -9.966 1.000 0.000000 1.000000
|
||||
18.0 -9.966 1.000 0.000000 1.000000
|
||||
18.2 -9.966 1.000 0.000000 1.000000
|
||||
18.4 -9.966 1.000 0.000000 1.000000
|
||||
18.6 -9.966 1.000 0.000000 1.000000
|
||||
18.8 -9.966 1.000 0.000000 1.000000
|
||||
19.0 -9.966 1.000 0.000000 1.000000
|
||||
19.2 -9.966 1.000 0.000000 1.000000
|
||||
19.4 -9.966 1.000 0.000000 1.000000
|
||||
19.6 -9.966 1.000 0.000000 1.000000
|
||||
19.8 -9.966 1.000 0.000000 1.000000
|
||||
20.0 -9.966 1.000 0.000000 1.000000
|
||||
20.2 -9.966 1.000 0.000000 1.000000
|
||||
20.4 -9.966 1.000 0.000000 1.000000
|
||||
20.6 -9.966 1.000 0.000000 1.000000
|
||||
20.8 -9.966 1.000 0.000000 1.000000
|
||||
21.0 -9.966 1.000 0.000000 1.000000
|
||||
21.2 -9.966 1.000 0.000000 1.000000
|
||||
21.4 -9.966 1.000 0.000000 1.000000
|
||||
21.6 -9.966 1.000 0.000000 1.000000
|
||||
21.8 -9.966 1.000 0.000000 1.000000
|
||||
22.0 -9.966 1.000 0.000000 1.000000
|
||||
22.2 -9.966 1.000 0.000000 1.000000
|
||||
22.4 -9.966 1.000 0.000000 1.000000
|
||||
22.6 -9.966 1.000 0.000000 1.000000
|
||||
22.8 -9.966 1.000 0.000000 1.000000
|
||||
23.0 -9.966 1.000 0.000000 1.000000
|
||||
23.2 -9.966 1.000 0.000000 1.000000
|
||||
23.4 -9.966 1.000 0.000000 1.000000
|
||||
23.6 -9.966 1.000 0.000000 1.000000
|
||||
23.8 -9.966 1.000 0.000000 1.000000
|
||||
24.0 -9.966 1.000 0.000000 1.000000
|
||||
24.2 -9.966 1.000 0.000000 1.000000
|
||||
24.4 -9.966 1.000 0.000000 1.000000
|
||||
24.6 -9.966 1.000 0.000000 1.000000
|
||||
24.8 -9.966 1.000 0.000000 1.000000
|
||||
25.0 -9.966 1.000 0.000000 1.000000
|
||||
25.2 -9.966 1.000 0.000000 1.000000
|
||||
25.4 -9.966 1.000 0.000000 1.000000
|
||||
@@ -0,0 +1,136 @@
|
||||
// (C) Copyright Gennadiy Rozental 2001.
|
||||
// (C) Copyright Beman Dawes 1995-2001.
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
// See http://www.boost.org/libs/test for the library home page.
|
||||
//
|
||||
// File : $RCSfile$
|
||||
//
|
||||
// Version : $Revision$
|
||||
//
|
||||
// Description : main function implementation for Program Executon Monitor
|
||||
// ***************************************************************************
|
||||
|
||||
#ifndef BOOST_TEST_CPP_MAIN_IPP_012205GER
|
||||
#define BOOST_TEST_CPP_MAIN_IPP_012205GER
|
||||
|
||||
// Boost.Test
|
||||
#include <boost/test/execution_monitor.hpp>
|
||||
#include <boost/test/detail/config.hpp>
|
||||
#include <boost/test/utils/basic_cstring/io.hpp>
|
||||
|
||||
// Boost
|
||||
#include <boost/cstdlib.hpp> // for exit codes
|
||||
#include <boost/config.hpp> // for workarounds
|
||||
|
||||
// STL
|
||||
#include <iostream>
|
||||
#include <cstdlib> // std::getenv
|
||||
#include <cstring> // std::strerror
|
||||
|
||||
#include <boost/test/detail/suppress_warnings.hpp>
|
||||
|
||||
//____________________________________________________________________________//
|
||||
|
||||
#ifdef BOOST_NO_STDC_NAMESPACE
|
||||
namespace std { using ::getenv; using ::strerror; }
|
||||
#endif
|
||||
|
||||
namespace {
|
||||
|
||||
struct cpp_main_caller {
|
||||
cpp_main_caller( int (*cpp_main_func)( int argc, char* argv[] ), int argc, char** argv )
|
||||
: m_cpp_main_func( cpp_main_func )
|
||||
, m_argc( argc )
|
||||
, m_argv( argv ) {}
|
||||
|
||||
int operator()() { return (*m_cpp_main_func)( m_argc, m_argv ); }
|
||||
|
||||
private:
|
||||
// Data members
|
||||
int (*m_cpp_main_func)( int argc, char* argv[] );
|
||||
int m_argc;
|
||||
char** m_argv;
|
||||
};
|
||||
|
||||
} // local namespace
|
||||
|
||||
// ************************************************************************** //
|
||||
// ************** prg_exec_monitor_main ************** //
|
||||
// ************************************************************************** //
|
||||
|
||||
namespace boost {
|
||||
|
||||
int BOOST_TEST_DECL
|
||||
prg_exec_monitor_main( int (*cpp_main)( int argc, char* argv[] ), int argc, char* argv[] )
|
||||
{
|
||||
int result = 0;
|
||||
|
||||
BOOST_TEST_I_TRY {
|
||||
boost::unit_test::const_string p( std::getenv( "BOOST_TEST_CATCH_SYSTEM_ERRORS" ) );
|
||||
::boost::execution_monitor ex_mon;
|
||||
|
||||
ex_mon.p_catch_system_errors.value = p != "no";
|
||||
|
||||
result = ex_mon.execute( cpp_main_caller( cpp_main, argc, argv ) );
|
||||
|
||||
if( result == 0 )
|
||||
result = ::boost::exit_success;
|
||||
else if( result != ::boost::exit_success ) {
|
||||
std::cout << "\n**** error return code: " << result << std::endl;
|
||||
result = ::boost::exit_failure;
|
||||
}
|
||||
}
|
||||
BOOST_TEST_I_CATCH( ::boost::execution_exception, exex ) {
|
||||
std::cout << "\n**** exception(" << exex.code() << "): " << exex.what() << std::endl;
|
||||
result = ::boost::exit_exception_failure;
|
||||
}
|
||||
BOOST_TEST_I_CATCH( ::boost::system_error, ex ) {
|
||||
std::cout << "\n**** failed to initialize execution monitor."
|
||||
<< "\n**** expression at fault: " << ex.p_failed_exp
|
||||
<< "\n**** error(" << ex.p_errno << "): " << std::strerror( ex.p_errno ) << std::endl;
|
||||
result = ::boost::exit_exception_failure;
|
||||
}
|
||||
|
||||
if( result != ::boost::exit_success ) {
|
||||
std::cerr << "******** errors detected; see standard output for details ********" << std::endl;
|
||||
}
|
||||
else {
|
||||
// Some prefer a confirming message when all is well, while others don't
|
||||
// like the clutter. Use an environment variable to avoid command
|
||||
// line argument modifications; for use in production programs
|
||||
// that's a no-no in some organizations.
|
||||
::boost::unit_test::const_string p( std::getenv( "BOOST_PRG_MON_CONFIRM" ) );
|
||||
if( p != "no" ) {
|
||||
std::cerr << std::flush << "no errors detected" << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
} // namespace boost
|
||||
|
||||
#if !defined(BOOST_TEST_DYN_LINK) && !defined(BOOST_TEST_NO_MAIN)
|
||||
|
||||
// ************************************************************************** //
|
||||
// ************** main function for tests using lib ************** //
|
||||
// ************************************************************************** //
|
||||
|
||||
int cpp_main( int argc, char* argv[] ); // prototype for user's cpp_main()
|
||||
|
||||
int BOOST_TEST_CALL_DECL
|
||||
main( int argc, char* argv[] )
|
||||
{
|
||||
return ::boost::prg_exec_monitor_main( &cpp_main, argc, argv );
|
||||
}
|
||||
|
||||
//____________________________________________________________________________//
|
||||
|
||||
#endif // !BOOST_TEST_DYN_LINK && !BOOST_TEST_NO_MAIN
|
||||
|
||||
#include <boost/test/detail/enable_warnings.hpp>
|
||||
|
||||
#endif // BOOST_TEST_CPP_MAIN_IPP_012205GER
|
||||
@@ -0,0 +1,87 @@
|
||||
/*
|
||||
Copyright Rene Rivera 2008-2015
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE_1_0.txt or copy at
|
||||
http://www.boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
|
||||
#ifndef BOOST_PREDEF_ARCHITECTURE_X86_32_H
|
||||
#define BOOST_PREDEF_ARCHITECTURE_X86_32_H
|
||||
|
||||
#include <boost/predef/version_number.h>
|
||||
#include <boost/predef/make.h>
|
||||
|
||||
/*`
|
||||
[heading `BOOST_ARCH_X86_32`]
|
||||
|
||||
[@http://en.wikipedia.org/wiki/X86 Intel x86] architecture:
|
||||
If available versions \[3-6\] are specifically detected.
|
||||
|
||||
[table
|
||||
[[__predef_symbol__] [__predef_version__]]
|
||||
|
||||
[[`i386`] [__predef_detection__]]
|
||||
[[`__i386__`] [__predef_detection__]]
|
||||
[[`__i486__`] [__predef_detection__]]
|
||||
[[`__i586__`] [__predef_detection__]]
|
||||
[[`__i686__`] [__predef_detection__]]
|
||||
[[`__i386`] [__predef_detection__]]
|
||||
[[`_M_IX86`] [__predef_detection__]]
|
||||
[[`_X86_`] [__predef_detection__]]
|
||||
[[`__THW_INTEL__`] [__predef_detection__]]
|
||||
[[`__I86__`] [__predef_detection__]]
|
||||
[[`__INTEL__`] [__predef_detection__]]
|
||||
|
||||
[[`__I86__`] [V.0.0]]
|
||||
[[`_M_IX86`] [V.0.0]]
|
||||
[[`__i686__`] [6.0.0]]
|
||||
[[`__i586__`] [5.0.0]]
|
||||
[[`__i486__`] [4.0.0]]
|
||||
[[`__i386__`] [3.0.0]]
|
||||
]
|
||||
*/
|
||||
|
||||
#define BOOST_ARCH_X86_32 BOOST_VERSION_NUMBER_NOT_AVAILABLE
|
||||
|
||||
#if defined(i386) || defined(__i386__) || \
|
||||
defined(__i486__) || defined(__i586__) || \
|
||||
defined(__i686__) || defined(__i386) || \
|
||||
defined(_M_IX86) || defined(_X86_) || \
|
||||
defined(__THW_INTEL__) || defined(__I86__) || \
|
||||
defined(__INTEL__)
|
||||
# undef BOOST_ARCH_X86_32
|
||||
# if !defined(BOOST_ARCH_X86_32) && defined(__I86__)
|
||||
# define BOOST_ARCH_X86_32 BOOST_VERSION_NUMBER(__I86__,0,0)
|
||||
# endif
|
||||
# if !defined(BOOST_ARCH_X86_32) && defined(_M_IX86)
|
||||
# define BOOST_ARCH_X86_32 BOOST_PREDEF_MAKE_10_VV00(_M_IX86)
|
||||
# endif
|
||||
# if !defined(BOOST_ARCH_X86_32) && defined(__i686__)
|
||||
# define BOOST_ARCH_X86_32 BOOST_VERSION_NUMBER(6,0,0)
|
||||
# endif
|
||||
# if !defined(BOOST_ARCH_X86_32) && defined(__i586__)
|
||||
# define BOOST_ARCH_X86_32 BOOST_VERSION_NUMBER(5,0,0)
|
||||
# endif
|
||||
# if !defined(BOOST_ARCH_X86_32) && defined(__i486__)
|
||||
# define BOOST_ARCH_X86_32 BOOST_VERSION_NUMBER(4,0,0)
|
||||
# endif
|
||||
# if !defined(BOOST_ARCH_X86_32) && defined(__i386__)
|
||||
# define BOOST_ARCH_X86_32 BOOST_VERSION_NUMBER(3,0,0)
|
||||
# endif
|
||||
# if !defined(BOOST_ARCH_X86_32)
|
||||
# define BOOST_ARCH_X86_32 BOOST_VERSION_NUMBER_AVAILABLE
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if BOOST_ARCH_X86_32
|
||||
# define BOOST_ARCH_X86_32_AVAILABLE
|
||||
#endif
|
||||
|
||||
#define BOOST_ARCH_X86_32_NAME "Intel x86-32"
|
||||
|
||||
#include <boost/predef/architecture/x86.h>
|
||||
|
||||
#endif
|
||||
|
||||
#include <boost/predef/detail/test.h>
|
||||
BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_X86_32,BOOST_ARCH_X86_32_NAME)
|
||||
@@ -0,0 +1,127 @@
|
||||
#ifndef DATE_TIME_HIGHRES_TIME_CLOCK_HPP___
|
||||
#define DATE_TIME_HIGHRES_TIME_CLOCK_HPP___
|
||||
|
||||
/* Copyright (c) 2002,2003,2005 CrystalClear Software, Inc.
|
||||
* Use, modification and distribution is subject to the
|
||||
* Boost Software License, Version 1.0. (See accompanying
|
||||
* file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
|
||||
* Author: Jeff Garland, Bart Garst
|
||||
* $Date$
|
||||
*/
|
||||
|
||||
|
||||
/*! @file microsec_time_clock.hpp
|
||||
This file contains a high resolution time clock implementation.
|
||||
*/
|
||||
|
||||
#include <boost/cstdint.hpp>
|
||||
#include <boost/shared_ptr.hpp>
|
||||
#include <boost/detail/workaround.hpp>
|
||||
#include <boost/date_time/compiler_config.hpp>
|
||||
#include <boost/date_time/c_time.hpp>
|
||||
#include <boost/date_time/time_clock.hpp>
|
||||
#include <boost/date_time/filetime_functions.hpp>
|
||||
|
||||
#ifdef BOOST_DATE_TIME_HAS_HIGH_PRECISION_CLOCK
|
||||
|
||||
namespace boost {
|
||||
namespace date_time {
|
||||
|
||||
//! A clock providing microsecond level resolution
|
||||
/*! A high precision clock that measures the local time
|
||||
* at a resolution up to microseconds and adjusts to the
|
||||
* resolution of the time system. For example, for the
|
||||
* a library configuration with nano second resolution,
|
||||
* the last 3 places of the fractional seconds will always
|
||||
* be 000 since there are 1000 nano-seconds in a micro second.
|
||||
*/
|
||||
template<class time_type>
|
||||
class microsec_clock
|
||||
{
|
||||
private:
|
||||
//! Type for the function used to convert time_t to tm
|
||||
typedef std::tm* (*time_converter)(const std::time_t*, std::tm*);
|
||||
|
||||
public:
|
||||
typedef typename time_type::date_type date_type;
|
||||
typedef typename time_type::time_duration_type time_duration_type;
|
||||
typedef typename time_duration_type::rep_type resolution_traits_type;
|
||||
|
||||
//! return a local time object for the given zone, based on computer clock
|
||||
//JKG -- looks like we could rewrite this against universal_time
|
||||
template<class time_zone_type>
|
||||
static time_type local_time(shared_ptr<time_zone_type> tz_ptr)
|
||||
{
|
||||
typedef typename time_type::utc_time_type utc_time_type;
|
||||
typedef second_clock<utc_time_type> second_clock;
|
||||
// we'll need to know the utc_offset this machine has
|
||||
// in order to get a utc_time_type set to utc
|
||||
utc_time_type utc_time = second_clock::universal_time();
|
||||
time_duration_type utc_offset = second_clock::local_time() - utc_time;
|
||||
// use micro clock to get a local time with sub seconds
|
||||
// and adjust it to get a true utc time reading with sub seconds
|
||||
utc_time = microsec_clock<utc_time_type>::local_time() - utc_offset;
|
||||
return time_type(utc_time, tz_ptr);
|
||||
}
|
||||
|
||||
//! Returns the local time based on computer clock settings
|
||||
static time_type local_time()
|
||||
{
|
||||
return create_time(&c_time::localtime);
|
||||
}
|
||||
|
||||
//! Returns the UTC time based on computer settings
|
||||
static time_type universal_time()
|
||||
{
|
||||
return create_time(&c_time::gmtime);
|
||||
}
|
||||
|
||||
private:
|
||||
static time_type create_time(time_converter converter)
|
||||
{
|
||||
#ifdef BOOST_HAS_GETTIMEOFDAY
|
||||
timeval tv;
|
||||
gettimeofday(&tv, 0); //gettimeofday does not support TZ adjust on Linux.
|
||||
std::time_t t = tv.tv_sec;
|
||||
boost::uint32_t sub_sec = tv.tv_usec;
|
||||
#elif defined(BOOST_HAS_FTIME)
|
||||
winapi::file_time ft;
|
||||
winapi::get_system_time_as_file_time(ft);
|
||||
uint64_t micros = winapi::file_time_to_microseconds(ft); // it will not wrap, since ft is the current time
|
||||
// and cannot be before 1970-Jan-01
|
||||
std::time_t t = static_cast<std::time_t>(micros / 1000000UL); // seconds since epoch
|
||||
// microseconds -- static casts suppress warnings
|
||||
boost::uint32_t sub_sec = static_cast<boost::uint32_t>(micros % 1000000UL);
|
||||
#else
|
||||
#error Internal Boost.DateTime error: BOOST_DATE_TIME_HAS_HIGH_PRECISION_CLOCK is defined, however neither gettimeofday nor FILETIME support is detected.
|
||||
#endif
|
||||
|
||||
std::tm curr;
|
||||
std::tm* curr_ptr = converter(&t, &curr);
|
||||
date_type d(static_cast< typename date_type::year_type::value_type >(curr_ptr->tm_year + 1900),
|
||||
static_cast< typename date_type::month_type::value_type >(curr_ptr->tm_mon + 1),
|
||||
static_cast< typename date_type::day_type::value_type >(curr_ptr->tm_mday));
|
||||
|
||||
//The following line will adjust the fractional second tick in terms
|
||||
//of the current time system. For example, if the time system
|
||||
//doesn't support fractional seconds then res_adjust returns 0
|
||||
//and all the fractional seconds return 0.
|
||||
int adjust = static_cast< int >(resolution_traits_type::res_adjust() / 1000000);
|
||||
|
||||
time_duration_type td(static_cast< typename time_duration_type::hour_type >(curr_ptr->tm_hour),
|
||||
static_cast< typename time_duration_type::min_type >(curr_ptr->tm_min),
|
||||
static_cast< typename time_duration_type::sec_type >(curr_ptr->tm_sec),
|
||||
sub_sec * adjust);
|
||||
|
||||
return time_type(d,td);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
} } //namespace date_time
|
||||
|
||||
#endif //BOOST_DATE_TIME_HAS_HIGH_PRECISION_CLOCK
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (c) 2013 Kyle Lutz <kyle.r.lutz@gmail.com>
|
||||
//
|
||||
// Distributed under the Boost Software License, Version 1.0
|
||||
// See accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt
|
||||
//
|
||||
// See http://boostorg.github.com/compute for more information.
|
||||
//---------------------------------------------------------------------------//
|
||||
|
||||
#ifndef BOOST_COMPUTE_ALGORITHM_DETAIL_FIND_EXTREMA_HPP
|
||||
#define BOOST_COMPUTE_ALGORITHM_DETAIL_FIND_EXTREMA_HPP
|
||||
|
||||
#include <boost/compute/detail/iterator_range_size.hpp>
|
||||
#include <boost/compute/algorithm/detail/find_extrema_on_cpu.hpp>
|
||||
#include <boost/compute/algorithm/detail/find_extrema_with_reduce.hpp>
|
||||
#include <boost/compute/algorithm/detail/find_extrema_with_atomics.hpp>
|
||||
#include <boost/compute/algorithm/detail/serial_find_extrema.hpp>
|
||||
|
||||
namespace boost {
|
||||
namespace compute {
|
||||
namespace detail {
|
||||
|
||||
template<class InputIterator, class Compare>
|
||||
inline InputIterator find_extrema(InputIterator first,
|
||||
InputIterator last,
|
||||
Compare compare,
|
||||
const bool find_minimum,
|
||||
command_queue &queue)
|
||||
{
|
||||
size_t count = iterator_range_size(first, last);
|
||||
|
||||
// handle trivial cases
|
||||
if(count == 0 || count == 1){
|
||||
return first;
|
||||
}
|
||||
|
||||
const device &device = queue.get_device();
|
||||
|
||||
// CPU
|
||||
if(device.type() & device::cpu) {
|
||||
return find_extrema_on_cpu(first, last, compare, find_minimum, queue);
|
||||
}
|
||||
|
||||
// GPU
|
||||
// use serial method for small inputs
|
||||
if(count < 512)
|
||||
{
|
||||
return serial_find_extrema(first, last, compare, find_minimum, queue);
|
||||
}
|
||||
// find_extrema_with_reduce() is used only if requirements are met
|
||||
if(find_extrema_with_reduce_requirements_met(first, last, queue))
|
||||
{
|
||||
return find_extrema_with_reduce(first, last, compare, find_minimum, queue);
|
||||
}
|
||||
|
||||
// use serial method for OpenCL version 1.0 due to
|
||||
// problems with atomic_cmpxchg()
|
||||
#ifndef CL_VERSION_1_1
|
||||
return serial_find_extrema(first, last, compare, find_minimum, queue);
|
||||
#endif
|
||||
|
||||
return find_extrema_with_atomics(first, last, compare, find_minimum, queue);
|
||||
}
|
||||
|
||||
} // end detail namespace
|
||||
} // end compute namespace
|
||||
} // end boost namespace
|
||||
|
||||
#endif // BOOST_COMPUTE_ALGORITHM_DETAIL_FIND_EXTREMA_HPP
|
||||
@@ -0,0 +1,101 @@
|
||||
/* Boost interval/rounding.hpp template implementation file
|
||||
*
|
||||
* Copyright 2002-2003 Hervé Brönnimann, Guillaume Melquiond, Sylvain Pion
|
||||
*
|
||||
* Distributed under the Boost Software License, Version 1.0.
|
||||
* (See accompanying file LICENSE_1_0.txt or
|
||||
* copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
|
||||
#ifndef BOOST_NUMERIC_INTERVAL_ROUNDING_HPP
|
||||
#define BOOST_NUMERIC_INTERVAL_ROUNDING_HPP
|
||||
|
||||
namespace boost {
|
||||
namespace numeric {
|
||||
namespace interval_lib {
|
||||
|
||||
/*
|
||||
* Default rounding_control class (does nothing)
|
||||
*/
|
||||
|
||||
template<class T>
|
||||
struct rounding_control
|
||||
{
|
||||
typedef int rounding_mode;
|
||||
static void get_rounding_mode(rounding_mode&) {}
|
||||
static void set_rounding_mode(rounding_mode) {}
|
||||
static void upward() {}
|
||||
static void downward() {}
|
||||
static void to_nearest() {}
|
||||
static const T& to_int(const T& x) { return x; }
|
||||
static const T& force_rounding(const T& x) { return x; }
|
||||
};
|
||||
|
||||
/*
|
||||
* A few rounding control classes (exact/std/opp: see documentation)
|
||||
* rounded_arith_* control the rounding of the arithmetic operators
|
||||
* rounded_transc_* control the rounding of the transcendental functions
|
||||
*/
|
||||
|
||||
template<class T, class Rounding = rounding_control<T> >
|
||||
struct rounded_arith_exact;
|
||||
|
||||
template<class T, class Rounding = rounding_control<T> >
|
||||
struct rounded_arith_std;
|
||||
|
||||
template<class T, class Rounding = rounding_control<T> >
|
||||
struct rounded_arith_opp;
|
||||
|
||||
template<class T, class Rounding>
|
||||
struct rounded_transc_dummy;
|
||||
|
||||
template<class T, class Rounding = rounded_arith_exact<T> >
|
||||
struct rounded_transc_exact;
|
||||
|
||||
template<class T, class Rounding = rounded_arith_std<T> >
|
||||
struct rounded_transc_std;
|
||||
|
||||
template<class T, class Rounding = rounded_arith_opp<T> >
|
||||
struct rounded_transc_opp;
|
||||
|
||||
/*
|
||||
* State-saving classes: allow to set and reset rounding control
|
||||
*/
|
||||
|
||||
namespace detail {
|
||||
|
||||
template<class Rounding>
|
||||
struct save_state_unprotected: Rounding
|
||||
{
|
||||
typedef save_state_unprotected<Rounding> unprotected_rounding;
|
||||
};
|
||||
|
||||
} // namespace detail
|
||||
|
||||
template<class Rounding>
|
||||
struct save_state: Rounding
|
||||
{
|
||||
typename Rounding::rounding_mode mode;
|
||||
save_state() {
|
||||
this->get_rounding_mode(mode);
|
||||
this->init();
|
||||
}
|
||||
~save_state() { this->set_rounding_mode(mode); }
|
||||
typedef detail::save_state_unprotected<Rounding> unprotected_rounding;
|
||||
};
|
||||
|
||||
template<class Rounding>
|
||||
struct save_state_nothing: Rounding
|
||||
{
|
||||
typedef save_state_nothing<Rounding> unprotected_rounding;
|
||||
};
|
||||
|
||||
template<class T>
|
||||
struct rounded_math: save_state_nothing<rounded_arith_exact<T> >
|
||||
{};
|
||||
|
||||
} // namespace interval_lib
|
||||
} // namespace numeric
|
||||
} // namespace boost
|
||||
|
||||
#endif // BOOST_NUMERIC_INTERVAL_ROUNDING_HPP
|
||||
Reference in New Issue
Block a user