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
							 |