139 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			139 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| //
 | |
| //! Copyright (c) 2011-2012
 | |
| //! Brandon Kohn
 | |
| //
 | |
| //  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_NUMERIC_CONVERSION_DONT_USE_PREPROCESSED_FILES)
 | |
| 
 | |
|     #include <boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_common.hpp>
 | |
| 	
 | |
| 	#if !defined(BOOST_NO_LONG_LONG)
 | |
|         #include <boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_long_long.hpp>
 | |
| 	#endif
 | |
| 	
 | |
| #else
 | |
| #if !BOOST_PP_IS_ITERATING
 | |
| 
 | |
|     #include <boost/preprocessor/seq/elem.hpp>
 | |
|     #include <boost/preprocessor/seq/size.hpp>
 | |
|     #include <boost/preprocessor/iteration/iterate.hpp>
 | |
|     
 | |
|     #if defined(__WAVE__) && defined(BOOST_NUMERIC_CONVERSION_CREATE_PREPROCESSED_FILES)
 | |
|         #pragma wave option(preserve: 2, line: 0, output: "preprocessed/numeric_cast_traits_common.hpp")
 | |
|     #endif
 | |
| //
 | |
| //! Copyright (c) 2011-2012
 | |
| //! Brandon Kohn
 | |
| //
 | |
| //  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(__WAVE__) && defined(BOOST_NUMERIC_CONVERSION_CREATE_PREPROCESSED_FILES)
 | |
|         #pragma wave option(preserve: 1)
 | |
|     #endif
 | |
| 	
 | |
| 	//! These are the assumed common built in fundamental types (not typedefs/macros.)
 | |
| 	#define BOOST_NUMERIC_CONVERSION_BASE_BUILTIN_TYPES() \
 | |
|         (char)                                            \
 | |
|         (signed char)                                     \
 | |
|         (unsigned char)                                   \
 | |
|         (short)                                           \
 | |
|         (unsigned short)                                  \
 | |
|         (int)                                             \
 | |
|         (unsigned int)                                    \
 | |
|         (long)                                            \
 | |
|         (unsigned long)                                   \
 | |
|         (float)                                           \
 | |
|         (double)                                          \
 | |
|         (long double)                                     \
 | |
|     /***/
 | |
| 	
 | |
|     #define BOOST_NUMERIC_CONVERSION_SEQ_A() BOOST_NUMERIC_CONVERSION_BASE_BUILTIN_TYPES()
 | |
| 	#define BOOST_NUMERIC_CONVERSION_SEQ_B() BOOST_NUMERIC_CONVERSION_BASE_BUILTIN_TYPES()
 | |
| 
 | |
| namespace boost { namespace numeric {
 | |
| 
 | |
|     #define BOOST_PP_ITERATION_PARAMS_1 (3, (0, BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(BOOST_NUMERIC_CONVERSION_SEQ_A())), <boost/numeric/conversion/detail/numeric_cast_traits.hpp>))
 | |
|     #include BOOST_PP_ITERATE()    
 | |
| 
 | |
| }}//namespace boost::numeric;
 | |
| 
 | |
|     #if defined(__WAVE__) && defined(BOOST_NUMERIC_CONVERSION_CREATE_PREPROCESSED_FILES)
 | |
|         #pragma wave option(output: null)
 | |
|     #endif   
 | |
| 	
 | |
| 	#if ( defined(__WAVE__) && defined(BOOST_NUMERIC_CONVERSION_CREATE_PREPROCESSED_FILES) ) || !defined(BOOST_NO_LONG_LONG)
 | |
| 	
 | |
| 	    #undef BOOST_NUMERIC_CONVERSION_SEQ_A
 | |
| 	    #undef BOOST_NUMERIC_CONVERSION_SEQ_B
 | |
| 
 | |
| 	    #if defined(__WAVE__) && defined(BOOST_NUMERIC_CONVERSION_CREATE_PREPROCESSED_FILES)
 | |
|             #pragma wave option(preserve: 2, line: 0, output: "preprocessed/numeric_cast_traits_long_long.hpp")
 | |
|         #endif
 | |
| 
 | |
| //
 | |
| //! Copyright (c) 2011-2012
 | |
| //! Brandon Kohn
 | |
| //
 | |
| //  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(__WAVE__) && defined(BOOST_NUMERIC_CONVERSION_CREATE_PREPROCESSED_FILES)
 | |
|             #pragma wave option(preserve: 1)
 | |
|         #endif
 | |
| 
 | |
| namespace boost { namespace numeric {
 | |
| 
 | |
|     #define BOOST_NUMERIC_CONVERSION_SEQ_A() BOOST_NUMERIC_CONVERSION_BASE_BUILTIN_TYPES()(boost::long_long_type)(boost::ulong_long_type)
 | |
| 	#define BOOST_NUMERIC_CONVERSION_SEQ_B() (boost::long_long_type)(boost::ulong_long_type)
 | |
|     
 | |
|     #define BOOST_PP_ITERATION_PARAMS_1 (3, (0, BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(BOOST_NUMERIC_CONVERSION_SEQ_A())), <boost/numeric/conversion/detail/numeric_cast_traits.hpp>))
 | |
|     #include BOOST_PP_ITERATE()    
 | |
| 
 | |
| }}//namespace boost::numeric;
 | |
| 
 | |
|         #if defined(__WAVE__) && defined(BOOST_NUMERIC_CONVERSION_CREATE_PREPROCESSED_FILES)
 | |
|             #pragma wave option(output: null)
 | |
|         #endif   
 | |
| 	
 | |
| 	#endif
 | |
| 		
 | |
|     #undef BOOST_NUMERIC_CONVERSION_BASE_BUILTIN_TYPES
 | |
| 	#undef BOOST_NUMERIC_CONVERSION_SEQ_A
 | |
| 	#undef BOOST_NUMERIC_CONVERSION_SEQ_B
 | |
|     
 | |
| #elif BOOST_PP_ITERATION_DEPTH() == 1
 | |
| 
 | |
|     #define BOOST_PP_ITERATION_PARAMS_2 (3, (0, BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(BOOST_NUMERIC_CONVERSION_SEQ_B())), <boost/numeric/conversion/detail/numeric_cast_traits.hpp>))
 | |
|     #include BOOST_PP_ITERATE()
 | |
| 
 | |
| #elif BOOST_PP_ITERATION_DEPTH() == 2
 | |
| 
 | |
|     //! Generate default traits for the specified source and target.
 | |
|     #define BOOST_NUMERIC_CONVERSION_A BOOST_PP_FRAME_ITERATION(1)
 | |
|     #define BOOST_NUMERIC_CONVERSION_B BOOST_PP_FRAME_ITERATION(2)
 | |
| 
 | |
|     template <>
 | |
|     struct numeric_cast_traits
 | |
|         <
 | |
|             BOOST_PP_SEQ_ELEM(BOOST_NUMERIC_CONVERSION_A, BOOST_NUMERIC_CONVERSION_SEQ_A())
 | |
|           , BOOST_PP_SEQ_ELEM(BOOST_NUMERIC_CONVERSION_B, BOOST_NUMERIC_CONVERSION_SEQ_B())
 | |
|         >
 | |
|     {
 | |
|         typedef def_overflow_handler overflow_policy;
 | |
|         typedef UseInternalRangeChecker range_checking_policy;
 | |
|         typedef Trunc<BOOST_PP_SEQ_ELEM(BOOST_NUMERIC_CONVERSION_B, BOOST_NUMERIC_CONVERSION_SEQ_B())> rounding_policy;
 | |
|     };     
 | |
| 
 | |
|     #undef BOOST_NUMERIC_CONVERSION_A
 | |
|     #undef BOOST_NUMERIC_CONVERSION_B
 | |
| 
 | |
| #endif//! Depth 2.
 | |
| #endif// BOOST_NUMERIC_CONVERSION_DONT_USE_PREPROCESSED_FILES
 | 
