63 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
 | |
| // Copyright 2005-2009 Daniel James.
 | |
| // 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)
 | |
| //
 | |
| // On some platforms std::limits gives incorrect values for long double.
 | |
| // This tries to work around them.
 | |
| 
 | |
| #if !defined(BOOST_FUNCTIONAL_HASH_DETAIL_LIMITS_HEADER)
 | |
| #define BOOST_FUNCTIONAL_HASH_DETAIL_LIMITS_HEADER
 | |
| 
 | |
| #include <boost/config.hpp>
 | |
| #if defined(BOOST_HAS_PRAGMA_ONCE)
 | |
| #pragma once
 | |
| #endif
 | |
| 
 | |
| #include <boost/limits.hpp>
 | |
| 
 | |
| // On OpenBSD, numeric_limits is not reliable for long doubles, but
 | |
| // the macros defined in <float.h> are and support long double when STLport
 | |
| // doesn't.
 | |
| 
 | |
| #if defined(__OpenBSD__) || defined(_STLP_NO_LONG_DOUBLE)
 | |
| #include <float.h>
 | |
| #endif
 | |
| 
 | |
| namespace boost
 | |
| {
 | |
|     namespace hash_detail
 | |
|     {
 | |
|         template <class T>
 | |
|         struct limits : std::numeric_limits<T> {};
 | |
| 
 | |
| #if defined(__OpenBSD__) || defined(_STLP_NO_LONG_DOUBLE)
 | |
|         template <>
 | |
|         struct limits<long double>
 | |
|              : std::numeric_limits<long double>
 | |
|         {
 | |
|             static long double epsilon() {
 | |
|                 return LDBL_EPSILON;
 | |
|             }
 | |
| 
 | |
|             static long double (max)() {
 | |
|                 return LDBL_MAX;
 | |
|             }
 | |
| 
 | |
|             static long double (min)() {
 | |
|                 return LDBL_MIN;
 | |
|             }
 | |
| 
 | |
|             BOOST_STATIC_CONSTANT(int, digits = LDBL_MANT_DIG);
 | |
|             BOOST_STATIC_CONSTANT(int, max_exponent = LDBL_MAX_EXP);
 | |
|             BOOST_STATIC_CONSTANT(int, min_exponent = LDBL_MIN_EXP);
 | |
| #if defined(_STLP_NO_LONG_DOUBLE)
 | |
|             BOOST_STATIC_CONSTANT(int, radix = FLT_RADIX);
 | |
| #endif
 | |
|         };
 | |
| #endif // __OpenBSD__
 | |
|     }
 | |
| }
 | |
| 
 | |
| #endif
 | 
