mirror of
https://github.com/boostorg/detail.git
synced 2025-12-19 05:22:37 +01:00
Compare commits
15 Commits
svn-branch
...
svn-branch
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4076d5bda0 | ||
|
|
de549910c0 | ||
|
|
49858c1ac4 | ||
|
|
ec6dfefa6e | ||
|
|
1df1d181c0 | ||
|
|
dc34adabef | ||
|
|
8aebcc4fbd | ||
|
|
2551c9baf0 | ||
|
|
71ec49242e | ||
|
|
0dc54e7b18 | ||
|
|
4039b44fce | ||
|
|
2f7218cdc4 | ||
|
|
37cd3c6dd2 | ||
|
|
71a268689d | ||
|
|
4dda81e93a |
@@ -1,3 +1,8 @@
|
|||||||
|
// Copyright 2005 Caleb Epstein
|
||||||
|
// Copyright 2006 John Maddock
|
||||||
|
// Distributed under the Boost Software License, Version 1.0. (See accompany-
|
||||||
|
// ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1997
|
* Copyright (c) 1997
|
||||||
* Silicon Graphics Computer Systems, Inc.
|
* Silicon Graphics Computer Systems, Inc.
|
||||||
@@ -37,9 +42,15 @@
|
|||||||
# error Unknown machine endianness detected.
|
# error Unknown machine endianness detected.
|
||||||
# endif
|
# endif
|
||||||
# define BOOST_BYTE_ORDER __BYTE_ORDER
|
# define BOOST_BYTE_ORDER __BYTE_ORDER
|
||||||
|
#elif defined(_BIG_ENDIAN)
|
||||||
|
# define BOOST_BIG_ENDIAN
|
||||||
|
# define BOOST_BYTE_ORDER 4321
|
||||||
|
#elif defined(_LITTLE_ENDIAN)
|
||||||
|
# define BOOST_LITTLE_ENDIAN
|
||||||
|
# define BOOST_BYTE_ORDER 1234
|
||||||
#elif defined(__sparc) || defined(__sparc__) \
|
#elif defined(__sparc) || defined(__sparc__) \
|
||||||
|| defined(_POWER) || defined(__powerpc__) \
|
|| defined(_POWER) || defined(__powerpc__) \
|
||||||
|| defined(__ppc__) || defined(__hppa) \
|
|| defined(__ppc__) || defined(__hpux) \
|
||||||
|| defined(_MIPSEB) || defined(_POWER) \
|
|| defined(_MIPSEB) || defined(_POWER) \
|
||||||
|| defined(__s390__)
|
|| defined(__s390__)
|
||||||
# define BOOST_BIG_ENDIAN
|
# define BOOST_BIG_ENDIAN
|
||||||
@@ -47,7 +58,11 @@
|
|||||||
#elif defined(__i386__) || defined(__alpha__) \
|
#elif defined(__i386__) || defined(__alpha__) \
|
||||||
|| defined(__ia64) || defined(__ia64__) \
|
|| defined(__ia64) || defined(__ia64__) \
|
||||||
|| defined(_M_IX86) || defined(_M_IA64) \
|
|| defined(_M_IX86) || defined(_M_IA64) \
|
||||||
|| defined(_M_ALPHA)
|
|| defined(_M_ALPHA) || defined(__amd64) \
|
||||||
|
|| defined(__amd64__) || defined(_M_AMD64) \
|
||||||
|
|| defined(__x86_64) || defined(__x86_64__) \
|
||||||
|
|| defined(_M_X64)
|
||||||
|
|
||||||
# define BOOST_LITTLE_ENDIAN
|
# define BOOST_LITTLE_ENDIAN
|
||||||
# define BOOST_BYTE_ORDER 1234
|
# define BOOST_BYTE_ORDER 1234
|
||||||
#else
|
#else
|
||||||
|
|||||||
29
include/boost/detail/has_default_constructor.hpp
Normal file
29
include/boost/detail/has_default_constructor.hpp
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
|
||||||
|
// (C) Copyright Matthias Troyerk 2006.
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
#ifndef BOOST_DETAIL_HAS_DEFAULT_CONSTRUCTOR_HPP_INCLUDED
|
||||||
|
#define BOOST_DETAIL_HAS_DEFAULT_CONSTRUCTOR_HPP_INCLUDED
|
||||||
|
|
||||||
|
#include <boost/type_traits/has_trivial_constructor.hpp>
|
||||||
|
|
||||||
|
namespace boost { namespace detail {
|
||||||
|
|
||||||
|
/// type trait to check for a default constructor
|
||||||
|
///
|
||||||
|
/// The default implementation just checks for a trivial constructor.
|
||||||
|
/// Using some compiler magic it might be possible to provide a better default
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct has_default_constructor
|
||||||
|
: public has_trivial_constructor<T>
|
||||||
|
{};
|
||||||
|
|
||||||
|
} } // namespace boost::detail
|
||||||
|
|
||||||
|
|
||||||
|
#endif // BOOST_DETAIL_HAS_DEFAULT_CONSTRUCTOR_HPP_INCLUDED
|
||||||
@@ -388,27 +388,27 @@ typename is_pointer_help<V>::type reference_to_pointer_helper(V&);
|
|||||||
outer_no_type reference_to_pointer_helper(...);
|
outer_no_type reference_to_pointer_helper(...);
|
||||||
|
|
||||||
template <class T>
|
template <class T>
|
||||||
struct is_reference_to_pointer
|
struct reference_to_pointer_impl
|
||||||
{
|
{
|
||||||
static T t;
|
static T t;
|
||||||
BOOST_STATIC_CONSTANT(
|
BOOST_STATIC_CONSTANT(
|
||||||
bool, value
|
bool, value
|
||||||
= (is_reference<T>::value
|
= (sizeof((reference_to_pointer_helper)(t)) == sizeof(inner_yes_type))
|
||||||
&& sizeof((reference_to_pointer_helper)(t)) == sizeof(inner_yes_type))
|
|
||||||
);
|
);
|
||||||
|
|
||||||
typedef mpl::bool_<value> type;
|
typedef mpl::bool_<value> type;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct is_reference_to_pointer
|
||||||
|
: mpl::eval_if<is_reference<T>, reference_to_pointer_impl<T>, mpl::false_>::type
|
||||||
|
{
|
||||||
BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reference_to_pointer,(T))
|
BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reference_to_pointer,(T))
|
||||||
};
|
};
|
||||||
|
|
||||||
template <class T>
|
template <class T>
|
||||||
struct is_reference_to_function_pointer
|
struct is_reference_to_function_pointer
|
||||||
: mpl::if_<
|
: mpl::eval_if<is_reference<T>, is_pointer_to_function_aux<T>, mpl::false_>::type
|
||||||
is_reference<T>
|
|
||||||
, is_pointer_to_function_aux<T>
|
|
||||||
, mpl::bool_<false>
|
|
||||||
>::type
|
|
||||||
{
|
{
|
||||||
BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reference_to_function_pointer,(T))
|
BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reference_to_function_pointer,(T))
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -31,6 +31,22 @@
|
|||||||
# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER InterlockedCompareExchangePointer
|
# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER InterlockedCompareExchangePointer
|
||||||
# define BOOST_INTERLOCKED_EXCHANGE_POINTER InterlockedExchangePointer
|
# define BOOST_INTERLOCKED_EXCHANGE_POINTER InterlockedExchangePointer
|
||||||
|
|
||||||
|
#elif defined(_WIN32_WCE)
|
||||||
|
|
||||||
|
// under Windows CE we still have old-style Interlocked* functions
|
||||||
|
|
||||||
|
extern "C" long __cdecl InterlockedIncrement( long* );
|
||||||
|
extern "C" long __cdecl InterlockedDecrement( long* );
|
||||||
|
extern "C" long __cdecl InterlockedCompareExchange( long*, long, long );
|
||||||
|
extern "C" long __cdecl InterlockedExchange( long*, long );
|
||||||
|
extern "C" long __cdecl InterlockedExchangeAdd( long*, long );
|
||||||
|
|
||||||
|
# define BOOST_INTERLOCKED_INCREMENT InterlockedIncrement
|
||||||
|
# define BOOST_INTERLOCKED_DECREMENT InterlockedDecrement
|
||||||
|
# define BOOST_INTERLOCKED_COMPARE_EXCHANGE InterlockedCompareExchange
|
||||||
|
# define BOOST_INTERLOCKED_EXCHANGE InterlockedExchange
|
||||||
|
# define BOOST_INTERLOCKED_EXCHANGE_ADD InterlockedExchangeAdd
|
||||||
|
|
||||||
#elif defined( BOOST_MSVC ) || defined( BOOST_INTEL_WIN )
|
#elif defined( BOOST_MSVC ) || defined( BOOST_INTEL_WIN )
|
||||||
|
|
||||||
extern "C" long __cdecl _InterlockedIncrement( long volatile * );
|
extern "C" long __cdecl _InterlockedIncrement( long volatile * );
|
||||||
@@ -44,18 +60,25 @@ extern "C" long __cdecl _InterlockedExchangeAdd( long volatile *, long);
|
|||||||
# pragma intrinsic( _InterlockedCompareExchange )
|
# pragma intrinsic( _InterlockedCompareExchange )
|
||||||
# pragma intrinsic( _InterlockedExchange )
|
# pragma intrinsic( _InterlockedExchange )
|
||||||
# pragma intrinsic( _InterlockedExchangeAdd )
|
# pragma intrinsic( _InterlockedExchangeAdd )
|
||||||
|
|
||||||
# if defined(_M_IA64) || defined(_M_AMD64)
|
# if defined(_M_IA64) || defined(_M_AMD64)
|
||||||
|
|
||||||
extern "C" void* __cdecl _InterlockedCompareExchangePointer( void* volatile *, void*, void* );
|
extern "C" void* __cdecl _InterlockedCompareExchangePointer( void* volatile *, void*, void* );
|
||||||
extern "C" void* __cdecl _InterlockedExchangePointer( void* volatile *, void* );
|
extern "C" void* __cdecl _InterlockedExchangePointer( void* volatile *, void* );
|
||||||
|
|
||||||
# pragma intrinsic( _InterlockedCompareExchangePointer )
|
# pragma intrinsic( _InterlockedCompareExchangePointer )
|
||||||
# pragma intrinsic( _InterlockedExchangePointer )
|
# pragma intrinsic( _InterlockedExchangePointer )
|
||||||
|
|
||||||
# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER _InterlockedCompareExchangePointer
|
# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER _InterlockedCompareExchangePointer
|
||||||
# define BOOST_INTERLOCKED_EXCHANGE_POINTER _InterlockedExchangePointer
|
# define BOOST_INTERLOCKED_EXCHANGE_POINTER _InterlockedExchangePointer
|
||||||
|
|
||||||
# else
|
# else
|
||||||
|
|
||||||
# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest,exchange,compare) \
|
# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest,exchange,compare) \
|
||||||
((void*)BOOST_INTERLOCKED_COMPARE_EXCHANGE((long volatile*)(dest),(long)(exchange),(long)(compare)))
|
((void*)BOOST_INTERLOCKED_COMPARE_EXCHANGE((long volatile*)(dest),(long)(exchange),(long)(compare)))
|
||||||
# define BOOST_INTERLOCKED_EXCHANGE_POINTER(dest,exchange) \
|
# define BOOST_INTERLOCKED_EXCHANGE_POINTER(dest,exchange) \
|
||||||
((void*)BOOST_INTERLOCKED_EXCHANGE((long volatile*)(dest),(long)(exchange)))
|
((void*)BOOST_INTERLOCKED_EXCHANGE((long volatile*)(dest),(long)(exchange)))
|
||||||
|
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
# define BOOST_INTERLOCKED_INCREMENT _InterlockedIncrement
|
# define BOOST_INTERLOCKED_INCREMENT _InterlockedIncrement
|
||||||
@@ -77,6 +100,7 @@ extern "C" __declspec(dllimport) long __stdcall InterlockedDecrement( long volat
|
|||||||
extern "C" __declspec(dllimport) long __stdcall InterlockedCompareExchange( long volatile *, long, long );
|
extern "C" __declspec(dllimport) long __stdcall InterlockedCompareExchange( long volatile *, long, long );
|
||||||
extern "C" __declspec(dllimport) long __stdcall InterlockedExchange( long volatile *, long );
|
extern "C" __declspec(dllimport) long __stdcall InterlockedExchange( long volatile *, long );
|
||||||
extern "C" __declspec(dllimport) long __stdcall InterlockedExchangeAdd( long volatile *, long );
|
extern "C" __declspec(dllimport) long __stdcall InterlockedExchangeAdd( long volatile *, long );
|
||||||
|
|
||||||
} // namespace detail
|
} // namespace detail
|
||||||
|
|
||||||
} // namespace boost
|
} // namespace boost
|
||||||
@@ -86,6 +110,7 @@ extern "C" __declspec(dllimport) long __stdcall InterlockedExchangeAdd( long vol
|
|||||||
# define BOOST_INTERLOCKED_COMPARE_EXCHANGE ::boost::detail::InterlockedCompareExchange
|
# define BOOST_INTERLOCKED_COMPARE_EXCHANGE ::boost::detail::InterlockedCompareExchange
|
||||||
# define BOOST_INTERLOCKED_EXCHANGE ::boost::detail::InterlockedExchange
|
# define BOOST_INTERLOCKED_EXCHANGE ::boost::detail::InterlockedExchange
|
||||||
# define BOOST_INTERLOCKED_EXCHANGE_ADD ::boost::detail::InterlockedExchangeAdd
|
# define BOOST_INTERLOCKED_EXCHANGE_ADD ::boost::detail::InterlockedExchangeAdd
|
||||||
|
|
||||||
# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest,exchange,compare) \
|
# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest,exchange,compare) \
|
||||||
((void*)BOOST_INTERLOCKED_COMPARE_EXCHANGE((long volatile*)(dest),(long)(exchange),(long)(compare)))
|
((void*)BOOST_INTERLOCKED_COMPARE_EXCHANGE((long volatile*)(dest),(long)(exchange),(long)(compare)))
|
||||||
# define BOOST_INTERLOCKED_EXCHANGE_POINTER(dest,exchange) \
|
# define BOOST_INTERLOCKED_EXCHANGE_POINTER(dest,exchange) \
|
||||||
|
|||||||
@@ -4,13 +4,15 @@
|
|||||||
#ifndef IS_INCREMENTABLE_DWA200415_HPP
|
#ifndef IS_INCREMENTABLE_DWA200415_HPP
|
||||||
# define IS_INCREMENTABLE_DWA200415_HPP
|
# define IS_INCREMENTABLE_DWA200415_HPP
|
||||||
|
|
||||||
# include <boost/type_traits/detail/bool_trait_def.hpp>
|
|
||||||
# include <boost/type_traits/detail/template_arity_spec.hpp>
|
# include <boost/type_traits/detail/template_arity_spec.hpp>
|
||||||
# include <boost/type_traits/remove_cv.hpp>
|
# include <boost/type_traits/remove_cv.hpp>
|
||||||
# include <boost/mpl/aux_/lambda_support.hpp>
|
# include <boost/mpl/aux_/lambda_support.hpp>
|
||||||
# include <boost/mpl/bool.hpp>
|
# include <boost/mpl/bool.hpp>
|
||||||
# include <boost/detail/workaround.hpp>
|
# include <boost/detail/workaround.hpp>
|
||||||
|
|
||||||
|
// Must be the last include
|
||||||
|
# include <boost/type_traits/detail/bool_trait_def.hpp>
|
||||||
|
|
||||||
namespace boost { namespace detail {
|
namespace boost { namespace detail {
|
||||||
|
|
||||||
// is_incrementable<T> metafunction
|
// is_incrementable<T> metafunction
|
||||||
@@ -117,5 +119,6 @@ BOOST_TT_AUX_TEMPLATE_ARITY_SPEC(1, ::boost::detail::is_postfix_incrementable)
|
|||||||
|
|
||||||
} // namespace boost
|
} // namespace boost
|
||||||
|
|
||||||
|
# include <boost/type_traits/detail/bool_trait_undef.hpp>
|
||||||
|
|
||||||
#endif // IS_INCREMENTABLE_DWA200415_HPP
|
#endif // IS_INCREMENTABLE_DWA200415_HPP
|
||||||
|
|||||||
@@ -1,9 +1,7 @@
|
|||||||
// Copyright <20> 2001 Ronald Garcia, Indiana University (garcia@osl.iu.edu)
|
// Copyright <20> 2001 Ronald Garcia, Indiana University (garcia@osl.iu.edu)
|
||||||
// Andrew Lumsdaine, Indiana University (lums@osl.iu.edu). Permission to copy,
|
// Andrew Lumsdaine, Indiana University (lums@osl.iu.edu).
|
||||||
// use, modify, sell and distribute this software is granted provided this
|
// Distributed under the Boost Software License, Version 1.0. (See accompany-
|
||||||
// copyright notice appears in all copies. This software is provided "as is"
|
// ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
// without express or implied warranty, and with no claim as to its suitability
|
|
||||||
// for any purpose.
|
|
||||||
|
|
||||||
#ifndef BOOST_UTF8_CODECVT_FACET_HPP
|
#ifndef BOOST_UTF8_CODECVT_FACET_HPP
|
||||||
#define BOOST_UTF8_CODECVT_FACET_HPP
|
#define BOOST_UTF8_CODECVT_FACET_HPP
|
||||||
|
|||||||
Reference in New Issue
Block a user