ext/boost/date_time/compiler_config.hpp in passenger-2.2.15 vs ext/boost/date_time/compiler_config.hpp in passenger-3.0.0.pre1

- old
+ new

@@ -3,14 +3,16 @@ /* Copyright (c) 2002-2004 CrystalClear Software, Inc. * 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: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $ + * $Date: 2008-11-12 14:37:53 -0500 (Wed, 12 Nov 2008) $ */ - #include "boost/detail/workaround.hpp" +#include <cstdlib> +#include <boost/config.hpp> +#include <boost/detail/workaround.hpp> // With boost release 1.33, date_time will be using a different, // more flexible, IO system. This new system is not compatible with // old compilers. The original date_time IO system remains for those // compilers. They must define this macro to use the legacy IO. @@ -24,11 +26,11 @@ #endif // This file performs some local compiler configurations -#include "boost/date_time/locale_config.hpp" //set up locale configurations +#include <boost/date_time/locale_config.hpp> //set up locale configurations //Set up a configuration parameter for platforms that have //GetTimeOfDay #if defined(BOOST_HAS_GETTIMEOFDAY) || defined(BOOST_HAS_FTIME) #define BOOST_DATE_TIME_HAS_HIGH_PRECISION_CLOCK @@ -47,11 +49,11 @@ #if (defined(BOOST_NO_INCLASS_MEMBER_INITIALIZATION) || BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT(0x581) ) ) #define BOOST_DATE_TIME_NO_MEMBER_INIT #endif // include these types before we try to re-define them -#include "boost/cstdint.hpp" +#include <boost/cstdint.hpp> //Define INT64_C for compilers that don't have it #if (!defined(INT64_C)) #define INT64_C(value) int64_t(value) #endif @@ -83,15 +85,35 @@ !defined(_STLP_OWN_IOSTREAMS) ) || \ BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT(0x581) ) #define BOOST_DATE_TIME_INCLUDE_LIMITED_HEADERS #endif +// The macro marks up places where compiler complains for missing return statement or +// uninitialized variables after calling to boost::throw_exception. +// BOOST_UNREACHABLE_RETURN doesn't work since even compilers that support +// unreachable statements detection emit such warnings. +#if defined(_MSC_VER) +// Use special MSVC extension to markup unreachable code +# define BOOST_DATE_TIME_UNREACHABLE_EXPRESSION(x) __assume(false) +#elif !defined(BOOST_NO_UNREACHABLE_RETURN_DETECTION) +// Call to a non-returning function should suppress the warning +# if defined(BOOST_NO_STDC_NAMESPACE) +namespace std { + using ::abort; +} +# endif // defined(BOOST_NO_STDC_NAMESPACE) +# define BOOST_DATE_TIME_UNREACHABLE_EXPRESSION(x) std::abort() +#else +// For other poor compilers the specified expression is compiled. Usually, this would be a return statement. +# define BOOST_DATE_TIME_UNREACHABLE_EXPRESSION(x) x +#endif + /* The following handles the definition of the necessary macros * for dll building on Win32 platforms. * * For code that will be placed in the date_time .dll, * it must be properly prefixed with BOOST_DATE_TIME_DECL. - * The corresponding .cpp file must have BOOST_DATE_TIME_SOURCES + * The corresponding .cpp file must have BOOST_DATE_TIME_SOURCE * defined before including its header. For examples see: * greg_month.hpp & greg_month.cpp * */