Added the parts of boost which we need to access shared_ptr and weak_ptr. This will allow for improved memory management of large volumes.
This commit is contained in:
parent
69751dc084
commit
d574a18ce3
@ -18,7 +18,7 @@
|
|||||||
#include "OpenGLVertexBufferObjectSupport.h"
|
#include "OpenGLVertexBufferObjectSupport.h"
|
||||||
#include "Shapes.h"
|
#include "Shapes.h"
|
||||||
|
|
||||||
const PolyVox::uint16 g_uVolumeSideLength = 256;
|
const PolyVox::uint16 g_uVolumeSideLength = 128;
|
||||||
const PolyVox::uint16 g_uRegionSideLength = 16;
|
const PolyVox::uint16 g_uRegionSideLength = 16;
|
||||||
const PolyVox::uint16 g_uVolumeSideLengthInRegions = g_uVolumeSideLength / g_uRegionSideLength;
|
const PolyVox::uint16 g_uVolumeSideLengthInRegions = g_uVolumeSideLength / g_uRegionSideLength;
|
||||||
|
|
||||||
|
@ -122,6 +122,9 @@ INSTALL(TARGETS PolyVoxUtil
|
|||||||
|
|
||||||
INSTALL(FILES ${UTIL_INC_FILES} DESTINATION include/PolyVoxUtil COMPONENT development)
|
INSTALL(FILES ${UTIL_INC_FILES} DESTINATION include/PolyVoxUtil COMPONENT development)
|
||||||
|
|
||||||
|
#Copy the boost files which we a re using to mimic C++0x
|
||||||
|
INSTALL(DIRECTORY include/boost DESTINATION include COMPONENT development)
|
||||||
|
|
||||||
#Set up PolyVoxConfig.cmake
|
#Set up PolyVoxConfig.cmake
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
set(CONFIG_FILE_DIR "CMake")
|
set(CONFIG_FILE_DIR "CMake")
|
||||||
|
@ -154,7 +154,7 @@ namespace PolyVox
|
|||||||
for(uint32 ct = 1; ct < uNoOfVoxels; ++ct)
|
for(uint32 ct = 1; ct < uNoOfVoxels; ++ct)
|
||||||
{
|
{
|
||||||
++currentVoxel;
|
++currentVoxel;
|
||||||
if(*currentVoxel != firstVoxel)
|
if(*currentVoxel != firstVal)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -27,6 +27,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|||||||
|
|
||||||
#include "PolyVoxCStdInt.h"
|
#include "PolyVoxCStdInt.h"
|
||||||
|
|
||||||
|
#include "boost/shared_ptr.hpp"
|
||||||
|
#include "boost/weak_ptr.hpp"
|
||||||
|
|
||||||
#include <map>
|
#include <map>
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
|
|
||||||
@ -36,22 +39,12 @@ namespace PolyVox
|
|||||||
class Block
|
class Block
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
BlockData<VoxelType>* m_pBlockData;
|
boost::shared_ptr< BlockData<VoxelType> > m_pBlockData;
|
||||||
VoxelType m_pHomogenousValue;
|
VoxelType m_pHomogenousValue;
|
||||||
bool m_bIsShared;
|
bool m_bIsShared;
|
||||||
bool m_bIsPotentiallySharable;
|
bool m_bIsPotentiallySharable;
|
||||||
};
|
};
|
||||||
|
|
||||||
template <typename VoxelType>
|
|
||||||
class ReferenceCountedBlockData
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
ReferenceCountedBlockData() : m_pBlockData(0), m_uReferenceCount(0) {}
|
|
||||||
|
|
||||||
BlockData<VoxelType>* m_pBlockData;
|
|
||||||
uint32 m_uReferenceCount;
|
|
||||||
};
|
|
||||||
|
|
||||||
template <typename VoxelType>
|
template <typename VoxelType>
|
||||||
class Volume
|
class Volume
|
||||||
{
|
{
|
||||||
@ -79,10 +72,10 @@ namespace PolyVox
|
|||||||
VolumeIterator<VoxelType> lastVoxel(void);
|
VolumeIterator<VoxelType> lastVoxel(void);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
BlockData<VoxelType>* getHomogenousBlockData(VoxelType tHomogenousValue) const;
|
boost::shared_ptr< BlockData<VoxelType> > getHomogenousBlockData(VoxelType tHomogenousValue) const;
|
||||||
|
|
||||||
Block<VoxelType>* m_pBlocks;
|
Block<VoxelType>* m_pBlocks;
|
||||||
mutable std::map<VoxelType, ReferenceCountedBlockData<VoxelType> > m_pHomogenousBlockData;
|
mutable std::map<VoxelType, boost::weak_ptr< BlockData<VoxelType> > > m_pHomogenousBlockData;
|
||||||
|
|
||||||
uint32 m_uNoOfBlocksInVolume;
|
uint32 m_uNoOfBlocksInVolume;
|
||||||
uint16 m_uSideLengthInBlocks;
|
uint16 m_uSideLengthInBlocks;
|
||||||
|
@ -102,7 +102,7 @@ namespace PolyVox
|
|||||||
template <typename VoxelType>
|
template <typename VoxelType>
|
||||||
Volume<VoxelType>::~Volume()
|
Volume<VoxelType>::~Volume()
|
||||||
{
|
{
|
||||||
for(uint32 i = 0; i < m_uNoOfBlocksInVolume; ++i)
|
/*for(uint32 i = 0; i < m_uNoOfBlocksInVolume; ++i)
|
||||||
{
|
{
|
||||||
if(m_pBlocks[i].m_bIsShared == false)
|
if(m_pBlocks[i].m_bIsShared == false)
|
||||||
{
|
{
|
||||||
@ -110,7 +110,7 @@ namespace PolyVox
|
|||||||
m_pBlocks[i].m_pBlockData = 0;
|
m_pBlocks[i].m_pBlockData = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
delete[] m_pBlocks;
|
delete[] m_pBlocks;*/
|
||||||
/*delete[] m_bIsShared;
|
/*delete[] m_bIsShared;
|
||||||
delete[] m_bIsPotentiallySharable;
|
delete[] m_bIsPotentiallySharable;
|
||||||
delete[] m_pHomogenousValue;*/
|
delete[] m_pHomogenousValue;*/
|
||||||
@ -153,7 +153,7 @@ namespace PolyVox
|
|||||||
const uint16 yOffset = uYPos - (blockY << m_uBlockSideLengthPower);
|
const uint16 yOffset = uYPos - (blockY << m_uBlockSideLengthPower);
|
||||||
const uint16 zOffset = uZPos - (blockZ << m_uBlockSideLengthPower);
|
const uint16 zOffset = uZPos - (blockZ << m_uBlockSideLengthPower);
|
||||||
|
|
||||||
const BlockData<VoxelType>* block = m_pBlocks
|
const boost::shared_ptr< BlockData<VoxelType> > block = m_pBlocks
|
||||||
[
|
[
|
||||||
blockX +
|
blockX +
|
||||||
blockY * m_uSideLengthInBlocks +
|
blockY * m_uSideLengthInBlocks +
|
||||||
@ -197,7 +197,8 @@ namespace PolyVox
|
|||||||
const VoxelType tHomogenousValue = m_pBlocks[uBlockIndex].m_pHomogenousValue;
|
const VoxelType tHomogenousValue = m_pBlocks[uBlockIndex].m_pHomogenousValue;
|
||||||
if(tHomogenousValue != tValue)
|
if(tHomogenousValue != tValue)
|
||||||
{
|
{
|
||||||
m_pBlocks[uBlockIndex].m_pBlockData = new BlockData<VoxelType>(m_uBlockSideLength);
|
boost::shared_ptr< BlockData<VoxelType> > temp(new BlockData<VoxelType>(m_uBlockSideLength));
|
||||||
|
m_pBlocks[uBlockIndex].m_pBlockData = temp;
|
||||||
m_pBlocks[uBlockIndex].m_bIsShared = false;
|
m_pBlocks[uBlockIndex].m_bIsShared = false;
|
||||||
m_pBlocks[uBlockIndex].m_pBlockData->fill(tHomogenousValue);
|
m_pBlocks[uBlockIndex].m_pBlockData->fill(tHomogenousValue);
|
||||||
m_pBlocks[uBlockIndex].m_pBlockData->setVoxelAt(xOffset,yOffset,zOffset, tValue);
|
m_pBlocks[uBlockIndex].m_pBlockData->setVoxelAt(xOffset,yOffset,zOffset, tValue);
|
||||||
@ -238,7 +239,7 @@ namespace PolyVox
|
|||||||
|
|
||||||
for(uint32 i = 0; i < m_uNoOfBlocksInVolume; ++i)
|
for(uint32 i = 0; i < m_uNoOfBlocksInVolume; ++i)
|
||||||
{
|
{
|
||||||
Block block = m_pBlocks[i];
|
Block<VoxelType> block = m_pBlocks[i];
|
||||||
if(block.m_bIsPotentiallySharable)
|
if(block.m_bIsPotentiallySharable)
|
||||||
{
|
{
|
||||||
bool isSharable = block.m_pBlockData->isHomogeneous();
|
bool isSharable = block.m_pBlockData->isHomogeneous();
|
||||||
@ -294,22 +295,24 @@ namespace PolyVox
|
|||||||
|
|
||||||
#pragma region Private Implementation
|
#pragma region Private Implementation
|
||||||
template <typename VoxelType>
|
template <typename VoxelType>
|
||||||
BlockData<VoxelType>* Volume<VoxelType>::getHomogenousBlockData(VoxelType tHomogenousValue) const
|
boost::shared_ptr< BlockData<VoxelType> > Volume<VoxelType>::getHomogenousBlockData(VoxelType tHomogenousValue) const
|
||||||
{
|
{
|
||||||
typename std::map<VoxelType, ReferenceCountedBlockData<VoxelType> >::iterator iterResult = m_pHomogenousBlockData.find(tHomogenousValue);
|
typename std::map<VoxelType, boost::weak_ptr< BlockData<VoxelType> > >::iterator iterResult = m_pHomogenousBlockData.find(tHomogenousValue);
|
||||||
if(iterResult == m_pHomogenousBlockData.end())
|
if(iterResult == m_pHomogenousBlockData.end())
|
||||||
{
|
{
|
||||||
ReferenceCountedBlockData<VoxelType> referenceCountedBlockData;
|
Block<VoxelType> block;
|
||||||
referenceCountedBlockData.m_pBlockData = new BlockData<VoxelType>(m_uBlockSideLength);
|
boost::shared_ptr< BlockData<VoxelType> > temp(new BlockData<VoxelType>(m_uBlockSideLength));
|
||||||
referenceCountedBlockData.m_uReferenceCount++;
|
block.m_pBlockData = temp;
|
||||||
referenceCountedBlockData.m_pBlockData->fill(tHomogenousValue);
|
//block.m_uReferenceCount++;
|
||||||
m_pHomogenousBlockData.insert(std::make_pair(tHomogenousValue, referenceCountedBlockData));
|
block.m_pBlockData->fill(tHomogenousValue);
|
||||||
return referenceCountedBlockData.m_pBlockData;
|
m_pHomogenousBlockData.insert(std::make_pair(tHomogenousValue, temp));
|
||||||
|
return block.m_pBlockData;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
iterResult->second.m_uReferenceCount++;
|
//iterResult->second.m_uReferenceCount++;
|
||||||
return iterResult->second.m_pBlockData;
|
boost::shared_ptr< BlockData<VoxelType> > result(iterResult->second);
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
|
@ -201,7 +201,7 @@ namespace PolyVox
|
|||||||
mBlockIndexInVolume = mXBlock +
|
mBlockIndexInVolume = mXBlock +
|
||||||
mYBlock * mVolume.m_uSideLengthInBlocks +
|
mYBlock * mVolume.m_uSideLengthInBlocks +
|
||||||
mZBlock * mVolume.m_uSideLengthInBlocks * mVolume.m_uSideLengthInBlocks;
|
mZBlock * mVolume.m_uSideLengthInBlocks * mVolume.m_uSideLengthInBlocks;
|
||||||
BlockData<VoxelType>* currentBlock = mVolume.m_pBlocks[mBlockIndexInVolume].m_pBlockData;
|
boost::shared_ptr< BlockData<VoxelType> > currentBlock = mVolume.m_pBlocks[mBlockIndexInVolume].m_pBlockData;
|
||||||
|
|
||||||
mVoxelIndexInBlock = mXPosInBlock +
|
mVoxelIndexInBlock = mXPosInBlock +
|
||||||
mYPosInBlock * mVolume.m_uBlockSideLength +
|
mYPosInBlock * mVolume.m_uBlockSideLength +
|
||||||
@ -257,7 +257,7 @@ namespace PolyVox
|
|||||||
mVoxelIndexInBlock = mXPosInBlock +
|
mVoxelIndexInBlock = mXPosInBlock +
|
||||||
mYPosInBlock * mVolume.m_uBlockSideLength +
|
mYPosInBlock * mVolume.m_uBlockSideLength +
|
||||||
mZPosInBlock * mVolume.m_uBlockSideLength * mVolume.m_uBlockSideLength;
|
mZPosInBlock * mVolume.m_uBlockSideLength * mVolume.m_uBlockSideLength;
|
||||||
BlockData<VoxelType>* currentBlock = mVolume.m_pBlocks[mBlockIndexInVolume];
|
boost::shared_ptr< BlockData<VoxelType> > currentBlock = mVolume.m_pBlocks[mBlockIndexInVolume];
|
||||||
mCurrentVoxel = currentBlock->m_tData + mVoxelIndexInBlock;
|
mCurrentVoxel = currentBlock->m_tData + mVoxelIndexInBlock;
|
||||||
|
|
||||||
mYPosInBlock++;
|
mYPosInBlock++;
|
||||||
|
23
library/include/boost/LICENSE_1_0.txt
Normal file
23
library/include/boost/LICENSE_1_0.txt
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
Boost Software License - Version 1.0 - August 17th, 2003
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person or organization
|
||||||
|
obtaining a copy of the software and accompanying documentation covered by
|
||||||
|
this license (the "Software") to use, reproduce, display, distribute,
|
||||||
|
execute, and transmit the Software, and to prepare derivative works of the
|
||||||
|
Software, and to permit third-parties to whom the Software is furnished to
|
||||||
|
do so, all subject to the following:
|
||||||
|
|
||||||
|
The copyright notices in the Software and this entire statement, including
|
||||||
|
the above license grant, this restriction and the following disclaimer,
|
||||||
|
must be included in all copies of the Software, in whole or in part, and
|
||||||
|
all derivative works of the Software, unless such copies or derivative
|
||||||
|
works are solely in the form of machine-executable object code generated by
|
||||||
|
a source language processor.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
|
||||||
|
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
|
||||||
|
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
|
||||||
|
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
DEALINGS IN THE SOFTWARE.
|
50
library/include/boost/assert.hpp
Normal file
50
library/include/boost/assert.hpp
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
//
|
||||||
|
// boost/assert.hpp - BOOST_ASSERT(expr)
|
||||||
|
//
|
||||||
|
// Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
|
||||||
|
// Copyright (c) 2007 Peter Dimov
|
||||||
|
//
|
||||||
|
// 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)
|
||||||
|
//
|
||||||
|
// Note: There are no include guards. This is intentional.
|
||||||
|
//
|
||||||
|
// See http://www.boost.org/libs/utility/assert.html for documentation.
|
||||||
|
//
|
||||||
|
|
||||||
|
#undef BOOST_ASSERT
|
||||||
|
|
||||||
|
#if defined(BOOST_DISABLE_ASSERTS)
|
||||||
|
|
||||||
|
# define BOOST_ASSERT(expr) ((void)0)
|
||||||
|
|
||||||
|
#elif defined(BOOST_ENABLE_ASSERT_HANDLER)
|
||||||
|
|
||||||
|
#include <boost/current_function.hpp>
|
||||||
|
|
||||||
|
namespace boost
|
||||||
|
{
|
||||||
|
|
||||||
|
void assertion_failed(char const * expr, char const * function, char const * file, long line); // user defined
|
||||||
|
|
||||||
|
} // namespace boost
|
||||||
|
|
||||||
|
#define BOOST_ASSERT(expr) ((expr)? ((void)0): ::boost::assertion_failed(#expr, BOOST_CURRENT_FUNCTION, __FILE__, __LINE__))
|
||||||
|
|
||||||
|
#else
|
||||||
|
# include <assert.h> // .h to support old libraries w/o <cassert> - effect is the same
|
||||||
|
# define BOOST_ASSERT(expr) assert(expr)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#undef BOOST_VERIFY
|
||||||
|
|
||||||
|
#if defined(BOOST_DISABLE_ASSERTS) || ( !defined(BOOST_ENABLE_ASSERT_HANDLER) && defined(NDEBUG) )
|
||||||
|
|
||||||
|
# define BOOST_VERIFY(expr) ((void)(expr))
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
# define BOOST_VERIFY(expr) BOOST_ASSERT(expr)
|
||||||
|
|
||||||
|
#endif
|
69
library/include/boost/checked_delete.hpp
Normal file
69
library/include/boost/checked_delete.hpp
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
#ifndef BOOST_CHECKED_DELETE_HPP_INCLUDED
|
||||||
|
#define BOOST_CHECKED_DELETE_HPP_INCLUDED
|
||||||
|
|
||||||
|
// MS compatible compilers support #pragma once
|
||||||
|
|
||||||
|
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
|
||||||
|
# pragma once
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// boost/checked_delete.hpp
|
||||||
|
//
|
||||||
|
// Copyright (c) 2002, 2003 Peter Dimov
|
||||||
|
// Copyright (c) 2003 Daniel Frey
|
||||||
|
// Copyright (c) 2003 Howard Hinnant
|
||||||
|
//
|
||||||
|
// 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)
|
||||||
|
//
|
||||||
|
// See http://www.boost.org/libs/utility/checked_delete.html for documentation.
|
||||||
|
//
|
||||||
|
|
||||||
|
namespace boost
|
||||||
|
{
|
||||||
|
|
||||||
|
// verify that types are complete for increased safety
|
||||||
|
|
||||||
|
template<class T> inline void checked_delete(T * x)
|
||||||
|
{
|
||||||
|
// intentionally complex - simplification causes regressions
|
||||||
|
typedef char type_must_be_complete[ sizeof(T)? 1: -1 ];
|
||||||
|
(void) sizeof(type_must_be_complete);
|
||||||
|
delete x;
|
||||||
|
}
|
||||||
|
|
||||||
|
template<class T> inline void checked_array_delete(T * x)
|
||||||
|
{
|
||||||
|
typedef char type_must_be_complete[ sizeof(T)? 1: -1 ];
|
||||||
|
(void) sizeof(type_must_be_complete);
|
||||||
|
delete [] x;
|
||||||
|
}
|
||||||
|
|
||||||
|
template<class T> struct checked_deleter
|
||||||
|
{
|
||||||
|
typedef void result_type;
|
||||||
|
typedef T * argument_type;
|
||||||
|
|
||||||
|
void operator()(T * x) const
|
||||||
|
{
|
||||||
|
// boost:: disables ADL
|
||||||
|
boost::checked_delete(x);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
template<class T> struct checked_array_deleter
|
||||||
|
{
|
||||||
|
typedef void result_type;
|
||||||
|
typedef T * argument_type;
|
||||||
|
|
||||||
|
void operator()(T * x) const
|
||||||
|
{
|
||||||
|
boost::checked_array_delete(x);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace boost
|
||||||
|
|
||||||
|
#endif // #ifndef BOOST_CHECKED_DELETE_HPP_INCLUDED
|
70
library/include/boost/config.hpp
Normal file
70
library/include/boost/config.hpp
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
// Boost config.hpp configuration header file ------------------------------//
|
||||||
|
|
||||||
|
// (C) Copyright John Maddock 2002.
|
||||||
|
// 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/config for most recent version.
|
||||||
|
|
||||||
|
// Boost config.hpp policy and rationale documentation has been moved to
|
||||||
|
// http://www.boost.org/libs/config
|
||||||
|
//
|
||||||
|
// CAUTION: This file is intended to be completely stable -
|
||||||
|
// DO NOT MODIFY THIS FILE!
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef BOOST_CONFIG_HPP
|
||||||
|
#define BOOST_CONFIG_HPP
|
||||||
|
|
||||||
|
// if we don't have a user config, then use the default location:
|
||||||
|
#if !defined(BOOST_USER_CONFIG) && !defined(BOOST_NO_USER_CONFIG)
|
||||||
|
# define BOOST_USER_CONFIG <boost/config/user.hpp>
|
||||||
|
#endif
|
||||||
|
// include it first:
|
||||||
|
#ifdef BOOST_USER_CONFIG
|
||||||
|
# include BOOST_USER_CONFIG
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// if we don't have a compiler config set, try and find one:
|
||||||
|
#if !defined(BOOST_COMPILER_CONFIG) && !defined(BOOST_NO_COMPILER_CONFIG) && !defined(BOOST_NO_CONFIG)
|
||||||
|
# include <boost/config/select_compiler_config.hpp>
|
||||||
|
#endif
|
||||||
|
// if we have a compiler config, include it now:
|
||||||
|
#ifdef BOOST_COMPILER_CONFIG
|
||||||
|
# include BOOST_COMPILER_CONFIG
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// if we don't have a std library config set, try and find one:
|
||||||
|
#if !defined(BOOST_STDLIB_CONFIG) && !defined(BOOST_NO_STDLIB_CONFIG) && !defined(BOOST_NO_CONFIG)
|
||||||
|
# include <boost/config/select_stdlib_config.hpp>
|
||||||
|
#endif
|
||||||
|
// if we have a std library config, include it now:
|
||||||
|
#ifdef BOOST_STDLIB_CONFIG
|
||||||
|
# include BOOST_STDLIB_CONFIG
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// if we don't have a platform config set, try and find one:
|
||||||
|
#if !defined(BOOST_PLATFORM_CONFIG) && !defined(BOOST_NO_PLATFORM_CONFIG) && !defined(BOOST_NO_CONFIG)
|
||||||
|
# include <boost/config/select_platform_config.hpp>
|
||||||
|
#endif
|
||||||
|
// if we have a platform config, include it now:
|
||||||
|
#ifdef BOOST_PLATFORM_CONFIG
|
||||||
|
# include BOOST_PLATFORM_CONFIG
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// get config suffix code:
|
||||||
|
#include <boost/config/suffix.hpp>
|
||||||
|
|
||||||
|
#endif // BOOST_CONFIG_HPP
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
27
library/include/boost/config/abi/borland_prefix.hpp
Normal file
27
library/include/boost/config/abi/borland_prefix.hpp
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
// (C) Copyright John Maddock 2003.
|
||||||
|
// 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)
|
||||||
|
|
||||||
|
// for C++ Builder the following options effect the ABI:
|
||||||
|
//
|
||||||
|
// -b (on or off - effect emum sizes)
|
||||||
|
// -Vx (on or off - empty members)
|
||||||
|
// -Ve (on or off - empty base classes)
|
||||||
|
// -aX (alignment - 5 options).
|
||||||
|
// -pX (Calling convention - 4 options)
|
||||||
|
// -VmX (member pointer size and layout - 5 options)
|
||||||
|
// -VC (on or off, changes name mangling)
|
||||||
|
// -Vl (on or off, changes struct layout).
|
||||||
|
|
||||||
|
// In addition the following warnings are sufficiently annoying (and
|
||||||
|
// unfixable) to have them turned off by default:
|
||||||
|
//
|
||||||
|
// 8027 - functions containing [for|while] loops are not expanded inline
|
||||||
|
// 8026 - functions taking class by value arguments are not expanded inline
|
||||||
|
|
||||||
|
#pragma nopushoptwarn
|
||||||
|
# pragma option push -Vx -Ve -a8 -b -pc -Vmv -VC- -Vl- -w-8027 -w-8026
|
||||||
|
|
||||||
|
|
||||||
|
|
12
library/include/boost/config/abi/borland_suffix.hpp
Normal file
12
library/include/boost/config/abi/borland_suffix.hpp
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
// (C) Copyright John Maddock 2003.
|
||||||
|
// 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)
|
||||||
|
|
||||||
|
# pragma option pop
|
||||||
|
#pragma nopushoptwarn
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
22
library/include/boost/config/abi/msvc_prefix.hpp
Normal file
22
library/include/boost/config/abi/msvc_prefix.hpp
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
// (C) Copyright John Maddock 2003.
|
||||||
|
// 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)
|
||||||
|
|
||||||
|
//
|
||||||
|
// Boost binaries are built with the compiler's default ABI settings,
|
||||||
|
// if the user changes their default alignment in the VS IDE then their
|
||||||
|
// code will no longer be binary compatible with the bjam built binaries
|
||||||
|
// unless this header is included to force Boost code into a consistent ABI.
|
||||||
|
//
|
||||||
|
// Note that inclusion of this header is only necessary for libraries with
|
||||||
|
// separate source, header only libraries DO NOT need this as long as all
|
||||||
|
// translation units are built with the same options.
|
||||||
|
//
|
||||||
|
#if defined(_M_X64)
|
||||||
|
# pragma pack(push,16)
|
||||||
|
#else
|
||||||
|
# pragma pack(push,8)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
8
library/include/boost/config/abi/msvc_suffix.hpp
Normal file
8
library/include/boost/config/abi/msvc_suffix.hpp
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
// (C) Copyright John Maddock 2003.
|
||||||
|
// 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)
|
||||||
|
|
||||||
|
#pragma pack(pop)
|
||||||
|
|
||||||
|
|
25
library/include/boost/config/abi_prefix.hpp
Normal file
25
library/include/boost/config/abi_prefix.hpp
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
// abi_prefix header -------------------------------------------------------//
|
||||||
|
|
||||||
|
// (c) Copyright John Maddock 2003
|
||||||
|
|
||||||
|
// 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).
|
||||||
|
|
||||||
|
#ifndef BOOST_CONFIG_ABI_PREFIX_HPP
|
||||||
|
# define BOOST_CONFIG_ABI_PREFIX_HPP
|
||||||
|
#else
|
||||||
|
# error double inclusion of header boost/config/abi_prefix.hpp is an error
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <boost/config.hpp>
|
||||||
|
|
||||||
|
// this must occur after all other includes and before any code appears:
|
||||||
|
#ifdef BOOST_HAS_ABI_HEADERS
|
||||||
|
# include BOOST_ABI_PREFIX
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined( __BORLANDC__ )
|
||||||
|
#pragma nopushoptwarn
|
||||||
|
#endif
|
||||||
|
|
27
library/include/boost/config/abi_suffix.hpp
Normal file
27
library/include/boost/config/abi_suffix.hpp
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
// abi_sufffix header -------------------------------------------------------//
|
||||||
|
|
||||||
|
// (c) Copyright John Maddock 2003
|
||||||
|
|
||||||
|
// 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).
|
||||||
|
|
||||||
|
// This header should be #included AFTER code that was preceded by a #include
|
||||||
|
// <boost/config/abi_prefix.hpp>.
|
||||||
|
|
||||||
|
#ifndef BOOST_CONFIG_ABI_PREFIX_HPP
|
||||||
|
# error Header boost/config/abi_suffix.hpp must only be used after boost/config/abi_prefix.hpp
|
||||||
|
#else
|
||||||
|
# undef BOOST_CONFIG_ABI_PREFIX_HPP
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// the suffix header occurs after all of our code:
|
||||||
|
#ifdef BOOST_HAS_ABI_HEADERS
|
||||||
|
# include BOOST_ABI_SUFFIX
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined( __BORLANDC__ )
|
||||||
|
#pragma nopushoptwarn
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
373
library/include/boost/config/auto_link.hpp
Normal file
373
library/include/boost/config/auto_link.hpp
Normal file
@ -0,0 +1,373 @@
|
|||||||
|
// (C) Copyright John Maddock 2003.
|
||||||
|
// 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)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* LOCATION: see http://www.boost.org for most recent version.
|
||||||
|
* FILE auto_link.hpp
|
||||||
|
* VERSION see <boost/version.hpp>
|
||||||
|
* DESCRIPTION: Automatic library inclusion for Borland/Microsoft compilers.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
|
||||||
|
USAGE:
|
||||||
|
~~~~~~
|
||||||
|
|
||||||
|
Before including this header you must define one or more of define the following macros:
|
||||||
|
|
||||||
|
BOOST_LIB_NAME: Required: A string containing the basename of the library,
|
||||||
|
for example boost_regex.
|
||||||
|
BOOST_LIB_TOOLSET: Optional: the base name of the toolset.
|
||||||
|
BOOST_DYN_LINK: Optional: when set link to dll rather than static library.
|
||||||
|
BOOST_LIB_DIAGNOSTIC: Optional: when set the header will print out the name
|
||||||
|
of the library selected (useful for debugging).
|
||||||
|
BOOST_AUTO_LINK_NOMANGLE: Specifies that we should link to BOOST_LIB_NAME.lib,
|
||||||
|
rather than a mangled-name version.
|
||||||
|
|
||||||
|
These macros will be undef'ed at the end of the header, further this header
|
||||||
|
has no include guards - so be sure to include it only once from your library!
|
||||||
|
|
||||||
|
Algorithm:
|
||||||
|
~~~~~~~~~~
|
||||||
|
|
||||||
|
Libraries for Borland and Microsoft compilers are automatically
|
||||||
|
selected here, the name of the lib is selected according to the following
|
||||||
|
formula:
|
||||||
|
|
||||||
|
BOOST_LIB_PREFIX
|
||||||
|
+ BOOST_LIB_NAME
|
||||||
|
+ "_"
|
||||||
|
+ BOOST_LIB_TOOLSET
|
||||||
|
+ BOOST_LIB_THREAD_OPT
|
||||||
|
+ BOOST_LIB_RT_OPT
|
||||||
|
"-"
|
||||||
|
+ BOOST_LIB_VERSION
|
||||||
|
|
||||||
|
These are defined as:
|
||||||
|
|
||||||
|
BOOST_LIB_PREFIX: "lib" for static libraries otherwise "".
|
||||||
|
|
||||||
|
BOOST_LIB_NAME: The base name of the lib ( for example boost_regex).
|
||||||
|
|
||||||
|
BOOST_LIB_TOOLSET: The compiler toolset name (vc6, vc7, bcb5 etc).
|
||||||
|
|
||||||
|
BOOST_LIB_THREAD_OPT: "-mt" for multithread builds, otherwise nothing.
|
||||||
|
|
||||||
|
BOOST_LIB_RT_OPT: A suffix that indicates the runtime library used,
|
||||||
|
contains one or more of the following letters after
|
||||||
|
a hiphen:
|
||||||
|
|
||||||
|
s static runtime (dynamic if not present).
|
||||||
|
d debug build (release if not present).
|
||||||
|
g debug/diagnostic runtime (release if not present).
|
||||||
|
p STLPort Build.
|
||||||
|
|
||||||
|
BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y.
|
||||||
|
|
||||||
|
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
# ifndef BOOST_CONFIG_HPP
|
||||||
|
# include <boost/config.hpp>
|
||||||
|
# endif
|
||||||
|
#elif defined(_MSC_VER) && !defined(__MWERKS__) && !defined(__EDG_VERSION__)
|
||||||
|
//
|
||||||
|
// C language compatability (no, honestly)
|
||||||
|
//
|
||||||
|
# define BOOST_MSVC _MSC_VER
|
||||||
|
# define BOOST_STRINGIZE(X) BOOST_DO_STRINGIZE(X)
|
||||||
|
# define BOOST_DO_STRINGIZE(X) #X
|
||||||
|
#endif
|
||||||
|
//
|
||||||
|
// Only include what follows for known and supported compilers:
|
||||||
|
//
|
||||||
|
#if defined(BOOST_MSVC) \
|
||||||
|
|| defined(__BORLANDC__) \
|
||||||
|
|| (defined(__MWERKS__) && defined(_WIN32) && (__MWERKS__ >= 0x3000)) \
|
||||||
|
|| (defined(__ICL) && defined(_MSC_EXTENSIONS) && (_MSC_VER >= 1200))
|
||||||
|
|
||||||
|
#ifndef BOOST_VERSION_HPP
|
||||||
|
# include <boost/version.hpp>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef BOOST_LIB_NAME
|
||||||
|
# error "Macro BOOST_LIB_NAME not set (internal error)"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// error check:
|
||||||
|
//
|
||||||
|
#if defined(__MSVC_RUNTIME_CHECKS) && !defined(_DEBUG)
|
||||||
|
# pragma message("Using the /RTC option without specifying a debug runtime will lead to linker errors")
|
||||||
|
# pragma message("Hint: go to the code generation options and switch to one of the debugging runtimes")
|
||||||
|
# error "Incompatible build options"
|
||||||
|
#endif
|
||||||
|
//
|
||||||
|
// select toolset if not defined already:
|
||||||
|
//
|
||||||
|
#ifndef BOOST_LIB_TOOLSET
|
||||||
|
// Note: no compilers before 1200 are supported
|
||||||
|
#if defined(BOOST_MSVC) && (BOOST_MSVC < 1300)
|
||||||
|
|
||||||
|
# ifdef UNDER_CE
|
||||||
|
// vc6:
|
||||||
|
# define BOOST_LIB_TOOLSET "evc4"
|
||||||
|
# else
|
||||||
|
// vc6:
|
||||||
|
# define BOOST_LIB_TOOLSET "vc6"
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#elif defined(BOOST_MSVC) && (BOOST_MSVC == 1300)
|
||||||
|
|
||||||
|
// vc7:
|
||||||
|
# define BOOST_LIB_TOOLSET "vc7"
|
||||||
|
|
||||||
|
#elif defined(BOOST_MSVC) && (BOOST_MSVC == 1310)
|
||||||
|
|
||||||
|
// vc71:
|
||||||
|
# define BOOST_LIB_TOOLSET "vc71"
|
||||||
|
|
||||||
|
#elif defined(BOOST_MSVC) && (BOOST_MSVC == 1400)
|
||||||
|
|
||||||
|
// vc80:
|
||||||
|
# define BOOST_LIB_TOOLSET "vc80"
|
||||||
|
|
||||||
|
#elif defined(BOOST_MSVC) && (BOOST_MSVC == 1500)
|
||||||
|
|
||||||
|
// vc90:
|
||||||
|
# define BOOST_LIB_TOOLSET "vc90"
|
||||||
|
|
||||||
|
#elif defined(BOOST_MSVC) && (BOOST_MSVC >= 1600)
|
||||||
|
|
||||||
|
// vc10:
|
||||||
|
# define BOOST_LIB_TOOLSET "vc100"
|
||||||
|
|
||||||
|
#elif defined(__BORLANDC__)
|
||||||
|
|
||||||
|
// CBuilder 6:
|
||||||
|
# define BOOST_LIB_TOOLSET "bcb"
|
||||||
|
|
||||||
|
#elif defined(__ICL)
|
||||||
|
|
||||||
|
// Intel C++, no version number:
|
||||||
|
# define BOOST_LIB_TOOLSET "iw"
|
||||||
|
|
||||||
|
#elif defined(__MWERKS__) && (__MWERKS__ <= 0x31FF )
|
||||||
|
|
||||||
|
// Metrowerks CodeWarrior 8.x
|
||||||
|
# define BOOST_LIB_TOOLSET "cw8"
|
||||||
|
|
||||||
|
#elif defined(__MWERKS__) && (__MWERKS__ <= 0x32FF )
|
||||||
|
|
||||||
|
// Metrowerks CodeWarrior 9.x
|
||||||
|
# define BOOST_LIB_TOOLSET "cw9"
|
||||||
|
|
||||||
|
#endif
|
||||||
|
#endif // BOOST_LIB_TOOLSET
|
||||||
|
|
||||||
|
//
|
||||||
|
// select thread opt:
|
||||||
|
//
|
||||||
|
#if defined(_MT) || defined(__MT__)
|
||||||
|
# define BOOST_LIB_THREAD_OPT "-mt"
|
||||||
|
#else
|
||||||
|
# define BOOST_LIB_THREAD_OPT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(_MSC_VER) || defined(__MWERKS__)
|
||||||
|
|
||||||
|
# ifdef _DLL
|
||||||
|
|
||||||
|
# if (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) && (defined(_STLP_OWN_IOSTREAMS) || defined(__STL_OWN_IOSTREAMS))
|
||||||
|
|
||||||
|
# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
|
||||||
|
# define BOOST_LIB_RT_OPT "-gdp"
|
||||||
|
# elif defined(_DEBUG)
|
||||||
|
# define BOOST_LIB_RT_OPT "-gdp"
|
||||||
|
# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
|
||||||
|
# error "Build options aren't compatible with pre-built libraries"
|
||||||
|
# else
|
||||||
|
# define BOOST_LIB_RT_OPT "-p"
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# elif defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
|
||||||
|
|
||||||
|
# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
|
||||||
|
# define BOOST_LIB_RT_OPT "-gdpn"
|
||||||
|
# elif defined(_DEBUG)
|
||||||
|
# define BOOST_LIB_RT_OPT "-gdpn"
|
||||||
|
# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
|
||||||
|
# error "Build options aren't compatible with pre-built libraries"
|
||||||
|
# else
|
||||||
|
# define BOOST_LIB_RT_OPT "-pn"
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# else
|
||||||
|
|
||||||
|
# if defined(_DEBUG)
|
||||||
|
# define BOOST_LIB_RT_OPT "-gd"
|
||||||
|
# else
|
||||||
|
# define BOOST_LIB_RT_OPT
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# else
|
||||||
|
|
||||||
|
# if (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) && (defined(_STLP_OWN_IOSTREAMS) || defined(__STL_OWN_IOSTREAMS))
|
||||||
|
|
||||||
|
# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
|
||||||
|
# define BOOST_LIB_RT_OPT "-sgdp"
|
||||||
|
# elif defined(_DEBUG)
|
||||||
|
# define BOOST_LIB_RT_OPT "-sgdp"
|
||||||
|
# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
|
||||||
|
# error "Build options aren't compatible with pre-built libraries"
|
||||||
|
# else
|
||||||
|
# define BOOST_LIB_RT_OPT "-sp"
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# elif defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
|
||||||
|
|
||||||
|
# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
|
||||||
|
# define BOOST_LIB_RT_OPT "-sgdpn"
|
||||||
|
# elif defined(_DEBUG)
|
||||||
|
# define BOOST_LIB_RT_OPT "-sgdpn"
|
||||||
|
# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
|
||||||
|
# error "Build options aren't compatible with pre-built libraries"
|
||||||
|
# else
|
||||||
|
# define BOOST_LIB_RT_OPT "-spn"
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# else
|
||||||
|
|
||||||
|
# if defined(_DEBUG)
|
||||||
|
# define BOOST_LIB_RT_OPT "-sgd"
|
||||||
|
# else
|
||||||
|
# define BOOST_LIB_RT_OPT "-s"
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#elif defined(__BORLANDC__)
|
||||||
|
|
||||||
|
//
|
||||||
|
// figure out whether we want the debug builds or not:
|
||||||
|
//
|
||||||
|
#if __BORLANDC__ > 0x561
|
||||||
|
#pragma defineonoption BOOST_BORLAND_DEBUG -v
|
||||||
|
#endif
|
||||||
|
//
|
||||||
|
// sanity check:
|
||||||
|
//
|
||||||
|
#if defined(__STL_DEBUG) || defined(_STLP_DEBUG)
|
||||||
|
#error "Pre-built versions of the Boost libraries are not provided in STLPort-debug form"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
# ifdef _RTLDLL
|
||||||
|
|
||||||
|
# ifdef BOOST_BORLAND_DEBUG
|
||||||
|
# define BOOST_LIB_RT_OPT "-d"
|
||||||
|
# else
|
||||||
|
# define BOOST_LIB_RT_OPT
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# else
|
||||||
|
|
||||||
|
# ifdef BOOST_BORLAND_DEBUG
|
||||||
|
# define BOOST_LIB_RT_OPT "-sd"
|
||||||
|
# else
|
||||||
|
# define BOOST_LIB_RT_OPT "-s"
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// select linkage opt:
|
||||||
|
//
|
||||||
|
#if (defined(_DLL) || defined(_RTLDLL)) && defined(BOOST_DYN_LINK)
|
||||||
|
# define BOOST_LIB_PREFIX
|
||||||
|
#elif defined(BOOST_DYN_LINK)
|
||||||
|
# error "Mixing a dll boost library with a static runtime is a really bad idea..."
|
||||||
|
#else
|
||||||
|
# define BOOST_LIB_PREFIX "lib"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// now include the lib:
|
||||||
|
//
|
||||||
|
#if defined(BOOST_LIB_NAME) \
|
||||||
|
&& defined(BOOST_LIB_PREFIX) \
|
||||||
|
&& defined(BOOST_LIB_TOOLSET) \
|
||||||
|
&& defined(BOOST_LIB_THREAD_OPT) \
|
||||||
|
&& defined(BOOST_LIB_RT_OPT) \
|
||||||
|
&& defined(BOOST_LIB_VERSION)
|
||||||
|
|
||||||
|
#ifndef BOOST_AUTO_LINK_NOMANGLE
|
||||||
|
# pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT "-" BOOST_LIB_VERSION ".lib")
|
||||||
|
# ifdef BOOST_LIB_DIAGNOSTIC
|
||||||
|
# pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT "-" BOOST_LIB_VERSION ".lib")
|
||||||
|
# endif
|
||||||
|
#else
|
||||||
|
# pragma comment(lib, BOOST_STRINGIZE(BOOST_LIB_NAME) ".lib")
|
||||||
|
# ifdef BOOST_LIB_DIAGNOSTIC
|
||||||
|
# pragma message ("Linking to lib file: " BOOST_STRINGIZE(BOOST_LIB_NAME) ".lib")
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#else
|
||||||
|
# error "some required macros where not defined (internal logic error)."
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#endif // _MSC_VER || __BORLANDC__
|
||||||
|
|
||||||
|
//
|
||||||
|
// finally undef any macros we may have set:
|
||||||
|
//
|
||||||
|
#ifdef BOOST_LIB_PREFIX
|
||||||
|
# undef BOOST_LIB_PREFIX
|
||||||
|
#endif
|
||||||
|
#if defined(BOOST_LIB_NAME)
|
||||||
|
# undef BOOST_LIB_NAME
|
||||||
|
#endif
|
||||||
|
// Don't undef this one: it can be set by the user and should be the
|
||||||
|
// same for all libraries:
|
||||||
|
//#if defined(BOOST_LIB_TOOLSET)
|
||||||
|
//# undef BOOST_LIB_TOOLSET
|
||||||
|
//#endif
|
||||||
|
#if defined(BOOST_LIB_THREAD_OPT)
|
||||||
|
# undef BOOST_LIB_THREAD_OPT
|
||||||
|
#endif
|
||||||
|
#if defined(BOOST_LIB_RT_OPT)
|
||||||
|
# undef BOOST_LIB_RT_OPT
|
||||||
|
#endif
|
||||||
|
#if defined(BOOST_LIB_LINK_OPT)
|
||||||
|
# undef BOOST_LIB_LINK_OPT
|
||||||
|
#endif
|
||||||
|
#if defined(BOOST_LIB_DEBUG_OPT)
|
||||||
|
# undef BOOST_LIB_DEBUG_OPT
|
||||||
|
#endif
|
||||||
|
#if defined(BOOST_DYN_LINK)
|
||||||
|
# undef BOOST_DYN_LINK
|
||||||
|
#endif
|
||||||
|
#if defined(BOOST_AUTO_LINK_NOMANGLE)
|
||||||
|
# undef BOOST_AUTO_LINK_NOMANGLE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
245
library/include/boost/config/compiler/borland.hpp
Normal file
245
library/include/boost/config/compiler/borland.hpp
Normal file
@ -0,0 +1,245 @@
|
|||||||
|
// (C) Copyright John Maddock 2001 - 2003.
|
||||||
|
// (C) Copyright David Abrahams 2002 - 2003.
|
||||||
|
// (C) Copyright Aleksey Gurtovoy 2002.
|
||||||
|
// 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 for most recent version.
|
||||||
|
|
||||||
|
// Borland C++ compiler setup:
|
||||||
|
|
||||||
|
//
|
||||||
|
// versions check:
|
||||||
|
// we don't support Borland prior to version 5.4:
|
||||||
|
#if __BORLANDC__ < 0x540
|
||||||
|
# error "Compiler not supported or configured - please reconfigure"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// last known and checked version is 0x600 (Builder X preview)
|
||||||
|
// or 0x593 (CodeGear C++ Builder 2007 December 2007 update):
|
||||||
|
#if (__BORLANDC__ > 0x593) && (__BORLANDC__ != 0x600)
|
||||||
|
//# if defined(BOOST_ASSERT_CONFIG)
|
||||||
|
# error "Unknown compiler version - please run the configure tests and report the results"
|
||||||
|
//# else
|
||||||
|
//# pragma message( "Unknown compiler version - please run the configure tests and report the results")
|
||||||
|
//# endif
|
||||||
|
#elif (__BORLANDC__ == 0x600)
|
||||||
|
# error "CBuilderX preview compiler is no longer supported"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Support macros to help with standard library detection
|
||||||
|
#if (__BORLANDC__ < 0x560) || defined(_USE_OLD_RW_STL)
|
||||||
|
# define BOOST_BCB_WITH_ROGUE_WAVE
|
||||||
|
#elif __BORLANDC__ < 0x570
|
||||||
|
# define BOOST_BCB_WITH_STLPORT
|
||||||
|
#else
|
||||||
|
# define BOOST_BCB_WITH_DINKUMWARE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Version 5.0 and below:
|
||||||
|
# if __BORLANDC__ <= 0x0550
|
||||||
|
// Borland C++Builder 4 and 5:
|
||||||
|
# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
|
||||||
|
# if __BORLANDC__ == 0x0550
|
||||||
|
// Borland C++Builder 5, command-line compiler 5.5:
|
||||||
|
# define BOOST_NO_OPERATORS_IN_NAMESPACE
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
|
// Version 5.51 and below:
|
||||||
|
#if (__BORLANDC__ <= 0x551)
|
||||||
|
# define BOOST_NO_CV_SPECIALIZATIONS
|
||||||
|
# define BOOST_NO_CV_VOID_SPECIALIZATIONS
|
||||||
|
# define BOOST_NO_DEDUCED_TYPENAME
|
||||||
|
// workaround for missing WCHAR_MAX/WCHAR_MIN:
|
||||||
|
#include <climits>
|
||||||
|
#include <cwchar>
|
||||||
|
#ifndef WCHAR_MAX
|
||||||
|
# define WCHAR_MAX 0xffff
|
||||||
|
#endif
|
||||||
|
#ifndef WCHAR_MIN
|
||||||
|
# define WCHAR_MIN 0
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Borland C++ Builder 6 and below:
|
||||||
|
#if (__BORLANDC__ <= 0x564)
|
||||||
|
# define BOOST_NO_INTEGRAL_INT64_T
|
||||||
|
|
||||||
|
# ifdef NDEBUG
|
||||||
|
// fix broken <cstring> so that Boost.test works:
|
||||||
|
# include <cstring>
|
||||||
|
# undef strcmp
|
||||||
|
# endif
|
||||||
|
// fix broken errno declaration:
|
||||||
|
# include <errno.h>
|
||||||
|
# ifndef errno
|
||||||
|
# define errno errno
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// new bug in 5.61:
|
||||||
|
#if (__BORLANDC__ >= 0x561) && (__BORLANDC__ <= 0x580)
|
||||||
|
// this seems to be needed by the command line compiler, but not the IDE:
|
||||||
|
# define BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Borland C++ Builder 2006 Update 2 and below:
|
||||||
|
#if (__BORLANDC__ <= 0x582)
|
||||||
|
# define BOOST_NO_SFINAE
|
||||||
|
# define BOOST_BCB_PARTIAL_SPECIALIZATION_BUG
|
||||||
|
# define BOOST_NO_TEMPLATE_TEMPLATES
|
||||||
|
|
||||||
|
# define BOOST_NO_PRIVATE_IN_AGGREGATE
|
||||||
|
|
||||||
|
# ifdef _WIN32
|
||||||
|
# define BOOST_NO_SWPRINTF
|
||||||
|
# elif defined(linux) || defined(__linux__) || defined(__linux)
|
||||||
|
// we should really be able to do without this
|
||||||
|
// but the wcs* functions aren't imported into std::
|
||||||
|
# define BOOST_NO_STDC_NAMESPACE
|
||||||
|
// _CPPUNWIND doesn't get automatically set for some reason:
|
||||||
|
# pragma defineonoption BOOST_CPPUNWIND -x
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Borland C++ Builder 2007 December 2007 Update and below:
|
||||||
|
#if (__BORLANDC__ <= 0x593)
|
||||||
|
// we shouldn't really need this - but too many things choke
|
||||||
|
// without it, this needs more investigation:
|
||||||
|
# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
|
||||||
|
# define BOOST_NO_IS_ABSTRACT
|
||||||
|
# define BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS
|
||||||
|
|
||||||
|
// Temporary workaround
|
||||||
|
#define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Borland C++ Builder 2008 and below:
|
||||||
|
#if (__BORLANDC__ <= 0x601)
|
||||||
|
# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
|
||||||
|
# define BOOST_ILLEGAL_CV_REFERENCES
|
||||||
|
# define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS
|
||||||
|
# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
|
||||||
|
# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
|
||||||
|
# define BOOST_NO_USING_TEMPLATE
|
||||||
|
# define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Positive Feature detection
|
||||||
|
//
|
||||||
|
// Borland C++ Builder 2008 and below:
|
||||||
|
#if (__BORLANDC__ >= 0x599)
|
||||||
|
# pragma defineonoption BOOST_CODEGEAR_0X_SUPPORT -Ax
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined( BOOST_CODEGEAR_0X_SUPPORT )
|
||||||
|
# #if __BORLANDC__ >= 0x610
|
||||||
|
# define BOOST_HAS_ALIGNOF
|
||||||
|
# define BOOST_HAS_CHAR16_T
|
||||||
|
# define BOOST_HAS_CHAR32_T
|
||||||
|
# define BOOST_HAS_DECLTYPE
|
||||||
|
//# define BOOST_HAS_DEFAULTED_FN
|
||||||
|
//# define BOOST_HAS_DELETED_FN
|
||||||
|
# define BOOST_HAS_EXPLICIT_CONVERSION_OPS
|
||||||
|
//# define BOOST_HAS_NULLPTR
|
||||||
|
//# define BOOST_HAS_RAW_STRING
|
||||||
|
# define BOOST_HAS_REF_QUALIFIER
|
||||||
|
# define BOOST_HAS_RVALUE_REFS
|
||||||
|
//# define BOOST_HAS_SCOPED_ENUM
|
||||||
|
# define BOOST_HAS_STATIC_ASSERT
|
||||||
|
//# define BOOST_HAS_VARIADIC_TMPL
|
||||||
|
# #endif //__BORLANDC__ >= 0x610
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define BOOST_NO_INITIALIZER_LISTS
|
||||||
|
|
||||||
|
#if __BORLANDC__ >= 0x590
|
||||||
|
# define BOOST_HAS_TR1_HASH
|
||||||
|
|
||||||
|
# define BOOST_HAS_MACRO_USE_FACET
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Post 0x561 we have long long and stdint.h:
|
||||||
|
#if __BORLANDC__ >= 0x561
|
||||||
|
# ifndef __NO_LONG_LONG
|
||||||
|
# define BOOST_HAS_LONG_LONG
|
||||||
|
# endif
|
||||||
|
// On non-Win32 platforms let the platform config figure this out:
|
||||||
|
# ifdef _WIN32
|
||||||
|
# define BOOST_HAS_STDINT_H
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Borland C++Builder 6 defaults to using STLPort. If _USE_OLD_RW_STL is
|
||||||
|
// defined, then we have 0x560 or greater with the Rogue Wave implementation
|
||||||
|
// which presumably has the std::DBL_MAX bug.
|
||||||
|
#if defined( BOOST_BCB_WITH_ROGUE_WAVE )
|
||||||
|
// <climits> is partly broken, some macros define symbols that are really in
|
||||||
|
// namespace std, so you end up having to use illegal constructs like
|
||||||
|
// std::DBL_MAX, as a fix we'll just include float.h and have done with:
|
||||||
|
#include <float.h>
|
||||||
|
#endif
|
||||||
|
//
|
||||||
|
// __int64:
|
||||||
|
//
|
||||||
|
#if (__BORLANDC__ >= 0x530) && !defined(__STRICT_ANSI__)
|
||||||
|
# define BOOST_HAS_MS_INT64
|
||||||
|
#endif
|
||||||
|
//
|
||||||
|
// check for exception handling support:
|
||||||
|
//
|
||||||
|
#if !defined(_CPPUNWIND) && !defined(BOOST_CPPUNWIND) && !defined(__EXCEPTIONS)
|
||||||
|
# define BOOST_NO_EXCEPTIONS
|
||||||
|
#endif
|
||||||
|
//
|
||||||
|
// all versions have a <dirent.h>:
|
||||||
|
//
|
||||||
|
#ifndef __STRICT_ANSI__
|
||||||
|
# define BOOST_HAS_DIRENT_H
|
||||||
|
#endif
|
||||||
|
//
|
||||||
|
// all versions support __declspec:
|
||||||
|
//
|
||||||
|
#ifndef __STRICT_ANSI__
|
||||||
|
# define BOOST_HAS_DECLSPEC
|
||||||
|
#endif
|
||||||
|
//
|
||||||
|
// ABI fixing headers:
|
||||||
|
//
|
||||||
|
#if __BORLANDC__ < 0x600 // not implemented for version 6 compiler yet
|
||||||
|
#ifndef BOOST_ABI_PREFIX
|
||||||
|
# define BOOST_ABI_PREFIX "boost/config/abi/borland_prefix.hpp"
|
||||||
|
#endif
|
||||||
|
#ifndef BOOST_ABI_SUFFIX
|
||||||
|
# define BOOST_ABI_SUFFIX "boost/config/abi/borland_suffix.hpp"
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
//
|
||||||
|
// Disable Win32 support in ANSI mode:
|
||||||
|
//
|
||||||
|
#if __BORLANDC__ < 0x600
|
||||||
|
# pragma defineonoption BOOST_DISABLE_WIN32 -A
|
||||||
|
#elif defined(__STRICT_ANSI__)
|
||||||
|
# define BOOST_DISABLE_WIN32
|
||||||
|
#endif
|
||||||
|
//
|
||||||
|
// MSVC compatibility mode does some nasty things:
|
||||||
|
// TODO: look up if this doesn't apply to the whole 12xx range
|
||||||
|
//
|
||||||
|
#if defined(_MSC_VER) && (_MSC_VER <= 1200)
|
||||||
|
# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
|
||||||
|
# define BOOST_NO_VOID_RETURNS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define BOOST_COMPILER "Borland C++ version " BOOST_STRINGIZE(__BORLANDC__)
|
||||||
|
|
||||||
|
|
||||||
|
|
136
library/include/boost/config/compiler/codegear.hpp
Normal file
136
library/include/boost/config/compiler/codegear.hpp
Normal file
@ -0,0 +1,136 @@
|
|||||||
|
// (C) Copyright John Maddock 2001 - 2003.
|
||||||
|
// (C) Copyright David Abrahams 2002 - 2003.
|
||||||
|
// (C) Copyright Aleksey Gurtovoy 2002.
|
||||||
|
// 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 for most recent version.
|
||||||
|
|
||||||
|
// CodeGear C++ compiler setup:
|
||||||
|
|
||||||
|
#if !defined( BOOST_WITH_CODEGEAR_WARNINGS )
|
||||||
|
// these warnings occur frequently in optimized template code
|
||||||
|
# pragma warn -8004 // var assigned value, but never used
|
||||||
|
# pragma warn -8008 // condition always true/false
|
||||||
|
# pragma warn -8066 // dead code can never execute
|
||||||
|
# pragma warn -8104 // static members with ctors not threadsafe
|
||||||
|
# pragma warn -8105 // reference member in class without ctors
|
||||||
|
#endif
|
||||||
|
//
|
||||||
|
// versions check:
|
||||||
|
// last known and checked version is 0x610
|
||||||
|
#if (__CODEGEARC__ > 0x610)
|
||||||
|
# if defined(BOOST_ASSERT_CONFIG)
|
||||||
|
# error "Unknown compiler version - please run the configure tests and report the results"
|
||||||
|
# else
|
||||||
|
# pragma message( "Unknown compiler version - please run the configure tests and report the results")
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// CodeGear C++ Builder 2009
|
||||||
|
#if (__CODEGEARC__ <= 0x610)
|
||||||
|
# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
|
||||||
|
# define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS
|
||||||
|
# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
|
||||||
|
# define BOOST_NO_PRIVATE_IN_AGGREGATE
|
||||||
|
# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
|
||||||
|
# define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
|
||||||
|
# define BOOST_NO_USING_TEMPLATE
|
||||||
|
// we shouldn't really need this - but too many things choke
|
||||||
|
// without it, this needs more investigation:
|
||||||
|
# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
|
||||||
|
# define BOOST_NO_TYPENAME_WITH_CTOR // Cannot use typename keyword when making temporaries of a dependant type
|
||||||
|
# define BOOST_NO_NESTED_FRIENDSHIP // TC1 gives nested classes access rights as any other member
|
||||||
|
|
||||||
|
// Temporary hack, until specific MPL preprocessed headers are generated
|
||||||
|
# define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
|
||||||
|
|
||||||
|
# ifdef NDEBUG
|
||||||
|
// fix broken <cstring> so that Boost.test works:
|
||||||
|
# include <cstring>
|
||||||
|
# undef strcmp
|
||||||
|
# endif
|
||||||
|
// fix broken errno declaration:
|
||||||
|
# include <errno.h>
|
||||||
|
# ifndef errno
|
||||||
|
# define errno errno
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
# define BOOST_HAS_CHAR16_T
|
||||||
|
# define BOOST_HAS_CHAR32_T
|
||||||
|
# define BOOST_HAS_LONG_LONG
|
||||||
|
|
||||||
|
//# define BOOST_HAS_ALIGNOF
|
||||||
|
# define BOOST_HAS_DECLTYPE
|
||||||
|
# define BOOST_HAS_EXPLICIT_CONVERSION_OPS
|
||||||
|
//# define BOOST_HAS_RVALUE_REFS
|
||||||
|
# define BOOST_HAS_SCOPED_ENUM
|
||||||
|
//# define BOOST_HAS_STATIC_ASSERT
|
||||||
|
# define BOOST_HAS_STD_TYPE_TRAITS
|
||||||
|
|
||||||
|
# define BOOST_HAS_TR1_HASH
|
||||||
|
# define BOOST_HAS_TR1_TYPE_TRAITS
|
||||||
|
# define BOOST_HAS_TR1_UNORDERED_MAP
|
||||||
|
# define BOOST_HAS_TR1_UNORDERED_SET
|
||||||
|
|
||||||
|
# define BOOST_HAS_MACRO_USE_FACET
|
||||||
|
|
||||||
|
# define BOOST_NO_INITIALIZER_LISTS
|
||||||
|
|
||||||
|
// On non-Win32 platforms let the platform config figure this out:
|
||||||
|
# ifdef _WIN32
|
||||||
|
# define BOOST_HAS_STDINT_H
|
||||||
|
# endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// __int64:
|
||||||
|
//
|
||||||
|
#if !defined(__STRICT_ANSI__)
|
||||||
|
# define BOOST_HAS_MS_INT64
|
||||||
|
#endif
|
||||||
|
//
|
||||||
|
// check for exception handling support:
|
||||||
|
//
|
||||||
|
#if !defined(_CPPUNWIND) && !defined(BOOST_CPPUNWIND) && !defined(__EXCEPTIONS)
|
||||||
|
# define BOOST_NO_EXCEPTIONS
|
||||||
|
#endif
|
||||||
|
//
|
||||||
|
// all versions have a <dirent.h>:
|
||||||
|
//
|
||||||
|
#if !defined(__STRICT_ANSI__)
|
||||||
|
# define BOOST_HAS_DIRENT_H
|
||||||
|
#endif
|
||||||
|
//
|
||||||
|
// all versions support __declspec:
|
||||||
|
//
|
||||||
|
#if !defined(__STRICT_ANSI__)
|
||||||
|
# define BOOST_HAS_DECLSPEC
|
||||||
|
#endif
|
||||||
|
//
|
||||||
|
// ABI fixing headers:
|
||||||
|
//
|
||||||
|
#ifndef BOOST_ABI_PREFIX
|
||||||
|
# define BOOST_ABI_PREFIX "boost/config/abi/borland_prefix.hpp"
|
||||||
|
#endif
|
||||||
|
#ifndef BOOST_ABI_SUFFIX
|
||||||
|
# define BOOST_ABI_SUFFIX "boost/config/abi/borland_suffix.hpp"
|
||||||
|
#endif
|
||||||
|
//
|
||||||
|
// Disable Win32 support in ANSI mode:
|
||||||
|
//
|
||||||
|
# pragma defineonoption BOOST_DISABLE_WIN32 -A
|
||||||
|
//
|
||||||
|
// MSVC compatibility mode does some nasty things:
|
||||||
|
// TODO: look up if this doesn't apply to the whole 12xx range
|
||||||
|
//
|
||||||
|
#if defined(_MSC_VER) && (_MSC_VER <= 1200)
|
||||||
|
# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
|
||||||
|
# define BOOST_NO_VOID_RETURNS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define BOOST_COMPILER "CodeGear C++ version " BOOST_STRINGIZE(__CODEGEARC__)
|
||||||
|
|
59
library/include/boost/config/compiler/comeau.hpp
Normal file
59
library/include/boost/config/compiler/comeau.hpp
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
// (C) Copyright John Maddock 2001.
|
||||||
|
// (C) Copyright Douglas Gregor 2001.
|
||||||
|
// (C) Copyright Peter Dimov 2001.
|
||||||
|
// (C) Copyright Aleksey Gurtovoy 2003.
|
||||||
|
// (C) Copyright Beman Dawes 2003.
|
||||||
|
// (C) Copyright Jens Maurer 2003.
|
||||||
|
// 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 for most recent version.
|
||||||
|
|
||||||
|
// Comeau C++ compiler setup:
|
||||||
|
|
||||||
|
#include "boost/config/compiler/common_edg.hpp"
|
||||||
|
|
||||||
|
#if (__COMO_VERSION__ <= 4245)
|
||||||
|
|
||||||
|
# if defined(_MSC_VER) && _MSC_VER <= 1300
|
||||||
|
# if _MSC_VER > 100
|
||||||
|
// only set this in non-strict mode:
|
||||||
|
# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
|
// Void returns don't work when emulating VC 6 (Peter Dimov)
|
||||||
|
// TODO: look up if this doesn't apply to the whole 12xx range
|
||||||
|
# if defined(_MSC_VER) && (_MSC_VER < 1300)
|
||||||
|
# define BOOST_NO_VOID_RETURNS
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#endif // version 4245
|
||||||
|
|
||||||
|
//
|
||||||
|
// enable __int64 support in VC emulation mode
|
||||||
|
//
|
||||||
|
# if defined(_MSC_VER) && (_MSC_VER >= 1200)
|
||||||
|
# define BOOST_HAS_MS_INT64
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#define BOOST_COMPILER "Comeau compiler version " BOOST_STRINGIZE(__COMO_VERSION__)
|
||||||
|
|
||||||
|
//
|
||||||
|
// versions check:
|
||||||
|
// we don't know Comeau prior to version 4245:
|
||||||
|
#if __COMO_VERSION__ < 4245
|
||||||
|
# error "Compiler not configured - please reconfigure"
|
||||||
|
#endif
|
||||||
|
//
|
||||||
|
// last known and checked version is 4245:
|
||||||
|
#if (__COMO_VERSION__ > 4245)
|
||||||
|
# if defined(BOOST_ASSERT_CONFIG)
|
||||||
|
# error "Unknown compiler version - please run the configure tests and report the results"
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
67
library/include/boost/config/compiler/common_edg.hpp
Normal file
67
library/include/boost/config/compiler/common_edg.hpp
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
// (C) Copyright John Maddock 2001 - 2002.
|
||||||
|
// (C) Copyright Jens Maurer 2001.
|
||||||
|
// (C) Copyright David Abrahams 2002.
|
||||||
|
// (C) Copyright Aleksey Gurtovoy 2002.
|
||||||
|
// (C) Copyright Markus Schoepflin 2005.
|
||||||
|
// 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 for most recent version.
|
||||||
|
|
||||||
|
//
|
||||||
|
// Options common to all edg based compilers.
|
||||||
|
//
|
||||||
|
// This is included from within the individual compiler mini-configs.
|
||||||
|
|
||||||
|
#ifndef __EDG_VERSION__
|
||||||
|
# error This file requires that __EDG_VERSION__ be defined.
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (__EDG_VERSION__ <= 238)
|
||||||
|
# define BOOST_NO_INTEGRAL_INT64_T
|
||||||
|
# define BOOST_NO_SFINAE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (__EDG_VERSION__ <= 240)
|
||||||
|
# define BOOST_NO_VOID_RETURNS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (__EDG_VERSION__ <= 241) && !defined(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP)
|
||||||
|
# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (__EDG_VERSION__ <= 244) && !defined(BOOST_NO_TEMPLATE_TEMPLATES)
|
||||||
|
# define BOOST_NO_TEMPLATE_TEMPLATES
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (__EDG_VERSION__ < 300) && !defined(BOOST_NO_IS_ABSTRACT)
|
||||||
|
# define BOOST_NO_IS_ABSTRACT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (__EDG_VERSION__ <= 303) && !defined(BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL)
|
||||||
|
# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (__EDG_VERSION__ <= 310) || !defined(BOOST_STRICT_CONFIG)
|
||||||
|
// No support for initializer lists
|
||||||
|
# define BOOST_NO_INITIALIZER_LISTS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// See also kai.hpp which checks a Kai-specific symbol for EH
|
||||||
|
# if !defined(__KCC) && !defined(__EXCEPTIONS)
|
||||||
|
# define BOOST_NO_EXCEPTIONS
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if !defined(__NO_LONG_LONG)
|
||||||
|
# define BOOST_HAS_LONG_LONG
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#ifdef c_plusplus
|
||||||
|
// EDG has "long long" in non-strict mode
|
||||||
|
// However, some libraries have insufficient "long long" support
|
||||||
|
// #define BOOST_HAS_LONG_LONG
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
19
library/include/boost/config/compiler/compaq_cxx.hpp
Normal file
19
library/include/boost/config/compiler/compaq_cxx.hpp
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
// (C) Copyright John Maddock 2001 - 2003.
|
||||||
|
// 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 for most recent version.
|
||||||
|
|
||||||
|
// Tru64 C++ compiler setup (now HP):
|
||||||
|
|
||||||
|
#define BOOST_COMPILER "HP Tru64 C++ " BOOST_STRINGIZE(__DECCXX_VER)
|
||||||
|
|
||||||
|
#include "boost/config/compiler/common_edg.hpp"
|
||||||
|
|
||||||
|
//
|
||||||
|
// versions check:
|
||||||
|
// Nothing to do here?
|
||||||
|
|
||||||
|
|
||||||
|
|
68
library/include/boost/config/compiler/digitalmars.hpp
Normal file
68
library/include/boost/config/compiler/digitalmars.hpp
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
// Copyright (C) Christof Meerwald 2003
|
||||||
|
// Copyright (C) Dan Watkins 2003
|
||||||
|
//
|
||||||
|
// 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)
|
||||||
|
|
||||||
|
// Digital Mars C++ compiler setup:
|
||||||
|
#define BOOST_COMPILER __DMC_VERSION_STRING__
|
||||||
|
|
||||||
|
#define BOOST_HAS_LONG_LONG
|
||||||
|
#define BOOST_HAS_PRAGMA_ONCE
|
||||||
|
|
||||||
|
#if (__DMC__ <= 0x833)
|
||||||
|
#define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
|
||||||
|
#define BOOST_NO_TEMPLATE_TEMPLATES
|
||||||
|
#define BOOST_NEEDS_TOKEN_PASTING_OP_FOR_TOKENS_JUXTAPOSING
|
||||||
|
#define BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS
|
||||||
|
#define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
|
||||||
|
#endif
|
||||||
|
#if (__DMC__ <= 0x840) || !defined(BOOST_STRICT_CONFIG)
|
||||||
|
#define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
|
||||||
|
#define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
|
||||||
|
#define BOOST_NO_OPERATORS_IN_NAMESPACE
|
||||||
|
#define BOOST_NO_UNREACHABLE_RETURN_DETECTION
|
||||||
|
#define BOOST_NO_SFINAE
|
||||||
|
#define BOOST_NO_USING_TEMPLATE
|
||||||
|
#define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
|
||||||
|
#define BOOST_NO_INITIALIZER_LISTS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// has macros:
|
||||||
|
#if (__DMC__ >= 0x840)
|
||||||
|
#define BOOST_HAS_DIRENT_H
|
||||||
|
#define BOOST_HAS_STDINT_H
|
||||||
|
#define BOOST_HAS_WINTHREADS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (__DMC__ >= 0x847)
|
||||||
|
#define BOOST_HAS_EXPM1
|
||||||
|
#define BOOST_HAS_LOG1P
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Is this really the best way to detect whether the std lib is in namespace std?
|
||||||
|
//
|
||||||
|
#include <cstddef>
|
||||||
|
#if !defined(__STL_IMPORT_VENDOR_CSTD) && !defined(_STLP_IMPORT_VENDOR_CSTD)
|
||||||
|
# define BOOST_NO_STDC_NAMESPACE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
// check for exception handling support:
|
||||||
|
#ifndef _CPPUNWIND
|
||||||
|
# define BOOST_NO_EXCEPTIONS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if __DMC__ < 0x800
|
||||||
|
#error "Compiler not supported or configured - please reconfigure"
|
||||||
|
#endif
|
||||||
|
//
|
||||||
|
// last known and checked version is ...:
|
||||||
|
#if (__DMC__ > 0x848)
|
||||||
|
# if defined(BOOST_ASSERT_CONFIG)
|
||||||
|
# error "Unknown compiler version - please run the configure tests and report the results"
|
||||||
|
# endif
|
||||||
|
#endif
|
162
library/include/boost/config/compiler/gcc.hpp
Normal file
162
library/include/boost/config/compiler/gcc.hpp
Normal file
@ -0,0 +1,162 @@
|
|||||||
|
// (C) Copyright John Maddock 2001 - 2003.
|
||||||
|
// (C) Copyright Darin Adler 2001 - 2002.
|
||||||
|
// (C) Copyright Jens Maurer 2001 - 2002.
|
||||||
|
// (C) Copyright Beman Dawes 2001 - 2003.
|
||||||
|
// (C) Copyright Douglas Gregor 2002.
|
||||||
|
// (C) Copyright David Abrahams 2002 - 2003.
|
||||||
|
// (C) Copyright Synge Todo 2003.
|
||||||
|
// 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 for most recent version.
|
||||||
|
|
||||||
|
// GNU C++ compiler setup:
|
||||||
|
|
||||||
|
#if __GNUC__ < 3
|
||||||
|
# if __GNUC_MINOR__ == 91
|
||||||
|
// egcs 1.1 won't parse shared_ptr.hpp without this:
|
||||||
|
# define BOOST_NO_AUTO_PTR
|
||||||
|
# endif
|
||||||
|
# if __GNUC_MINOR__ < 95
|
||||||
|
//
|
||||||
|
// Prior to gcc 2.95 member templates only partly
|
||||||
|
// work - define BOOST_MSVC6_MEMBER_TEMPLATES
|
||||||
|
// instead since inline member templates mostly work.
|
||||||
|
//
|
||||||
|
# define BOOST_NO_MEMBER_TEMPLATES
|
||||||
|
# if __GNUC_MINOR__ >= 9
|
||||||
|
# define BOOST_MSVC6_MEMBER_TEMPLATES
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if __GNUC_MINOR__ < 96
|
||||||
|
# define BOOST_NO_SFINAE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if __GNUC_MINOR__ <= 97
|
||||||
|
# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
|
||||||
|
# define BOOST_NO_OPERATORS_IN_NAMESPACE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
|
||||||
|
# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
|
||||||
|
# define BOOST_NO_IS_ABSTRACT
|
||||||
|
#elif __GNUC__ == 3
|
||||||
|
# if defined (__PATHSCALE__)
|
||||||
|
# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
|
||||||
|
# define BOOST_NO_IS_ABSTRACT
|
||||||
|
# endif
|
||||||
|
//
|
||||||
|
// gcc-3.x problems:
|
||||||
|
//
|
||||||
|
// Bug specific to gcc 3.1 and 3.2:
|
||||||
|
//
|
||||||
|
# if ((__GNUC_MINOR__ == 1) || (__GNUC_MINOR__ == 2))
|
||||||
|
# define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
|
||||||
|
# endif
|
||||||
|
# if __GNUC_MINOR__ < 4
|
||||||
|
# define BOOST_NO_IS_ABSTRACT
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
#if __GNUC__ < 4
|
||||||
|
//
|
||||||
|
// All problems to gcc-3.x and earlier here:
|
||||||
|
//
|
||||||
|
#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __EXCEPTIONS
|
||||||
|
# define BOOST_NO_EXCEPTIONS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Threading support: Turn this on unconditionally here (except for
|
||||||
|
// those platforms where we can know for sure). It will get turned off again
|
||||||
|
// later if no threading API is detected.
|
||||||
|
//
|
||||||
|
#if !defined(__MINGW32__) && !defined(linux) && !defined(__linux) && !defined(__linux__)
|
||||||
|
# define BOOST_HAS_THREADS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// gcc has "long long"
|
||||||
|
//
|
||||||
|
#define BOOST_HAS_LONG_LONG
|
||||||
|
|
||||||
|
//
|
||||||
|
// gcc implements the named return value optimization since version 3.1
|
||||||
|
//
|
||||||
|
#if __GNUC__ > 3 || ( __GNUC__ == 3 && __GNUC_MINOR__ >= 1 )
|
||||||
|
#define BOOST_HAS_NRVO
|
||||||
|
#endif
|
||||||
|
//
|
||||||
|
// RTTI and typeinfo detection is possible post gcc-4.3:
|
||||||
|
//
|
||||||
|
#if __GNUC__ * 100 + __GNUC_MINOR__ >= 403
|
||||||
|
# ifndef __GXX_RTTI
|
||||||
|
# define BOOST_NO_TYPEID
|
||||||
|
# define BOOST_NO_RTTI
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// C++0x features
|
||||||
|
//
|
||||||
|
#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 2)
|
||||||
|
// C++0x features are only enabled when -std=c++0x or -std=gnu++0x are
|
||||||
|
// passed on the command line, which in turn defines
|
||||||
|
// __GXX_EXPERIMENTAL_CXX0X__.
|
||||||
|
# if defined(__GXX_EXPERIMENTAL_CXX0X__)
|
||||||
|
# define BOOST_HAS_STATIC_ASSERT
|
||||||
|
# define BOOST_HAS_VARIADIC_TMPL
|
||||||
|
# define BOOST_HAS_RVALUE_REFS
|
||||||
|
# define BOOST_HAS_DECLTYPE
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(__GXX_EXPERIMENTAL_CXX0X__) || __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 4)
|
||||||
|
# define BOOST_NO_INITIALIZER_LISTS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Potential C++0x features
|
||||||
|
//
|
||||||
|
|
||||||
|
// Variadic templates compiler:
|
||||||
|
// http://www.generic-programming.org/~dgregor/cpp/variadic-templates.html
|
||||||
|
#ifdef __VARIADIC_TEMPLATES
|
||||||
|
# define BOOST_HAS_VARIADIC_TMPL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ConceptGCC compiler:
|
||||||
|
// http://www.generic-programming.org/software/ConceptGCC/
|
||||||
|
#ifdef __GXX_CONCEPTS__
|
||||||
|
# define BOOST_HAS_CONCEPTS
|
||||||
|
# define BOOST_COMPILER "ConceptGCC version " __VERSION__
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef BOOST_COMPILER
|
||||||
|
# define BOOST_COMPILER "GNU C++ version " __VERSION__
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// versions check:
|
||||||
|
// we don't know gcc prior to version 2.90:
|
||||||
|
#if (__GNUC__ == 2) && (__GNUC_MINOR__ < 90)
|
||||||
|
# error "Compiler not configured - please reconfigure"
|
||||||
|
#endif
|
||||||
|
//
|
||||||
|
// last known and checked version is 4.3 (Pre-release):
|
||||||
|
#if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 3))
|
||||||
|
# if defined(BOOST_ASSERT_CONFIG)
|
||||||
|
# error "Unknown compiler version - please run the configure tests and report the results"
|
||||||
|
# else
|
||||||
|
// we don't emit warnings here anymore since there are no defect macros defined for
|
||||||
|
// gcc post 3.4, so any failures are gcc regressions...
|
||||||
|
//# warning "Unknown compiler version - please run the configure tests and report the results"
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
30
library/include/boost/config/compiler/gcc_xml.hpp
Normal file
30
library/include/boost/config/compiler/gcc_xml.hpp
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
// (C) Copyright John Maddock 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 for most recent version.
|
||||||
|
|
||||||
|
// GCC-XML C++ compiler setup:
|
||||||
|
|
||||||
|
# if !defined(__GCCXML_GNUC__) || ((__GCCXML_GNUC__ <= 3) && (__GCCXML_GNUC_MINOR__ <= 3))
|
||||||
|
# define BOOST_NO_IS_ABSTRACT
|
||||||
|
# endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Threading support: Turn this on unconditionally here (except for
|
||||||
|
// those platforms where we can know for sure). It will get turned off again
|
||||||
|
// later if no threading API is detected.
|
||||||
|
//
|
||||||
|
#if !defined(__MINGW32__) && !defined(_MSC_VER) && !defined(linux) && !defined(__linux) && !defined(__linux__)
|
||||||
|
# define BOOST_HAS_THREADS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// gcc has "long long"
|
||||||
|
//
|
||||||
|
#define BOOST_HAS_LONG_LONG
|
||||||
|
|
||||||
|
#define BOOST_COMPILER "GCC-XML C++ version " __GCCXML__
|
||||||
|
|
||||||
|
|
28
library/include/boost/config/compiler/greenhills.hpp
Normal file
28
library/include/boost/config/compiler/greenhills.hpp
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
// (C) Copyright John Maddock 2001.
|
||||||
|
// 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 for most recent version.
|
||||||
|
|
||||||
|
// Greenhills C++ compiler setup:
|
||||||
|
|
||||||
|
#define BOOST_COMPILER "Greenhills C++ version " BOOST_STRINGIZE(__ghs)
|
||||||
|
|
||||||
|
#include "boost/config/compiler/common_edg.hpp"
|
||||||
|
|
||||||
|
//
|
||||||
|
// versions check:
|
||||||
|
// we don't support Greenhills prior to version 0:
|
||||||
|
#if __ghs < 0
|
||||||
|
# error "Compiler not supported or configured - please reconfigure"
|
||||||
|
#endif
|
||||||
|
//
|
||||||
|
// last known and checked version is 0:
|
||||||
|
#if (__ghs > 0)
|
||||||
|
# if defined(BOOST_ASSERT_CONFIG)
|
||||||
|
# error "Unknown compiler version - please run the configure tests and report the results"
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
95
library/include/boost/config/compiler/hp_acc.hpp
Normal file
95
library/include/boost/config/compiler/hp_acc.hpp
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
// (C) Copyright John Maddock 2001 - 2003.
|
||||||
|
// (C) Copyright Jens Maurer 2001 - 2003.
|
||||||
|
// (C) Copyright Aleksey Gurtovoy 2002.
|
||||||
|
// (C) Copyright David Abrahams 2002 - 2003.
|
||||||
|
// (C) Copyright Toon Knapen 2003.
|
||||||
|
// (C) Copyright Boris Gubenko 2006 - 2007.
|
||||||
|
// 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 for most recent version.
|
||||||
|
|
||||||
|
// HP aCC C++ compiler setup:
|
||||||
|
|
||||||
|
#if defined(__EDG__)
|
||||||
|
#include "boost/config/compiler/common_edg.hpp"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (__HP_aCC <= 33100)
|
||||||
|
# define BOOST_NO_INTEGRAL_INT64_T
|
||||||
|
# define BOOST_NO_OPERATORS_IN_NAMESPACE
|
||||||
|
# if !defined(_NAMESPACE_STD)
|
||||||
|
# define BOOST_NO_STD_LOCALE
|
||||||
|
# define BOOST_NO_STRINGSTREAM
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (__HP_aCC <= 33300)
|
||||||
|
// member templates are sufficiently broken that we disable them for now
|
||||||
|
# define BOOST_NO_MEMBER_TEMPLATES
|
||||||
|
# define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS
|
||||||
|
# define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (__HP_aCC <= 38000)
|
||||||
|
# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (__HP_aCC > 50000) && (__HP_aCC < 60000)
|
||||||
|
# define BOOST_NO_UNREACHABLE_RETURN_DETECTION
|
||||||
|
# define BOOST_NO_TEMPLATE_TEMPLATES
|
||||||
|
# define BOOST_NO_SWPRINTF
|
||||||
|
# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
|
||||||
|
# define BOOST_NO_IS_ABSTRACT
|
||||||
|
# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// optional features rather than defects:
|
||||||
|
#if (__HP_aCC >= 33900)
|
||||||
|
# define BOOST_HAS_LONG_LONG
|
||||||
|
# define BOOST_HAS_PARTIAL_STD_ALLOCATOR
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (__HP_aCC >= 50000 ) && (__HP_aCC <= 53800 ) || (__HP_aCC < 31300 )
|
||||||
|
# define BOOST_NO_MEMBER_TEMPLATE_KEYWORD
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// This macro should not be defined when compiling in strict ansi
|
||||||
|
// mode, but, currently, we don't have the ability to determine
|
||||||
|
// what standard mode we are compiling with. Some future version
|
||||||
|
// of aCC6 compiler will provide predefined macros reflecting the
|
||||||
|
// compilation options, including the standard mode.
|
||||||
|
#if (__HP_aCC >= 60000) || ((__HP_aCC > 38000) && defined(__hpxstd98))
|
||||||
|
# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define BOOST_COMPILER "HP aCC version " BOOST_STRINGIZE(__HP_aCC)
|
||||||
|
|
||||||
|
//
|
||||||
|
// versions check:
|
||||||
|
// we don't support HP aCC prior to version 33000:
|
||||||
|
#if __HP_aCC < 33000
|
||||||
|
# error "Compiler not supported or configured - please reconfigure"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Extended checks for supporting aCC on PA-RISC
|
||||||
|
#if __HP_aCC > 30000 && __HP_aCC < 50000
|
||||||
|
# if __HP_aCC < 38000
|
||||||
|
// versions prior to version A.03.80 not supported
|
||||||
|
# error "Compiler version not supported - version A.03.80 or higher is required"
|
||||||
|
# elif !defined(__hpxstd98)
|
||||||
|
// must compile using the option +hpxstd98 with version A.03.80 and above
|
||||||
|
# error "Compiler option '+hpxstd98' is required for proper support"
|
||||||
|
# endif //PA-RISC
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// last known and checked version for HP-UX/ia64 is 61300
|
||||||
|
// last known and checked version for PA-RISC is 38000
|
||||||
|
#if ((__HP_aCC > 61300) || ((__HP_aCC > 38000) && defined(__hpxstd98)))
|
||||||
|
# if defined(BOOST_ASSERT_CONFIG)
|
||||||
|
# error "Unknown compiler version - please run the configure tests and report the results"
|
||||||
|
# endif
|
||||||
|
#endif
|
173
library/include/boost/config/compiler/intel.hpp
Normal file
173
library/include/boost/config/compiler/intel.hpp
Normal file
@ -0,0 +1,173 @@
|
|||||||
|
// (C) Copyright John Maddock 2001-8.
|
||||||
|
// (C) Copyright Peter Dimov 2001.
|
||||||
|
// (C) Copyright Jens Maurer 2001.
|
||||||
|
// (C) Copyright David Abrahams 2002 - 2003.
|
||||||
|
// (C) Copyright Aleksey Gurtovoy 2002 - 2003.
|
||||||
|
// (C) Copyright Guillaume Melquiond 2002 - 2003.
|
||||||
|
// (C) Copyright Beman Dawes 2003.
|
||||||
|
// (C) Copyright Martin Wille 2003.
|
||||||
|
// 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 for most recent version.
|
||||||
|
|
||||||
|
// Intel compiler setup:
|
||||||
|
|
||||||
|
#include "boost/config/compiler/common_edg.hpp"
|
||||||
|
|
||||||
|
#if defined(__INTEL_COMPILER)
|
||||||
|
# define BOOST_INTEL_CXX_VERSION __INTEL_COMPILER
|
||||||
|
#elif defined(__ICL)
|
||||||
|
# define BOOST_INTEL_CXX_VERSION __ICL
|
||||||
|
#elif defined(__ICC)
|
||||||
|
# define BOOST_INTEL_CXX_VERSION __ICC
|
||||||
|
#elif defined(__ECC)
|
||||||
|
# define BOOST_INTEL_CXX_VERSION __ECC
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define BOOST_COMPILER "Intel C++ version " BOOST_STRINGIZE(BOOST_INTEL_CXX_VERSION)
|
||||||
|
#define BOOST_INTEL BOOST_INTEL_CXX_VERSION
|
||||||
|
|
||||||
|
#if defined(_WIN32) || defined(_WIN64)
|
||||||
|
# define BOOST_INTEL_WIN BOOST_INTEL
|
||||||
|
#else
|
||||||
|
# define BOOST_INTEL_LINUX BOOST_INTEL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (BOOST_INTEL_CXX_VERSION <= 500) && defined(_MSC_VER)
|
||||||
|
# define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
|
||||||
|
# define BOOST_NO_TEMPLATE_TEMPLATES
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (BOOST_INTEL_CXX_VERSION <= 600)
|
||||||
|
|
||||||
|
# if defined(_MSC_VER) && (_MSC_VER <= 1300) // added check for <= VC 7 (Peter Dimov)
|
||||||
|
|
||||||
|
// Boost libraries assume strong standard conformance unless otherwise
|
||||||
|
// indicated by a config macro. As configured by Intel, the EDG front-end
|
||||||
|
// requires certain compiler options be set to achieve that strong conformance.
|
||||||
|
// Particularly /Qoption,c,--arg_dep_lookup (reported by Kirk Klobe & Thomas Witt)
|
||||||
|
// and /Zc:wchar_t,forScope. See boost-root/tools/build/intel-win32-tools.jam for
|
||||||
|
// details as they apply to particular versions of the compiler. When the
|
||||||
|
// compiler does not predefine a macro indicating if an option has been set,
|
||||||
|
// this config file simply assumes the option has been set.
|
||||||
|
// Thus BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP will not be defined, even if
|
||||||
|
// the compiler option is not enabled.
|
||||||
|
|
||||||
|
# define BOOST_NO_SWPRINTF
|
||||||
|
# endif
|
||||||
|
|
||||||
|
// Void returns, 64 bit integrals don't work when emulating VC 6 (Peter Dimov)
|
||||||
|
|
||||||
|
# if defined(_MSC_VER) && (_MSC_VER <= 1200)
|
||||||
|
# define BOOST_NO_VOID_RETURNS
|
||||||
|
# define BOOST_NO_INTEGRAL_INT64_T
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (BOOST_INTEL_CXX_VERSION <= 710) && defined(_WIN32)
|
||||||
|
# define BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// See http://aspn.activestate.com/ASPN/Mail/Message/boost/1614864
|
||||||
|
#if BOOST_INTEL_CXX_VERSION < 600
|
||||||
|
# define BOOST_NO_INTRINSIC_WCHAR_T
|
||||||
|
#else
|
||||||
|
// We should test the macro _WCHAR_T_DEFINED to check if the compiler
|
||||||
|
// supports wchar_t natively. *BUT* there is a problem here: the standard
|
||||||
|
// headers define this macro if they typedef wchar_t. Anyway, we're lucky
|
||||||
|
// because they define it without a value, while Intel C++ defines it
|
||||||
|
// to 1. So we can check its value to see if the macro was defined natively
|
||||||
|
// or not.
|
||||||
|
// Under UNIX, the situation is exactly the same, but the macro _WCHAR_T
|
||||||
|
// is used instead.
|
||||||
|
# if ((_WCHAR_T_DEFINED + 0) == 0) && ((_WCHAR_T + 0) == 0)
|
||||||
|
# define BOOST_NO_INTRINSIC_WCHAR_T
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__GNUC__) && !defined(BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL)
|
||||||
|
//
|
||||||
|
// Figure out when Intel is emulating this gcc bug
|
||||||
|
// (All Intel versions prior to 9.0.26, and versions
|
||||||
|
// later than that if they are set up to emulate gcc 3.2
|
||||||
|
// or earlier):
|
||||||
|
//
|
||||||
|
# if ((__GNUC__ == 3) && (__GNUC_MINOR__ <= 2)) || (BOOST_INTEL < 900) || (__INTEL_COMPILER_BUILD_DATE < 20050912)
|
||||||
|
# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
#if (defined(__GNUC__) && (__GNUC__ < 4)) || defined(_WIN32) || (BOOST_INTEL_CXX_VERSION <= 1100)
|
||||||
|
// GCC or VC emulation:
|
||||||
|
#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
|
||||||
|
#endif
|
||||||
|
//
|
||||||
|
// Verify that we have actually got BOOST_NO_INTRINSIC_WCHAR_T
|
||||||
|
// set correctly, if we don't do this now, we will get errors later
|
||||||
|
// in type_traits code among other things, getting this correct
|
||||||
|
// for the Intel compiler is actually remarkably fragile and tricky:
|
||||||
|
//
|
||||||
|
#if defined(BOOST_NO_INTRINSIC_WCHAR_T)
|
||||||
|
#include <cwchar>
|
||||||
|
template< typename T > struct assert_no_intrinsic_wchar_t;
|
||||||
|
template<> struct assert_no_intrinsic_wchar_t<wchar_t> { typedef void type; };
|
||||||
|
// if you see an error here then you need to unset BOOST_NO_INTRINSIC_WCHAR_T
|
||||||
|
// where it is defined above:
|
||||||
|
typedef assert_no_intrinsic_wchar_t<unsigned short>::type assert_no_intrinsic_wchar_t_;
|
||||||
|
#else
|
||||||
|
template< typename T > struct assert_intrinsic_wchar_t;
|
||||||
|
template<> struct assert_intrinsic_wchar_t<wchar_t> {};
|
||||||
|
// if you see an error here then define BOOST_NO_INTRINSIC_WCHAR_T on the command line:
|
||||||
|
template<> struct assert_intrinsic_wchar_t<unsigned short> {};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if _MSC_VER+0 >= 1000
|
||||||
|
# if _MSC_VER >= 1200
|
||||||
|
# define BOOST_HAS_MS_INT64
|
||||||
|
# endif
|
||||||
|
# define BOOST_NO_SWPRINTF
|
||||||
|
# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
|
||||||
|
#elif defined(_WIN32)
|
||||||
|
# define BOOST_DISABLE_WIN32
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// I checked version 6.0 build 020312Z, it implements the NRVO.
|
||||||
|
// Correct this as you find out which version of the compiler
|
||||||
|
// implemented the NRVO first. (Daniel Frey)
|
||||||
|
#if (BOOST_INTEL_CXX_VERSION >= 600)
|
||||||
|
# define BOOST_HAS_NRVO
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// versions check:
|
||||||
|
// we don't support Intel prior to version 5.0:
|
||||||
|
#if BOOST_INTEL_CXX_VERSION < 500
|
||||||
|
# error "Compiler not supported or configured - please reconfigure"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Intel on MacOS requires
|
||||||
|
#if defined(__APPLE__) && defined(__INTEL_COMPILER)
|
||||||
|
# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Intel on Altix Itanium
|
||||||
|
#if defined(__itanium__) && defined(__INTEL_COMPILER)
|
||||||
|
# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// last known and checked version:
|
||||||
|
#if (BOOST_INTEL_CXX_VERSION > 1100)
|
||||||
|
# if defined(BOOST_ASSERT_CONFIG)
|
||||||
|
# error "Unknown compiler version - please run the configure tests and report the results"
|
||||||
|
# elif defined(_MSC_VER)
|
||||||
|
//
|
||||||
|
// We don't emit this warning any more, since we have so few
|
||||||
|
// defect macros set anyway (just the one).
|
||||||
|
//
|
||||||
|
//# pragma message("Unknown compiler version - please run the configure tests and report the results")
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
35
library/include/boost/config/compiler/kai.hpp
Normal file
35
library/include/boost/config/compiler/kai.hpp
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
// (C) Copyright John Maddock 2001.
|
||||||
|
// (C) Copyright David Abrahams 2002.
|
||||||
|
// (C) Copyright Aleksey Gurtovoy 2002.
|
||||||
|
// 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 for most recent version.
|
||||||
|
|
||||||
|
// Kai C++ compiler setup:
|
||||||
|
|
||||||
|
#include "boost/config/compiler/common_edg.hpp"
|
||||||
|
|
||||||
|
# if (__KCC_VERSION <= 4001) || !defined(BOOST_STRICT_CONFIG)
|
||||||
|
// at least on Sun, the contents of <cwchar> is not in namespace std
|
||||||
|
# define BOOST_NO_STDC_NAMESPACE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
// see also common_edg.hpp which needs a special check for __KCC
|
||||||
|
# if !defined(_EXCEPTIONS)
|
||||||
|
# define BOOST_NO_EXCEPTIONS
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#define BOOST_COMPILER "Kai C++ version " BOOST_STRINGIZE(__KCC_VERSION)
|
||||||
|
|
||||||
|
//
|
||||||
|
// last known and checked version is 4001:
|
||||||
|
#if (__KCC_VERSION > 4001)
|
||||||
|
# if defined(BOOST_ASSERT_CONFIG)
|
||||||
|
# error "Unknown compiler version - please run the configure tests and report the results"
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
112
library/include/boost/config/compiler/metrowerks.hpp
Normal file
112
library/include/boost/config/compiler/metrowerks.hpp
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
// (C) Copyright John Maddock 2001.
|
||||||
|
// (C) Copyright Darin Adler 2001.
|
||||||
|
// (C) Copyright Peter Dimov 2001.
|
||||||
|
// (C) Copyright David Abrahams 2001 - 2002.
|
||||||
|
// (C) Copyright Beman Dawes 2001 - 2003.
|
||||||
|
// (C) Copyright Stefan Slapeta 2004.
|
||||||
|
// 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 for most recent version.
|
||||||
|
|
||||||
|
// Metrowerks C++ compiler setup:
|
||||||
|
|
||||||
|
// locale support is disabled when linking with the dynamic runtime
|
||||||
|
# ifdef _MSL_NO_LOCALE
|
||||||
|
# define BOOST_NO_STD_LOCALE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if __MWERKS__ <= 0x2301 // 5.3
|
||||||
|
# define BOOST_NO_FUNCTION_TEMPLATE_ORDERING
|
||||||
|
# define BOOST_NO_POINTER_TO_MEMBER_CONST
|
||||||
|
# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
|
||||||
|
# define BOOST_NO_MEMBER_TEMPLATE_KEYWORD
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if __MWERKS__ <= 0x2401 // 6.2
|
||||||
|
//# define BOOST_NO_FUNCTION_TEMPLATE_ORDERING
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if(__MWERKS__ <= 0x2407) // 7.x
|
||||||
|
# define BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS
|
||||||
|
# define BOOST_NO_UNREACHABLE_RETURN_DETECTION
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if(__MWERKS__ <= 0x3003) // 8.x
|
||||||
|
# define BOOST_NO_SFINAE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
// the "|| !defined(BOOST_STRICT_CONFIG)" part should apply to the last
|
||||||
|
// tested version *only*:
|
||||||
|
# if(__MWERKS__ <= 0x3206) || !defined(BOOST_STRICT_CONFIG) // 9.5
|
||||||
|
# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
|
||||||
|
# define BOOST_NO_IS_ABSTRACT
|
||||||
|
# define BOOST_NO_INITIALIZER_LISTS
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#if !__option(wchar_type)
|
||||||
|
# define BOOST_NO_INTRINSIC_WCHAR_T
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !__option(exceptions)
|
||||||
|
# define BOOST_NO_EXCEPTIONS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (__INTEL__ && _WIN32) || (__POWERPC__ && macintosh)
|
||||||
|
# if __MWERKS__ == 0x3000
|
||||||
|
# define BOOST_COMPILER_VERSION 8.0
|
||||||
|
# elif __MWERKS__ == 0x3001
|
||||||
|
# define BOOST_COMPILER_VERSION 8.1
|
||||||
|
# elif __MWERKS__ == 0x3002
|
||||||
|
# define BOOST_COMPILER_VERSION 8.2
|
||||||
|
# elif __MWERKS__ == 0x3003
|
||||||
|
# define BOOST_COMPILER_VERSION 8.3
|
||||||
|
# elif __MWERKS__ == 0x3200
|
||||||
|
# define BOOST_COMPILER_VERSION 9.0
|
||||||
|
# elif __MWERKS__ == 0x3201
|
||||||
|
# define BOOST_COMPILER_VERSION 9.1
|
||||||
|
# elif __MWERKS__ == 0x3202
|
||||||
|
# define BOOST_COMPILER_VERSION 9.2
|
||||||
|
# elif __MWERKS__ == 0x3204
|
||||||
|
# define BOOST_COMPILER_VERSION 9.3
|
||||||
|
# elif __MWERKS__ == 0x3205
|
||||||
|
# define BOOST_COMPILER_VERSION 9.4
|
||||||
|
# elif __MWERKS__ == 0x3206
|
||||||
|
# define BOOST_COMPILER_VERSION 9.5
|
||||||
|
# else
|
||||||
|
# define BOOST_COMPILER_VERSION __MWERKS__
|
||||||
|
# endif
|
||||||
|
#else
|
||||||
|
# define BOOST_COMPILER_VERSION __MWERKS__
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// C++0x features
|
||||||
|
//
|
||||||
|
#if __MWERKS__ > 0x3206 && __option(rvalue_refs)
|
||||||
|
# define BOOST_HAS_RVALUE_REFS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define BOOST_COMPILER "Metrowerks CodeWarrior C++ version " BOOST_STRINGIZE(BOOST_COMPILER_VERSION)
|
||||||
|
|
||||||
|
//
|
||||||
|
// versions check:
|
||||||
|
// we don't support Metrowerks prior to version 5.3:
|
||||||
|
#if __MWERKS__ < 0x2301
|
||||||
|
# error "Compiler not supported or configured - please reconfigure"
|
||||||
|
#endif
|
||||||
|
//
|
||||||
|
// last known and checked version:
|
||||||
|
#if (__MWERKS__ > 0x3205)
|
||||||
|
# if defined(BOOST_ASSERT_CONFIG)
|
||||||
|
# error "Unknown compiler version - please run the configure tests and report the results"
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
53
library/include/boost/config/compiler/mpw.hpp
Normal file
53
library/include/boost/config/compiler/mpw.hpp
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
// (C) Copyright John Maddock 2001 - 2002.
|
||||||
|
// (C) Copyright Aleksey Gurtovoy 2002.
|
||||||
|
// 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 for most recent version.
|
||||||
|
|
||||||
|
// MPW C++ compilers setup:
|
||||||
|
|
||||||
|
# if defined(__SC__)
|
||||||
|
# define BOOST_COMPILER "MPW SCpp version " BOOST_STRINGIZE(__SC__)
|
||||||
|
# elif defined(__MRC__)
|
||||||
|
# define BOOST_COMPILER "MPW MrCpp version " BOOST_STRINGIZE(__MRC__)
|
||||||
|
# else
|
||||||
|
# error "Using MPW compiler configuration by mistake. Please update."
|
||||||
|
# endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// MPW 8.90:
|
||||||
|
//
|
||||||
|
#if (MPW_CPLUS <= 0x890) || !defined(BOOST_STRICT_CONFIG)
|
||||||
|
# define BOOST_NO_CV_SPECIALIZATIONS
|
||||||
|
# define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS
|
||||||
|
# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
|
||||||
|
# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
|
||||||
|
# define BOOST_NO_INTRINSIC_WCHAR_T
|
||||||
|
# define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
|
||||||
|
# define BOOST_NO_USING_TEMPLATE
|
||||||
|
|
||||||
|
# define BOOST_NO_CWCHAR
|
||||||
|
# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
|
||||||
|
|
||||||
|
# define BOOST_NO_STD_ALLOCATOR /* actually a bug with const reference overloading */
|
||||||
|
|
||||||
|
# define BOOST_NO_INITIALIZER_LISTS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// versions check:
|
||||||
|
// we don't support MPW prior to version 8.9:
|
||||||
|
#if MPW_CPLUS < 0x890
|
||||||
|
# error "Compiler not supported or configured - please reconfigure"
|
||||||
|
#endif
|
||||||
|
//
|
||||||
|
// last known and checked version is 0x890:
|
||||||
|
#if (MPW_CPLUS > 0x890)
|
||||||
|
# if defined(BOOST_ASSERT_CONFIG)
|
||||||
|
# error "Unknown compiler version - please run the configure tests and report the results"
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
34
library/include/boost/config/compiler/pgi.hpp
Normal file
34
library/include/boost/config/compiler/pgi.hpp
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
// (C) Copyright Noel Belcourt 2007.
|
||||||
|
// 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 for most recent version.
|
||||||
|
|
||||||
|
// PGI C++ compiler setup:
|
||||||
|
|
||||||
|
#define BOOST_COMPILER_VERSION __PGIC__##__PGIC_MINOR__
|
||||||
|
#define BOOST_COMPILER "PGI compiler version " BOOST_STRINGIZE(_COMPILER_VERSION)
|
||||||
|
|
||||||
|
//
|
||||||
|
// Threading support:
|
||||||
|
// Turn this on unconditionally here, it will get turned off again later
|
||||||
|
// if no threading API is detected.
|
||||||
|
//
|
||||||
|
|
||||||
|
#if (__PGIC__ >= 7)
|
||||||
|
|
||||||
|
#define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
|
||||||
|
#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
|
||||||
|
#define BOOST_NO_SWPRINTF
|
||||||
|
#define BOOST_NO_INITIALIZER_LISTS
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
# error "Pgi compiler not configured - please reconfigure"
|
||||||
|
|
||||||
|
#endif
|
||||||
|
//
|
||||||
|
// version check:
|
||||||
|
// probably nothing to do here?
|
||||||
|
|
30
library/include/boost/config/compiler/sgi_mipspro.hpp
Normal file
30
library/include/boost/config/compiler/sgi_mipspro.hpp
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
// (C) Copyright John Maddock 2001 - 2002.
|
||||||
|
// 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 for most recent version.
|
||||||
|
|
||||||
|
// SGI C++ compiler setup:
|
||||||
|
|
||||||
|
#define BOOST_COMPILER "SGI Irix compiler version " BOOST_STRINGIZE(_COMPILER_VERSION)
|
||||||
|
|
||||||
|
#include "boost/config/compiler/common_edg.hpp"
|
||||||
|
|
||||||
|
//
|
||||||
|
// Threading support:
|
||||||
|
// Turn this on unconditionally here, it will get turned off again later
|
||||||
|
// if no threading API is detected.
|
||||||
|
//
|
||||||
|
#define BOOST_HAS_THREADS
|
||||||
|
#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
|
||||||
|
|
||||||
|
#undef BOOST_NO_SWPRINTF
|
||||||
|
#undef BOOST_DEDUCED_TYPENAME
|
||||||
|
|
||||||
|
#define BOOST_NO_INITIALIZER_LISTS
|
||||||
|
//
|
||||||
|
// version check:
|
||||||
|
// probably nothing to do here?
|
||||||
|
|
||||||
|
|
104
library/include/boost/config/compiler/sunpro_cc.hpp
Normal file
104
library/include/boost/config/compiler/sunpro_cc.hpp
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
// (C) Copyright John Maddock 2001.
|
||||||
|
// (C) Copyright Jens Maurer 2001 - 2003.
|
||||||
|
// (C) Copyright Peter Dimov 2002.
|
||||||
|
// (C) Copyright Aleksey Gurtovoy 2002 - 2003.
|
||||||
|
// (C) Copyright David Abrahams 2002.
|
||||||
|
// 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 for most recent version.
|
||||||
|
|
||||||
|
// Sun C++ compiler setup:
|
||||||
|
|
||||||
|
# if __SUNPRO_CC <= 0x500
|
||||||
|
# define BOOST_NO_MEMBER_TEMPLATES
|
||||||
|
# define BOOST_NO_FUNCTION_TEMPLATE_ORDERING
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if (__SUNPRO_CC <= 0x520)
|
||||||
|
//
|
||||||
|
// Sunpro 5.2 and earler:
|
||||||
|
//
|
||||||
|
// although sunpro 5.2 supports the syntax for
|
||||||
|
// inline initialization it often gets the value
|
||||||
|
// wrong, especially where the value is computed
|
||||||
|
// from other constants (J Maddock 6th May 2001)
|
||||||
|
# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
|
||||||
|
|
||||||
|
// Although sunpro 5.2 supports the syntax for
|
||||||
|
// partial specialization, it often seems to
|
||||||
|
// bind to the wrong specialization. Better
|
||||||
|
// to disable it until suppport becomes more stable
|
||||||
|
// (J Maddock 6th May 2001).
|
||||||
|
# define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if (__SUNPRO_CC <= 0x530)
|
||||||
|
// Requesting debug info (-g) with Boost.Python results
|
||||||
|
// in an internal compiler error for "static const"
|
||||||
|
// initialized in-class.
|
||||||
|
// >> Assertion: (../links/dbg_cstabs.cc, line 611)
|
||||||
|
// while processing ../test.cpp at line 0.
|
||||||
|
// (Jens Maurer according to Gottfried Ganssauge 04 Mar 2002)
|
||||||
|
# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
|
||||||
|
|
||||||
|
// SunPro 5.3 has better support for partial specialization,
|
||||||
|
// but breaks when compiling std::less<shared_ptr<T> >
|
||||||
|
// (Jens Maurer 4 Nov 2001).
|
||||||
|
|
||||||
|
// std::less specialization fixed as reported by George
|
||||||
|
// Heintzelman; partial specialization re-enabled
|
||||||
|
// (Peter Dimov 17 Jan 2002)
|
||||||
|
|
||||||
|
//# define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
|
||||||
|
|
||||||
|
// integral constant expressions with 64 bit numbers fail
|
||||||
|
# define BOOST_NO_INTEGRAL_INT64_T
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if (__SUNPRO_CC < 0x570)
|
||||||
|
# define BOOST_NO_TEMPLATE_TEMPLATES
|
||||||
|
// see http://lists.boost.org/MailArchives/boost/msg47184.php
|
||||||
|
// and http://lists.boost.org/MailArchives/boost/msg47220.php
|
||||||
|
# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
|
||||||
|
# define BOOST_NO_SFINAE
|
||||||
|
# define BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS
|
||||||
|
# endif
|
||||||
|
# if (__SUNPRO_CC <= 0x580)
|
||||||
|
# define BOOST_NO_IS_ABSTRACT
|
||||||
|
# endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Issues that effect all known versions:
|
||||||
|
//
|
||||||
|
#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
|
||||||
|
#define BOOST_NO_ADL_BARRIER
|
||||||
|
#define BOOST_NO_INITIALIZER_LISTS
|
||||||
|
|
||||||
|
#if(__SUNPRO_CC >= 0x590)
|
||||||
|
# define BOOST_HAS_LONG_LONG
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define BOOST_COMPILER "Sun compiler version " BOOST_STRINGIZE(__SUNPRO_CC)
|
||||||
|
|
||||||
|
//
|
||||||
|
// versions check:
|
||||||
|
// we don't support sunpro prior to version 4:
|
||||||
|
#if __SUNPRO_CC < 0x400
|
||||||
|
#error "Compiler not supported or configured - please reconfigure"
|
||||||
|
#endif
|
||||||
|
//
|
||||||
|
// last known and checked version is 0x590:
|
||||||
|
#if (__SUNPRO_CC > 0x590)
|
||||||
|
# if defined(BOOST_ASSERT_CONFIG)
|
||||||
|
# error "Unknown compiler version - please run the configure tests and report the results"
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
61
library/include/boost/config/compiler/vacpp.hpp
Normal file
61
library/include/boost/config/compiler/vacpp.hpp
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
// (C) Copyright John Maddock 2001 - 2003.
|
||||||
|
// (C) Copyright Toon Knapen 2001 - 2003.
|
||||||
|
// (C) Copyright Lie-Quan Lee 2001.
|
||||||
|
// (C) Copyright Markus Schoepflin 2002 - 2003.
|
||||||
|
// (C) Copyright Beman Dawes 2002 - 2003.
|
||||||
|
// 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 for most recent version.
|
||||||
|
|
||||||
|
// Visual Age (IBM) C++ compiler setup:
|
||||||
|
|
||||||
|
#if __IBMCPP__ <= 501
|
||||||
|
# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
|
||||||
|
# define BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (__IBMCPP__ <= 502)
|
||||||
|
// Actually the compiler supports inclass member initialization but it
|
||||||
|
// requires a definition for the class member and it doesn't recognize
|
||||||
|
// it as an integral constant expression when used as a template argument.
|
||||||
|
# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
|
||||||
|
# define BOOST_NO_INTEGRAL_INT64_T
|
||||||
|
# define BOOST_NO_MEMBER_TEMPLATE_KEYWORD
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (__IBMCPP__ <= 600) || !defined(BOOST_STRICT_CONFIG)
|
||||||
|
# define BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS
|
||||||
|
# define BOOST_NO_INITIALIZER_LISTS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// On AIX thread support seems to be indicated by _THREAD_SAFE:
|
||||||
|
//
|
||||||
|
#ifdef _THREAD_SAFE
|
||||||
|
# define BOOST_HAS_THREADS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define BOOST_COMPILER "IBM Visual Age version " BOOST_STRINGIZE(__IBMCPP__)
|
||||||
|
|
||||||
|
//
|
||||||
|
// versions check:
|
||||||
|
// we don't support Visual age prior to version 5:
|
||||||
|
#if __IBMCPP__ < 500
|
||||||
|
#error "Compiler not supported or configured - please reconfigure"
|
||||||
|
#endif
|
||||||
|
//
|
||||||
|
// last known and checked version is 600:
|
||||||
|
#if (__IBMCPP__ > 600)
|
||||||
|
# if defined(BOOST_ASSERT_CONFIG)
|
||||||
|
# error "Unknown compiler version - please run the configure tests and report the results"
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Some versions of the compiler have issues with default arguments on partial specializations
|
||||||
|
#define BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
210
library/include/boost/config/compiler/visualc.hpp
Normal file
210
library/include/boost/config/compiler/visualc.hpp
Normal file
@ -0,0 +1,210 @@
|
|||||||
|
// (C) Copyright John Maddock 2001 - 2003.
|
||||||
|
// (C) Copyright Darin Adler 2001 - 2002.
|
||||||
|
// (C) Copyright Peter Dimov 2001.
|
||||||
|
// (C) Copyright Aleksey Gurtovoy 2002.
|
||||||
|
// (C) Copyright David Abrahams 2002 - 2003.
|
||||||
|
// (C) Copyright Beman Dawes 2002 - 2003.
|
||||||
|
// 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 for most recent version.
|
||||||
|
|
||||||
|
// Microsoft Visual C++ compiler setup:
|
||||||
|
|
||||||
|
#define BOOST_MSVC _MSC_VER
|
||||||
|
|
||||||
|
// turn off the warnings before we #include anything
|
||||||
|
#pragma warning( disable : 4503 ) // warning: decorated name length exceeded
|
||||||
|
|
||||||
|
#if _MSC_VER < 1300 // 1200 == VC++ 6.0, 1200-1202 == eVC++4
|
||||||
|
# pragma warning( disable : 4786 ) // ident trunc to '255' chars in debug info
|
||||||
|
# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
|
||||||
|
# define BOOST_NO_VOID_RETURNS
|
||||||
|
# define BOOST_NO_EXCEPTION_STD_NAMESPACE
|
||||||
|
|
||||||
|
# if BOOST_MSVC == 1202
|
||||||
|
# define BOOST_NO_STD_TYPEINFO
|
||||||
|
# endif
|
||||||
|
|
||||||
|
// disable min/max macro defines on vc6:
|
||||||
|
//
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (_MSC_VER <= 1300) // 1300 == VC++ 7.0
|
||||||
|
|
||||||
|
# if !defined(_MSC_EXTENSIONS) && !defined(BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS) // VC7 bug with /Za
|
||||||
|
# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
|
||||||
|
# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
|
||||||
|
# define BOOST_NO_PRIVATE_IN_AGGREGATE
|
||||||
|
# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
|
||||||
|
# define BOOST_NO_INTEGRAL_INT64_T
|
||||||
|
# define BOOST_NO_DEDUCED_TYPENAME
|
||||||
|
# define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
|
||||||
|
|
||||||
|
// VC++ 6/7 has member templates but they have numerous problems including
|
||||||
|
// cases of silent failure, so for safety we define:
|
||||||
|
# define BOOST_NO_MEMBER_TEMPLATES
|
||||||
|
// For VC++ experts wishing to attempt workarounds, we define:
|
||||||
|
# define BOOST_MSVC6_MEMBER_TEMPLATES
|
||||||
|
|
||||||
|
# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
|
||||||
|
# define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
|
||||||
|
# define BOOST_NO_CV_VOID_SPECIALIZATIONS
|
||||||
|
# define BOOST_NO_FUNCTION_TEMPLATE_ORDERING
|
||||||
|
# define BOOST_NO_USING_TEMPLATE
|
||||||
|
# define BOOST_NO_SWPRINTF
|
||||||
|
# define BOOST_NO_TEMPLATE_TEMPLATES
|
||||||
|
# define BOOST_NO_SFINAE
|
||||||
|
# define BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS
|
||||||
|
# define BOOST_NO_IS_ABSTRACT
|
||||||
|
# define BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS
|
||||||
|
// TODO: what version is meant here? Have there really been any fixes in cl 12.01 (as e.g. shipped with eVC4)?
|
||||||
|
# if (_MSC_VER > 1200)
|
||||||
|
# define BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if _MSC_VER < 1400
|
||||||
|
// although a conforming signature for swprint exists in VC7.1
|
||||||
|
// it appears not to actually work:
|
||||||
|
# define BOOST_NO_SWPRINTF
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(UNDER_CE)
|
||||||
|
// Windows CE does not have a conforming signature for swprintf
|
||||||
|
# define BOOST_NO_SWPRINTF
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if _MSC_VER <= 1400 // 1400 == VC++ 8.0
|
||||||
|
# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if _MSC_VER <= 1600 // 1600 == VC++ 10.0
|
||||||
|
# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if _MSC_VER == 1500 // 1500 == VC++ 9.0
|
||||||
|
// A bug in VC9:
|
||||||
|
# define BOOST_NO_ADL_BARRIER
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if _MSC_VER <= 1500 || !defined(BOOST_STRICT_CONFIG) // 1500 == VC++ 9.0
|
||||||
|
# define BOOST_NO_INITIALIZER_LISTS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef _NATIVE_WCHAR_T_DEFINED
|
||||||
|
# define BOOST_NO_INTRINSIC_WCHAR_T
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(_WIN32_WCE) || defined(UNDER_CE)
|
||||||
|
# define BOOST_NO_THREADEX
|
||||||
|
# define BOOST_NO_GETSYSTEMTIMEASFILETIME
|
||||||
|
# define BOOST_NO_SWPRINTF
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// check for exception handling support:
|
||||||
|
#ifndef _CPPUNWIND
|
||||||
|
# define BOOST_NO_EXCEPTIONS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// __int64 support:
|
||||||
|
//
|
||||||
|
#if (_MSC_VER >= 1200)
|
||||||
|
# define BOOST_HAS_MS_INT64
|
||||||
|
#endif
|
||||||
|
#if (_MSC_VER >= 1310) && defined(_MSC_EXTENSIONS)
|
||||||
|
# define BOOST_HAS_LONG_LONG
|
||||||
|
#endif
|
||||||
|
#if (_MSC_VER >= 1400) && !defined(_DEBUG)
|
||||||
|
# define BOOST_HAS_NRVO
|
||||||
|
#endif
|
||||||
|
//
|
||||||
|
// disable Win32 API's if compiler extentions are
|
||||||
|
// turned off:
|
||||||
|
//
|
||||||
|
#ifndef _MSC_EXTENSIONS
|
||||||
|
# define BOOST_DISABLE_WIN32
|
||||||
|
#endif
|
||||||
|
#ifndef _CPPRTTI
|
||||||
|
# define BOOST_NO_RTTI
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// all versions support __declspec:
|
||||||
|
//
|
||||||
|
#define BOOST_HAS_DECLSPEC
|
||||||
|
//
|
||||||
|
// prefix and suffix headers:
|
||||||
|
//
|
||||||
|
#ifndef BOOST_ABI_PREFIX
|
||||||
|
# define BOOST_ABI_PREFIX "boost/config/abi/msvc_prefix.hpp"
|
||||||
|
#endif
|
||||||
|
#ifndef BOOST_ABI_SUFFIX
|
||||||
|
# define BOOST_ABI_SUFFIX "boost/config/abi/msvc_suffix.hpp"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// TODO:
|
||||||
|
// these things are mostly bogus. 1200 means version 12.0 of the compiler. The
|
||||||
|
// artificial versions assigned to them only refer to the versions of some IDE
|
||||||
|
// these compilers have been shipped with, and even that is not all of it. Some
|
||||||
|
// were shipped with freely downloadable SDKs, others as crosscompilers in eVC.
|
||||||
|
// IOW, you can't use these 'versions' in any sensible way. Sorry.
|
||||||
|
# if defined(UNDER_CE)
|
||||||
|
# if _MSC_VER < 1200
|
||||||
|
// Note: these are so far off, they are not really supported
|
||||||
|
# elif _MSC_VER < 1300 // eVC++ 4 comes with 1200-1202
|
||||||
|
# define BOOST_COMPILER_VERSION evc4.0
|
||||||
|
# elif _MSC_VER == 1400
|
||||||
|
# define BOOST_COMPILER_VERSION evc8
|
||||||
|
# else
|
||||||
|
# if defined(BOOST_ASSERT_CONFIG)
|
||||||
|
# error "Unknown EVC++ compiler version - please run the configure tests and report the results"
|
||||||
|
# else
|
||||||
|
# pragma message("Unknown EVC++ compiler version - please run the configure tests and report the results")
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
# else
|
||||||
|
# if _MSC_VER < 1200
|
||||||
|
// Note: these are so far off, they are not really supported
|
||||||
|
# define BOOST_COMPILER_VERSION 5.0
|
||||||
|
# elif _MSC_VER < 1300
|
||||||
|
# define BOOST_COMPILER_VERSION 6.0
|
||||||
|
# elif _MSC_VER == 1300
|
||||||
|
# define BOOST_COMPILER_VERSION 7.0
|
||||||
|
# elif _MSC_VER == 1310
|
||||||
|
# define BOOST_COMPILER_VERSION 7.1
|
||||||
|
# elif _MSC_VER == 1400
|
||||||
|
# define BOOST_COMPILER_VERSION 8.0
|
||||||
|
# elif _MSC_VER == 1500
|
||||||
|
# define BOOST_COMPILER_VERSION 9.0
|
||||||
|
# elif _MSC_VER == 1600
|
||||||
|
# define BOOST_COMPILER_VERSION 10.0
|
||||||
|
# else
|
||||||
|
# define BOOST_COMPILER_VERSION _MSC_VER
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#define BOOST_COMPILER "Microsoft Visual C++ version " BOOST_STRINGIZE(BOOST_COMPILER_VERSION)
|
||||||
|
|
||||||
|
//
|
||||||
|
// versions check:
|
||||||
|
// we don't support Visual C++ prior to version 6:
|
||||||
|
#if _MSC_VER < 1200
|
||||||
|
#error "Compiler not supported or configured - please reconfigure"
|
||||||
|
#endif
|
||||||
|
//
|
||||||
|
// last known and checked version is 1500 (VC9):
|
||||||
|
#if (_MSC_VER > 1600)
|
||||||
|
# if defined(BOOST_ASSERT_CONFIG)
|
||||||
|
# error "Unknown compiler version - please run the configure tests and report the results"
|
||||||
|
# else
|
||||||
|
# pragma message("Unknown compiler version - please run the configure tests and report the results")
|
||||||
|
# endif
|
||||||
|
#endif
|
28
library/include/boost/config/no_tr1/cmath.hpp
Normal file
28
library/include/boost/config/no_tr1/cmath.hpp
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
// (C) Copyright John Maddock 2008.
|
||||||
|
// 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)
|
||||||
|
//
|
||||||
|
// The aim of this header is just to include <cmath> but to do
|
||||||
|
// so in a way that does not result in recursive inclusion of
|
||||||
|
// the Boost TR1 components if boost/tr1/tr1/cmath is in the
|
||||||
|
// include search path. We have to do this to avoid circular
|
||||||
|
// dependencies:
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef BOOST_CONFIG_CMATH
|
||||||
|
# define BOOST_CONFIG_CMATH
|
||||||
|
|
||||||
|
# ifndef BOOST_TR1_NO_RECURSION
|
||||||
|
# define BOOST_TR1_NO_RECURSION
|
||||||
|
# define BOOST_CONFIG_NO_CMATH_RECURSION
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# include <cmath>
|
||||||
|
|
||||||
|
# ifdef BOOST_CONFIG_NO_CMATH_RECURSION
|
||||||
|
# undef BOOST_TR1_NO_RECURSION
|
||||||
|
# undef BOOST_CONFIG_NO_CMATH_RECURSION
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#endif
|
28
library/include/boost/config/no_tr1/complex.hpp
Normal file
28
library/include/boost/config/no_tr1/complex.hpp
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
// (C) Copyright John Maddock 2005.
|
||||||
|
// 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)
|
||||||
|
//
|
||||||
|
// The aim of this header is just to include <complex> but to do
|
||||||
|
// so in a way that does not result in recursive inclusion of
|
||||||
|
// the Boost TR1 components if boost/tr1/tr1/complex is in the
|
||||||
|
// include search path. We have to do this to avoid circular
|
||||||
|
// dependencies:
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef BOOST_CONFIG_COMPLEX
|
||||||
|
# define BOOST_CONFIG_COMPLEX
|
||||||
|
|
||||||
|
# ifndef BOOST_TR1_NO_RECURSION
|
||||||
|
# define BOOST_TR1_NO_RECURSION
|
||||||
|
# define BOOST_CONFIG_NO_COMPLEX_RECURSION
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# include <complex>
|
||||||
|
|
||||||
|
# ifdef BOOST_CONFIG_NO_COMPLEX_RECURSION
|
||||||
|
# undef BOOST_TR1_NO_RECURSION
|
||||||
|
# undef BOOST_CONFIG_NO_COMPLEX_RECURSION
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#endif
|
28
library/include/boost/config/no_tr1/functional.hpp
Normal file
28
library/include/boost/config/no_tr1/functional.hpp
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
// (C) Copyright John Maddock 2005.
|
||||||
|
// 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)
|
||||||
|
//
|
||||||
|
// The aim of this header is just to include <functional> but to do
|
||||||
|
// so in a way that does not result in recursive inclusion of
|
||||||
|
// the Boost TR1 components if boost/tr1/tr1/functional is in the
|
||||||
|
// include search path. We have to do this to avoid circular
|
||||||
|
// dependencies:
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef BOOST_CONFIG_FUNCTIONAL
|
||||||
|
# define BOOST_CONFIG_FUNCTIONAL
|
||||||
|
|
||||||
|
# ifndef BOOST_TR1_NO_RECURSION
|
||||||
|
# define BOOST_TR1_NO_RECURSION
|
||||||
|
# define BOOST_CONFIG_NO_FUNCTIONAL_RECURSION
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# include <functional>
|
||||||
|
|
||||||
|
# ifdef BOOST_CONFIG_NO_FUNCTIONAL_RECURSION
|
||||||
|
# undef BOOST_TR1_NO_RECURSION
|
||||||
|
# undef BOOST_CONFIG_NO_FUNCTIONAL_RECURSION
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#endif
|
28
library/include/boost/config/no_tr1/memory.hpp
Normal file
28
library/include/boost/config/no_tr1/memory.hpp
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
// (C) Copyright John Maddock 2005.
|
||||||
|
// 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)
|
||||||
|
//
|
||||||
|
// The aim of this header is just to include <memory> but to do
|
||||||
|
// so in a way that does not result in recursive inclusion of
|
||||||
|
// the Boost TR1 components if boost/tr1/tr1/memory is in the
|
||||||
|
// include search path. We have to do this to avoid circular
|
||||||
|
// dependencies:
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef BOOST_CONFIG_MEMORY
|
||||||
|
# define BOOST_CONFIG_MEMORY
|
||||||
|
|
||||||
|
# ifndef BOOST_TR1_NO_RECURSION
|
||||||
|
# define BOOST_TR1_NO_RECURSION
|
||||||
|
# define BOOST_CONFIG_NO_MEMORY_RECURSION
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# include <memory>
|
||||||
|
|
||||||
|
# ifdef BOOST_CONFIG_NO_MEMORY_RECURSION
|
||||||
|
# undef BOOST_TR1_NO_RECURSION
|
||||||
|
# undef BOOST_CONFIG_NO_MEMORY_RECURSION
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#endif
|
28
library/include/boost/config/no_tr1/utility.hpp
Normal file
28
library/include/boost/config/no_tr1/utility.hpp
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
// (C) Copyright John Maddock 2005.
|
||||||
|
// 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)
|
||||||
|
//
|
||||||
|
// The aim of this header is just to include <utility> but to do
|
||||||
|
// so in a way that does not result in recursive inclusion of
|
||||||
|
// the Boost TR1 components if boost/tr1/tr1/utility is in the
|
||||||
|
// include search path. We have to do this to avoid circular
|
||||||
|
// dependencies:
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef BOOST_CONFIG_UTILITY
|
||||||
|
# define BOOST_CONFIG_UTILITY
|
||||||
|
|
||||||
|
# ifndef BOOST_TR1_NO_RECURSION
|
||||||
|
# define BOOST_TR1_NO_RECURSION
|
||||||
|
# define BOOST_CONFIG_NO_UTILITY_RECURSION
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# include <utility>
|
||||||
|
|
||||||
|
# ifdef BOOST_CONFIG_NO_UTILITY_RECURSION
|
||||||
|
# undef BOOST_TR1_NO_RECURSION
|
||||||
|
# undef BOOST_CONFIG_NO_UTILITY_RECURSION
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#endif
|
33
library/include/boost/config/platform/aix.hpp
Normal file
33
library/include/boost/config/platform/aix.hpp
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
// (C) Copyright John Maddock 2001 - 2002.
|
||||||
|
// 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 for most recent version.
|
||||||
|
|
||||||
|
// IBM/Aix specific config options:
|
||||||
|
|
||||||
|
#define BOOST_PLATFORM "IBM Aix"
|
||||||
|
|
||||||
|
#define BOOST_HAS_UNISTD_H
|
||||||
|
#define BOOST_HAS_NL_TYPES_H
|
||||||
|
#define BOOST_HAS_NANOSLEEP
|
||||||
|
#define BOOST_HAS_CLOCK_GETTIME
|
||||||
|
|
||||||
|
// This needs support in "boost/cstdint.hpp" exactly like FreeBSD.
|
||||||
|
// This platform has header named <inttypes.h> which includes all
|
||||||
|
// the things needed.
|
||||||
|
#define BOOST_HAS_STDINT_H
|
||||||
|
|
||||||
|
// Threading API's:
|
||||||
|
#define BOOST_HAS_PTHREADS
|
||||||
|
#define BOOST_HAS_PTHREAD_DELAY_NP
|
||||||
|
#define BOOST_HAS_SCHED_YIELD
|
||||||
|
//#define BOOST_HAS_PTHREAD_YIELD
|
||||||
|
|
||||||
|
// boilerplate code:
|
||||||
|
#include <boost/config/posix_features.hpp>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
15
library/include/boost/config/platform/amigaos.hpp
Normal file
15
library/include/boost/config/platform/amigaos.hpp
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
// (C) Copyright John Maddock 2002.
|
||||||
|
// 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 for most recent version.
|
||||||
|
|
||||||
|
#define BOOST_PLATFORM "AmigaOS"
|
||||||
|
|
||||||
|
#define BOOST_DISABLE_THREADS
|
||||||
|
#define BOOST_NO_CWCHAR
|
||||||
|
#define BOOST_NO_STD_WSTRING
|
||||||
|
#define BOOST_NO_INTRINSIC_WCHAR_T
|
||||||
|
|
||||||
|
|
26
library/include/boost/config/platform/beos.hpp
Normal file
26
library/include/boost/config/platform/beos.hpp
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
// (C) Copyright John Maddock 2001.
|
||||||
|
// 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 for most recent version.
|
||||||
|
|
||||||
|
// BeOS specific config options:
|
||||||
|
|
||||||
|
#define BOOST_PLATFORM "BeOS"
|
||||||
|
|
||||||
|
#define BOOST_NO_CWCHAR
|
||||||
|
#define BOOST_NO_CWCTYPE
|
||||||
|
#define BOOST_HAS_UNISTD_H
|
||||||
|
|
||||||
|
#define BOOST_HAS_BETHREADS
|
||||||
|
|
||||||
|
#ifndef BOOST_DISABLE_THREADS
|
||||||
|
# define BOOST_HAS_THREADS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// boilerplate code:
|
||||||
|
#include <boost/config/posix_features.hpp>
|
||||||
|
|
||||||
|
|
||||||
|
|
86
library/include/boost/config/platform/bsd.hpp
Normal file
86
library/include/boost/config/platform/bsd.hpp
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
// (C) Copyright John Maddock 2001 - 2003.
|
||||||
|
// (C) Copyright Darin Adler 2001.
|
||||||
|
// (C) Copyright Douglas Gregor 2002.
|
||||||
|
// 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 for most recent version.
|
||||||
|
|
||||||
|
// generic BSD config options:
|
||||||
|
|
||||||
|
#if !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__OpenBSD__) && !defined(__DragonFly__)
|
||||||
|
#error "This platform is not BSD"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __FreeBSD__
|
||||||
|
#define BOOST_PLATFORM "FreeBSD " BOOST_STRINGIZE(__FreeBSD__)
|
||||||
|
#elif defined(__NetBSD__)
|
||||||
|
#define BOOST_PLATFORM "NetBSD " BOOST_STRINGIZE(__NetBSD__)
|
||||||
|
#elif defined(__OpenBSD__)
|
||||||
|
#define BOOST_PLATFORM "OpenBSD " BOOST_STRINGIZE(__OpenBSD__)
|
||||||
|
#elif defined(__DragonFly__)
|
||||||
|
#define BOOST_PLATFORM "DragonFly " BOOST_STRINGIZE(__DragonFly__)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// is this the correct version check?
|
||||||
|
// FreeBSD has <nl_types.h> but does not
|
||||||
|
// advertise the fact in <unistd.h>:
|
||||||
|
//
|
||||||
|
#if (defined(__FreeBSD__) && (__FreeBSD__ >= 3)) || defined(__DragonFly__)
|
||||||
|
# define BOOST_HAS_NL_TYPES_H
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// FreeBSD 3.x has pthreads support, but defines _POSIX_THREADS in <pthread.h>
|
||||||
|
// and not in <unistd.h>
|
||||||
|
//
|
||||||
|
#if (defined(__FreeBSD__) && (__FreeBSD__ <= 3))\
|
||||||
|
|| defined(__OpenBSD__) || defined(__DragonFly__)
|
||||||
|
# define BOOST_HAS_PTHREADS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// No wide character support in the BSD header files:
|
||||||
|
//
|
||||||
|
#if defined(__NetBSD__)
|
||||||
|
#define __NetBSD_GCC__ (__GNUC__ * 1000000 \
|
||||||
|
+ __GNUC_MINOR__ * 1000 \
|
||||||
|
+ __GNUC_PATCHLEVEL__)
|
||||||
|
// XXX - the following is required until c++config.h
|
||||||
|
// defines _GLIBCXX_HAVE_SWPRINTF and friends
|
||||||
|
// or the preprocessor conditionals are removed
|
||||||
|
// from the cwchar header.
|
||||||
|
#define _GLIBCXX_HAVE_SWPRINTF 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !((defined(__FreeBSD__) && (__FreeBSD__ >= 5)) \
|
||||||
|
|| (__NetBSD_GCC__ >= 2095003) || defined(__DragonFly__))
|
||||||
|
# define BOOST_NO_CWCHAR
|
||||||
|
#endif
|
||||||
|
//
|
||||||
|
// The BSD <ctype.h> has macros only, no functions:
|
||||||
|
//
|
||||||
|
#if !defined(__OpenBSD__) || defined(__DragonFly__)
|
||||||
|
# define BOOST_NO_CTYPE_FUNCTIONS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// thread API's not auto detected:
|
||||||
|
//
|
||||||
|
#define BOOST_HAS_SCHED_YIELD
|
||||||
|
#define BOOST_HAS_NANOSLEEP
|
||||||
|
#define BOOST_HAS_GETTIMEOFDAY
|
||||||
|
#define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
|
||||||
|
#define BOOST_HAS_SIGACTION
|
||||||
|
|
||||||
|
// boilerplate code:
|
||||||
|
#define BOOST_HAS_UNISTD_H
|
||||||
|
#include <boost/config/posix_features.hpp>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
51
library/include/boost/config/platform/cygwin.hpp
Normal file
51
library/include/boost/config/platform/cygwin.hpp
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
// (C) Copyright John Maddock 2001 - 2003.
|
||||||
|
// 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 for most recent version.
|
||||||
|
|
||||||
|
// cygwin specific config options:
|
||||||
|
|
||||||
|
#define BOOST_PLATFORM "Cygwin"
|
||||||
|
#define BOOST_NO_CWCTYPE
|
||||||
|
#define BOOST_NO_CWCHAR
|
||||||
|
#define BOOST_NO_SWPRINTF
|
||||||
|
#define BOOST_HAS_DIRENT_H
|
||||||
|
#define BOOST_HAS_LOG1P
|
||||||
|
#define BOOST_HAS_EXPM1
|
||||||
|
|
||||||
|
//
|
||||||
|
// Threading API:
|
||||||
|
// See if we have POSIX threads, if we do use them, otherwise
|
||||||
|
// revert to native Win threads.
|
||||||
|
#define BOOST_HAS_UNISTD_H
|
||||||
|
#include <unistd.h>
|
||||||
|
#if defined(_POSIX_THREADS) && (_POSIX_THREADS+0 >= 0) && !defined(BOOST_HAS_WINTHREADS)
|
||||||
|
# define BOOST_HAS_PTHREADS
|
||||||
|
# define BOOST_HAS_SCHED_YIELD
|
||||||
|
# define BOOST_HAS_GETTIMEOFDAY
|
||||||
|
# define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
|
||||||
|
# define BOOST_HAS_SIGACTION
|
||||||
|
#else
|
||||||
|
# if !defined(BOOST_HAS_WINTHREADS)
|
||||||
|
# define BOOST_HAS_WINTHREADS
|
||||||
|
# endif
|
||||||
|
# define BOOST_HAS_FTIME
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// find out if we have a stdint.h, there should be a better way to do this:
|
||||||
|
//
|
||||||
|
#include <sys/types.h>
|
||||||
|
#ifdef _STDINT_H
|
||||||
|
#define BOOST_HAS_STDINT_H
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// boilerplate code:
|
||||||
|
#include <boost/config/posix_features.hpp>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
87
library/include/boost/config/platform/hpux.hpp
Normal file
87
library/include/boost/config/platform/hpux.hpp
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
// (C) Copyright John Maddock 2001 - 2003.
|
||||||
|
// (C) Copyright Jens Maurer 2001 - 2003.
|
||||||
|
// (C) Copyright David Abrahams 2002.
|
||||||
|
// (C) Copyright Toon Knapen 2003.
|
||||||
|
// (C) Copyright Boris Gubenko 2006 - 2007.
|
||||||
|
// 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 for most recent version.
|
||||||
|
|
||||||
|
// hpux specific config options:
|
||||||
|
|
||||||
|
#define BOOST_PLATFORM "HP-UX"
|
||||||
|
|
||||||
|
// In principle, HP-UX has a nice <stdint.h> under the name <inttypes.h>
|
||||||
|
// However, it has the following problem:
|
||||||
|
// Use of UINT32_C(0) results in "0u l" for the preprocessed source
|
||||||
|
// (verifyable with gcc 2.95.3)
|
||||||
|
#if (defined(__GNUC__) && (__GNUC__ >= 3)) || defined(__HP_aCC)
|
||||||
|
# define BOOST_HAS_STDINT_H
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !(defined(__HP_aCC) || !defined(_INCLUDE__STDC_A1_SOURCE))
|
||||||
|
# define BOOST_NO_SWPRINTF
|
||||||
|
#endif
|
||||||
|
#if defined(__HP_aCC) && !defined(_INCLUDE__STDC_A1_SOURCE)
|
||||||
|
# define BOOST_NO_CWCTYPE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
|
# if (__GNUC__ < 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ < 3))
|
||||||
|
// GNU C on HP-UX does not support threads (checked up to gcc 3.3)
|
||||||
|
# define BOOST_DISABLE_THREADS
|
||||||
|
# elif !defined(BOOST_DISABLE_THREADS)
|
||||||
|
// threads supported from gcc-3.3 onwards:
|
||||||
|
# define BOOST_HAS_THREADS
|
||||||
|
# define BOOST_HAS_PTHREADS
|
||||||
|
# endif
|
||||||
|
#elif defined(__HP_aCC) && !defined(BOOST_DISABLE_THREADS)
|
||||||
|
# define BOOST_HAS_PTHREADS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// boilerplate code:
|
||||||
|
#define BOOST_HAS_UNISTD_H
|
||||||
|
#include <boost/config/posix_features.hpp>
|
||||||
|
|
||||||
|
// the following are always available:
|
||||||
|
#ifndef BOOST_HAS_GETTIMEOFDAY
|
||||||
|
# define BOOST_HAS_GETTIMEOFDAY
|
||||||
|
#endif
|
||||||
|
#ifndef BOOST_HAS_SCHED_YIELD
|
||||||
|
# define BOOST_HAS_SCHED_YIELD
|
||||||
|
#endif
|
||||||
|
#ifndef BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
|
||||||
|
# define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
|
||||||
|
#endif
|
||||||
|
#ifndef BOOST_HAS_NL_TYPES_H
|
||||||
|
# define BOOST_HAS_NL_TYPES_H
|
||||||
|
#endif
|
||||||
|
#ifndef BOOST_HAS_NANOSLEEP
|
||||||
|
# define BOOST_HAS_NANOSLEEP
|
||||||
|
#endif
|
||||||
|
#ifndef BOOST_HAS_GETTIMEOFDAY
|
||||||
|
# define BOOST_HAS_GETTIMEOFDAY
|
||||||
|
#endif
|
||||||
|
#ifndef BOOST_HAS_DIRENT_H
|
||||||
|
# define BOOST_HAS_DIRENT_H
|
||||||
|
#endif
|
||||||
|
#ifndef BOOST_HAS_CLOCK_GETTIME
|
||||||
|
# define BOOST_HAS_CLOCK_GETTIME
|
||||||
|
#endif
|
||||||
|
#ifndef BOOST_HAS_SIGACTION
|
||||||
|
# define BOOST_HAS_SIGACTION
|
||||||
|
#endif
|
||||||
|
#ifndef BOOST_HAS_NRVO
|
||||||
|
# ifndef __parisc
|
||||||
|
# define BOOST_HAS_NRVO
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
#ifndef BOOST_HAS_LOG1P
|
||||||
|
# define BOOST_HAS_LOG1P
|
||||||
|
#endif
|
||||||
|
#ifndef BOOST_HAS_EXPM1
|
||||||
|
# define BOOST_HAS_EXPM1
|
||||||
|
#endif
|
||||||
|
|
31
library/include/boost/config/platform/irix.hpp
Normal file
31
library/include/boost/config/platform/irix.hpp
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
// (C) Copyright John Maddock 2001 - 2003.
|
||||||
|
// (C) Copyright Jens Maurer 2003.
|
||||||
|
// 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 for most recent version.
|
||||||
|
|
||||||
|
// SGI Irix specific config options:
|
||||||
|
|
||||||
|
#define BOOST_PLATFORM "SGI Irix"
|
||||||
|
|
||||||
|
#define BOOST_NO_SWPRINTF
|
||||||
|
//
|
||||||
|
// these are not auto detected by POSIX feature tests:
|
||||||
|
//
|
||||||
|
#define BOOST_HAS_GETTIMEOFDAY
|
||||||
|
#define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
|
||||||
|
|
||||||
|
#ifdef __GNUC__
|
||||||
|
// GNU C on IRIX does not support threads (checked up to gcc 3.3)
|
||||||
|
# define BOOST_DISABLE_THREADS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// boilerplate code:
|
||||||
|
#define BOOST_HAS_UNISTD_H
|
||||||
|
#include <boost/config/posix_features.hpp>
|
||||||
|
|
||||||
|
|
||||||
|
|
98
library/include/boost/config/platform/linux.hpp
Normal file
98
library/include/boost/config/platform/linux.hpp
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
// (C) Copyright John Maddock 2001 - 2003.
|
||||||
|
// (C) Copyright Jens Maurer 2001 - 2003.
|
||||||
|
// 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 for most recent version.
|
||||||
|
|
||||||
|
// linux specific config options:
|
||||||
|
|
||||||
|
#define BOOST_PLATFORM "linux"
|
||||||
|
|
||||||
|
// make sure we have __GLIBC_PREREQ if available at all
|
||||||
|
#include <cstdlib>
|
||||||
|
|
||||||
|
//
|
||||||
|
// <stdint.h> added to glibc 2.1.1
|
||||||
|
// We can only test for 2.1 though:
|
||||||
|
//
|
||||||
|
#if defined(__GLIBC__) && ((__GLIBC__ > 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 1)))
|
||||||
|
// <stdint.h> defines int64_t unconditionally, but <sys/types.h> defines
|
||||||
|
// int64_t only if __GNUC__. Thus, assume a fully usable <stdint.h>
|
||||||
|
// only when using GCC.
|
||||||
|
# if defined __GNUC__
|
||||||
|
# define BOOST_HAS_STDINT_H
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__LIBCOMO__)
|
||||||
|
//
|
||||||
|
// como on linux doesn't have std:: c functions:
|
||||||
|
// NOTE: versions of libcomo prior to beta28 have octal version numbering,
|
||||||
|
// e.g. version 25 is 21 (dec)
|
||||||
|
//
|
||||||
|
# if __LIBCOMO_VERSION__ <= 20
|
||||||
|
# define BOOST_NO_STDC_NAMESPACE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if __LIBCOMO_VERSION__ <= 21
|
||||||
|
# define BOOST_NO_SWPRINTF
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// If glibc is past version 2 then we definitely have
|
||||||
|
// gettimeofday, earlier versions may or may not have it:
|
||||||
|
//
|
||||||
|
#if defined(__GLIBC__) && (__GLIBC__ >= 2)
|
||||||
|
# define BOOST_HAS_GETTIMEOFDAY
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __USE_POSIX199309
|
||||||
|
# define BOOST_HAS_NANOSLEEP
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__GLIBC__) && defined(__GLIBC_PREREQ)
|
||||||
|
// __GLIBC_PREREQ is available since 2.1.2
|
||||||
|
|
||||||
|
// swprintf is available since glibc 2.2.0
|
||||||
|
# if !__GLIBC_PREREQ(2,2) || (!defined(__USE_ISOC99) && !defined(__USE_UNIX98))
|
||||||
|
# define BOOST_NO_SWPRINTF
|
||||||
|
# endif
|
||||||
|
#else
|
||||||
|
# define BOOST_NO_SWPRINTF
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// boilerplate code:
|
||||||
|
#define BOOST_HAS_UNISTD_H
|
||||||
|
#include <boost/config/posix_features.hpp>
|
||||||
|
|
||||||
|
#ifndef __GNUC__
|
||||||
|
//
|
||||||
|
// if the compiler is not gcc we still need to be able to parse
|
||||||
|
// the GNU system headers, some of which (mainly <stdint.h>)
|
||||||
|
// use GNU specific extensions:
|
||||||
|
//
|
||||||
|
# ifndef __extension__
|
||||||
|
# define __extension__
|
||||||
|
# endif
|
||||||
|
# ifndef __const__
|
||||||
|
# define __const__ const
|
||||||
|
# endif
|
||||||
|
# ifndef __volatile__
|
||||||
|
# define __volatile__ volatile
|
||||||
|
# endif
|
||||||
|
# ifndef __signed__
|
||||||
|
# define __signed__ signed
|
||||||
|
# endif
|
||||||
|
# ifndef __typeof__
|
||||||
|
# define __typeof__ typeof
|
||||||
|
# endif
|
||||||
|
# ifndef __inline__
|
||||||
|
# define __inline__ inline
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
86
library/include/boost/config/platform/macos.hpp
Normal file
86
library/include/boost/config/platform/macos.hpp
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
// (C) Copyright John Maddock 2001 - 2003.
|
||||||
|
// (C) Copyright Darin Adler 2001 - 2002.
|
||||||
|
// (C) Copyright Bill Kempf 2002.
|
||||||
|
// 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 for most recent version.
|
||||||
|
|
||||||
|
// Mac OS specific config options:
|
||||||
|
|
||||||
|
#define BOOST_PLATFORM "Mac OS"
|
||||||
|
|
||||||
|
#if __MACH__ && !defined(_MSL_USING_MSL_C)
|
||||||
|
|
||||||
|
// Using the Mac OS X system BSD-style C library.
|
||||||
|
|
||||||
|
# ifndef BOOST_HAS_UNISTD_H
|
||||||
|
# define BOOST_HAS_UNISTD_H
|
||||||
|
# endif
|
||||||
|
//
|
||||||
|
// Begin by including our boilerplate code for POSIX
|
||||||
|
// feature detection, this is safe even when using
|
||||||
|
// the MSL as Metrowerks supply their own <unistd.h>
|
||||||
|
// to replace the platform-native BSD one. G++ users
|
||||||
|
// should also always be able to do this on MaxOS X.
|
||||||
|
//
|
||||||
|
# include <boost/config/posix_features.hpp>
|
||||||
|
# ifndef BOOST_HAS_STDINT_H
|
||||||
|
# define BOOST_HAS_STDINT_H
|
||||||
|
# endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// BSD runtime has pthreads, sigaction, sched_yield and gettimeofday,
|
||||||
|
// of these only pthreads are advertised in <unistd.h>, so set the
|
||||||
|
// other options explicitly:
|
||||||
|
//
|
||||||
|
# define BOOST_HAS_SCHED_YIELD
|
||||||
|
# define BOOST_HAS_GETTIMEOFDAY
|
||||||
|
# define BOOST_HAS_SIGACTION
|
||||||
|
|
||||||
|
# if (__GNUC__ < 3) && !defined( __APPLE_CC__)
|
||||||
|
|
||||||
|
// GCC strange "ignore std" mode works better if you pretend everything
|
||||||
|
// is in the std namespace, for the most part.
|
||||||
|
|
||||||
|
# define BOOST_NO_STDC_NAMESPACE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if (__GNUC__ == 4)
|
||||||
|
|
||||||
|
// Both gcc and intel require these.
|
||||||
|
# define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
|
||||||
|
# define BOOST_HAS_NANOSLEEP
|
||||||
|
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
// Using the MSL C library.
|
||||||
|
|
||||||
|
// We will eventually support threads in non-Carbon builds, but we do
|
||||||
|
// not support this yet.
|
||||||
|
# if ( defined(TARGET_API_MAC_CARBON) && TARGET_API_MAC_CARBON ) || ( defined(TARGET_CARBON) && TARGET_CARBON )
|
||||||
|
|
||||||
|
# if !defined(BOOST_HAS_PTHREADS)
|
||||||
|
# define BOOST_HAS_MPTASKS
|
||||||
|
# elif ( __dest_os == __mac_os_x )
|
||||||
|
// We are doing a Carbon/Mach-O/MSL build which has pthreads, but only the
|
||||||
|
// gettimeofday and no posix.
|
||||||
|
# define BOOST_HAS_GETTIMEOFDAY
|
||||||
|
# endif
|
||||||
|
|
||||||
|
// The MP task implementation of Boost Threads aims to replace MP-unsafe
|
||||||
|
// parts of the MSL, so we turn on threads unconditionally.
|
||||||
|
# define BOOST_HAS_THREADS
|
||||||
|
|
||||||
|
// The remote call manager depends on this.
|
||||||
|
# define BOOST_BIND_ENABLE_PASCAL
|
||||||
|
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
31
library/include/boost/config/platform/qnxnto.hpp
Normal file
31
library/include/boost/config/platform/qnxnto.hpp
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
// (C) Copyright Jim Douglas 2005.
|
||||||
|
// 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 for most recent version.
|
||||||
|
|
||||||
|
// QNX specific config options:
|
||||||
|
|
||||||
|
#define BOOST_PLATFORM "QNX"
|
||||||
|
|
||||||
|
#define BOOST_HAS_UNISTD_H
|
||||||
|
#include <boost/config/posix_features.hpp>
|
||||||
|
|
||||||
|
// QNX claims XOpen version 5 compatibility, but doesn't have an nl_types.h
|
||||||
|
// or log1p and expm1:
|
||||||
|
#undef BOOST_HAS_NL_TYPES_H
|
||||||
|
#undef BOOST_HAS_LOG1P
|
||||||
|
#undef BOOST_HAS_EXPM1
|
||||||
|
|
||||||
|
#define BOOST_HAS_PTHREADS
|
||||||
|
#define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
|
||||||
|
|
||||||
|
#define BOOST_HAS_GETTIMEOFDAY
|
||||||
|
#define BOOST_HAS_CLOCK_GETTIME
|
||||||
|
#define BOOST_HAS_NANOSLEEP
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
28
library/include/boost/config/platform/solaris.hpp
Normal file
28
library/include/boost/config/platform/solaris.hpp
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
// (C) Copyright John Maddock 2001 - 2003.
|
||||||
|
// (C) Copyright Jens Maurer 2003.
|
||||||
|
// 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 for most recent version.
|
||||||
|
|
||||||
|
// sun specific config options:
|
||||||
|
|
||||||
|
#define BOOST_PLATFORM "Sun Solaris"
|
||||||
|
|
||||||
|
#define BOOST_HAS_GETTIMEOFDAY
|
||||||
|
|
||||||
|
// boilerplate code:
|
||||||
|
#define BOOST_HAS_UNISTD_H
|
||||||
|
#include <boost/config/posix_features.hpp>
|
||||||
|
|
||||||
|
//
|
||||||
|
// pthreads don't actually work with gcc unless _PTHREADS is defined:
|
||||||
|
//
|
||||||
|
#if defined(__GNUC__) && defined(_POSIX_THREADS) && !defined(_PTHREADS)
|
||||||
|
# undef BOOST_HAS_PTHREADS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
58
library/include/boost/config/platform/win32.hpp
Normal file
58
library/include/boost/config/platform/win32.hpp
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
// (C) Copyright John Maddock 2001 - 2003.
|
||||||
|
// (C) Copyright Bill Kempf 2001.
|
||||||
|
// (C) Copyright Aleksey Gurtovoy 2003.
|
||||||
|
// (C) Copyright Rene Rivera 2005.
|
||||||
|
// 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 for most recent version.
|
||||||
|
|
||||||
|
// Win32 specific config options:
|
||||||
|
|
||||||
|
#define BOOST_PLATFORM "Win32"
|
||||||
|
|
||||||
|
// Get the information about the MinGW runtime, i.e. __MINGW32_*VERSION.
|
||||||
|
#if defined(__MINGW32__)
|
||||||
|
# include <_mingw.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__GNUC__) && !defined(BOOST_NO_SWPRINTF)
|
||||||
|
# define BOOST_NO_SWPRINTF
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(__GNUC__) && !defined(BOOST_HAS_DECLSPEC)
|
||||||
|
# define BOOST_HAS_DECLSPEC
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__MINGW32__) && ((__MINGW32_MAJOR_VERSION > 2) || ((__MINGW32_MAJOR_VERSION == 2) && (__MINGW32_MINOR_VERSION >= 0)))
|
||||||
|
# define BOOST_HAS_STDINT_H
|
||||||
|
# define __STDC_LIMIT_MACROS
|
||||||
|
# define BOOST_HAS_DIRENT_H
|
||||||
|
# define BOOST_HAS_UNISTD_H
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Win32 will normally be using native Win32 threads,
|
||||||
|
// but there is a pthread library avaliable as an option,
|
||||||
|
// we used to disable this when BOOST_DISABLE_WIN32 was
|
||||||
|
// defined but no longer - this should allow some
|
||||||
|
// files to be compiled in strict mode - while maintaining
|
||||||
|
// a consistent setting of BOOST_HAS_THREADS across
|
||||||
|
// all translation units (needed for shared_ptr etc).
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifdef _WIN32_WCE
|
||||||
|
# define BOOST_NO_ANSI_APIS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef BOOST_HAS_PTHREADS
|
||||||
|
# define BOOST_HAS_WINTHREADS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef BOOST_DISABLE_WIN32
|
||||||
|
// WEK: Added
|
||||||
|
#define BOOST_HAS_FTIME
|
||||||
|
#define BOOST_WINDOWS 1
|
||||||
|
|
||||||
|
#endif
|
95
library/include/boost/config/posix_features.hpp
Normal file
95
library/include/boost/config/posix_features.hpp
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
// (C) Copyright John Maddock 2001 - 2003.
|
||||||
|
// 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 for most recent version.
|
||||||
|
|
||||||
|
// All POSIX feature tests go in this file,
|
||||||
|
// Note that we test _POSIX_C_SOURCE and _XOPEN_SOURCE as well
|
||||||
|
// _POSIX_VERSION and _XOPEN_VERSION: on some systems POSIX API's
|
||||||
|
// may be present but none-functional unless _POSIX_C_SOURCE and
|
||||||
|
// _XOPEN_SOURCE have been defined to the right value (it's up
|
||||||
|
// to the user to do this *before* including any header, although
|
||||||
|
// in most cases the compiler will do this for you).
|
||||||
|
|
||||||
|
# if defined(BOOST_HAS_UNISTD_H)
|
||||||
|
# include <unistd.h>
|
||||||
|
|
||||||
|
// XOpen has <nl_types.h>, but is this the correct version check?
|
||||||
|
# if defined(_XOPEN_VERSION) && (_XOPEN_VERSION >= 3)
|
||||||
|
# define BOOST_HAS_NL_TYPES_H
|
||||||
|
# endif
|
||||||
|
|
||||||
|
// POSIX version 6 requires <stdint.h>
|
||||||
|
# if defined(_POSIX_VERSION) && (_POSIX_VERSION >= 200100)
|
||||||
|
# define BOOST_HAS_STDINT_H
|
||||||
|
# endif
|
||||||
|
|
||||||
|
// POSIX version 2 requires <dirent.h>
|
||||||
|
# if defined(_POSIX_VERSION) && (_POSIX_VERSION >= 199009L)
|
||||||
|
# define BOOST_HAS_DIRENT_H
|
||||||
|
# endif
|
||||||
|
|
||||||
|
// POSIX version 3 requires <signal.h> to have sigaction:
|
||||||
|
# if defined(_POSIX_VERSION) && (_POSIX_VERSION >= 199506L)
|
||||||
|
# define BOOST_HAS_SIGACTION
|
||||||
|
# endif
|
||||||
|
// POSIX defines _POSIX_THREADS > 0 for pthread support,
|
||||||
|
// however some platforms define _POSIX_THREADS without
|
||||||
|
// a value, hence the (_POSIX_THREADS+0 >= 0) check.
|
||||||
|
// Strictly speaking this may catch platforms with a
|
||||||
|
// non-functioning stub <pthreads.h>, but such occurrences should
|
||||||
|
// occur very rarely if at all.
|
||||||
|
# if defined(_POSIX_THREADS) && (_POSIX_THREADS+0 >= 0) && !defined(BOOST_HAS_WINTHREADS) && !defined(BOOST_HAS_MPTASKS)
|
||||||
|
# define BOOST_HAS_PTHREADS
|
||||||
|
# endif
|
||||||
|
|
||||||
|
// BOOST_HAS_NANOSLEEP:
|
||||||
|
// This is predicated on _POSIX_TIMERS or _XOPEN_REALTIME:
|
||||||
|
# if (defined(_POSIX_TIMERS) && (_POSIX_TIMERS+0 >= 0)) \
|
||||||
|
|| (defined(_XOPEN_REALTIME) && (_XOPEN_REALTIME+0 >= 0))
|
||||||
|
# define BOOST_HAS_NANOSLEEP
|
||||||
|
# endif
|
||||||
|
|
||||||
|
// BOOST_HAS_CLOCK_GETTIME:
|
||||||
|
// This is predicated on _POSIX_TIMERS (also on _XOPEN_REALTIME
|
||||||
|
// but at least one platform - linux - defines that flag without
|
||||||
|
// defining clock_gettime):
|
||||||
|
# if (defined(_POSIX_TIMERS) && (_POSIX_TIMERS+0 >= 0))
|
||||||
|
# define BOOST_HAS_CLOCK_GETTIME
|
||||||
|
# endif
|
||||||
|
|
||||||
|
// BOOST_HAS_SCHED_YIELD:
|
||||||
|
// This is predicated on _POSIX_PRIORITY_SCHEDULING or
|
||||||
|
// on _POSIX_THREAD_PRIORITY_SCHEDULING or on _XOPEN_REALTIME.
|
||||||
|
# if defined(_POSIX_PRIORITY_SCHEDULING) && (_POSIX_PRIORITY_SCHEDULING+0 > 0)\
|
||||||
|
|| (defined(_POSIX_THREAD_PRIORITY_SCHEDULING) && (_POSIX_THREAD_PRIORITY_SCHEDULING+0 > 0))\
|
||||||
|
|| (defined(_XOPEN_REALTIME) && (_XOPEN_REALTIME+0 >= 0))
|
||||||
|
# define BOOST_HAS_SCHED_YIELD
|
||||||
|
# endif
|
||||||
|
|
||||||
|
// BOOST_HAS_GETTIMEOFDAY:
|
||||||
|
// BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE:
|
||||||
|
// These are predicated on _XOPEN_VERSION, and appears to be first released
|
||||||
|
// in issue 4, version 2 (_XOPEN_VERSION > 500).
|
||||||
|
// Likewise for the functions log1p and expm1.
|
||||||
|
# if defined(_XOPEN_VERSION) && (_XOPEN_VERSION+0 >= 500)
|
||||||
|
# define BOOST_HAS_GETTIMEOFDAY
|
||||||
|
# if defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE+0 >= 500)
|
||||||
|
# define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
|
||||||
|
# endif
|
||||||
|
# ifndef BOOST_HAS_LOG1P
|
||||||
|
# define BOOST_HAS_LOG1P
|
||||||
|
# endif
|
||||||
|
# ifndef BOOST_HAS_EXPM1
|
||||||
|
# define BOOST_HAS_EXPM1
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
92
library/include/boost/config/requires_threads.hpp
Normal file
92
library/include/boost/config/requires_threads.hpp
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
// (C) Copyright John Maddock 2003.
|
||||||
|
// 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)
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef BOOST_CONFIG_REQUIRES_THREADS_HPP
|
||||||
|
#define BOOST_CONFIG_REQUIRES_THREADS_HPP
|
||||||
|
|
||||||
|
#ifndef BOOST_CONFIG_HPP
|
||||||
|
# include <boost/config.hpp>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(BOOST_DISABLE_THREADS)
|
||||||
|
|
||||||
|
//
|
||||||
|
// special case to handle versions of gcc which don't currently support threads:
|
||||||
|
//
|
||||||
|
#if defined(__GNUC__) && ((__GNUC__ < 3) || (__GNUC_MINOR__ <= 3) || !defined(BOOST_STRICT_CONFIG))
|
||||||
|
//
|
||||||
|
// this is checked up to gcc 3.3:
|
||||||
|
//
|
||||||
|
#if defined(__sgi) || defined(__hpux)
|
||||||
|
# error "Multi-threaded programs are not supported by gcc on HPUX or Irix (last checked with gcc 3.3)"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
# error "Threading support unavaliable: it has been explicitly disabled with BOOST_DISABLE_THREADS"
|
||||||
|
|
||||||
|
#elif !defined(BOOST_HAS_THREADS)
|
||||||
|
|
||||||
|
# if defined __COMO__
|
||||||
|
// Comeau C++
|
||||||
|
# error "Compiler threading support is not turned on. Please set the correct command line options for threading: -D_MT (Windows) or -D_REENTRANT (Unix)"
|
||||||
|
|
||||||
|
#elif defined(__INTEL_COMPILER) || defined(__ICL) || defined(__ICC) || defined(__ECC)
|
||||||
|
// Intel
|
||||||
|
#ifdef _WIN32
|
||||||
|
# error "Compiler threading support is not turned on. Please set the correct command line options for threading: either /MT /MTd /MD or /MDd"
|
||||||
|
#else
|
||||||
|
# error "Compiler threading support is not turned on. Please set the correct command line options for threading: -openmp"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
# elif defined __GNUC__
|
||||||
|
// GNU C++:
|
||||||
|
# error "Compiler threading support is not turned on. Please set the correct command line options for threading: -pthread (Linux), -pthreads (Solaris) or -mthreads (Mingw32)"
|
||||||
|
|
||||||
|
#elif defined __sgi
|
||||||
|
// SGI MIPSpro C++
|
||||||
|
# error "Compiler threading support is not turned on. Please set the correct command line options for threading: -D_SGI_MP_SOURCE"
|
||||||
|
|
||||||
|
#elif defined __DECCXX
|
||||||
|
// Compaq Tru64 Unix cxx
|
||||||
|
# error "Compiler threading support is not turned on. Please set the correct command line options for threading: -pthread"
|
||||||
|
|
||||||
|
#elif defined __BORLANDC__
|
||||||
|
// Borland
|
||||||
|
# error "Compiler threading support is not turned on. Please set the correct command line options for threading: -tWM"
|
||||||
|
|
||||||
|
#elif defined __MWERKS__
|
||||||
|
// Metrowerks CodeWarrior
|
||||||
|
# error "Compiler threading support is not turned on. Please set the correct command line options for threading: either -runtime sm, -runtime smd, -runtime dm, or -runtime dmd"
|
||||||
|
|
||||||
|
#elif defined __SUNPRO_CC
|
||||||
|
// Sun Workshop Compiler C++
|
||||||
|
# error "Compiler threading support is not turned on. Please set the correct command line options for threading: -mt"
|
||||||
|
|
||||||
|
#elif defined __HP_aCC
|
||||||
|
// HP aCC
|
||||||
|
# error "Compiler threading support is not turned on. Please set the correct command line options for threading: -mt"
|
||||||
|
|
||||||
|
#elif defined(__IBMCPP__)
|
||||||
|
// IBM Visual Age
|
||||||
|
# error "Compiler threading support is not turned on. Please compile the code with the xlC_r compiler"
|
||||||
|
|
||||||
|
#elif defined _MSC_VER
|
||||||
|
// Microsoft Visual C++
|
||||||
|
//
|
||||||
|
// Must remain the last #elif since some other vendors (Metrowerks, for
|
||||||
|
// example) also #define _MSC_VER
|
||||||
|
# error "Compiler threading support is not turned on. Please set the correct command line options for threading: either /MT /MTd /MD or /MDd"
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
# error "Compiler threading support is not turned on. Please consult your compiler's documentation for the appropriate options to use"
|
||||||
|
|
||||||
|
#endif // compilers
|
||||||
|
|
||||||
|
#endif // BOOST_HAS_THREADS
|
||||||
|
|
||||||
|
#endif // BOOST_CONFIG_REQUIRES_THREADS_HPP
|
119
library/include/boost/config/select_compiler_config.hpp
Normal file
119
library/include/boost/config/select_compiler_config.hpp
Normal file
@ -0,0 +1,119 @@
|
|||||||
|
// Boost compiler configuration selection header file
|
||||||
|
|
||||||
|
// (C) Copyright John Maddock 2001 - 2003.
|
||||||
|
// (C) Copyright Martin Wille 2003.
|
||||||
|
// (C) Copyright Guillaume Melquiond 2003.
|
||||||
|
//
|
||||||
|
// 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)
|
||||||
|
|
||||||
|
// See http://www.boost.org/ for most recent version.
|
||||||
|
|
||||||
|
|
||||||
|
// one identification macro for each of the
|
||||||
|
// compilers we support:
|
||||||
|
|
||||||
|
# define BOOST_CXX_GCCXML 0
|
||||||
|
# define BOOST_CXX_COMO 0
|
||||||
|
# define BOOST_CXX_DMC 0
|
||||||
|
# define BOOST_CXX_INTEL 0
|
||||||
|
# define BOOST_CXX_GNUC 0
|
||||||
|
# define BOOST_CXX_KCC 0
|
||||||
|
# define BOOST_CXX_SGI 0
|
||||||
|
# define BOOST_CXX_TRU64 0
|
||||||
|
# define BOOST_CXX_GHS 0
|
||||||
|
# define BOOST_CXX_BORLAND 0
|
||||||
|
# define BOOST_CXX_CW 0
|
||||||
|
# define BOOST_CXX_SUNPRO 0
|
||||||
|
# define BOOST_CXX_HPACC 0
|
||||||
|
# define BOOST_CXX_MPW 0
|
||||||
|
# define BOOST_CXX_IBMCPP 0
|
||||||
|
# define BOOST_CXX_MSVC 0
|
||||||
|
# define BOOST_CXX_PGI 0
|
||||||
|
|
||||||
|
|
||||||
|
// locate which compiler we are using and define
|
||||||
|
// BOOST_COMPILER_CONFIG as needed:
|
||||||
|
|
||||||
|
#if defined(__GCCXML__)
|
||||||
|
// GCC-XML emulates other compilers, it has to appear first here!
|
||||||
|
# define BOOST_COMPILER_CONFIG "boost/config/compiler/gcc_xml.hpp"
|
||||||
|
|
||||||
|
#elif defined __COMO__
|
||||||
|
// Comeau C++
|
||||||
|
# define BOOST_COMPILER_CONFIG "boost/config/compiler/comeau.hpp"
|
||||||
|
|
||||||
|
#elif defined __DMC__
|
||||||
|
// Digital Mars C++
|
||||||
|
# define BOOST_COMPILER_CONFIG "boost/config/compiler/digitalmars.hpp"
|
||||||
|
|
||||||
|
#elif defined(__INTEL_COMPILER) || defined(__ICL) || defined(__ICC) || defined(__ECC)
|
||||||
|
// Intel
|
||||||
|
# define BOOST_COMPILER_CONFIG "boost/config/compiler/intel.hpp"
|
||||||
|
|
||||||
|
# elif defined __GNUC__
|
||||||
|
// GNU C++:
|
||||||
|
# define BOOST_COMPILER_CONFIG "boost/config/compiler/gcc.hpp"
|
||||||
|
|
||||||
|
#elif defined __KCC
|
||||||
|
// Kai C++
|
||||||
|
# define BOOST_COMPILER_CONFIG "boost/config/compiler/kai.hpp"
|
||||||
|
|
||||||
|
#elif defined __sgi
|
||||||
|
// SGI MIPSpro C++
|
||||||
|
# define BOOST_COMPILER_CONFIG "boost/config/compiler/sgi_mipspro.hpp"
|
||||||
|
|
||||||
|
#elif defined __DECCXX
|
||||||
|
// Compaq Tru64 Unix cxx
|
||||||
|
# define BOOST_COMPILER_CONFIG "boost/config/compiler/compaq_cxx.hpp"
|
||||||
|
|
||||||
|
#elif defined __ghs
|
||||||
|
// Greenhills C++
|
||||||
|
# define BOOST_COMPILER_CONFIG "boost/config/compiler/greenhills.hpp"
|
||||||
|
|
||||||
|
#elif defined __CODEGEARC__
|
||||||
|
// CodeGear - must be checked for before Borland
|
||||||
|
# define BOOST_COMPILER_CONFIG "boost/config/compiler/codegear.hpp"
|
||||||
|
|
||||||
|
#elif defined __BORLANDC__
|
||||||
|
// Borland
|
||||||
|
# define BOOST_COMPILER_CONFIG "boost/config/compiler/borland.hpp"
|
||||||
|
|
||||||
|
#elif defined __MWERKS__
|
||||||
|
// Metrowerks CodeWarrior
|
||||||
|
# define BOOST_COMPILER_CONFIG "boost/config/compiler/metrowerks.hpp"
|
||||||
|
|
||||||
|
#elif defined __SUNPRO_CC
|
||||||
|
// Sun Workshop Compiler C++
|
||||||
|
# define BOOST_COMPILER_CONFIG "boost/config/compiler/sunpro_cc.hpp"
|
||||||
|
|
||||||
|
#elif defined __HP_aCC
|
||||||
|
// HP aCC
|
||||||
|
# define BOOST_COMPILER_CONFIG "boost/config/compiler/hp_acc.hpp"
|
||||||
|
|
||||||
|
#elif defined(__MRC__) || defined(__SC__)
|
||||||
|
// MPW MrCpp or SCpp
|
||||||
|
# define BOOST_COMPILER_CONFIG "boost/config/compiler/mpw.hpp"
|
||||||
|
|
||||||
|
#elif defined(__IBMCPP__)
|
||||||
|
// IBM Visual Age
|
||||||
|
# define BOOST_COMPILER_CONFIG "boost/config/compiler/vacpp.hpp"
|
||||||
|
|
||||||
|
#elif defined(__PGI)
|
||||||
|
// Portland Group Inc.
|
||||||
|
# define BOOST_COMPILER_CONFIG "boost/config/compiler/pgi.hpp"
|
||||||
|
|
||||||
|
#elif defined _MSC_VER
|
||||||
|
// Microsoft Visual C++
|
||||||
|
//
|
||||||
|
// Must remain the last #elif since some other vendors (Metrowerks, for
|
||||||
|
// example) also #define _MSC_VER
|
||||||
|
# define BOOST_COMPILER_CONFIG "boost/config/compiler/visualc.hpp"
|
||||||
|
|
||||||
|
#elif defined (BOOST_ASSERT_CONFIG)
|
||||||
|
// this must come last - generate an error if we don't
|
||||||
|
// recognise the compiler:
|
||||||
|
# error "Unknown compiler - please configure (http://www.boost.org/libs/config/config.htm#configuring) and report the results to the main boost mailing list (http://www.boost.org/more/mailing_lists.htm#main)"
|
||||||
|
|
||||||
|
#endif
|
90
library/include/boost/config/select_platform_config.hpp
Normal file
90
library/include/boost/config/select_platform_config.hpp
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
// Boost compiler configuration selection header file
|
||||||
|
|
||||||
|
// (C) Copyright John Maddock 2001 - 2002.
|
||||||
|
// (C) Copyright Jens Maurer 2001.
|
||||||
|
// 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 for most recent version.
|
||||||
|
|
||||||
|
// locate which platform we are on and define BOOST_PLATFORM_CONFIG as needed.
|
||||||
|
// Note that we define the headers to include using "header_name" not
|
||||||
|
// <header_name> in order to prevent macro expansion within the header
|
||||||
|
// name (for example "linux" is a macro on linux systems).
|
||||||
|
|
||||||
|
#if defined(linux) || defined(__linux) || defined(__linux__)
|
||||||
|
// linux:
|
||||||
|
# define BOOST_PLATFORM_CONFIG "boost/config/platform/linux.hpp"
|
||||||
|
|
||||||
|
#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
|
||||||
|
// BSD:
|
||||||
|
# define BOOST_PLATFORM_CONFIG "boost/config/platform/bsd.hpp"
|
||||||
|
|
||||||
|
#elif defined(sun) || defined(__sun)
|
||||||
|
// solaris:
|
||||||
|
# define BOOST_PLATFORM_CONFIG "boost/config/platform/solaris.hpp"
|
||||||
|
|
||||||
|
#elif defined(__sgi)
|
||||||
|
// SGI Irix:
|
||||||
|
# define BOOST_PLATFORM_CONFIG "boost/config/platform/irix.hpp"
|
||||||
|
|
||||||
|
#elif defined(__hpux)
|
||||||
|
// hp unix:
|
||||||
|
# define BOOST_PLATFORM_CONFIG "boost/config/platform/hpux.hpp"
|
||||||
|
|
||||||
|
#elif defined(__CYGWIN__)
|
||||||
|
// cygwin is not win32:
|
||||||
|
# define BOOST_PLATFORM_CONFIG "boost/config/platform/cygwin.hpp"
|
||||||
|
|
||||||
|
#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
|
||||||
|
// win32:
|
||||||
|
# define BOOST_PLATFORM_CONFIG "boost/config/platform/win32.hpp"
|
||||||
|
|
||||||
|
#elif defined(__BEOS__)
|
||||||
|
// BeOS
|
||||||
|
# define BOOST_PLATFORM_CONFIG "boost/config/platform/beos.hpp"
|
||||||
|
|
||||||
|
#elif defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__)
|
||||||
|
// MacOS
|
||||||
|
# define BOOST_PLATFORM_CONFIG "boost/config/platform/macos.hpp"
|
||||||
|
|
||||||
|
#elif defined(__IBMCPP__) || defined(_AIX)
|
||||||
|
// IBM
|
||||||
|
# define BOOST_PLATFORM_CONFIG "boost/config/platform/aix.hpp"
|
||||||
|
|
||||||
|
#elif defined(__amigaos__)
|
||||||
|
// AmigaOS
|
||||||
|
# define BOOST_PLATFORM_CONFIG "boost/config/platform/amigaos.hpp"
|
||||||
|
|
||||||
|
#elif defined(__QNXNTO__)
|
||||||
|
// QNX:
|
||||||
|
# define BOOST_PLATFORM_CONFIG "boost/config/platform/qnxnto.hpp"
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
# if defined(unix) \
|
||||||
|
|| defined(__unix) \
|
||||||
|
|| defined(_XOPEN_SOURCE) \
|
||||||
|
|| defined(_POSIX_SOURCE)
|
||||||
|
|
||||||
|
// generic unix platform:
|
||||||
|
|
||||||
|
# ifndef BOOST_HAS_UNISTD_H
|
||||||
|
# define BOOST_HAS_UNISTD_H
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# include <boost/config/posix_features.hpp>
|
||||||
|
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if defined (BOOST_ASSERT_CONFIG)
|
||||||
|
// this must come last - generate an error if we don't
|
||||||
|
// recognise the platform:
|
||||||
|
# error "Unknown platform - please configure and report the results to boost.org"
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
68
library/include/boost/config/select_stdlib_config.hpp
Normal file
68
library/include/boost/config/select_stdlib_config.hpp
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
// Boost compiler configuration selection header file
|
||||||
|
|
||||||
|
// (C) Copyright John Maddock 2001 - 2003.
|
||||||
|
// (C) Copyright Jens Maurer 2001 - 2002.
|
||||||
|
// 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 for most recent version.
|
||||||
|
|
||||||
|
// locate which std lib we are using and define BOOST_STDLIB_CONFIG as needed:
|
||||||
|
|
||||||
|
// we need to include a std lib header here in order to detect which
|
||||||
|
// library is in use, use <utility> as it's about the smallest
|
||||||
|
// of the std lib headers - do not rely on this header being included -
|
||||||
|
// users can short-circuit this header if they know whose std lib
|
||||||
|
// they are using.
|
||||||
|
|
||||||
|
#include <boost/config/no_tr1/utility.hpp>
|
||||||
|
|
||||||
|
#if defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
|
||||||
|
// STLPort library; this _must_ come first, otherwise since
|
||||||
|
// STLport typically sits on top of some other library, we
|
||||||
|
// can end up detecting that first rather than STLport:
|
||||||
|
# define BOOST_STDLIB_CONFIG "boost/config/stdlib/stlport.hpp"
|
||||||
|
|
||||||
|
#elif defined(__LIBCOMO__)
|
||||||
|
// Comeau STL:
|
||||||
|
#define BOOST_STDLIB_CONFIG "boost/config/stdlib/libcomo.hpp"
|
||||||
|
|
||||||
|
#elif defined(__STD_RWCOMPILER_H__) || defined(_RWSTD_VER)
|
||||||
|
// Rogue Wave library:
|
||||||
|
# define BOOST_STDLIB_CONFIG "boost/config/stdlib/roguewave.hpp"
|
||||||
|
|
||||||
|
#elif defined(__GLIBCPP__) || defined(__GLIBCXX__)
|
||||||
|
// GNU libstdc++ 3
|
||||||
|
# define BOOST_STDLIB_CONFIG "boost/config/stdlib/libstdcpp3.hpp"
|
||||||
|
|
||||||
|
#elif defined(__STL_CONFIG_H)
|
||||||
|
// generic SGI STL
|
||||||
|
# define BOOST_STDLIB_CONFIG "boost/config/stdlib/sgi.hpp"
|
||||||
|
|
||||||
|
#elif defined(__MSL_CPP__)
|
||||||
|
// MSL standard lib:
|
||||||
|
# define BOOST_STDLIB_CONFIG "boost/config/stdlib/msl.hpp"
|
||||||
|
|
||||||
|
#elif defined(__IBMCPP__)
|
||||||
|
// take the default VACPP std lib
|
||||||
|
# define BOOST_STDLIB_CONFIG "boost/config/stdlib/vacpp.hpp"
|
||||||
|
|
||||||
|
#elif defined(MSIPL_COMPILE_H)
|
||||||
|
// Modena C++ standard library
|
||||||
|
# define BOOST_STDLIB_CONFIG "boost/config/stdlib/modena.hpp"
|
||||||
|
|
||||||
|
#elif (defined(_YVALS) && !defined(__IBMCPP__)) || defined(_CPPLIB_VER)
|
||||||
|
// Dinkumware Library (this has to appear after any possible replacement libraries):
|
||||||
|
# define BOOST_STDLIB_CONFIG "boost/config/stdlib/dinkumware.hpp"
|
||||||
|
|
||||||
|
#elif defined (BOOST_ASSERT_CONFIG)
|
||||||
|
// this must come last - generate an error if we don't
|
||||||
|
// recognise the library:
|
||||||
|
# error "Unknown standard library - please configure and report the results to boost.org"
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
111
library/include/boost/config/stdlib/dinkumware.hpp
Normal file
111
library/include/boost/config/stdlib/dinkumware.hpp
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
// (C) Copyright John Maddock 2001 - 2003.
|
||||||
|
// (C) Copyright Jens Maurer 2001.
|
||||||
|
// (C) Copyright Peter Dimov 2001.
|
||||||
|
// (C) Copyright David Abrahams 2002.
|
||||||
|
// (C) Copyright Guillaume Melquiond 2003.
|
||||||
|
// 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 for most recent version.
|
||||||
|
|
||||||
|
// Dinkumware standard library config:
|
||||||
|
|
||||||
|
#if !defined(_YVALS) && !defined(_CPPLIB_VER)
|
||||||
|
#include <boost/config/no_tr1/utility.hpp>
|
||||||
|
#if !defined(_YVALS) && !defined(_CPPLIB_VER)
|
||||||
|
#error This is not the Dinkumware lib!
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(_CPPLIB_VER) && (_CPPLIB_VER >= 306)
|
||||||
|
// full dinkumware 3.06 and above
|
||||||
|
// fully conforming provided the compiler supports it:
|
||||||
|
# if !(defined(_GLOBAL_USING) && (_GLOBAL_USING+0 > 0)) && !defined(__BORLANDC__) && !defined(_STD) && !(defined(__ICC) && (__ICC >= 700)) // can be defined in yvals.h
|
||||||
|
# define BOOST_NO_STDC_NAMESPACE
|
||||||
|
# endif
|
||||||
|
# if !(defined(_HAS_MEMBER_TEMPLATES_REBIND) && (_HAS_MEMBER_TEMPLATES_REBIND+0 > 0)) && !(defined(_MSC_VER) && (_MSC_VER > 1300)) && defined(BOOST_MSVC)
|
||||||
|
# define BOOST_NO_STD_ALLOCATOR
|
||||||
|
# endif
|
||||||
|
# define BOOST_HAS_PARTIAL_STD_ALLOCATOR
|
||||||
|
# if defined(BOOST_MSVC) && (BOOST_MSVC < 1300)
|
||||||
|
// if this lib version is set up for vc6 then there is no std::use_facet:
|
||||||
|
# define BOOST_NO_STD_USE_FACET
|
||||||
|
# define BOOST_HAS_TWO_ARG_USE_FACET
|
||||||
|
// C lib functions aren't in namespace std either:
|
||||||
|
# define BOOST_NO_STDC_NAMESPACE
|
||||||
|
// and nor is <exception>
|
||||||
|
# define BOOST_NO_EXCEPTION_STD_NAMESPACE
|
||||||
|
# endif
|
||||||
|
// There's no numeric_limits<long long> support unless _LONGLONG is defined:
|
||||||
|
# if !defined(_LONGLONG) && (_CPPLIB_VER <= 310)
|
||||||
|
# define BOOST_NO_MS_INT64_NUMERIC_LIMITS
|
||||||
|
# endif
|
||||||
|
// 3.06 appears to have (non-sgi versions of) <hash_set> & <hash_map>,
|
||||||
|
// and no <slist> at all
|
||||||
|
#else
|
||||||
|
# define BOOST_MSVC_STD_ITERATOR 1
|
||||||
|
# define BOOST_NO_STD_ITERATOR
|
||||||
|
# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
|
||||||
|
# define BOOST_NO_STD_ALLOCATOR
|
||||||
|
# define BOOST_NO_STDC_NAMESPACE
|
||||||
|
# define BOOST_NO_STD_USE_FACET
|
||||||
|
# define BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN
|
||||||
|
# define BOOST_HAS_MACRO_USE_FACET
|
||||||
|
# ifndef _CPPLIB_VER
|
||||||
|
// Updated Dinkum library defines this, and provides
|
||||||
|
// its own min and max definitions.
|
||||||
|
# define BOOST_NO_STD_MIN_MAX
|
||||||
|
# define BOOST_NO_MS_INT64_NUMERIC_LIMITS
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// std extension namespace is stdext for vc7.1 and later,
|
||||||
|
// the same applies to other compilers that sit on top
|
||||||
|
// of vc7.1 (Intel and Comeau):
|
||||||
|
//
|
||||||
|
#if defined(_MSC_VER) && (_MSC_VER >= 1310) && !defined(__BORLANDC__)
|
||||||
|
# define BOOST_STD_EXTENSION_NAMESPACE stdext
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if (defined(_MSC_VER) && (_MSC_VER <= 1300) && !defined(__BORLANDC__)) || !defined(_CPPLIB_VER) || (_CPPLIB_VER < 306)
|
||||||
|
// if we're using a dinkum lib that's
|
||||||
|
// been configured for VC6/7 then there is
|
||||||
|
// no iterator traits (true even for icl)
|
||||||
|
# define BOOST_NO_STD_ITERATOR_TRAITS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// No std::unordered_* containers yet:
|
||||||
|
//
|
||||||
|
#define BOOST_NO_STD_UNORDERED
|
||||||
|
|
||||||
|
#if defined(__ICL) && (__ICL < 800) && defined(_CPPLIB_VER) && (_CPPLIB_VER <= 310)
|
||||||
|
// Intel C++ chokes over any non-trivial use of <locale>
|
||||||
|
// this may be an overly restrictive define, but regex fails without it:
|
||||||
|
# define BOOST_NO_STD_LOCALE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _CPPLIB_VER
|
||||||
|
# define BOOST_DINKUMWARE_STDLIB _CPPLIB_VER
|
||||||
|
#else
|
||||||
|
# define BOOST_DINKUMWARE_STDLIB 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _CPPLIB_VER
|
||||||
|
# define BOOST_STDLIB "Dinkumware standard library version " BOOST_STRINGIZE(_CPPLIB_VER)
|
||||||
|
#else
|
||||||
|
# define BOOST_STDLIB "Dinkumware standard library version 1.x"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
50
library/include/boost/config/stdlib/libcomo.hpp
Normal file
50
library/include/boost/config/stdlib/libcomo.hpp
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
// (C) Copyright John Maddock 2002 - 2003.
|
||||||
|
// (C) Copyright Jens Maurer 2002 - 2003.
|
||||||
|
// (C) Copyright Beman Dawes 2002 - 2003.
|
||||||
|
// 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 for most recent version.
|
||||||
|
|
||||||
|
// Comeau STL:
|
||||||
|
|
||||||
|
#if !defined(__LIBCOMO__)
|
||||||
|
# include <boost/config/no_tr1/utility.hpp>
|
||||||
|
# if !defined(__LIBCOMO__)
|
||||||
|
# error "This is not the Comeau STL!"
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// std::streambuf<wchar_t> is non-standard
|
||||||
|
// NOTE: versions of libcomo prior to beta28 have octal version numbering,
|
||||||
|
// e.g. version 25 is 21 (dec)
|
||||||
|
#if __LIBCOMO_VERSION__ <= 22
|
||||||
|
# define BOOST_NO_STD_WSTREAMBUF
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (__LIBCOMO_VERSION__ <= 31) && defined(_WIN32)
|
||||||
|
#define BOOST_NO_SWPRINTF
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if __LIBCOMO_VERSION__ >= 31
|
||||||
|
# define BOOST_HAS_HASH
|
||||||
|
# define BOOST_HAS_SLIST
|
||||||
|
#endif
|
||||||
|
//
|
||||||
|
// We never have the new C++0x unordered containers:
|
||||||
|
//
|
||||||
|
#define BOOST_NO_STD_UNORDERED
|
||||||
|
|
||||||
|
//
|
||||||
|
// Intrinsic type_traits support.
|
||||||
|
// The SGI STL has it's own __type_traits class, which
|
||||||
|
// has intrinsic compiler support with SGI's compilers.
|
||||||
|
// Whatever map SGI style type traits to boost equivalents:
|
||||||
|
//
|
||||||
|
#define BOOST_HAS_SGI_TYPE_TRAITS
|
||||||
|
|
||||||
|
#define BOOST_STDLIB "Comeau standard library " BOOST_STRINGIZE(__LIBCOMO_VERSION__)
|
||||||
|
|
||||||
|
|
83
library/include/boost/config/stdlib/libstdcpp3.hpp
Normal file
83
library/include/boost/config/stdlib/libstdcpp3.hpp
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
// (C) Copyright John Maddock 2001.
|
||||||
|
// (C) Copyright Jens Maurer 2001.
|
||||||
|
// 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 for most recent version.
|
||||||
|
|
||||||
|
// config for libstdc++ v3
|
||||||
|
// not much to go in here:
|
||||||
|
|
||||||
|
#ifdef __GLIBCXX__
|
||||||
|
#define BOOST_STDLIB "GNU libstdc++ version " BOOST_STRINGIZE(__GLIBCXX__)
|
||||||
|
#else
|
||||||
|
#define BOOST_STDLIB "GNU libstdc++ version " BOOST_STRINGIZE(__GLIBCPP__)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(_GLIBCPP_USE_WCHAR_T) && !defined(_GLIBCXX_USE_WCHAR_T)
|
||||||
|
# define BOOST_NO_CWCHAR
|
||||||
|
# define BOOST_NO_CWCTYPE
|
||||||
|
# define BOOST_NO_STD_WSTRING
|
||||||
|
# define BOOST_NO_STD_WSTREAMBUF
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__osf__) && !defined(_REENTRANT) \
|
||||||
|
&& ( defined(_GLIBCXX_HAVE_GTHR_DEFAULT) || defined(_GLIBCPP_HAVE_GTHR_DEFAULT) )
|
||||||
|
// GCC 3 on Tru64 forces the definition of _REENTRANT when any std lib header
|
||||||
|
// file is included, therefore for consistency we define it here as well.
|
||||||
|
# define _REENTRANT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __GLIBCXX__ // gcc 3.4 and greater:
|
||||||
|
# if defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
|
||||||
|
|| defined(_GLIBCXX__PTHREADS)
|
||||||
|
//
|
||||||
|
// If the std lib has thread support turned on, then turn it on in Boost
|
||||||
|
// as well. We do this because some gcc-3.4 std lib headers define _REENTANT
|
||||||
|
// while others do not...
|
||||||
|
//
|
||||||
|
# define BOOST_HAS_THREADS
|
||||||
|
# else
|
||||||
|
# define BOOST_DISABLE_THREADS
|
||||||
|
# endif
|
||||||
|
#elif defined(__GLIBCPP__) \
|
||||||
|
&& !defined(_GLIBCPP_HAVE_GTHR_DEFAULT) \
|
||||||
|
&& !defined(_GLIBCPP__PTHREADS)
|
||||||
|
// disable thread support if the std lib was built single threaded:
|
||||||
|
# define BOOST_DISABLE_THREADS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (defined(linux) || defined(__linux) || defined(__linux__)) && defined(__arm__) && defined(_GLIBCPP_HAVE_GTHR_DEFAULT)
|
||||||
|
// linux on arm apparently doesn't define _REENTRANT
|
||||||
|
// so just turn on threading support whenever the std lib is thread safe:
|
||||||
|
# define BOOST_HAS_THREADS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if !defined(_GLIBCPP_USE_LONG_LONG) \
|
||||||
|
&& !defined(_GLIBCXX_USE_LONG_LONG)\
|
||||||
|
&& defined(BOOST_HAS_LONG_LONG)
|
||||||
|
// May have been set by compiler/*.hpp, but "long long" without library
|
||||||
|
// support is useless.
|
||||||
|
# undef BOOST_HAS_LONG_LONG
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__GLIBCXX__) || (defined(__GLIBCPP__) && __GLIBCPP__>=20020514) // GCC >= 3.1.0
|
||||||
|
# define BOOST_STD_EXTENSION_NAMESPACE __gnu_cxx
|
||||||
|
# define BOOST_HAS_SLIST
|
||||||
|
# define BOOST_HAS_HASH
|
||||||
|
# define BOOST_SLIST_HEADER <ext/slist>
|
||||||
|
# if !defined(__GNUC__) || __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 3)
|
||||||
|
# define BOOST_HASH_SET_HEADER <ext/hash_set>
|
||||||
|
# define BOOST_HASH_MAP_HEADER <ext/hash_map>
|
||||||
|
# else
|
||||||
|
# define BOOST_HASH_SET_HEADER <backward/hash_set>
|
||||||
|
# define BOOST_HASH_MAP_HEADER <backward/hash_map>
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __GXX_EXPERIMENTAL_CXX0X__
|
||||||
|
# define BOOST_NO_STD_UNORDERED
|
||||||
|
#endif
|
||||||
|
|
34
library/include/boost/config/stdlib/modena.hpp
Normal file
34
library/include/boost/config/stdlib/modena.hpp
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
// (C) Copyright Jens Maurer 2001.
|
||||||
|
// 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 for most recent version.
|
||||||
|
|
||||||
|
// Modena C++ standard library (comes with KAI C++)
|
||||||
|
|
||||||
|
#if !defined(MSIPL_COMPILE_H)
|
||||||
|
# include <boost/config/no_tr1/utility.hpp>
|
||||||
|
# if !defined(__MSIPL_COMPILE_H)
|
||||||
|
# error "This is not the Modena C++ library!"
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef MSIPL_NL_TYPES
|
||||||
|
#define BOOST_NO_STD_MESSAGES
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef MSIPL_WCHART
|
||||||
|
#define BOOST_NO_STD_WSTRING
|
||||||
|
#endif
|
||||||
|
//
|
||||||
|
// We never have the new C++0x unordered containers:
|
||||||
|
//
|
||||||
|
#define BOOST_NO_STD_UNORDERED
|
||||||
|
|
||||||
|
#define BOOST_STDLIB "Modena C++ standard library"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
63
library/include/boost/config/stdlib/msl.hpp
Normal file
63
library/include/boost/config/stdlib/msl.hpp
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
// (C) Copyright John Maddock 2001.
|
||||||
|
// (C) Copyright Darin Adler 2001.
|
||||||
|
// 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 for most recent version.
|
||||||
|
|
||||||
|
// Metrowerks standard library:
|
||||||
|
|
||||||
|
#ifndef __MSL_CPP__
|
||||||
|
# include <boost/config/no_tr1/utility.hpp>
|
||||||
|
# ifndef __MSL_CPP__
|
||||||
|
# error This is not the MSL standard library!
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if __MSL_CPP__ >= 0x6000 // Pro 6
|
||||||
|
# define BOOST_HAS_HASH
|
||||||
|
# define BOOST_STD_EXTENSION_NAMESPACE Metrowerks
|
||||||
|
#endif
|
||||||
|
#define BOOST_HAS_SLIST
|
||||||
|
|
||||||
|
#if __MSL_CPP__ < 0x6209
|
||||||
|
# define BOOST_NO_STD_MESSAGES
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// check C lib version for <stdint.h>
|
||||||
|
#include <cstddef>
|
||||||
|
|
||||||
|
#if defined(__MSL__) && (__MSL__ >= 0x5000)
|
||||||
|
# define BOOST_HAS_STDINT_H
|
||||||
|
# if !defined(__PALMOS_TRAPS__)
|
||||||
|
# define BOOST_HAS_UNISTD_H
|
||||||
|
# endif
|
||||||
|
// boilerplate code:
|
||||||
|
# include <boost/config/posix_features.hpp>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(_MWMT) || _MSL_THREADSAFE
|
||||||
|
# define BOOST_HAS_THREADS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _MSL_NO_EXPLICIT_FUNC_TEMPLATE_ARG
|
||||||
|
# define BOOST_NO_STD_USE_FACET
|
||||||
|
# define BOOST_HAS_TWO_ARG_USE_FACET
|
||||||
|
#endif
|
||||||
|
//
|
||||||
|
// We never have the new C++0x unordered containers:
|
||||||
|
//
|
||||||
|
#define BOOST_NO_STD_UNORDERED
|
||||||
|
|
||||||
|
|
||||||
|
#define BOOST_STDLIB "Metrowerks Standard Library version " BOOST_STRINGIZE(__MSL_CPP__)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
159
library/include/boost/config/stdlib/roguewave.hpp
Normal file
159
library/include/boost/config/stdlib/roguewave.hpp
Normal file
@ -0,0 +1,159 @@
|
|||||||
|
// (C) Copyright John Maddock 2001 - 2003.
|
||||||
|
// (C) Copyright Jens Maurer 2001.
|
||||||
|
// (C) Copyright David Abrahams 2003.
|
||||||
|
// (C) Copyright Boris Gubenko 2007.
|
||||||
|
// 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 for most recent version.
|
||||||
|
|
||||||
|
// Rogue Wave std lib:
|
||||||
|
|
||||||
|
#if !defined(__STD_RWCOMPILER_H__) && !defined(_RWSTD_VER)
|
||||||
|
# include <boost/config/no_tr1/utility.hpp>
|
||||||
|
# if !defined(__STD_RWCOMPILER_H__) && !defined(_RWSTD_VER)
|
||||||
|
# error This is not the Rogue Wave standard library
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
//
|
||||||
|
// figure out a consistent version number:
|
||||||
|
//
|
||||||
|
#ifndef _RWSTD_VER
|
||||||
|
# define BOOST_RWSTD_VER 0x010000
|
||||||
|
#elif _RWSTD_VER < 0x010000
|
||||||
|
# define BOOST_RWSTD_VER (_RWSTD_VER << 8)
|
||||||
|
#else
|
||||||
|
# define BOOST_RWSTD_VER _RWSTD_VER
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef _RWSTD_VER
|
||||||
|
# define BOOST_STDLIB "Rogue Wave standard library version (Unknown version)"
|
||||||
|
#elif _RWSTD_VER < 0x04010200
|
||||||
|
# define BOOST_STDLIB "Rogue Wave standard library version " BOOST_STRINGIZE(_RWSTD_VER)
|
||||||
|
#else
|
||||||
|
# ifdef _RWSTD_VER_STR
|
||||||
|
# define BOOST_STDLIB "Apache STDCXX standard library version " _RWSTD_VER_STR
|
||||||
|
# else
|
||||||
|
# define BOOST_STDLIB "Apache STDCXX standard library version " BOOST_STRINGIZE(_RWSTD_VER)
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Prior to version 2.2.0 the primary template for std::numeric_limits
|
||||||
|
// does not have compile time constants, even though specializations of that
|
||||||
|
// template do:
|
||||||
|
//
|
||||||
|
#if BOOST_RWSTD_VER < 0x020200
|
||||||
|
# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Sun CC 5.5 patch 113817-07 adds long long specialization, but does not change the
|
||||||
|
// library version number (http://sunsolve6.sun.com/search/document.do?assetkey=1-21-113817):
|
||||||
|
#if BOOST_RWSTD_VER <= 0x020101 && (!defined(__SUNPRO_CC) || (__SUNPRO_CC < 0x550))
|
||||||
|
# define BOOST_NO_LONG_LONG_NUMERIC_LIMITS
|
||||||
|
# endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Borland version of numeric_limits lacks __int64 specialisation:
|
||||||
|
//
|
||||||
|
#ifdef __BORLANDC__
|
||||||
|
# define BOOST_NO_MS_INT64_NUMERIC_LIMITS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// No std::iterator if it can't figure out default template args:
|
||||||
|
//
|
||||||
|
#if defined(_RWSTD_NO_SIMPLE_DEFAULT_TEMPLATES) || defined(RWSTD_NO_SIMPLE_DEFAULT_TEMPLATES) || (BOOST_RWSTD_VER < 0x020000)
|
||||||
|
# define BOOST_NO_STD_ITERATOR
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// No iterator traits without partial specialization:
|
||||||
|
//
|
||||||
|
#if defined(_RWSTD_NO_CLASS_PARTIAL_SPEC) || defined(RWSTD_NO_CLASS_PARTIAL_SPEC)
|
||||||
|
# define BOOST_NO_STD_ITERATOR_TRAITS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Prior to version 2.0, std::auto_ptr was buggy, and there were no
|
||||||
|
// new-style iostreams, and no conformant std::allocator:
|
||||||
|
//
|
||||||
|
#if (BOOST_RWSTD_VER < 0x020000)
|
||||||
|
# define BOOST_NO_AUTO_PTR
|
||||||
|
# define BOOST_NO_STRINGSTREAM
|
||||||
|
# define BOOST_NO_STD_ALLOCATOR
|
||||||
|
# define BOOST_NO_STD_LOCALE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// No template iterator constructors without member template support:
|
||||||
|
//
|
||||||
|
#if defined(RWSTD_NO_MEMBER_TEMPLATES) || defined(_RWSTD_NO_MEMBER_TEMPLATES)
|
||||||
|
# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// RW defines _RWSTD_ALLOCATOR if the allocator is conformant and in use
|
||||||
|
// (the or _HPACC_ part is a hack - the library seems to define _RWSTD_ALLOCATOR
|
||||||
|
// on HP aCC systems even though the allocator is in fact broken):
|
||||||
|
//
|
||||||
|
#if !defined(_RWSTD_ALLOCATOR) || (defined(__HP_aCC) && __HP_aCC <= 33100)
|
||||||
|
# define BOOST_NO_STD_ALLOCATOR
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// If we have a std::locale, we still may not have std::use_facet:
|
||||||
|
//
|
||||||
|
#if defined(_RWSTD_NO_TEMPLATE_ON_RETURN_TYPE) && !defined(BOOST_NO_STD_LOCALE)
|
||||||
|
# define BOOST_NO_STD_USE_FACET
|
||||||
|
# define BOOST_HAS_TWO_ARG_USE_FACET
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// There's no std::distance prior to version 2, or without
|
||||||
|
// partial specialization support:
|
||||||
|
//
|
||||||
|
#if (BOOST_RWSTD_VER < 0x020000) || defined(_RWSTD_NO_CLASS_PARTIAL_SPEC)
|
||||||
|
#define BOOST_NO_STD_DISTANCE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Some versions of the rogue wave library don't have assignable
|
||||||
|
// OutputIterators:
|
||||||
|
//
|
||||||
|
#if BOOST_RWSTD_VER < 0x020100
|
||||||
|
# define BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Disable BOOST_HAS_LONG_LONG when the library has no support for it.
|
||||||
|
//
|
||||||
|
#if !defined(_RWSTD_LONG_LONG) && defined(BOOST_HAS_LONG_LONG)
|
||||||
|
# undef BOOST_HAS_LONG_LONG
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// check that on HP-UX, the proper RW library is used
|
||||||
|
//
|
||||||
|
#if defined(__HP_aCC) && !defined(_HP_NAMESPACE_STD)
|
||||||
|
# error "Boost requires Standard RW library. Please compile and link with -AA"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Define macros specific to RW V2.2 on HP-UX
|
||||||
|
//
|
||||||
|
#if defined(__HP_aCC) && (BOOST_RWSTD_VER == 0x02020100)
|
||||||
|
# ifndef __HP_TC1_MAKE_PAIR
|
||||||
|
# define __HP_TC1_MAKE_PAIR
|
||||||
|
# endif
|
||||||
|
# ifndef _HP_INSTANTIATE_STD2_VL
|
||||||
|
# define _HP_INSTANTIATE_STD2_VL
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// We never have the new C++0x unordered containers:
|
||||||
|
//
|
||||||
|
#define BOOST_NO_STD_UNORDERED
|
||||||
|
|
112
library/include/boost/config/stdlib/sgi.hpp
Normal file
112
library/include/boost/config/stdlib/sgi.hpp
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
// (C) Copyright John Maddock 2001 - 2003.
|
||||||
|
// (C) Copyright Darin Adler 2001.
|
||||||
|
// (C) Copyright Jens Maurer 2001 - 2003.
|
||||||
|
// 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 for most recent version.
|
||||||
|
|
||||||
|
// generic SGI STL:
|
||||||
|
|
||||||
|
#if !defined(__STL_CONFIG_H)
|
||||||
|
# include <boost/config/no_tr1/utility.hpp>
|
||||||
|
# if !defined(__STL_CONFIG_H)
|
||||||
|
# error "This is not the SGI STL!"
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// No std::iterator traits without partial specialisation:
|
||||||
|
//
|
||||||
|
#if !defined(__STL_CLASS_PARTIAL_SPECIALIZATION)
|
||||||
|
# define BOOST_NO_STD_ITERATOR_TRAITS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// No std::stringstream with gcc < 3
|
||||||
|
//
|
||||||
|
#if defined(__GNUC__) && (__GNUC__ < 3) && \
|
||||||
|
((__GNUC_MINOR__ < 95) || (__GNUC_MINOR__ == 96)) && \
|
||||||
|
!defined(__STL_USE_NEW_IOSTREAMS) || \
|
||||||
|
defined(__APPLE_CC__)
|
||||||
|
// Note that we only set this for GNU C++ prior to 2.95 since the
|
||||||
|
// latest patches for that release do contain a minimal <sstream>
|
||||||
|
// If you are running a 2.95 release prior to 2.95.3 then this will need
|
||||||
|
// setting, but there is no way to detect that automatically (other
|
||||||
|
// than by running the configure script).
|
||||||
|
// Also, the unofficial GNU C++ 2.96 included in RedHat 7.1 doesn't
|
||||||
|
// have <sstream>.
|
||||||
|
# define BOOST_NO_STRINGSTREAM
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Assume no std::locale without own iostreams (this may be an
|
||||||
|
// incorrect assumption in some cases):
|
||||||
|
//
|
||||||
|
#if !defined(__SGI_STL_OWN_IOSTREAMS) && !defined(__STL_USE_NEW_IOSTREAMS)
|
||||||
|
# define BOOST_NO_STD_LOCALE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Original native SGI streams have non-standard std::messages facet:
|
||||||
|
//
|
||||||
|
#if defined(__sgi) && (_COMPILER_VERSION <= 650) && !defined(__SGI_STL_OWN_IOSTREAMS)
|
||||||
|
# define BOOST_NO_STD_LOCALE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// SGI's new iostreams have missing "const" in messages<>::open
|
||||||
|
//
|
||||||
|
#if defined(__sgi) && (_COMPILER_VERSION <= 740) && defined(__STL_USE_NEW_IOSTREAMS)
|
||||||
|
# define BOOST_NO_STD_MESSAGES
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// No template iterator constructors, or std::allocator
|
||||||
|
// without member templates:
|
||||||
|
//
|
||||||
|
#if !defined(__STL_MEMBER_TEMPLATES)
|
||||||
|
# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
|
||||||
|
# define BOOST_NO_STD_ALLOCATOR
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// We always have SGI style hash_set, hash_map, and slist:
|
||||||
|
//
|
||||||
|
#define BOOST_HAS_HASH
|
||||||
|
#define BOOST_HAS_SLIST
|
||||||
|
#define BOOST_NO_STD_UNORDERED
|
||||||
|
|
||||||
|
//
|
||||||
|
// If this is GNU libstdc++2, then no <limits> and no std::wstring:
|
||||||
|
//
|
||||||
|
#if (defined(__GNUC__) && (__GNUC__ < 3))
|
||||||
|
# include <string>
|
||||||
|
# if defined(__BASTRING__)
|
||||||
|
# define BOOST_NO_LIMITS
|
||||||
|
// Note: <boost/limits.hpp> will provide compile-time constants
|
||||||
|
# undef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
|
||||||
|
# define BOOST_NO_STD_WSTRING
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// There is no standard iterator unless we have namespace support:
|
||||||
|
//
|
||||||
|
#if !defined(__STL_USE_NAMESPACES)
|
||||||
|
# define BOOST_NO_STD_ITERATOR
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Intrinsic type_traits support.
|
||||||
|
// The SGI STL has it's own __type_traits class, which
|
||||||
|
// has intrinsic compiler support with SGI's compilers.
|
||||||
|
// Whatever map SGI style type traits to boost equivalents:
|
||||||
|
//
|
||||||
|
#define BOOST_HAS_SGI_TYPE_TRAITS
|
||||||
|
|
||||||
|
#define BOOST_STDLIB "SGI standard library"
|
||||||
|
|
||||||
|
|
||||||
|
|
206
library/include/boost/config/stdlib/stlport.hpp
Normal file
206
library/include/boost/config/stdlib/stlport.hpp
Normal file
@ -0,0 +1,206 @@
|
|||||||
|
// (C) Copyright John Maddock 2001 - 2002.
|
||||||
|
// (C) Copyright Darin Adler 2001.
|
||||||
|
// (C) Copyright Jens Maurer 2001.
|
||||||
|
// 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 for most recent version.
|
||||||
|
|
||||||
|
// STLPort standard library config:
|
||||||
|
|
||||||
|
#if !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
|
||||||
|
# include <boost/config/no_tr1/utility.hpp>
|
||||||
|
# if !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
|
||||||
|
# error "This is not STLPort!"
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// __STL_STATIC_CONST_INIT_BUG implies BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
|
||||||
|
// for versions prior to 4.1(beta)
|
||||||
|
//
|
||||||
|
#if (defined(__STL_STATIC_CONST_INIT_BUG) || defined(_STLP_STATIC_CONST_INIT_BUG)) && (__SGI_STL_PORT <= 0x400)
|
||||||
|
# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// If STLport thinks that there is no partial specialisation, then there is no
|
||||||
|
// std::iterator traits:
|
||||||
|
//
|
||||||
|
#if !(defined(_STLP_CLASS_PARTIAL_SPECIALIZATION) || defined(__STL_CLASS_PARTIAL_SPECIALIZATION))
|
||||||
|
# define BOOST_NO_STD_ITERATOR_TRAITS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// No new style iostreams on GCC without STLport's iostreams enabled:
|
||||||
|
//
|
||||||
|
#if (defined(__GNUC__) && (__GNUC__ < 3)) && !(defined(__SGI_STL_OWN_IOSTREAMS) || defined(_STLP_OWN_IOSTREAMS))
|
||||||
|
# define BOOST_NO_STRINGSTREAM
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// No new iostreams implies no std::locale, and no std::stringstream:
|
||||||
|
//
|
||||||
|
#if defined(__STL_NO_IOSTREAMS) || defined(__STL_NO_NEW_IOSTREAMS) || defined(_STLP_NO_IOSTREAMS) || defined(_STLP_NO_NEW_IOSTREAMS)
|
||||||
|
# define BOOST_NO_STD_LOCALE
|
||||||
|
# define BOOST_NO_STRINGSTREAM
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// If the streams are not native, and we have a "using ::x" compiler bug
|
||||||
|
// then the io stream facets are not available in namespace std::
|
||||||
|
//
|
||||||
|
#ifdef _STLPORT_VERSION
|
||||||
|
# if !(_STLPORT_VERSION >= 0x500) && !defined(_STLP_OWN_IOSTREAMS) && defined(_STLP_USE_NAMESPACES) && defined(BOOST_NO_USING_TEMPLATE) && !defined(__BORLANDC__)
|
||||||
|
# define BOOST_NO_STD_LOCALE
|
||||||
|
# endif
|
||||||
|
#else
|
||||||
|
# if !defined(__SGI_STL_OWN_IOSTREAMS) && defined(__STL_USE_NAMESPACES) && defined(BOOST_NO_USING_TEMPLATE) && !defined(__BORLANDC__)
|
||||||
|
# define BOOST_NO_STD_LOCALE
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(_STLPORT_VERSION) && (_STLPORT_VERSION < 0x500)
|
||||||
|
# define BOOST_NO_STD_UNORDERED
|
||||||
|
#endif
|
||||||
|
//
|
||||||
|
// Without member template support enabled, their are no template
|
||||||
|
// iterate constructors, and no std::allocator:
|
||||||
|
//
|
||||||
|
#if !(defined(__STL_MEMBER_TEMPLATES) || defined(_STLP_MEMBER_TEMPLATES))
|
||||||
|
# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
|
||||||
|
# define BOOST_NO_STD_ALLOCATOR
|
||||||
|
#endif
|
||||||
|
//
|
||||||
|
// however we always have at least a partial allocator:
|
||||||
|
//
|
||||||
|
#define BOOST_HAS_PARTIAL_STD_ALLOCATOR
|
||||||
|
|
||||||
|
#if !defined(_STLP_MEMBER_TEMPLATE_CLASSES) || defined(_STLP_DONT_SUPPORT_REBIND_MEMBER_TEMPLATE)
|
||||||
|
# define BOOST_NO_STD_ALLOCATOR
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(_STLP_NO_MEMBER_TEMPLATE_KEYWORD) && defined(BOOST_MSVC) && (BOOST_MSVC <= 1300)
|
||||||
|
# define BOOST_NO_STD_ALLOCATOR
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// If STLport thinks there is no wchar_t at all, then we have to disable
|
||||||
|
// the support for the relevant specilazations of std:: templates.
|
||||||
|
//
|
||||||
|
#if !defined(_STLP_HAS_WCHAR_T) && !defined(_STLP_WCHAR_T_IS_USHORT)
|
||||||
|
# ifndef BOOST_NO_STD_WSTRING
|
||||||
|
# define BOOST_NO_STD_WSTRING
|
||||||
|
# endif
|
||||||
|
# ifndef BOOST_NO_STD_WSTREAMBUF
|
||||||
|
# define BOOST_NO_STD_WSTREAMBUF
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// We always have SGI style hash_set, hash_map, and slist:
|
||||||
|
//
|
||||||
|
#ifndef _STLP_NO_EXTENSIONS
|
||||||
|
#define BOOST_HAS_HASH
|
||||||
|
#define BOOST_HAS_SLIST
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// STLport does a good job of importing names into namespace std::,
|
||||||
|
// but doesn't always get them all, define BOOST_NO_STDC_NAMESPACE, since our
|
||||||
|
// workaround does not conflict with STLports:
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Harold Howe says:
|
||||||
|
// Borland switched to STLport in BCB6. Defining BOOST_NO_STDC_NAMESPACE with
|
||||||
|
// BCB6 does cause problems. If we detect C++ Builder, then don't define
|
||||||
|
// BOOST_NO_STDC_NAMESPACE
|
||||||
|
//
|
||||||
|
#if !defined(__BORLANDC__) && !defined(__DMC__)
|
||||||
|
//
|
||||||
|
// If STLport is using it's own namespace, and the real names are in
|
||||||
|
// the global namespace, then we duplicate STLport's using declarations
|
||||||
|
// (by defining BOOST_NO_STDC_NAMESPACE), we do this because STLport doesn't
|
||||||
|
// necessarily import all the names we need into namespace std::
|
||||||
|
//
|
||||||
|
# if (defined(__STL_IMPORT_VENDOR_CSTD) \
|
||||||
|
|| defined(__STL_USE_OWN_NAMESPACE) \
|
||||||
|
|| defined(_STLP_IMPORT_VENDOR_CSTD) \
|
||||||
|
|| defined(_STLP_USE_OWN_NAMESPACE)) \
|
||||||
|
&& (defined(__STL_VENDOR_GLOBAL_CSTD) || defined (_STLP_VENDOR_GLOBAL_CSTD))
|
||||||
|
# define BOOST_NO_STDC_NAMESPACE
|
||||||
|
# define BOOST_NO_EXCEPTION_STD_NAMESPACE
|
||||||
|
# endif
|
||||||
|
#elif defined(__BORLANDC__) && __BORLANDC__ < 0x560
|
||||||
|
// STLport doesn't import std::abs correctly:
|
||||||
|
#include <stdlib.h>
|
||||||
|
namespace std { using ::abs; }
|
||||||
|
// and strcmp/strcpy don't get imported either ('cos they are macros)
|
||||||
|
#include <string.h>
|
||||||
|
#ifdef strcpy
|
||||||
|
# undef strcpy
|
||||||
|
#endif
|
||||||
|
#ifdef strcmp
|
||||||
|
# undef strcmp
|
||||||
|
#endif
|
||||||
|
#ifdef _STLP_VENDOR_CSTD
|
||||||
|
namespace std{ using _STLP_VENDOR_CSTD::strcmp; using _STLP_VENDOR_CSTD::strcpy; }
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// std::use_facet may be non-standard, uses a class instead:
|
||||||
|
//
|
||||||
|
#if defined(__STL_NO_EXPLICIT_FUNCTION_TMPL_ARGS) || defined(_STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS)
|
||||||
|
# define BOOST_NO_STD_USE_FACET
|
||||||
|
# define BOOST_HAS_STLP_USE_FACET
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// If STLport thinks there are no wide functions, <cwchar> etc. is not working; but
|
||||||
|
// only if BOOST_NO_STDC_NAMESPACE is not defined (if it is then we do the import
|
||||||
|
// into std:: ourselves).
|
||||||
|
//
|
||||||
|
#if defined(_STLP_NO_NATIVE_WIDE_FUNCTIONS) && !defined(BOOST_NO_STDC_NAMESPACE)
|
||||||
|
# define BOOST_NO_CWCHAR
|
||||||
|
# define BOOST_NO_CWCTYPE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// If STLport for some reason was configured so that it thinks that wchar_t
|
||||||
|
// is not an intrinsic type, then we have to disable the support for it as
|
||||||
|
// well (we would be missing required specializations otherwise).
|
||||||
|
//
|
||||||
|
#if !defined( _STLP_HAS_WCHAR_T) || defined(_STLP_WCHAR_T_IS_USHORT)
|
||||||
|
# undef BOOST_NO_INTRINSIC_WCHAR_T
|
||||||
|
# define BOOST_NO_INTRINSIC_WCHAR_T
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Borland ships a version of STLport with C++ Builder 6 that lacks
|
||||||
|
// hashtables and the like:
|
||||||
|
//
|
||||||
|
#if defined(__BORLANDC__) && (__BORLANDC__ == 0x560)
|
||||||
|
# undef BOOST_HAS_HASH
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// gcc-2.95.3/STLPort does not like the using declarations we use to get ADL with std::min/max
|
||||||
|
//
|
||||||
|
#if defined(__GNUC__) && (__GNUC__ < 3)
|
||||||
|
# include <algorithm> // for std::min and std::max
|
||||||
|
# define BOOST_USING_STD_MIN() ((void)0)
|
||||||
|
# define BOOST_USING_STD_MAX() ((void)0)
|
||||||
|
namespace boost { using std::min; using std::max; }
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define BOOST_STDLIB "STLPort standard library version " BOOST_STRINGIZE(__SGI_STL_PORT)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
19
library/include/boost/config/stdlib/vacpp.hpp
Normal file
19
library/include/boost/config/stdlib/vacpp.hpp
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
// (C) Copyright John Maddock 2001 - 2002.
|
||||||
|
// 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 for most recent version.
|
||||||
|
|
||||||
|
#if __IBMCPP__ <= 501
|
||||||
|
# define BOOST_NO_STD_ALLOCATOR
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define BOOST_HAS_MACRO_USE_FACET
|
||||||
|
#define BOOST_NO_STD_MESSAGES
|
||||||
|
#define BOOST_NO_STD_UNORDERED
|
||||||
|
|
||||||
|
#define BOOST_STDLIB "Visual Age default standard library"
|
||||||
|
|
||||||
|
|
||||||
|
|
591
library/include/boost/config/suffix.hpp
Normal file
591
library/include/boost/config/suffix.hpp
Normal file
@ -0,0 +1,591 @@
|
|||||||
|
// Boost config.hpp configuration header file ------------------------------//
|
||||||
|
|
||||||
|
// Copyright (c) 2001-2003 John Maddock
|
||||||
|
// Copyright (c) 2001 Darin Adler
|
||||||
|
// Copyright (c) 2001 Peter Dimov
|
||||||
|
// Copyright (c) 2002 Bill Kempf
|
||||||
|
// Copyright (c) 2002 Jens Maurer
|
||||||
|
// Copyright (c) 2002-2003 David Abrahams
|
||||||
|
// Copyright (c) 2003 Gennaro Prota
|
||||||
|
// Copyright (c) 2003 Eric Friedman
|
||||||
|
//
|
||||||
|
// 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)
|
||||||
|
|
||||||
|
// See http://www.boost.org/ for most recent version.
|
||||||
|
|
||||||
|
// Boost config.hpp policy and rationale documentation has been moved to
|
||||||
|
// http://www.boost.org/libs/config/
|
||||||
|
//
|
||||||
|
// This file is intended to be stable, and relatively unchanging.
|
||||||
|
// It should contain boilerplate code only - no compiler specific
|
||||||
|
// code unless it is unavoidable - no changes unless unavoidable.
|
||||||
|
|
||||||
|
#ifndef BOOST_CONFIG_SUFFIX_HPP
|
||||||
|
#define BOOST_CONFIG_SUFFIX_HPP
|
||||||
|
|
||||||
|
//
|
||||||
|
// look for long long by looking for the appropriate macros in <limits.h>.
|
||||||
|
// Note that we use limits.h rather than climits for maximal portability,
|
||||||
|
// remember that since these just declare a bunch of macros, there should be
|
||||||
|
// no namespace issues from this.
|
||||||
|
//
|
||||||
|
#if !defined(BOOST_HAS_LONG_LONG) \
|
||||||
|
&& !defined(BOOST_MSVC) && !defined(__BORLANDC__)
|
||||||
|
# include <limits.h>
|
||||||
|
# if (defined(ULLONG_MAX) || defined(ULONG_LONG_MAX) || defined(ULONGLONG_MAX))
|
||||||
|
# define BOOST_HAS_LONG_LONG
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// GCC 3.x will clean up all of those nasty macro definitions that
|
||||||
|
// BOOST_NO_CTYPE_FUNCTIONS is intended to help work around, so undefine
|
||||||
|
// it under GCC 3.x.
|
||||||
|
#if defined(__GNUC__) && (__GNUC__ >= 3) && defined(BOOST_NO_CTYPE_FUNCTIONS)
|
||||||
|
# undef BOOST_NO_CTYPE_FUNCTIONS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Assume any extensions are in namespace std:: unless stated otherwise:
|
||||||
|
//
|
||||||
|
# ifndef BOOST_STD_EXTENSION_NAMESPACE
|
||||||
|
# define BOOST_STD_EXTENSION_NAMESPACE std
|
||||||
|
# endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// If cv-qualified specializations are not allowed, then neither are cv-void ones:
|
||||||
|
//
|
||||||
|
# if defined(BOOST_NO_CV_SPECIALIZATIONS) \
|
||||||
|
&& !defined(BOOST_NO_CV_VOID_SPECIALIZATIONS)
|
||||||
|
# define BOOST_NO_CV_VOID_SPECIALIZATIONS
|
||||||
|
# endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// If there is no numeric_limits template, then it can't have any compile time
|
||||||
|
// constants either!
|
||||||
|
//
|
||||||
|
# if defined(BOOST_NO_LIMITS) \
|
||||||
|
&& !defined(BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS)
|
||||||
|
# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
|
||||||
|
# define BOOST_NO_MS_INT64_NUMERIC_LIMITS
|
||||||
|
# define BOOST_NO_LONG_LONG_NUMERIC_LIMITS
|
||||||
|
# endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// if there is no long long then there is no specialisation
|
||||||
|
// for numeric_limits<long long> either:
|
||||||
|
//
|
||||||
|
#if !defined(BOOST_HAS_LONG_LONG) && !defined(BOOST_NO_LONG_LONG_NUMERIC_LIMITS)
|
||||||
|
# define BOOST_NO_LONG_LONG_NUMERIC_LIMITS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// if there is no __int64 then there is no specialisation
|
||||||
|
// for numeric_limits<__int64> either:
|
||||||
|
//
|
||||||
|
#if !defined(BOOST_HAS_MS_INT64) && !defined(BOOST_NO_MS_INT64_NUMERIC_LIMITS)
|
||||||
|
# define BOOST_NO_MS_INT64_NUMERIC_LIMITS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// if member templates are supported then so is the
|
||||||
|
// VC6 subset of member templates:
|
||||||
|
//
|
||||||
|
# if !defined(BOOST_NO_MEMBER_TEMPLATES) \
|
||||||
|
&& !defined(BOOST_MSVC6_MEMBER_TEMPLATES)
|
||||||
|
# define BOOST_MSVC6_MEMBER_TEMPLATES
|
||||||
|
# endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Without partial specialization, can't test for partial specialisation bugs:
|
||||||
|
//
|
||||||
|
# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
|
||||||
|
&& !defined(BOOST_BCB_PARTIAL_SPECIALIZATION_BUG)
|
||||||
|
# define BOOST_BCB_PARTIAL_SPECIALIZATION_BUG
|
||||||
|
# endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Without partial specialization, we can't have array-type partial specialisations:
|
||||||
|
//
|
||||||
|
# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
|
||||||
|
&& !defined(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS)
|
||||||
|
# define BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS
|
||||||
|
# endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Without partial specialization, std::iterator_traits can't work:
|
||||||
|
//
|
||||||
|
# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
|
||||||
|
&& !defined(BOOST_NO_STD_ITERATOR_TRAITS)
|
||||||
|
# define BOOST_NO_STD_ITERATOR_TRAITS
|
||||||
|
# endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Without partial specialization, partial
|
||||||
|
// specialization with default args won't work either:
|
||||||
|
//
|
||||||
|
# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
|
||||||
|
&& !defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
|
||||||
|
# define BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS
|
||||||
|
# endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Without member template support, we can't have template constructors
|
||||||
|
// in the standard library either:
|
||||||
|
//
|
||||||
|
# if defined(BOOST_NO_MEMBER_TEMPLATES) \
|
||||||
|
&& !defined(BOOST_MSVC6_MEMBER_TEMPLATES) \
|
||||||
|
&& !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)
|
||||||
|
# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
|
||||||
|
# endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Without member template support, we can't have a conforming
|
||||||
|
// std::allocator template either:
|
||||||
|
//
|
||||||
|
# if defined(BOOST_NO_MEMBER_TEMPLATES) \
|
||||||
|
&& !defined(BOOST_MSVC6_MEMBER_TEMPLATES) \
|
||||||
|
&& !defined(BOOST_NO_STD_ALLOCATOR)
|
||||||
|
# define BOOST_NO_STD_ALLOCATOR
|
||||||
|
# endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// without ADL support then using declarations will break ADL as well:
|
||||||
|
//
|
||||||
|
#if defined(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP) && !defined(BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL)
|
||||||
|
# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Without typeid support we have no dynamic RTTI either:
|
||||||
|
//
|
||||||
|
#if defined(BOOST_NO_TYPEID) && !defined(BOOST_NO_RTTI)
|
||||||
|
# define BOOST_NO_RTTI
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// If we have a standard allocator, then we have a partial one as well:
|
||||||
|
//
|
||||||
|
#if !defined(BOOST_NO_STD_ALLOCATOR)
|
||||||
|
# define BOOST_HAS_PARTIAL_STD_ALLOCATOR
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// We can't have a working std::use_facet if there is no std::locale:
|
||||||
|
//
|
||||||
|
# if defined(BOOST_NO_STD_LOCALE) && !defined(BOOST_NO_STD_USE_FACET)
|
||||||
|
# define BOOST_NO_STD_USE_FACET
|
||||||
|
# endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// We can't have a std::messages facet if there is no std::locale:
|
||||||
|
//
|
||||||
|
# if defined(BOOST_NO_STD_LOCALE) && !defined(BOOST_NO_STD_MESSAGES)
|
||||||
|
# define BOOST_NO_STD_MESSAGES
|
||||||
|
# endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// We can't have a working std::wstreambuf if there is no std::locale:
|
||||||
|
//
|
||||||
|
# if defined(BOOST_NO_STD_LOCALE) && !defined(BOOST_NO_STD_WSTREAMBUF)
|
||||||
|
# define BOOST_NO_STD_WSTREAMBUF
|
||||||
|
# endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// We can't have a <cwctype> if there is no <cwchar>:
|
||||||
|
//
|
||||||
|
# if defined(BOOST_NO_CWCHAR) && !defined(BOOST_NO_CWCTYPE)
|
||||||
|
# define BOOST_NO_CWCTYPE
|
||||||
|
# endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// We can't have a swprintf if there is no <cwchar>:
|
||||||
|
//
|
||||||
|
# if defined(BOOST_NO_CWCHAR) && !defined(BOOST_NO_SWPRINTF)
|
||||||
|
# define BOOST_NO_SWPRINTF
|
||||||
|
# endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// If Win32 support is turned off, then we must turn off
|
||||||
|
// threading support also, unless there is some other
|
||||||
|
// thread API enabled:
|
||||||
|
//
|
||||||
|
#if defined(BOOST_DISABLE_WIN32) && defined(_WIN32) \
|
||||||
|
&& !defined(BOOST_DISABLE_THREADS) && !defined(BOOST_HAS_PTHREADS)
|
||||||
|
# define BOOST_DISABLE_THREADS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Turn on threading support if the compiler thinks that it's in
|
||||||
|
// multithreaded mode. We put this here because there are only a
|
||||||
|
// limited number of macros that identify this (if there's any missing
|
||||||
|
// from here then add to the appropriate compiler section):
|
||||||
|
//
|
||||||
|
#if (defined(__MT__) || defined(_MT) || defined(_REENTRANT) \
|
||||||
|
|| defined(_PTHREADS) || defined(__APPLE__) || defined(__DragonFly__)) \
|
||||||
|
&& !defined(BOOST_HAS_THREADS)
|
||||||
|
# define BOOST_HAS_THREADS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Turn threading support off if BOOST_DISABLE_THREADS is defined:
|
||||||
|
//
|
||||||
|
#if defined(BOOST_DISABLE_THREADS) && defined(BOOST_HAS_THREADS)
|
||||||
|
# undef BOOST_HAS_THREADS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Turn threading support off if we don't recognise the threading API:
|
||||||
|
//
|
||||||
|
#if defined(BOOST_HAS_THREADS) && !defined(BOOST_HAS_PTHREADS)\
|
||||||
|
&& !defined(BOOST_HAS_WINTHREADS) && !defined(BOOST_HAS_BETHREADS)\
|
||||||
|
&& !defined(BOOST_HAS_MPTASKS)
|
||||||
|
# undef BOOST_HAS_THREADS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Turn threading detail macros off if we don't (want to) use threading
|
||||||
|
//
|
||||||
|
#ifndef BOOST_HAS_THREADS
|
||||||
|
# undef BOOST_HAS_PTHREADS
|
||||||
|
# undef BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
|
||||||
|
# undef BOOST_HAS_PTHREAD_YIELD
|
||||||
|
# undef BOOST_HAS_PTHREAD_DELAY_NP
|
||||||
|
# undef BOOST_HAS_WINTHREADS
|
||||||
|
# undef BOOST_HAS_BETHREADS
|
||||||
|
# undef BOOST_HAS_MPTASKS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// If the compiler claims to be C99 conformant, then it had better
|
||||||
|
// have a <stdint.h>:
|
||||||
|
//
|
||||||
|
# if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901)
|
||||||
|
# define BOOST_HAS_STDINT_H
|
||||||
|
# ifndef BOOST_HAS_LOG1P
|
||||||
|
# define BOOST_HAS_LOG1P
|
||||||
|
# endif
|
||||||
|
# ifndef BOOST_HAS_EXPM1
|
||||||
|
# define BOOST_HAS_EXPM1
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Define BOOST_NO_SLIST and BOOST_NO_HASH if required.
|
||||||
|
// Note that this is for backwards compatibility only.
|
||||||
|
//
|
||||||
|
# if !defined(BOOST_HAS_SLIST) && !defined(BOOST_NO_SLIST)
|
||||||
|
# define BOOST_NO_SLIST
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if !defined(BOOST_HAS_HASH) && !defined(BOOST_NO_HASH)
|
||||||
|
# define BOOST_NO_HASH
|
||||||
|
# endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Set BOOST_SLIST_HEADER if not set already:
|
||||||
|
//
|
||||||
|
#if defined(BOOST_HAS_SLIST) && !defined(BOOST_SLIST_HEADER)
|
||||||
|
# define BOOST_SLIST_HEADER <slist>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Set BOOST_HASH_SET_HEADER if not set already:
|
||||||
|
//
|
||||||
|
#if defined(BOOST_HAS_HASH) && !defined(BOOST_HASH_SET_HEADER)
|
||||||
|
# define BOOST_HASH_SET_HEADER <hash_set>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Set BOOST_HASH_MAP_HEADER if not set already:
|
||||||
|
//
|
||||||
|
#if defined(BOOST_HAS_HASH) && !defined(BOOST_HASH_MAP_HEADER)
|
||||||
|
# define BOOST_HASH_MAP_HEADER <hash_map>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// BOOST_HAS_ABI_HEADERS
|
||||||
|
// This macro gets set if we have headers that fix the ABI,
|
||||||
|
// and prevent ODR violations when linking to external libraries:
|
||||||
|
#if defined(BOOST_ABI_PREFIX) && defined(BOOST_ABI_SUFFIX) && !defined(BOOST_HAS_ABI_HEADERS)
|
||||||
|
# define BOOST_HAS_ABI_HEADERS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(BOOST_HAS_ABI_HEADERS) && defined(BOOST_DISABLE_ABI_HEADERS)
|
||||||
|
# undef BOOST_HAS_ABI_HEADERS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// BOOST_NO_STDC_NAMESPACE workaround --------------------------------------//
|
||||||
|
// Because std::size_t usage is so common, even in boost headers which do not
|
||||||
|
// otherwise use the C library, the <cstddef> workaround is included here so
|
||||||
|
// that ugly workaround code need not appear in many other boost headers.
|
||||||
|
// NOTE WELL: This is a workaround for non-conforming compilers; <cstddef>
|
||||||
|
// must still be #included in the usual places so that <cstddef> inclusion
|
||||||
|
// works as expected with standard conforming compilers. The resulting
|
||||||
|
// double inclusion of <cstddef> is harmless.
|
||||||
|
|
||||||
|
# ifdef BOOST_NO_STDC_NAMESPACE
|
||||||
|
# include <cstddef>
|
||||||
|
namespace std { using ::ptrdiff_t; using ::size_t; }
|
||||||
|
# endif
|
||||||
|
|
||||||
|
// Workaround for the unfortunate min/max macros defined by some platform headers
|
||||||
|
|
||||||
|
#define BOOST_PREVENT_MACRO_SUBSTITUTION
|
||||||
|
|
||||||
|
#ifndef BOOST_USING_STD_MIN
|
||||||
|
# define BOOST_USING_STD_MIN() using std::min
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef BOOST_USING_STD_MAX
|
||||||
|
# define BOOST_USING_STD_MAX() using std::max
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// BOOST_NO_STD_MIN_MAX workaround -----------------------------------------//
|
||||||
|
|
||||||
|
# ifdef BOOST_NO_STD_MIN_MAX
|
||||||
|
|
||||||
|
namespace std {
|
||||||
|
template <class _Tp>
|
||||||
|
inline const _Tp& min BOOST_PREVENT_MACRO_SUBSTITUTION (const _Tp& __a, const _Tp& __b) {
|
||||||
|
return __b < __a ? __b : __a;
|
||||||
|
}
|
||||||
|
template <class _Tp>
|
||||||
|
inline const _Tp& max BOOST_PREVENT_MACRO_SUBSTITUTION (const _Tp& __a, const _Tp& __b) {
|
||||||
|
return __a < __b ? __b : __a;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# endif
|
||||||
|
|
||||||
|
// BOOST_STATIC_CONSTANT workaround --------------------------------------- //
|
||||||
|
// On compilers which don't allow in-class initialization of static integral
|
||||||
|
// constant members, we must use enums as a workaround if we want the constants
|
||||||
|
// to be available at compile-time. This macro gives us a convenient way to
|
||||||
|
// declare such constants.
|
||||||
|
|
||||||
|
# ifdef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
|
||||||
|
# define BOOST_STATIC_CONSTANT(type, assignment) enum { assignment }
|
||||||
|
# else
|
||||||
|
# define BOOST_STATIC_CONSTANT(type, assignment) static const type assignment
|
||||||
|
# endif
|
||||||
|
|
||||||
|
// BOOST_USE_FACET / HAS_FACET workaround ----------------------------------//
|
||||||
|
// When the standard library does not have a conforming std::use_facet there
|
||||||
|
// are various workarounds available, but they differ from library to library.
|
||||||
|
// The same problem occurs with has_facet.
|
||||||
|
// These macros provide a consistent way to access a locale's facets.
|
||||||
|
// Usage:
|
||||||
|
// replace
|
||||||
|
// std::use_facet<Type>(loc);
|
||||||
|
// with
|
||||||
|
// BOOST_USE_FACET(Type, loc);
|
||||||
|
// Note do not add a std:: prefix to the front of BOOST_USE_FACET!
|
||||||
|
// Use for BOOST_HAS_FACET is analogous.
|
||||||
|
|
||||||
|
#if defined(BOOST_NO_STD_USE_FACET)
|
||||||
|
# ifdef BOOST_HAS_TWO_ARG_USE_FACET
|
||||||
|
# define BOOST_USE_FACET(Type, loc) std::use_facet(loc, static_cast<Type*>(0))
|
||||||
|
# define BOOST_HAS_FACET(Type, loc) std::has_facet(loc, static_cast<Type*>(0))
|
||||||
|
# elif defined(BOOST_HAS_MACRO_USE_FACET)
|
||||||
|
# define BOOST_USE_FACET(Type, loc) std::_USE(loc, Type)
|
||||||
|
# define BOOST_HAS_FACET(Type, loc) std::_HAS(loc, Type)
|
||||||
|
# elif defined(BOOST_HAS_STLP_USE_FACET)
|
||||||
|
# define BOOST_USE_FACET(Type, loc) (*std::_Use_facet<Type >(loc))
|
||||||
|
# define BOOST_HAS_FACET(Type, loc) std::has_facet< Type >(loc)
|
||||||
|
# endif
|
||||||
|
#else
|
||||||
|
# define BOOST_USE_FACET(Type, loc) std::use_facet< Type >(loc)
|
||||||
|
# define BOOST_HAS_FACET(Type, loc) std::has_facet< Type >(loc)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// BOOST_NESTED_TEMPLATE workaround ------------------------------------------//
|
||||||
|
// Member templates are supported by some compilers even though they can't use
|
||||||
|
// the A::template member<U> syntax, as a workaround replace:
|
||||||
|
//
|
||||||
|
// typedef typename A::template rebind<U> binder;
|
||||||
|
//
|
||||||
|
// with:
|
||||||
|
//
|
||||||
|
// typedef typename A::BOOST_NESTED_TEMPLATE rebind<U> binder;
|
||||||
|
|
||||||
|
#ifndef BOOST_NO_MEMBER_TEMPLATE_KEYWORD
|
||||||
|
# define BOOST_NESTED_TEMPLATE template
|
||||||
|
#else
|
||||||
|
# define BOOST_NESTED_TEMPLATE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// BOOST_UNREACHABLE_RETURN(x) workaround -------------------------------------//
|
||||||
|
// Normally evaluates to nothing, unless BOOST_NO_UNREACHABLE_RETURN_DETECTION
|
||||||
|
// is defined, in which case it evaluates to return x; Use when you have a return
|
||||||
|
// statement that can never be reached.
|
||||||
|
|
||||||
|
#ifdef BOOST_NO_UNREACHABLE_RETURN_DETECTION
|
||||||
|
# define BOOST_UNREACHABLE_RETURN(x) return x;
|
||||||
|
#else
|
||||||
|
# define BOOST_UNREACHABLE_RETURN(x)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// BOOST_DEDUCED_TYPENAME workaround ------------------------------------------//
|
||||||
|
//
|
||||||
|
// Some compilers don't support the use of `typename' for dependent
|
||||||
|
// types in deduced contexts, e.g.
|
||||||
|
//
|
||||||
|
// template <class T> void f(T, typename T::type);
|
||||||
|
// ^^^^^^^^
|
||||||
|
// Replace these declarations with:
|
||||||
|
//
|
||||||
|
// template <class T> void f(T, BOOST_DEDUCED_TYPENAME T::type);
|
||||||
|
|
||||||
|
#ifndef BOOST_NO_DEDUCED_TYPENAME
|
||||||
|
# define BOOST_DEDUCED_TYPENAME typename
|
||||||
|
#else
|
||||||
|
# define BOOST_DEDUCED_TYPENAME
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef BOOST_NO_TYPENAME_WITH_CTOR
|
||||||
|
# define BOOST_CTOR_TYPENAME typename
|
||||||
|
#else
|
||||||
|
# define BOOST_CTOR_TYPENAME
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// long long workaround ------------------------------------------//
|
||||||
|
// On gcc (and maybe other compilers?) long long is alway supported
|
||||||
|
// but it's use may generate either warnings (with -ansi), or errors
|
||||||
|
// (with -pedantic -ansi) unless it's use is prefixed by __extension__
|
||||||
|
//
|
||||||
|
#if defined(BOOST_HAS_LONG_LONG)
|
||||||
|
namespace boost{
|
||||||
|
# ifdef __GNUC__
|
||||||
|
__extension__ typedef long long long_long_type;
|
||||||
|
__extension__ typedef unsigned long long ulong_long_type;
|
||||||
|
# else
|
||||||
|
typedef long long long_long_type;
|
||||||
|
typedef unsigned long long ulong_long_type;
|
||||||
|
# endif
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// BOOST_[APPEND_]EXPLICIT_TEMPLATE_[NON_]TYPE macros --------------------------//
|
||||||
|
//
|
||||||
|
// Some compilers have problems with function templates whose template
|
||||||
|
// parameters don't appear in the function parameter list (basically
|
||||||
|
// they just link one instantiation of the template in the final
|
||||||
|
// executable). These macros provide a uniform way to cope with the
|
||||||
|
// problem with no effects on the calling syntax.
|
||||||
|
|
||||||
|
// Example:
|
||||||
|
//
|
||||||
|
// #include <iostream>
|
||||||
|
// #include <ostream>
|
||||||
|
// #include <typeinfo>
|
||||||
|
//
|
||||||
|
// template <int n>
|
||||||
|
// void f() { std::cout << n << ' '; }
|
||||||
|
//
|
||||||
|
// template <typename T>
|
||||||
|
// void g() { std::cout << typeid(T).name() << ' '; }
|
||||||
|
//
|
||||||
|
// int main() {
|
||||||
|
// f<1>();
|
||||||
|
// f<2>();
|
||||||
|
//
|
||||||
|
// g<int>();
|
||||||
|
// g<double>();
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// With VC++ 6.0 the output is:
|
||||||
|
//
|
||||||
|
// 2 2 double double
|
||||||
|
//
|
||||||
|
// To fix it, write
|
||||||
|
//
|
||||||
|
// template <int n>
|
||||||
|
// void f(BOOST_EXPLICIT_TEMPLATE_NON_TYPE(int, n)) { ... }
|
||||||
|
//
|
||||||
|
// template <typename T>
|
||||||
|
// void g(BOOST_EXPLICIT_TEMPLATE_TYPE(T)) { ... }
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
|
#if defined BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
|
||||||
|
|
||||||
|
# include "boost/type.hpp"
|
||||||
|
# include "boost/non_type.hpp"
|
||||||
|
|
||||||
|
# define BOOST_EXPLICIT_TEMPLATE_TYPE(t) boost::type<t>* = 0
|
||||||
|
# define BOOST_EXPLICIT_TEMPLATE_TYPE_SPEC(t) boost::type<t>*
|
||||||
|
# define BOOST_EXPLICIT_TEMPLATE_NON_TYPE(t, v) boost::non_type<t, v>* = 0
|
||||||
|
# define BOOST_EXPLICIT_TEMPLATE_NON_TYPE_SPEC(t, v) boost::non_type<t, v>*
|
||||||
|
|
||||||
|
# define BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(t) \
|
||||||
|
, BOOST_EXPLICIT_TEMPLATE_TYPE(t)
|
||||||
|
# define BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE_SPEC(t) \
|
||||||
|
, BOOST_EXPLICIT_TEMPLATE_TYPE_SPEC(t)
|
||||||
|
# define BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(t, v) \
|
||||||
|
, BOOST_EXPLICIT_TEMPLATE_NON_TYPE(t, v)
|
||||||
|
# define BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE_SPEC(t, v) \
|
||||||
|
, BOOST_EXPLICIT_TEMPLATE_NON_TYPE_SPEC(t, v)
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
// no workaround needed: expand to nothing
|
||||||
|
|
||||||
|
# define BOOST_EXPLICIT_TEMPLATE_TYPE(t)
|
||||||
|
# define BOOST_EXPLICIT_TEMPLATE_TYPE_SPEC(t)
|
||||||
|
# define BOOST_EXPLICIT_TEMPLATE_NON_TYPE(t, v)
|
||||||
|
# define BOOST_EXPLICIT_TEMPLATE_NON_TYPE_SPEC(t, v)
|
||||||
|
|
||||||
|
# define BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(t)
|
||||||
|
# define BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE_SPEC(t)
|
||||||
|
# define BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(t, v)
|
||||||
|
# define BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE_SPEC(t, v)
|
||||||
|
|
||||||
|
|
||||||
|
#endif // defined BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
|
||||||
|
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------------//
|
||||||
|
|
||||||
|
//
|
||||||
|
// Helper macro BOOST_STRINGIZE:
|
||||||
|
// Converts the parameter X to a string after macro replacement
|
||||||
|
// on X has been performed.
|
||||||
|
//
|
||||||
|
#define BOOST_STRINGIZE(X) BOOST_DO_STRINGIZE(X)
|
||||||
|
#define BOOST_DO_STRINGIZE(X) #X
|
||||||
|
|
||||||
|
//
|
||||||
|
// Helper macro BOOST_JOIN:
|
||||||
|
// The following piece of macro magic joins the two
|
||||||
|
// arguments together, even when one of the arguments is
|
||||||
|
// itself a macro (see 16.3.1 in C++ standard). The key
|
||||||
|
// is that macro expansion of macro arguments does not
|
||||||
|
// occur in BOOST_DO_JOIN2 but does in BOOST_DO_JOIN.
|
||||||
|
//
|
||||||
|
#define BOOST_JOIN( X, Y ) BOOST_DO_JOIN( X, Y )
|
||||||
|
#define BOOST_DO_JOIN( X, Y ) BOOST_DO_JOIN2(X,Y)
|
||||||
|
#define BOOST_DO_JOIN2( X, Y ) X##Y
|
||||||
|
|
||||||
|
//
|
||||||
|
// Set some default values for compiler/library/platform names.
|
||||||
|
// These are for debugging config setup only:
|
||||||
|
//
|
||||||
|
# ifndef BOOST_COMPILER
|
||||||
|
# define BOOST_COMPILER "Unknown ISO C++ Compiler"
|
||||||
|
# endif
|
||||||
|
# ifndef BOOST_STDLIB
|
||||||
|
# define BOOST_STDLIB "Unknown ISO standard library"
|
||||||
|
# endif
|
||||||
|
# ifndef BOOST_PLATFORM
|
||||||
|
# if defined(unix) || defined(__unix) || defined(_XOPEN_SOURCE) \
|
||||||
|
|| defined(_POSIX_SOURCE)
|
||||||
|
# define BOOST_PLATFORM "Generic Unix"
|
||||||
|
# else
|
||||||
|
# define BOOST_PLATFORM "Unknown"
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
124
library/include/boost/config/user.hpp
Normal file
124
library/include/boost/config/user.hpp
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
// boost/config/user.hpp ---------------------------------------------------//
|
||||||
|
|
||||||
|
// (C) Copyright John Maddock 2001.
|
||||||
|
// 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)
|
||||||
|
|
||||||
|
// Do not check in modified versions of this file,
|
||||||
|
// This file may be customized by the end user, but not by boost.
|
||||||
|
|
||||||
|
//
|
||||||
|
// Use this file to define a site and compiler specific
|
||||||
|
// configuration policy:
|
||||||
|
//
|
||||||
|
|
||||||
|
// define this to locate a compiler config file:
|
||||||
|
// #define BOOST_COMPILER_CONFIG <myheader>
|
||||||
|
|
||||||
|
// define this to locate a stdlib config file:
|
||||||
|
// #define BOOST_STDLIB_CONFIG <myheader>
|
||||||
|
|
||||||
|
// define this to locate a platform config file:
|
||||||
|
// #define BOOST_PLATFORM_CONFIG <myheader>
|
||||||
|
|
||||||
|
// define this to disable compiler config,
|
||||||
|
// use if your compiler config has nothing to set:
|
||||||
|
// #define BOOST_NO_COMPILER_CONFIG
|
||||||
|
|
||||||
|
// define this to disable stdlib config,
|
||||||
|
// use if your stdlib config has nothing to set:
|
||||||
|
// #define BOOST_NO_STDLIB_CONFIG
|
||||||
|
|
||||||
|
// define this to disable platform config,
|
||||||
|
// use if your platform config has nothing to set:
|
||||||
|
// #define BOOST_NO_PLATFORM_CONFIG
|
||||||
|
|
||||||
|
// define this to disable all config options,
|
||||||
|
// excluding the user config. Use if your
|
||||||
|
// setup is fully ISO compliant, and has no
|
||||||
|
// useful extensions, or for autoconf generated
|
||||||
|
// setups:
|
||||||
|
// #define BOOST_NO_CONFIG
|
||||||
|
|
||||||
|
// define this to make the config "optimistic"
|
||||||
|
// about unknown compiler versions. Normally
|
||||||
|
// unknown compiler versions are assumed to have
|
||||||
|
// all the defects of the last known version, however
|
||||||
|
// setting this flag, causes the config to assume
|
||||||
|
// that unknown compiler versions are fully conformant
|
||||||
|
// with the standard:
|
||||||
|
// #define BOOST_STRICT_CONFIG
|
||||||
|
|
||||||
|
// define this to cause the config to halt compilation
|
||||||
|
// with an #error if it encounters anything unknown --
|
||||||
|
// either an unknown compiler version or an unknown
|
||||||
|
// compiler/platform/library:
|
||||||
|
// #define BOOST_ASSERT_CONFIG
|
||||||
|
|
||||||
|
|
||||||
|
// define if you want to disable threading support, even
|
||||||
|
// when available:
|
||||||
|
// #define BOOST_DISABLE_THREADS
|
||||||
|
|
||||||
|
// define when you want to disable Win32 specific features
|
||||||
|
// even when available:
|
||||||
|
// #define BOOST_DISABLE_WIN32
|
||||||
|
|
||||||
|
// BOOST_DISABLE_ABI_HEADERS: Stops boost headers from including any
|
||||||
|
// prefix/suffix headers that normally control things like struct
|
||||||
|
// packing and alignment.
|
||||||
|
// #define BOOST_DISABLE_ABI_HEADERS
|
||||||
|
|
||||||
|
// BOOST_ABI_PREFIX: A prefix header to include in place of whatever
|
||||||
|
// boost.config would normally select, any replacement should set up
|
||||||
|
// struct packing and alignment options as required.
|
||||||
|
// #define BOOST_ABI_PREFIX my-header-name
|
||||||
|
|
||||||
|
// BOOST_ABI_SUFFIX: A suffix header to include in place of whatever
|
||||||
|
// boost.config would normally select, any replacement should undo
|
||||||
|
// the effects of the prefix header.
|
||||||
|
// #define BOOST_ABI_SUFFIX my-header-name
|
||||||
|
|
||||||
|
// BOOST_ALL_DYN_LINK: Forces all libraries that have separate source,
|
||||||
|
// to be linked as dll's rather than static libraries on Microsoft Windows
|
||||||
|
// (this macro is used to turn on __declspec(dllimport) modifiers, so that
|
||||||
|
// the compiler knows which symbols to look for in a dll rather than in a
|
||||||
|
// static library). Note that there may be some libraries that can only
|
||||||
|
// be statically linked (Boost.Test for example) and others which may only
|
||||||
|
// be dynamically linked (Boost.Threads for example), in these cases this
|
||||||
|
// macro has no effect.
|
||||||
|
// #define BOOST_ALL_DYN_LINK
|
||||||
|
|
||||||
|
// BOOST_WHATEVER_DYN_LINK: Forces library "whatever" to be linked as a dll
|
||||||
|
// rather than a static library on Microsoft Windows: replace the WHATEVER
|
||||||
|
// part of the macro name with the name of the library that you want to
|
||||||
|
// dynamically link to, for example use BOOST_DATE_TIME_DYN_LINK or
|
||||||
|
// BOOST_REGEX_DYN_LINK etc (this macro is used to turn on __declspec(dllimport)
|
||||||
|
// modifiers, so that the compiler knows which symbols to look for in a dll
|
||||||
|
// rather than in a static library).
|
||||||
|
// Note that there may be some libraries that can only be statically linked
|
||||||
|
// (Boost.Test for example) and others which may only be dynamically linked
|
||||||
|
// (Boost.Threads for example), in these cases this macro is unsupported.
|
||||||
|
// #define BOOST_WHATEVER_DYN_LINK
|
||||||
|
|
||||||
|
// BOOST_ALL_NO_LIB: Tells the config system not to automatically select
|
||||||
|
// which libraries to link against.
|
||||||
|
// Normally if a compiler supports #pragma lib, then the correct library
|
||||||
|
// build variant will be automatically selected and linked against,
|
||||||
|
// simply by the act of including one of that library's headers.
|
||||||
|
// This macro turns that feature off.
|
||||||
|
// #define BOOST_ALL_NO_LIB
|
||||||
|
|
||||||
|
// BOOST_WHATEVER_NO_LIB: Tells the config system not to automatically
|
||||||
|
// select which library to link against for library "whatever",
|
||||||
|
// replace WHATEVER in the macro name with the name of the library;
|
||||||
|
// for example BOOST_DATE_TIME_NO_LIB or BOOST_REGEX_NO_LIB.
|
||||||
|
// Normally if a compiler supports #pragma lib, then the correct library
|
||||||
|
// build variant will be automatically selected and linked against, simply
|
||||||
|
// by the act of including one of that library's headers. This macro turns
|
||||||
|
// that feature off.
|
||||||
|
// #define BOOST_WHATEVER_NO_LIB
|
||||||
|
|
||||||
|
|
||||||
|
|
47
library/include/boost/config/warning_disable.hpp
Normal file
47
library/include/boost/config/warning_disable.hpp
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
// Copyright John Maddock 2008
|
||||||
|
// Use, modification, and distribution is 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)
|
||||||
|
//
|
||||||
|
// This file exists to turn off some overly-pedantic warning emitted
|
||||||
|
// by certain compilers. You should include this header only in:
|
||||||
|
//
|
||||||
|
// * A test case, before any other headers, or,
|
||||||
|
// * A library source file before any other headers.
|
||||||
|
//
|
||||||
|
// IT SHOULD NOT BE INCLUDED BY ANY BOOST HEADER.
|
||||||
|
//
|
||||||
|
// YOU SHOULD NOT INCLUDE IT IF YOU CAN REASONABLY FIX THE WARNING.
|
||||||
|
//
|
||||||
|
// The only warnings disabled here are those that are:
|
||||||
|
//
|
||||||
|
// * Quite unreasonably pedantic.
|
||||||
|
// * Generally only emitted by a single compiler.
|
||||||
|
// * Can't easily be fixed: for example if the vendors own std lib
|
||||||
|
// code emits these warnings!
|
||||||
|
//
|
||||||
|
// Note that THIS HEADER MUST NOT INCLUDE ANY OTHER HEADERS:
|
||||||
|
// not even std library ones! Doing so may turn the warning
|
||||||
|
// off too late to be of any use. For example the VC++ C4996
|
||||||
|
// warning can be omitted from <iosfwd> if that header is included
|
||||||
|
// before or by this one :-(
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef BOOST_CONFIG_WARNING_DISABLE_HPP
|
||||||
|
#define BOOST_CONFIG_WARNING_DISABLE_HPP
|
||||||
|
|
||||||
|
#if defined(_MSC_VER) && (_MSC_VER >= 1400)
|
||||||
|
// Error 'function': was declared deprecated
|
||||||
|
// http://msdn2.microsoft.com/en-us/library/ttcz0bys(VS.80).aspx
|
||||||
|
// This error is emitted when you use some perfectly conforming
|
||||||
|
// std lib functions in a perfectly correct way, and also by
|
||||||
|
// some of Microsoft's own std lib code !
|
||||||
|
# pragma warning(disable:4996)
|
||||||
|
#endif
|
||||||
|
#if defined(__INTEL_COMPILER) || defined(__ICL)
|
||||||
|
// As above: gives warning when a "deprecated"
|
||||||
|
// std library function is encountered.
|
||||||
|
# pragma warning(disable:1786)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // BOOST_CONFIG_WARNING_DISABLE_HPP
|
67
library/include/boost/current_function.hpp
Normal file
67
library/include/boost/current_function.hpp
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
#ifndef BOOST_CURRENT_FUNCTION_HPP_INCLUDED
|
||||||
|
#define BOOST_CURRENT_FUNCTION_HPP_INCLUDED
|
||||||
|
|
||||||
|
// MS compatible compilers support #pragma once
|
||||||
|
|
||||||
|
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
|
||||||
|
# pragma once
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// boost/current_function.hpp - BOOST_CURRENT_FUNCTION
|
||||||
|
//
|
||||||
|
// Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
|
||||||
|
//
|
||||||
|
// 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)
|
||||||
|
//
|
||||||
|
// http://www.boost.org/libs/utility/current_function.html
|
||||||
|
//
|
||||||
|
|
||||||
|
namespace boost
|
||||||
|
{
|
||||||
|
|
||||||
|
namespace detail
|
||||||
|
{
|
||||||
|
|
||||||
|
inline void current_function_helper()
|
||||||
|
{
|
||||||
|
|
||||||
|
#if defined(__GNUC__) || (defined(__MWERKS__) && (__MWERKS__ >= 0x3000)) || (defined(__ICC) && (__ICC >= 600))
|
||||||
|
|
||||||
|
# define BOOST_CURRENT_FUNCTION __PRETTY_FUNCTION__
|
||||||
|
|
||||||
|
#elif defined(__DMC__) && (__DMC__ >= 0x810)
|
||||||
|
|
||||||
|
# define BOOST_CURRENT_FUNCTION __PRETTY_FUNCTION__
|
||||||
|
|
||||||
|
#elif defined(__FUNCSIG__)
|
||||||
|
|
||||||
|
# define BOOST_CURRENT_FUNCTION __FUNCSIG__
|
||||||
|
|
||||||
|
#elif (defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 600)) || (defined(__IBMCPP__) && (__IBMCPP__ >= 500))
|
||||||
|
|
||||||
|
# define BOOST_CURRENT_FUNCTION __FUNCTION__
|
||||||
|
|
||||||
|
#elif defined(__BORLANDC__) && (__BORLANDC__ >= 0x550)
|
||||||
|
|
||||||
|
# define BOOST_CURRENT_FUNCTION __FUNC__
|
||||||
|
|
||||||
|
#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901)
|
||||||
|
|
||||||
|
# define BOOST_CURRENT_FUNCTION __func__
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
# define BOOST_CURRENT_FUNCTION "(unknown)"
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace detail
|
||||||
|
|
||||||
|
} // namespace boost
|
||||||
|
|
||||||
|
#endif // #ifndef BOOST_CURRENT_FUNCTION_HPP_INCLUDED
|
222
library/include/boost/detail/algorithm.hpp
Normal file
222
library/include/boost/detail/algorithm.hpp
Normal file
@ -0,0 +1,222 @@
|
|||||||
|
// (C) Copyright Jeremy Siek 2001.
|
||||||
|
// 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) 1994
|
||||||
|
* Hewlett-Packard Company
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, distribute and sell this software
|
||||||
|
* and its documentation for any purpose is hereby granted without fee,
|
||||||
|
* provided that the above copyright notice appear in all copies and
|
||||||
|
* that both that copyright notice and this permission notice appear
|
||||||
|
* in supporting documentation. Hewlett-Packard Company makes no
|
||||||
|
* representations about the suitability of this software for any
|
||||||
|
* purpose. It is provided "as is" without express or implied warranty.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Copyright (c) 1996
|
||||||
|
* Silicon Graphics Computer Systems, Inc.
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, distribute and sell this software
|
||||||
|
* and its documentation for any purpose is hereby granted without fee,
|
||||||
|
* provided that the above copyright notice appear in all copies and
|
||||||
|
* that both that copyright notice and this permission notice appear
|
||||||
|
* in supporting documentation. Silicon Graphics makes no
|
||||||
|
* representations about the suitability of this software for any
|
||||||
|
* purpose. It is provided "as is" without express or implied warranty.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef BOOST_ALGORITHM_HPP
|
||||||
|
# define BOOST_ALGORITHM_HPP
|
||||||
|
# include <boost/detail/iterator.hpp>
|
||||||
|
// Algorithms on sequences
|
||||||
|
//
|
||||||
|
// The functions in this file have not yet gone through formal
|
||||||
|
// review, and are subject to change. This is a work in progress.
|
||||||
|
// They have been checked into the detail directory because
|
||||||
|
// there are some graph algorithms that use these functions.
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
namespace boost {
|
||||||
|
|
||||||
|
template <typename Iter1, typename Iter2>
|
||||||
|
Iter1 begin(const std::pair<Iter1, Iter2>& p) { return p.first; }
|
||||||
|
|
||||||
|
template <typename Iter1, typename Iter2>
|
||||||
|
Iter2 end(const std::pair<Iter1, Iter2>& p) { return p.second; }
|
||||||
|
|
||||||
|
template <typename Iter1, typename Iter2>
|
||||||
|
typename boost::detail::iterator_traits<Iter1>::difference_type
|
||||||
|
size(const std::pair<Iter1, Iter2>& p) {
|
||||||
|
return std::distance(p.first, p.second);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
// These seem to interfere with the std::pair overloads :(
|
||||||
|
template <typename Container>
|
||||||
|
typename Container::iterator
|
||||||
|
begin(Container& c) { return c.begin(); }
|
||||||
|
|
||||||
|
template <typename Container>
|
||||||
|
typename Container::const_iterator
|
||||||
|
begin(const Container& c) { return c.begin(); }
|
||||||
|
|
||||||
|
template <typename Container>
|
||||||
|
typename Container::iterator
|
||||||
|
end(Container& c) { return c.end(); }
|
||||||
|
|
||||||
|
template <typename Container>
|
||||||
|
typename Container::const_iterator
|
||||||
|
end(const Container& c) { return c.end(); }
|
||||||
|
|
||||||
|
template <typename Container>
|
||||||
|
typename Container::size_type
|
||||||
|
size(const Container& c) { return c.size(); }
|
||||||
|
#else
|
||||||
|
template <typename T>
|
||||||
|
typename std::vector<T>::iterator
|
||||||
|
begin(std::vector<T>& c) { return c.begin(); }
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
typename std::vector<T>::const_iterator
|
||||||
|
begin(const std::vector<T>& c) { return c.begin(); }
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
typename std::vector<T>::iterator
|
||||||
|
end(std::vector<T>& c) { return c.end(); }
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
typename std::vector<T>::const_iterator
|
||||||
|
end(const std::vector<T>& c) { return c.end(); }
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
typename std::vector<T>::size_type
|
||||||
|
size(const std::vector<T>& c) { return c.size(); }
|
||||||
|
#endif
|
||||||
|
|
||||||
|
template <class ForwardIterator, class T>
|
||||||
|
void iota(ForwardIterator first, ForwardIterator last, T value)
|
||||||
|
{
|
||||||
|
for (; first != last; ++first, ++value)
|
||||||
|
*first = value;
|
||||||
|
}
|
||||||
|
template <typename Container, typename T>
|
||||||
|
void iota(Container& c, const T& value)
|
||||||
|
{
|
||||||
|
iota(begin(c), end(c), value);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Also do version with 2nd container?
|
||||||
|
template <typename Container, typename OutIter>
|
||||||
|
OutIter copy(const Container& c, OutIter result) {
|
||||||
|
return std::copy(begin(c), end(c), result);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename Container1, typename Container2>
|
||||||
|
bool equal(const Container1& c1, const Container2& c2)
|
||||||
|
{
|
||||||
|
if (size(c1) != size(c2))
|
||||||
|
return false;
|
||||||
|
return std::equal(begin(c1), end(c1), begin(c2));
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename Container>
|
||||||
|
void sort(Container& c) { std::sort(begin(c), end(c)); }
|
||||||
|
|
||||||
|
template <typename Container, typename Predicate>
|
||||||
|
void sort(Container& c, const Predicate& p) {
|
||||||
|
std::sort(begin(c), end(c), p);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename Container>
|
||||||
|
void stable_sort(Container& c) { std::stable_sort(begin(c), end(c)); }
|
||||||
|
|
||||||
|
template <typename Container, typename Predicate>
|
||||||
|
void stable_sort(Container& c, const Predicate& p) {
|
||||||
|
std::stable_sort(begin(c), end(c), p);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename InputIterator, typename Predicate>
|
||||||
|
bool any_if(InputIterator first, InputIterator last, Predicate p)
|
||||||
|
{
|
||||||
|
return std::find_if(first, last, p) != last;
|
||||||
|
}
|
||||||
|
template <typename Container, typename Predicate>
|
||||||
|
bool any_if(const Container& c, Predicate p)
|
||||||
|
{
|
||||||
|
return any_if(begin(c), end(c), p);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename InputIterator, typename T>
|
||||||
|
bool container_contains(InputIterator first, InputIterator last, T value)
|
||||||
|
{
|
||||||
|
return std::find(first, last, value) != last;
|
||||||
|
}
|
||||||
|
template <typename Container, typename T>
|
||||||
|
bool container_contains(const Container& c, const T& value)
|
||||||
|
{
|
||||||
|
return container_contains(begin(c), end(c), value);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename Container, typename T>
|
||||||
|
std::size_t count(const Container& c, const T& value)
|
||||||
|
{
|
||||||
|
return std::count(begin(c), end(c), value);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename Container, typename Predicate>
|
||||||
|
std::size_t count_if(const Container& c, Predicate p)
|
||||||
|
{
|
||||||
|
return std::count_if(begin(c), end(c), p);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename ForwardIterator>
|
||||||
|
bool is_sorted(ForwardIterator first, ForwardIterator last)
|
||||||
|
{
|
||||||
|
if (first == last)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
ForwardIterator next = first;
|
||||||
|
for (++next; next != last; first = next, ++next) {
|
||||||
|
if (*next < *first)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename ForwardIterator, typename StrictWeakOrdering>
|
||||||
|
bool is_sorted(ForwardIterator first, ForwardIterator last,
|
||||||
|
StrictWeakOrdering comp)
|
||||||
|
{
|
||||||
|
if (first == last)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
ForwardIterator next = first;
|
||||||
|
for (++next; next != last; first = next, ++next) {
|
||||||
|
if (comp(*next, *first))
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename Container>
|
||||||
|
bool is_sorted(const Container& c)
|
||||||
|
{
|
||||||
|
return is_sorted(begin(c), end(c));
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename Container, typename StrictWeakOrdering>
|
||||||
|
bool is_sorted(const Container& c, StrictWeakOrdering comp)
|
||||||
|
{
|
||||||
|
return is_sorted(begin(c), end(c), comp);
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace boost
|
||||||
|
|
||||||
|
#endif // BOOST_ALGORITHM_HPP
|
193
library/include/boost/detail/allocator_utilities.hpp
Normal file
193
library/include/boost/detail/allocator_utilities.hpp
Normal file
@ -0,0 +1,193 @@
|
|||||||
|
/* Copyright 2003-2008 Joaquin M Lopez Munoz.
|
||||||
|
* 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)
|
||||||
|
*
|
||||||
|
* See Boost website at http://www.boost.org/
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef BOOST_DETAIL_ALLOCATOR_UTILITIES_HPP
|
||||||
|
#define BOOST_DETAIL_ALLOCATOR_UTILITIES_HPP
|
||||||
|
|
||||||
|
#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
|
||||||
|
#include <boost/detail/workaround.hpp>
|
||||||
|
#include <boost/mpl/aux_/msvc_never_true.hpp>
|
||||||
|
#include <boost/mpl/eval_if.hpp>
|
||||||
|
#include <boost/type_traits/is_same.hpp>
|
||||||
|
#include <cstddef>
|
||||||
|
#include <memory>
|
||||||
|
#include <new>
|
||||||
|
|
||||||
|
namespace boost{
|
||||||
|
|
||||||
|
namespace detail{
|
||||||
|
|
||||||
|
/* Allocator adaption layer. Some stdlibs provide allocators without rebind
|
||||||
|
* and template ctors. These facilities are simulated with the external
|
||||||
|
* template class rebind_to and the aid of partial_std_allocator_wrapper.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace allocator{
|
||||||
|
|
||||||
|
/* partial_std_allocator_wrapper inherits the functionality of a std
|
||||||
|
* allocator while providing a templatized ctor and other bits missing
|
||||||
|
* in some stdlib implementation or another.
|
||||||
|
*/
|
||||||
|
|
||||||
|
template<typename Type>
|
||||||
|
class partial_std_allocator_wrapper:public std::allocator<Type>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/* Oddly enough, STLport does not define std::allocator<void>::value_type
|
||||||
|
* when configured to work without partial template specialization.
|
||||||
|
* No harm in supplying the definition here unconditionally.
|
||||||
|
*/
|
||||||
|
|
||||||
|
typedef Type value_type;
|
||||||
|
|
||||||
|
partial_std_allocator_wrapper(){};
|
||||||
|
|
||||||
|
template<typename Other>
|
||||||
|
partial_std_allocator_wrapper(const partial_std_allocator_wrapper<Other>&){}
|
||||||
|
|
||||||
|
partial_std_allocator_wrapper(const std::allocator<Type>& x):
|
||||||
|
std::allocator<Type>(x)
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
#if defined(BOOST_DINKUMWARE_STDLIB)
|
||||||
|
/* Dinkumware guys didn't provide a means to call allocate() without
|
||||||
|
* supplying a hint, in disagreement with the standard.
|
||||||
|
*/
|
||||||
|
|
||||||
|
Type* allocate(std::size_t n,const void* hint=0)
|
||||||
|
{
|
||||||
|
std::allocator<Type>& a=*this;
|
||||||
|
return a.allocate(n,hint);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Detects whether a given allocator belongs to a defective stdlib not
|
||||||
|
* having the required member templates.
|
||||||
|
* Note that it does not suffice to check the Boost.Config stdlib
|
||||||
|
* macros, as the user might have passed a custom, compliant allocator.
|
||||||
|
* The checks also considers partial_std_allocator_wrapper to be
|
||||||
|
* a standard defective allocator.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if defined(BOOST_NO_STD_ALLOCATOR)&&\
|
||||||
|
(defined(BOOST_HAS_PARTIAL_STD_ALLOCATOR)||defined(BOOST_DINKUMWARE_STDLIB))
|
||||||
|
|
||||||
|
template<typename Allocator>
|
||||||
|
struct is_partial_std_allocator
|
||||||
|
{
|
||||||
|
BOOST_STATIC_CONSTANT(bool,
|
||||||
|
value=
|
||||||
|
(is_same<
|
||||||
|
std::allocator<BOOST_DEDUCED_TYPENAME Allocator::value_type>,
|
||||||
|
Allocator
|
||||||
|
>::value)||
|
||||||
|
(is_same<
|
||||||
|
partial_std_allocator_wrapper<
|
||||||
|
BOOST_DEDUCED_TYPENAME Allocator::value_type>,
|
||||||
|
Allocator
|
||||||
|
>::value));
|
||||||
|
};
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
template<typename Allocator>
|
||||||
|
struct is_partial_std_allocator
|
||||||
|
{
|
||||||
|
BOOST_STATIC_CONSTANT(bool,value=false);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* rebind operations for defective std allocators */
|
||||||
|
|
||||||
|
template<typename Allocator,typename Type>
|
||||||
|
struct partial_std_allocator_rebind_to
|
||||||
|
{
|
||||||
|
typedef partial_std_allocator_wrapper<Type> type;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* rebind operation in all other cases */
|
||||||
|
|
||||||
|
#if BOOST_WORKAROUND(BOOST_MSVC,<1300)
|
||||||
|
/* Workaround for a problem in MSVC with dependent template typedefs
|
||||||
|
* when doing rebinding of allocators.
|
||||||
|
* Modeled after <boost/mpl/aux_/msvc_dtw.hpp> (thanks, Aleksey!)
|
||||||
|
*/
|
||||||
|
|
||||||
|
template<typename Allocator>
|
||||||
|
struct rebinder
|
||||||
|
{
|
||||||
|
template<bool> struct fake_allocator:Allocator{};
|
||||||
|
template<> struct fake_allocator<true>
|
||||||
|
{
|
||||||
|
template<typename Type> struct rebind{};
|
||||||
|
};
|
||||||
|
|
||||||
|
template<typename Type>
|
||||||
|
struct result:
|
||||||
|
fake_allocator<mpl::aux::msvc_never_true<Allocator>::value>::
|
||||||
|
template rebind<Type>
|
||||||
|
{
|
||||||
|
};
|
||||||
|
};
|
||||||
|
#else
|
||||||
|
template<typename Allocator>
|
||||||
|
struct rebinder
|
||||||
|
{
|
||||||
|
template<typename Type>
|
||||||
|
struct result
|
||||||
|
{
|
||||||
|
typedef typename Allocator::BOOST_NESTED_TEMPLATE
|
||||||
|
rebind<Type>::other other;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
template<typename Allocator,typename Type>
|
||||||
|
struct compliant_allocator_rebind_to
|
||||||
|
{
|
||||||
|
typedef typename rebinder<Allocator>::
|
||||||
|
BOOST_NESTED_TEMPLATE result<Type>::other type;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* rebind front-end */
|
||||||
|
|
||||||
|
template<typename Allocator,typename Type>
|
||||||
|
struct rebind_to:
|
||||||
|
mpl::eval_if_c<
|
||||||
|
is_partial_std_allocator<Allocator>::value,
|
||||||
|
partial_std_allocator_rebind_to<Allocator,Type>,
|
||||||
|
compliant_allocator_rebind_to<Allocator,Type>
|
||||||
|
>
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
/* allocator-independent versions of construct and destroy */
|
||||||
|
|
||||||
|
template<typename Type>
|
||||||
|
void construct(void* p,const Type& t)
|
||||||
|
{
|
||||||
|
new (p) Type(t);
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename Type>
|
||||||
|
void destroy(const Type* p)
|
||||||
|
{
|
||||||
|
p->~Type();
|
||||||
|
}
|
||||||
|
|
||||||
|
} /* namespace boost::detail::allocator */
|
||||||
|
|
||||||
|
} /* namespace boost::detail */
|
||||||
|
|
||||||
|
} /* namespace boost */
|
||||||
|
|
||||||
|
#endif
|
119
library/include/boost/detail/atomic_count.hpp
Normal file
119
library/include/boost/detail/atomic_count.hpp
Normal file
@ -0,0 +1,119 @@
|
|||||||
|
#ifndef BOOST_DETAIL_ATOMIC_COUNT_HPP_INCLUDED
|
||||||
|
#define BOOST_DETAIL_ATOMIC_COUNT_HPP_INCLUDED
|
||||||
|
|
||||||
|
// MS compatible compilers support #pragma once
|
||||||
|
|
||||||
|
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
|
||||||
|
# pragma once
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// boost/detail/atomic_count.hpp - thread/SMP safe reference counter
|
||||||
|
//
|
||||||
|
// Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
|
||||||
|
//
|
||||||
|
// 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)
|
||||||
|
//
|
||||||
|
// typedef <implementation-defined> boost::detail::atomic_count;
|
||||||
|
//
|
||||||
|
// atomic_count a(n);
|
||||||
|
//
|
||||||
|
// (n is convertible to long)
|
||||||
|
//
|
||||||
|
// Effects: Constructs an atomic_count with an initial value of n
|
||||||
|
//
|
||||||
|
// a;
|
||||||
|
//
|
||||||
|
// Returns: (long) the current value of a
|
||||||
|
//
|
||||||
|
// ++a;
|
||||||
|
//
|
||||||
|
// Effects: Atomically increments the value of a
|
||||||
|
// Returns: nothing
|
||||||
|
//
|
||||||
|
// --a;
|
||||||
|
//
|
||||||
|
// Effects: Atomically decrements the value of a
|
||||||
|
// Returns: (long) zero if the new value of a is zero,
|
||||||
|
// unspecified non-zero value otherwise (usually the new value)
|
||||||
|
//
|
||||||
|
// Important note: when --a returns zero, it must act as a
|
||||||
|
// read memory barrier (RMB); i.e. the calling thread must
|
||||||
|
// have a synchronized view of the memory
|
||||||
|
//
|
||||||
|
// On Intel IA-32 (x86) memory is always synchronized, so this
|
||||||
|
// is not a problem.
|
||||||
|
//
|
||||||
|
// On many architectures the atomic instructions already act as
|
||||||
|
// a memory barrier.
|
||||||
|
//
|
||||||
|
// This property is necessary for proper reference counting, since
|
||||||
|
// a thread can update the contents of a shared object, then
|
||||||
|
// release its reference, and another thread may immediately
|
||||||
|
// release the last reference causing object destruction.
|
||||||
|
//
|
||||||
|
// The destructor needs to have a synchronized view of the
|
||||||
|
// object to perform proper cleanup.
|
||||||
|
//
|
||||||
|
// Original example by Alexander Terekhov:
|
||||||
|
//
|
||||||
|
// Given:
|
||||||
|
//
|
||||||
|
// - a mutable shared object OBJ;
|
||||||
|
// - two threads THREAD1 and THREAD2 each holding
|
||||||
|
// a private smart_ptr object pointing to that OBJ.
|
||||||
|
//
|
||||||
|
// t1: THREAD1 updates OBJ (thread-safe via some synchronization)
|
||||||
|
// and a few cycles later (after "unlock") destroys smart_ptr;
|
||||||
|
//
|
||||||
|
// t2: THREAD2 destroys smart_ptr WITHOUT doing any synchronization
|
||||||
|
// with respect to shared mutable object OBJ; OBJ destructors
|
||||||
|
// are called driven by smart_ptr interface...
|
||||||
|
//
|
||||||
|
|
||||||
|
#include <boost/config.hpp>
|
||||||
|
|
||||||
|
#ifndef BOOST_HAS_THREADS
|
||||||
|
|
||||||
|
namespace boost
|
||||||
|
{
|
||||||
|
|
||||||
|
namespace detail
|
||||||
|
{
|
||||||
|
|
||||||
|
typedef long atomic_count;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#elif defined(BOOST_AC_USE_PTHREADS)
|
||||||
|
# include <boost/detail/atomic_count_pthreads.hpp>
|
||||||
|
|
||||||
|
#elif defined( __GNUC__ ) && ( defined( __i386__ ) || defined( __x86_64__ ) )
|
||||||
|
# include <boost/detail/atomic_count_gcc_x86.hpp>
|
||||||
|
|
||||||
|
#elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__)
|
||||||
|
# include <boost/detail/atomic_count_win32.hpp>
|
||||||
|
|
||||||
|
#elif defined( __GNUC__ ) && ( __GNUC__ * 100 + __GNUC_MINOR__ >= 401 ) && !defined( __arm__ ) && !defined( __hppa ) && ( !defined( __INTEL_COMPILER ) || defined( __ia64__ ) )
|
||||||
|
# include <boost/detail/atomic_count_sync.hpp>
|
||||||
|
|
||||||
|
#elif defined(__GLIBCPP__) || defined(__GLIBCXX__)
|
||||||
|
# include <boost/detail/atomic_count_gcc.hpp>
|
||||||
|
|
||||||
|
#elif defined(BOOST_HAS_PTHREADS)
|
||||||
|
|
||||||
|
# define BOOST_AC_USE_PTHREADS
|
||||||
|
# include <boost/detail/atomic_count_pthreads.hpp>
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
// Use #define BOOST_DISABLE_THREADS to avoid the error
|
||||||
|
#error Unrecognized threading platform
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // #ifndef BOOST_DETAIL_ATOMIC_COUNT_HPP_INCLUDED
|
68
library/include/boost/detail/atomic_count_gcc.hpp
Normal file
68
library/include/boost/detail/atomic_count_gcc.hpp
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
#ifndef BOOST_DETAIL_ATOMIC_COUNT_GCC_HPP_INCLUDED
|
||||||
|
#define BOOST_DETAIL_ATOMIC_COUNT_GCC_HPP_INCLUDED
|
||||||
|
|
||||||
|
//
|
||||||
|
// boost/detail/atomic_count_gcc.hpp
|
||||||
|
//
|
||||||
|
// atomic_count for GNU libstdc++ v3
|
||||||
|
//
|
||||||
|
// http://gcc.gnu.org/onlinedocs/porting/Thread-safety.html
|
||||||
|
//
|
||||||
|
// Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
|
||||||
|
// Copyright (c) 2002 Lars Gullik Bjønnes <larsbj@lyx.org>
|
||||||
|
// Copyright 2003-2005 Peter Dimov
|
||||||
|
//
|
||||||
|
// 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)
|
||||||
|
//
|
||||||
|
|
||||||
|
#include <bits/atomicity.h>
|
||||||
|
|
||||||
|
namespace boost
|
||||||
|
{
|
||||||
|
|
||||||
|
namespace detail
|
||||||
|
{
|
||||||
|
|
||||||
|
#if defined(__GLIBCXX__) // g++ 3.4+
|
||||||
|
|
||||||
|
using __gnu_cxx::__atomic_add;
|
||||||
|
using __gnu_cxx::__exchange_and_add;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
class atomic_count
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit atomic_count(long v) : value_(v) {}
|
||||||
|
|
||||||
|
void operator++()
|
||||||
|
{
|
||||||
|
__atomic_add(&value_, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
long operator--()
|
||||||
|
{
|
||||||
|
return __exchange_and_add(&value_, -1) - 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
operator long() const
|
||||||
|
{
|
||||||
|
return __exchange_and_add(&value_, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
atomic_count(atomic_count const &);
|
||||||
|
atomic_count & operator=(atomic_count const &);
|
||||||
|
|
||||||
|
mutable _Atomic_word value_;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace detail
|
||||||
|
|
||||||
|
} // namespace boost
|
||||||
|
|
||||||
|
#endif // #ifndef BOOST_DETAIL_ATOMIC_COUNT_GCC_HPP_INCLUDED
|
84
library/include/boost/detail/atomic_count_gcc_x86.hpp
Normal file
84
library/include/boost/detail/atomic_count_gcc_x86.hpp
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
#ifndef BOOST_DETAIL_ATOMIC_COUNT_GCC_X86_HPP_INCLUDED
|
||||||
|
#define BOOST_DETAIL_ATOMIC_COUNT_GCC_X86_HPP_INCLUDED
|
||||||
|
|
||||||
|
//
|
||||||
|
// boost/detail/atomic_count_gcc_x86.hpp
|
||||||
|
//
|
||||||
|
// atomic_count for g++ on 486+/AMD64
|
||||||
|
//
|
||||||
|
// Copyright 2007 Peter Dimov
|
||||||
|
//
|
||||||
|
// 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)
|
||||||
|
//
|
||||||
|
|
||||||
|
namespace boost
|
||||||
|
{
|
||||||
|
|
||||||
|
namespace detail
|
||||||
|
{
|
||||||
|
|
||||||
|
class atomic_count
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit atomic_count( long v ) : value_( static_cast< int >( v ) ) {}
|
||||||
|
|
||||||
|
void operator++()
|
||||||
|
{
|
||||||
|
__asm__
|
||||||
|
(
|
||||||
|
"lock\n\t"
|
||||||
|
"incl %0":
|
||||||
|
"+m"( value_ ): // output (%0)
|
||||||
|
: // inputs
|
||||||
|
"cc" // clobbers
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
long operator--()
|
||||||
|
{
|
||||||
|
return atomic_exchange_and_add( &value_, -1 ) - 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
operator long() const
|
||||||
|
{
|
||||||
|
return atomic_exchange_and_add( &value_, 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
atomic_count(atomic_count const &);
|
||||||
|
atomic_count & operator=(atomic_count const &);
|
||||||
|
|
||||||
|
mutable int value_;
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
static int atomic_exchange_and_add( int * pw, int dv )
|
||||||
|
{
|
||||||
|
// int r = *pw;
|
||||||
|
// *pw += dv;
|
||||||
|
// return r;
|
||||||
|
|
||||||
|
int r;
|
||||||
|
|
||||||
|
__asm__ __volatile__
|
||||||
|
(
|
||||||
|
"lock\n\t"
|
||||||
|
"xadd %1, %0":
|
||||||
|
"+m"( *pw ), "=r"( r ): // outputs (%0, %1)
|
||||||
|
"1"( dv ): // inputs (%2 == %1)
|
||||||
|
"memory", "cc" // clobbers
|
||||||
|
);
|
||||||
|
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace detail
|
||||||
|
|
||||||
|
} // namespace boost
|
||||||
|
|
||||||
|
#endif // #ifndef BOOST_DETAIL_ATOMIC_COUNT_SYNC_HPP_INCLUDED
|
96
library/include/boost/detail/atomic_count_pthreads.hpp
Normal file
96
library/include/boost/detail/atomic_count_pthreads.hpp
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
#ifndef BOOST_DETAIL_ATOMIC_COUNT_PTHREADS_HPP_INCLUDED
|
||||||
|
#define BOOST_DETAIL_ATOMIC_COUNT_PTHREADS_HPP_INCLUDED
|
||||||
|
|
||||||
|
//
|
||||||
|
// boost/detail/atomic_count_pthreads.hpp
|
||||||
|
//
|
||||||
|
// Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
|
||||||
|
//
|
||||||
|
// 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)
|
||||||
|
//
|
||||||
|
|
||||||
|
#include <pthread.h>
|
||||||
|
|
||||||
|
//
|
||||||
|
// The generic pthread_mutex-based implementation sometimes leads to
|
||||||
|
// inefficiencies. Example: a class with two atomic_count members
|
||||||
|
// can get away with a single mutex.
|
||||||
|
//
|
||||||
|
// Users can detect this situation by checking BOOST_AC_USE_PTHREADS.
|
||||||
|
//
|
||||||
|
|
||||||
|
namespace boost
|
||||||
|
{
|
||||||
|
|
||||||
|
namespace detail
|
||||||
|
{
|
||||||
|
|
||||||
|
class atomic_count
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
|
||||||
|
class scoped_lock
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
scoped_lock(pthread_mutex_t & m): m_(m)
|
||||||
|
{
|
||||||
|
pthread_mutex_lock(&m_);
|
||||||
|
}
|
||||||
|
|
||||||
|
~scoped_lock()
|
||||||
|
{
|
||||||
|
pthread_mutex_unlock(&m_);
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
pthread_mutex_t & m_;
|
||||||
|
};
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit atomic_count(long v): value_(v)
|
||||||
|
{
|
||||||
|
pthread_mutex_init(&mutex_, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
~atomic_count()
|
||||||
|
{
|
||||||
|
pthread_mutex_destroy(&mutex_);
|
||||||
|
}
|
||||||
|
|
||||||
|
void operator++()
|
||||||
|
{
|
||||||
|
scoped_lock lock(mutex_);
|
||||||
|
++value_;
|
||||||
|
}
|
||||||
|
|
||||||
|
long operator--()
|
||||||
|
{
|
||||||
|
scoped_lock lock(mutex_);
|
||||||
|
return --value_;
|
||||||
|
}
|
||||||
|
|
||||||
|
operator long() const
|
||||||
|
{
|
||||||
|
scoped_lock lock(mutex_);
|
||||||
|
return value_;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
atomic_count(atomic_count const &);
|
||||||
|
atomic_count & operator=(atomic_count const &);
|
||||||
|
|
||||||
|
mutable pthread_mutex_t mutex_;
|
||||||
|
long value_;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace detail
|
||||||
|
|
||||||
|
} // namespace boost
|
||||||
|
|
||||||
|
#endif // #ifndef BOOST_DETAIL_ATOMIC_COUNT_PTHREADS_HPP_INCLUDED
|
59
library/include/boost/detail/atomic_count_solaris.hpp
Normal file
59
library/include/boost/detail/atomic_count_solaris.hpp
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
#ifndef BOOST_DETAIL_ATOMIC_COUNT_SOLARIS_HPP_INCLUDED
|
||||||
|
#define BOOST_DETAIL_ATOMIC_COUNT_SOLARIS_HPP_INCLUDED
|
||||||
|
|
||||||
|
//
|
||||||
|
// boost/detail/atomic_count_solaris.hpp
|
||||||
|
// based on: boost/detail/atomic_count_win32.hpp
|
||||||
|
//
|
||||||
|
// Copyright (c) 2001-2005 Peter Dimov
|
||||||
|
// Copyright (c) 2006 Michael van der Westhuizen
|
||||||
|
//
|
||||||
|
// 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)
|
||||||
|
//
|
||||||
|
|
||||||
|
#include <atomic.h>
|
||||||
|
|
||||||
|
namespace boost
|
||||||
|
{
|
||||||
|
|
||||||
|
namespace detail
|
||||||
|
{
|
||||||
|
|
||||||
|
class atomic_count
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit atomic_count( uint32_t v ): value_( v )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
long operator++()
|
||||||
|
{
|
||||||
|
return atomic_inc_32_nv( &value_ );
|
||||||
|
}
|
||||||
|
|
||||||
|
long operator--()
|
||||||
|
{
|
||||||
|
return atomic_dec_32_nv( &value_ );
|
||||||
|
}
|
||||||
|
|
||||||
|
operator uint32_t() const
|
||||||
|
{
|
||||||
|
return static_cast<uint32_t const volatile &>( value_ );
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
atomic_count( atomic_count const & );
|
||||||
|
atomic_count & operator=( atomic_count const & );
|
||||||
|
|
||||||
|
uint32_t value_;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace detail
|
||||||
|
|
||||||
|
} // namespace boost
|
||||||
|
|
||||||
|
#endif // #ifndef BOOST_DETAIL_ATOMIC_COUNT_SOLARIS_HPP_INCLUDED
|
61
library/include/boost/detail/atomic_count_sync.hpp
Normal file
61
library/include/boost/detail/atomic_count_sync.hpp
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
#ifndef BOOST_DETAIL_ATOMIC_COUNT_SYNC_HPP_INCLUDED
|
||||||
|
#define BOOST_DETAIL_ATOMIC_COUNT_SYNC_HPP_INCLUDED
|
||||||
|
|
||||||
|
//
|
||||||
|
// boost/detail/atomic_count_sync.hpp
|
||||||
|
//
|
||||||
|
// atomic_count for g++ 4.1+
|
||||||
|
//
|
||||||
|
// http://gcc.gnu.org/onlinedocs/gcc-4.1.1/gcc/Atomic-Builtins.html
|
||||||
|
//
|
||||||
|
// Copyright 2007 Peter Dimov
|
||||||
|
//
|
||||||
|
// 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( __ia64__ ) && defined( __INTEL_COMPILER )
|
||||||
|
# include <ia64intrin.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
namespace boost
|
||||||
|
{
|
||||||
|
|
||||||
|
namespace detail
|
||||||
|
{
|
||||||
|
|
||||||
|
class atomic_count
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit atomic_count( long v ) : value_( v ) {}
|
||||||
|
|
||||||
|
void operator++()
|
||||||
|
{
|
||||||
|
__sync_add_and_fetch( &value_, 1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
long operator--()
|
||||||
|
{
|
||||||
|
return __sync_add_and_fetch( &value_, -1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
operator long() const
|
||||||
|
{
|
||||||
|
return __sync_fetch_and_add( &value_, 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
atomic_count(atomic_count const &);
|
||||||
|
atomic_count & operator=(atomic_count const &);
|
||||||
|
|
||||||
|
mutable long value_;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace detail
|
||||||
|
|
||||||
|
} // namespace boost
|
||||||
|
|
||||||
|
#endif // #ifndef BOOST_DETAIL_ATOMIC_COUNT_SYNC_HPP_INCLUDED
|
63
library/include/boost/detail/atomic_count_win32.hpp
Normal file
63
library/include/boost/detail/atomic_count_win32.hpp
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
#ifndef BOOST_DETAIL_ATOMIC_COUNT_WIN32_HPP_INCLUDED
|
||||||
|
#define BOOST_DETAIL_ATOMIC_COUNT_WIN32_HPP_INCLUDED
|
||||||
|
|
||||||
|
// MS compatible compilers support #pragma once
|
||||||
|
|
||||||
|
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
|
||||||
|
# pragma once
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// boost/detail/atomic_count_win32.hpp
|
||||||
|
//
|
||||||
|
// Copyright (c) 2001-2005 Peter Dimov
|
||||||
|
//
|
||||||
|
// 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)
|
||||||
|
//
|
||||||
|
|
||||||
|
#include <boost/detail/interlocked.hpp>
|
||||||
|
|
||||||
|
namespace boost
|
||||||
|
{
|
||||||
|
|
||||||
|
namespace detail
|
||||||
|
{
|
||||||
|
|
||||||
|
class atomic_count
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit atomic_count( long v ): value_( v )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
long operator++()
|
||||||
|
{
|
||||||
|
return BOOST_INTERLOCKED_INCREMENT( &value_ );
|
||||||
|
}
|
||||||
|
|
||||||
|
long operator--()
|
||||||
|
{
|
||||||
|
return BOOST_INTERLOCKED_DECREMENT( &value_ );
|
||||||
|
}
|
||||||
|
|
||||||
|
operator long() const
|
||||||
|
{
|
||||||
|
return static_cast<long const volatile &>( value_ );
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
atomic_count( atomic_count const & );
|
||||||
|
atomic_count & operator=( atomic_count const & );
|
||||||
|
|
||||||
|
long value_;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace detail
|
||||||
|
|
||||||
|
} // namespace boost
|
||||||
|
|
||||||
|
#endif // #ifndef BOOST_DETAIL_ATOMIC_COUNT_WIN32_HPP_INCLUDED
|
59
library/include/boost/detail/bad_weak_ptr.hpp
Normal file
59
library/include/boost/detail/bad_weak_ptr.hpp
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
#ifndef BOOST_BAD_WEAK_PTR_HPP_INCLUDED
|
||||||
|
#define BOOST_BAD_WEAK_PTR_HPP_INCLUDED
|
||||||
|
|
||||||
|
// MS compatible compilers support #pragma once
|
||||||
|
|
||||||
|
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
|
||||||
|
# pragma once
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// detail/bad_weak_ptr.hpp
|
||||||
|
//
|
||||||
|
// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
|
||||||
|
//
|
||||||
|
// 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)
|
||||||
|
//
|
||||||
|
|
||||||
|
#include <exception>
|
||||||
|
|
||||||
|
#ifdef __BORLANDC__
|
||||||
|
# pragma warn -8026 // Functions with excep. spec. are not expanded inline
|
||||||
|
#endif
|
||||||
|
|
||||||
|
namespace boost
|
||||||
|
{
|
||||||
|
|
||||||
|
// The standard library that comes with Borland C++ 5.5.1, 5.6.4
|
||||||
|
// defines std::exception and its members as having C calling
|
||||||
|
// convention (-pc). When the definition of bad_weak_ptr
|
||||||
|
// is compiled with -ps, the compiler issues an error.
|
||||||
|
// Hence, the temporary #pragma option -pc below.
|
||||||
|
|
||||||
|
#if defined(__BORLANDC__) && __BORLANDC__ <= 0x564
|
||||||
|
# pragma option push -pc
|
||||||
|
#endif
|
||||||
|
|
||||||
|
class bad_weak_ptr: public std::exception
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
virtual char const * what() const throw()
|
||||||
|
{
|
||||||
|
return "tr1::bad_weak_ptr";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
#if defined(__BORLANDC__) && __BORLANDC__ <= 0x564
|
||||||
|
# pragma option pop
|
||||||
|
#endif
|
||||||
|
|
||||||
|
} // namespace boost
|
||||||
|
|
||||||
|
#ifdef __BORLANDC__
|
||||||
|
# pragma warn .8026 // Functions with excep. spec. are not expanded inline
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // #ifndef BOOST_BAD_WEAK_PTR_HPP_INCLUDED
|
216
library/include/boost/detail/binary_search.hpp
Normal file
216
library/include/boost/detail/binary_search.hpp
Normal file
@ -0,0 +1,216 @@
|
|||||||
|
// Copyright (c) 2000 David Abrahams.
|
||||||
|
// 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)
|
||||||
|
//
|
||||||
|
// Copyright (c) 1994
|
||||||
|
// Hewlett-Packard Company
|
||||||
|
//
|
||||||
|
// Permission to use, copy, modify, distribute and sell this software
|
||||||
|
// and its documentation for any purpose is hereby granted without fee,
|
||||||
|
// provided that the above copyright notice appear in all copies and
|
||||||
|
// that both that copyright notice and this permission notice appear
|
||||||
|
// in supporting documentation. Hewlett-Packard Company makes no
|
||||||
|
// representations about the suitability of this software for any
|
||||||
|
// purpose. It is provided "as is" without express or implied warranty.
|
||||||
|
//
|
||||||
|
// Copyright (c) 1996
|
||||||
|
// Silicon Graphics Computer Systems, Inc.
|
||||||
|
//
|
||||||
|
// Permission to use, copy, modify, distribute and sell this software
|
||||||
|
// and its documentation for any purpose is hereby granted without fee,
|
||||||
|
// provided that the above copyright notice appear in all copies and
|
||||||
|
// that both that copyright notice and this permission notice appear
|
||||||
|
// in supporting documentation. Silicon Graphics makes no
|
||||||
|
// representations about the suitability of this software for any
|
||||||
|
// purpose. It is provided "as is" without express or implied warranty.
|
||||||
|
//
|
||||||
|
#ifndef BINARY_SEARCH_DWA_122600_H_
|
||||||
|
# define BINARY_SEARCH_DWA_122600_H_
|
||||||
|
|
||||||
|
# include <boost/detail/iterator.hpp>
|
||||||
|
# include <utility>
|
||||||
|
|
||||||
|
namespace boost { namespace detail {
|
||||||
|
|
||||||
|
template <class ForwardIter, class Tp>
|
||||||
|
ForwardIter lower_bound(ForwardIter first, ForwardIter last,
|
||||||
|
const Tp& val)
|
||||||
|
{
|
||||||
|
typedef detail::iterator_traits<ForwardIter> traits;
|
||||||
|
|
||||||
|
typename traits::difference_type len = boost::detail::distance(first, last);
|
||||||
|
typename traits::difference_type half;
|
||||||
|
ForwardIter middle;
|
||||||
|
|
||||||
|
while (len > 0) {
|
||||||
|
half = len >> 1;
|
||||||
|
middle = first;
|
||||||
|
std::advance(middle, half);
|
||||||
|
if (*middle < val) {
|
||||||
|
first = middle;
|
||||||
|
++first;
|
||||||
|
len = len - half - 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
len = half;
|
||||||
|
}
|
||||||
|
return first;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class ForwardIter, class Tp, class Compare>
|
||||||
|
ForwardIter lower_bound(ForwardIter first, ForwardIter last,
|
||||||
|
const Tp& val, Compare comp)
|
||||||
|
{
|
||||||
|
typedef detail::iterator_traits<ForwardIter> traits;
|
||||||
|
|
||||||
|
typename traits::difference_type len = boost::detail::distance(first, last);
|
||||||
|
typename traits::difference_type half;
|
||||||
|
ForwardIter middle;
|
||||||
|
|
||||||
|
while (len > 0) {
|
||||||
|
half = len >> 1;
|
||||||
|
middle = first;
|
||||||
|
std::advance(middle, half);
|
||||||
|
if (comp(*middle, val)) {
|
||||||
|
first = middle;
|
||||||
|
++first;
|
||||||
|
len = len - half - 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
len = half;
|
||||||
|
}
|
||||||
|
return first;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class ForwardIter, class Tp>
|
||||||
|
ForwardIter upper_bound(ForwardIter first, ForwardIter last,
|
||||||
|
const Tp& val)
|
||||||
|
{
|
||||||
|
typedef detail::iterator_traits<ForwardIter> traits;
|
||||||
|
|
||||||
|
typename traits::difference_type len = boost::detail::distance(first, last);
|
||||||
|
typename traits::difference_type half;
|
||||||
|
ForwardIter middle;
|
||||||
|
|
||||||
|
while (len > 0) {
|
||||||
|
half = len >> 1;
|
||||||
|
middle = first;
|
||||||
|
std::advance(middle, half);
|
||||||
|
if (val < *middle)
|
||||||
|
len = half;
|
||||||
|
else {
|
||||||
|
first = middle;
|
||||||
|
++first;
|
||||||
|
len = len - half - 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return first;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class ForwardIter, class Tp, class Compare>
|
||||||
|
ForwardIter upper_bound(ForwardIter first, ForwardIter last,
|
||||||
|
const Tp& val, Compare comp)
|
||||||
|
{
|
||||||
|
typedef detail::iterator_traits<ForwardIter> traits;
|
||||||
|
|
||||||
|
typename traits::difference_type len = boost::detail::distance(first, last);
|
||||||
|
typename traits::difference_type half;
|
||||||
|
ForwardIter middle;
|
||||||
|
|
||||||
|
while (len > 0) {
|
||||||
|
half = len >> 1;
|
||||||
|
middle = first;
|
||||||
|
std::advance(middle, half);
|
||||||
|
if (comp(val, *middle))
|
||||||
|
len = half;
|
||||||
|
else {
|
||||||
|
first = middle;
|
||||||
|
++first;
|
||||||
|
len = len - half - 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return first;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class ForwardIter, class Tp>
|
||||||
|
std::pair<ForwardIter, ForwardIter>
|
||||||
|
equal_range(ForwardIter first, ForwardIter last, const Tp& val)
|
||||||
|
{
|
||||||
|
typedef detail::iterator_traits<ForwardIter> traits;
|
||||||
|
|
||||||
|
typename traits::difference_type len = boost::detail::distance(first, last);
|
||||||
|
typename traits::difference_type half;
|
||||||
|
ForwardIter middle, left, right;
|
||||||
|
|
||||||
|
while (len > 0) {
|
||||||
|
half = len >> 1;
|
||||||
|
middle = first;
|
||||||
|
std::advance(middle, half);
|
||||||
|
if (*middle < val) {
|
||||||
|
first = middle;
|
||||||
|
++first;
|
||||||
|
len = len - half - 1;
|
||||||
|
}
|
||||||
|
else if (val < *middle)
|
||||||
|
len = half;
|
||||||
|
else {
|
||||||
|
left = boost::detail::lower_bound(first, middle, val);
|
||||||
|
std::advance(first, len);
|
||||||
|
right = boost::detail::upper_bound(++middle, first, val);
|
||||||
|
return std::pair<ForwardIter, ForwardIter>(left, right);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return std::pair<ForwardIter, ForwardIter>(first, first);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class ForwardIter, class Tp, class Compare>
|
||||||
|
std::pair<ForwardIter, ForwardIter>
|
||||||
|
equal_range(ForwardIter first, ForwardIter last, const Tp& val,
|
||||||
|
Compare comp)
|
||||||
|
{
|
||||||
|
typedef detail::iterator_traits<ForwardIter> traits;
|
||||||
|
|
||||||
|
typename traits::difference_type len = boost::detail::distance(first, last);
|
||||||
|
typename traits::difference_type half;
|
||||||
|
ForwardIter middle, left, right;
|
||||||
|
|
||||||
|
while (len > 0) {
|
||||||
|
half = len >> 1;
|
||||||
|
middle = first;
|
||||||
|
std::advance(middle, half);
|
||||||
|
if (comp(*middle, val)) {
|
||||||
|
first = middle;
|
||||||
|
++first;
|
||||||
|
len = len - half - 1;
|
||||||
|
}
|
||||||
|
else if (comp(val, *middle))
|
||||||
|
len = half;
|
||||||
|
else {
|
||||||
|
left = boost::detail::lower_bound(first, middle, val, comp);
|
||||||
|
std::advance(first, len);
|
||||||
|
right = boost::detail::upper_bound(++middle, first, val, comp);
|
||||||
|
return std::pair<ForwardIter, ForwardIter>(left, right);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return std::pair<ForwardIter, ForwardIter>(first, first);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class ForwardIter, class Tp>
|
||||||
|
bool binary_search(ForwardIter first, ForwardIter last,
|
||||||
|
const Tp& val) {
|
||||||
|
ForwardIter i = boost::detail::lower_bound(first, last, val);
|
||||||
|
return i != last && !(val < *i);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class ForwardIter, class Tp, class Compare>
|
||||||
|
bool binary_search(ForwardIter first, ForwardIter last,
|
||||||
|
const Tp& val,
|
||||||
|
Compare comp) {
|
||||||
|
ForwardIter i = boost::detail::lower_bound(first, last, val, comp);
|
||||||
|
return i != last && !comp(val, *i);
|
||||||
|
}
|
||||||
|
|
||||||
|
}} // namespace boost::detail
|
||||||
|
|
||||||
|
#endif // BINARY_SEARCH_DWA_122600_H_
|
164
library/include/boost/detail/call_traits.hpp
Normal file
164
library/include/boost/detail/call_traits.hpp
Normal file
@ -0,0 +1,164 @@
|
|||||||
|
// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
|
||||||
|
// 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/utility for most recent version including documentation.
|
||||||
|
|
||||||
|
// call_traits: defines typedefs for function usage
|
||||||
|
// (see libs/utility/call_traits.htm)
|
||||||
|
|
||||||
|
/* Release notes:
|
||||||
|
23rd July 2000:
|
||||||
|
Fixed array specialization. (JM)
|
||||||
|
Added Borland specific fixes for reference types
|
||||||
|
(issue raised by Steve Cleary).
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef BOOST_DETAIL_CALL_TRAITS_HPP
|
||||||
|
#define BOOST_DETAIL_CALL_TRAITS_HPP
|
||||||
|
|
||||||
|
#ifndef BOOST_CONFIG_HPP
|
||||||
|
#include <boost/config.hpp>
|
||||||
|
#endif
|
||||||
|
#include <cstddef>
|
||||||
|
|
||||||
|
#include <boost/type_traits/is_arithmetic.hpp>
|
||||||
|
#include <boost/type_traits/is_pointer.hpp>
|
||||||
|
#include <boost/detail/workaround.hpp>
|
||||||
|
|
||||||
|
namespace boost{
|
||||||
|
|
||||||
|
namespace detail{
|
||||||
|
|
||||||
|
template <typename T, bool small_>
|
||||||
|
struct ct_imp2
|
||||||
|
{
|
||||||
|
typedef const T& param_type;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
struct ct_imp2<T, true>
|
||||||
|
{
|
||||||
|
typedef const T param_type;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename T, bool isp, bool b1>
|
||||||
|
struct ct_imp
|
||||||
|
{
|
||||||
|
typedef const T& param_type;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename T, bool isp>
|
||||||
|
struct ct_imp<T, isp, true>
|
||||||
|
{
|
||||||
|
typedef typename ct_imp2<T, sizeof(T) <= sizeof(void*)>::param_type param_type;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename T, bool b1>
|
||||||
|
struct ct_imp<T, true, b1>
|
||||||
|
{
|
||||||
|
typedef const T param_type;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
struct call_traits
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
typedef T value_type;
|
||||||
|
typedef T& reference;
|
||||||
|
typedef const T& const_reference;
|
||||||
|
//
|
||||||
|
// C++ Builder workaround: we should be able to define a compile time
|
||||||
|
// constant and pass that as a single template parameter to ct_imp<T,bool>,
|
||||||
|
// however compiler bugs prevent this - instead pass three bool's to
|
||||||
|
// ct_imp<T,bool,bool,bool> and add an extra partial specialisation
|
||||||
|
// of ct_imp to handle the logic. (JM)
|
||||||
|
typedef typename boost::detail::ct_imp<
|
||||||
|
T,
|
||||||
|
::boost::is_pointer<T>::value,
|
||||||
|
::boost::is_arithmetic<T>::value
|
||||||
|
>::param_type param_type;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
struct call_traits<T&>
|
||||||
|
{
|
||||||
|
typedef T& value_type;
|
||||||
|
typedef T& reference;
|
||||||
|
typedef const T& const_reference;
|
||||||
|
typedef T& param_type; // hh removed const
|
||||||
|
};
|
||||||
|
|
||||||
|
#if BOOST_WORKAROUND( __BORLANDC__, < 0x5A0 )
|
||||||
|
// these are illegal specialisations; cv-qualifies applied to
|
||||||
|
// references have no effect according to [8.3.2p1],
|
||||||
|
// C++ Builder requires them though as it treats cv-qualified
|
||||||
|
// references as distinct types...
|
||||||
|
template <typename T>
|
||||||
|
struct call_traits<T&const>
|
||||||
|
{
|
||||||
|
typedef T& value_type;
|
||||||
|
typedef T& reference;
|
||||||
|
typedef const T& const_reference;
|
||||||
|
typedef T& param_type; // hh removed const
|
||||||
|
};
|
||||||
|
template <typename T>
|
||||||
|
struct call_traits<T&volatile>
|
||||||
|
{
|
||||||
|
typedef T& value_type;
|
||||||
|
typedef T& reference;
|
||||||
|
typedef const T& const_reference;
|
||||||
|
typedef T& param_type; // hh removed const
|
||||||
|
};
|
||||||
|
template <typename T>
|
||||||
|
struct call_traits<T&const volatile>
|
||||||
|
{
|
||||||
|
typedef T& value_type;
|
||||||
|
typedef T& reference;
|
||||||
|
typedef const T& const_reference;
|
||||||
|
typedef T& param_type; // hh removed const
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
struct call_traits< T * >
|
||||||
|
{
|
||||||
|
typedef T * value_type;
|
||||||
|
typedef T * & reference;
|
||||||
|
typedef T * const & const_reference;
|
||||||
|
typedef T * const param_type; // hh removed const
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
#if !defined(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS)
|
||||||
|
template <typename T, std::size_t N>
|
||||||
|
struct call_traits<T [N]>
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
typedef T array_type[N];
|
||||||
|
public:
|
||||||
|
// degrades array to pointer:
|
||||||
|
typedef const T* value_type;
|
||||||
|
typedef array_type& reference;
|
||||||
|
typedef const array_type& const_reference;
|
||||||
|
typedef const T* const param_type;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename T, std::size_t N>
|
||||||
|
struct call_traits<const T [N]>
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
typedef const T array_type[N];
|
||||||
|
public:
|
||||||
|
// degrades array to pointer:
|
||||||
|
typedef const T* value_type;
|
||||||
|
typedef array_type& reference;
|
||||||
|
typedef const array_type& const_reference;
|
||||||
|
typedef const T* const param_type;
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // BOOST_DETAIL_CALL_TRAITS_HPP
|
146
library/include/boost/detail/catch_exceptions.hpp
Normal file
146
library/include/boost/detail/catch_exceptions.hpp
Normal file
@ -0,0 +1,146 @@
|
|||||||
|
// boost/catch_exceptions.hpp -----------------------------------------------//
|
||||||
|
|
||||||
|
// Copyright Beman Dawes 1995-2001. 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)
|
||||||
|
|
||||||
|
// See http://www.boost.org/libs/test for documentation.
|
||||||
|
|
||||||
|
// Revision History
|
||||||
|
// 13 Jun 01 report_exception() made inline. (John Maddock, Jesse Jones)
|
||||||
|
// 26 Feb 01 Numerous changes suggested during formal review. (Beman)
|
||||||
|
// 25 Jan 01 catch_exceptions.hpp code factored out of cpp_main.cpp.
|
||||||
|
// 22 Jan 01 Remove test_tools dependencies to reduce coupling.
|
||||||
|
// 5 Nov 00 Initial boost version (Beman Dawes)
|
||||||
|
|
||||||
|
#ifndef BOOST_CATCH_EXCEPTIONS_HPP
|
||||||
|
#define BOOST_CATCH_EXCEPTIONS_HPP
|
||||||
|
|
||||||
|
// header dependencies are deliberately restricted to the standard library
|
||||||
|
// to reduce coupling to other boost libraries.
|
||||||
|
#include <string> // for string
|
||||||
|
#include <new> // for bad_alloc
|
||||||
|
#include <typeinfo> // for bad_cast, bad_typeid
|
||||||
|
#include <exception> // for exception, bad_exception
|
||||||
|
#include <stdexcept> // for std exception hierarchy
|
||||||
|
#include <boost/cstdlib.hpp> // for exit codes
|
||||||
|
# if __GNUC__ != 2 || __GNUC_MINOR__ > 96
|
||||||
|
# include <ostream> // for ostream
|
||||||
|
# else
|
||||||
|
# include <iostream> // workaround GNU missing ostream header
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if defined(__BORLANDC__) && (__BORLANDC__ <= 0x0551)
|
||||||
|
# define BOOST_BUILT_IN_EXCEPTIONS_MISSING_WHAT
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#if defined(MPW_CPLUS) && (MPW_CPLUS <= 0x890)
|
||||||
|
# define BOOST_BUILT_IN_EXCEPTIONS_MISSING_WHAT
|
||||||
|
namespace std { class bad_typeid { }; }
|
||||||
|
# endif
|
||||||
|
|
||||||
|
namespace boost
|
||||||
|
{
|
||||||
|
|
||||||
|
namespace detail
|
||||||
|
{
|
||||||
|
// A separate reporting function was requested during formal review.
|
||||||
|
inline void report_exception( std::ostream & os,
|
||||||
|
const char * name, const char * info )
|
||||||
|
{ os << "\n** uncaught exception: " << name << " " << info << std::endl; }
|
||||||
|
}
|
||||||
|
|
||||||
|
// catch_exceptions ------------------------------------------------------//
|
||||||
|
|
||||||
|
template< class Generator > // Generator is function object returning int
|
||||||
|
int catch_exceptions( Generator function_object,
|
||||||
|
std::ostream & out, std::ostream & err )
|
||||||
|
{
|
||||||
|
int result = 0; // quiet compiler warnings
|
||||||
|
bool exception_thrown = true; // avoid setting result for each excptn type
|
||||||
|
|
||||||
|
#ifndef BOOST_NO_EXCEPTIONS
|
||||||
|
try
|
||||||
|
{
|
||||||
|
#endif
|
||||||
|
result = function_object();
|
||||||
|
exception_thrown = false;
|
||||||
|
#ifndef BOOST_NO_EXCEPTIONS
|
||||||
|
}
|
||||||
|
|
||||||
|
// As a result of hard experience with strangely interleaved output
|
||||||
|
// under some compilers, there is a lot of use of endl in the code below
|
||||||
|
// where a simple '\n' might appear to do.
|
||||||
|
|
||||||
|
// The rules for catch & arguments are a bit different from function
|
||||||
|
// arguments (ISO 15.3 paragraphs 18 & 19). Apparently const isn't
|
||||||
|
// required, but it doesn't hurt and some programmers ask for it.
|
||||||
|
|
||||||
|
catch ( const char * ex )
|
||||||
|
{ detail::report_exception( out, "", ex ); }
|
||||||
|
catch ( const std::string & ex )
|
||||||
|
{ detail::report_exception( out, "", ex.c_str() ); }
|
||||||
|
|
||||||
|
// std:: exceptions
|
||||||
|
catch ( const std::bad_alloc & ex )
|
||||||
|
{ detail::report_exception( out, "std::bad_alloc:", ex.what() ); }
|
||||||
|
|
||||||
|
# ifndef BOOST_BUILT_IN_EXCEPTIONS_MISSING_WHAT
|
||||||
|
catch ( const std::bad_cast & ex )
|
||||||
|
{ detail::report_exception( out, "std::bad_cast:", ex.what() ); }
|
||||||
|
catch ( const std::bad_typeid & ex )
|
||||||
|
{ detail::report_exception( out, "std::bad_typeid:", ex.what() ); }
|
||||||
|
# else
|
||||||
|
catch ( const std::bad_cast & )
|
||||||
|
{ detail::report_exception( out, "std::bad_cast", "" ); }
|
||||||
|
catch ( const std::bad_typeid & )
|
||||||
|
{ detail::report_exception( out, "std::bad_typeid", "" ); }
|
||||||
|
# endif
|
||||||
|
|
||||||
|
catch ( const std::bad_exception & ex )
|
||||||
|
{ detail::report_exception( out, "std::bad_exception:", ex.what() ); }
|
||||||
|
catch ( const std::domain_error & ex )
|
||||||
|
{ detail::report_exception( out, "std::domain_error:", ex.what() ); }
|
||||||
|
catch ( const std::invalid_argument & ex )
|
||||||
|
{ detail::report_exception( out, "std::invalid_argument:", ex.what() ); }
|
||||||
|
catch ( const std::length_error & ex )
|
||||||
|
{ detail::report_exception( out, "std::length_error:", ex.what() ); }
|
||||||
|
catch ( const std::out_of_range & ex )
|
||||||
|
{ detail::report_exception( out, "std::out_of_range:", ex.what() ); }
|
||||||
|
catch ( const std::range_error & ex )
|
||||||
|
{ detail::report_exception( out, "std::range_error:", ex.what() ); }
|
||||||
|
catch ( const std::overflow_error & ex )
|
||||||
|
{ detail::report_exception( out, "std::overflow_error:", ex.what() ); }
|
||||||
|
catch ( const std::underflow_error & ex )
|
||||||
|
{ detail::report_exception( out, "std::underflow_error:", ex.what() ); }
|
||||||
|
catch ( const std::logic_error & ex )
|
||||||
|
{ detail::report_exception( out, "std::logic_error:", ex.what() ); }
|
||||||
|
catch ( const std::runtime_error & ex )
|
||||||
|
{ detail::report_exception( out, "std::runtime_error:", ex.what() ); }
|
||||||
|
catch ( const std::exception & ex )
|
||||||
|
{ detail::report_exception( out, "std::exception:", ex.what() ); }
|
||||||
|
|
||||||
|
catch ( ... )
|
||||||
|
{ detail::report_exception( out, "unknown exception", "" ); }
|
||||||
|
#endif // BOOST_NO_EXCEPTIONS
|
||||||
|
|
||||||
|
if ( exception_thrown ) result = boost::exit_exception_failure;
|
||||||
|
|
||||||
|
if ( result != 0 && result != exit_success )
|
||||||
|
{
|
||||||
|
out << std::endl << "**** returning with error code "
|
||||||
|
<< result << std::endl;
|
||||||
|
err
|
||||||
|
<< "********** errors detected; see stdout for details ***********"
|
||||||
|
<< std::endl;
|
||||||
|
}
|
||||||
|
#if !defined(BOOST_NO_CPP_MAIN_SUCCESS_MESSAGE)
|
||||||
|
else { out << std::flush << "no errors detected" << std::endl; }
|
||||||
|
#endif
|
||||||
|
return result;
|
||||||
|
} // catch_exceptions
|
||||||
|
|
||||||
|
} // boost
|
||||||
|
|
||||||
|
#endif // BOOST_CATCH_EXCEPTIONS_HPP
|
||||||
|
|
443
library/include/boost/detail/compressed_pair.hpp
Normal file
443
library/include/boost/detail/compressed_pair.hpp
Normal file
@ -0,0 +1,443 @@
|
|||||||
|
// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
|
||||||
|
// 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/utility for most recent version including documentation.
|
||||||
|
|
||||||
|
// compressed_pair: pair that "compresses" empty members
|
||||||
|
// (see libs/utility/compressed_pair.htm)
|
||||||
|
//
|
||||||
|
// JM changes 25 Jan 2004:
|
||||||
|
// For the case where T1 == T2 and both are empty, then first() and second()
|
||||||
|
// should return different objects.
|
||||||
|
// JM changes 25 Jan 2000:
|
||||||
|
// Removed default arguments from compressed_pair_switch to get
|
||||||
|
// C++ Builder 4 to accept them
|
||||||
|
// rewriten swap to get gcc and C++ builder to compile.
|
||||||
|
// added partial specialisations for case T1 == T2 to avoid duplicate constructor defs.
|
||||||
|
|
||||||
|
#ifndef BOOST_DETAIL_COMPRESSED_PAIR_HPP
|
||||||
|
#define BOOST_DETAIL_COMPRESSED_PAIR_HPP
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
|
#include <boost/type_traits/remove_cv.hpp>
|
||||||
|
#include <boost/type_traits/is_empty.hpp>
|
||||||
|
#include <boost/type_traits/is_same.hpp>
|
||||||
|
#include <boost/call_traits.hpp>
|
||||||
|
|
||||||
|
#ifdef BOOST_MSVC
|
||||||
|
# pragma warning(push)
|
||||||
|
# pragma warning(disable:4512)
|
||||||
|
#endif
|
||||||
|
namespace boost
|
||||||
|
{
|
||||||
|
|
||||||
|
template <class T1, class T2>
|
||||||
|
class compressed_pair;
|
||||||
|
|
||||||
|
|
||||||
|
// compressed_pair
|
||||||
|
|
||||||
|
namespace details
|
||||||
|
{
|
||||||
|
// JM altered 26 Jan 2000:
|
||||||
|
template <class T1, class T2, bool IsSame, bool FirstEmpty, bool SecondEmpty>
|
||||||
|
struct compressed_pair_switch;
|
||||||
|
|
||||||
|
template <class T1, class T2>
|
||||||
|
struct compressed_pair_switch<T1, T2, false, false, false>
|
||||||
|
{static const int value = 0;};
|
||||||
|
|
||||||
|
template <class T1, class T2>
|
||||||
|
struct compressed_pair_switch<T1, T2, false, true, true>
|
||||||
|
{static const int value = 3;};
|
||||||
|
|
||||||
|
template <class T1, class T2>
|
||||||
|
struct compressed_pair_switch<T1, T2, false, true, false>
|
||||||
|
{static const int value = 1;};
|
||||||
|
|
||||||
|
template <class T1, class T2>
|
||||||
|
struct compressed_pair_switch<T1, T2, false, false, true>
|
||||||
|
{static const int value = 2;};
|
||||||
|
|
||||||
|
template <class T1, class T2>
|
||||||
|
struct compressed_pair_switch<T1, T2, true, true, true>
|
||||||
|
{static const int value = 4;};
|
||||||
|
|
||||||
|
template <class T1, class T2>
|
||||||
|
struct compressed_pair_switch<T1, T2, true, false, false>
|
||||||
|
{static const int value = 5;};
|
||||||
|
|
||||||
|
template <class T1, class T2, int Version> class compressed_pair_imp;
|
||||||
|
|
||||||
|
#ifdef __GNUC__
|
||||||
|
// workaround for GCC (JM):
|
||||||
|
using std::swap;
|
||||||
|
#endif
|
||||||
|
//
|
||||||
|
// can't call unqualified swap from within classname::swap
|
||||||
|
// as Koenig lookup rules will find only the classname::swap
|
||||||
|
// member function not the global declaration, so use cp_swap
|
||||||
|
// as a forwarding function (JM):
|
||||||
|
template <typename T>
|
||||||
|
inline void cp_swap(T& t1, T& t2)
|
||||||
|
{
|
||||||
|
#ifndef __GNUC__
|
||||||
|
using std::swap;
|
||||||
|
#endif
|
||||||
|
swap(t1, t2);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 0 derive from neither
|
||||||
|
|
||||||
|
template <class T1, class T2>
|
||||||
|
class compressed_pair_imp<T1, T2, 0>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
typedef T1 first_type;
|
||||||
|
typedef T2 second_type;
|
||||||
|
typedef typename call_traits<first_type>::param_type first_param_type;
|
||||||
|
typedef typename call_traits<second_type>::param_type second_param_type;
|
||||||
|
typedef typename call_traits<first_type>::reference first_reference;
|
||||||
|
typedef typename call_traits<second_type>::reference second_reference;
|
||||||
|
typedef typename call_traits<first_type>::const_reference first_const_reference;
|
||||||
|
typedef typename call_traits<second_type>::const_reference second_const_reference;
|
||||||
|
|
||||||
|
compressed_pair_imp() {}
|
||||||
|
|
||||||
|
compressed_pair_imp(first_param_type x, second_param_type y)
|
||||||
|
: first_(x), second_(y) {}
|
||||||
|
|
||||||
|
compressed_pair_imp(first_param_type x)
|
||||||
|
: first_(x) {}
|
||||||
|
|
||||||
|
compressed_pair_imp(second_param_type y)
|
||||||
|
: second_(y) {}
|
||||||
|
|
||||||
|
first_reference first() {return first_;}
|
||||||
|
first_const_reference first() const {return first_;}
|
||||||
|
|
||||||
|
second_reference second() {return second_;}
|
||||||
|
second_const_reference second() const {return second_;}
|
||||||
|
|
||||||
|
void swap(::boost::compressed_pair<T1, T2>& y)
|
||||||
|
{
|
||||||
|
cp_swap(first_, y.first());
|
||||||
|
cp_swap(second_, y.second());
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
first_type first_;
|
||||||
|
second_type second_;
|
||||||
|
};
|
||||||
|
|
||||||
|
// 1 derive from T1
|
||||||
|
|
||||||
|
template <class T1, class T2>
|
||||||
|
class compressed_pair_imp<T1, T2, 1>
|
||||||
|
: protected ::boost::remove_cv<T1>::type
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
typedef T1 first_type;
|
||||||
|
typedef T2 second_type;
|
||||||
|
typedef typename call_traits<first_type>::param_type first_param_type;
|
||||||
|
typedef typename call_traits<second_type>::param_type second_param_type;
|
||||||
|
typedef typename call_traits<first_type>::reference first_reference;
|
||||||
|
typedef typename call_traits<second_type>::reference second_reference;
|
||||||
|
typedef typename call_traits<first_type>::const_reference first_const_reference;
|
||||||
|
typedef typename call_traits<second_type>::const_reference second_const_reference;
|
||||||
|
|
||||||
|
compressed_pair_imp() {}
|
||||||
|
|
||||||
|
compressed_pair_imp(first_param_type x, second_param_type y)
|
||||||
|
: first_type(x), second_(y) {}
|
||||||
|
|
||||||
|
compressed_pair_imp(first_param_type x)
|
||||||
|
: first_type(x) {}
|
||||||
|
|
||||||
|
compressed_pair_imp(second_param_type y)
|
||||||
|
: second_(y) {}
|
||||||
|
|
||||||
|
first_reference first() {return *this;}
|
||||||
|
first_const_reference first() const {return *this;}
|
||||||
|
|
||||||
|
second_reference second() {return second_;}
|
||||||
|
second_const_reference second() const {return second_;}
|
||||||
|
|
||||||
|
void swap(::boost::compressed_pair<T1,T2>& y)
|
||||||
|
{
|
||||||
|
// no need to swap empty base class:
|
||||||
|
cp_swap(second_, y.second());
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
second_type second_;
|
||||||
|
};
|
||||||
|
|
||||||
|
// 2 derive from T2
|
||||||
|
|
||||||
|
template <class T1, class T2>
|
||||||
|
class compressed_pair_imp<T1, T2, 2>
|
||||||
|
: protected ::boost::remove_cv<T2>::type
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
typedef T1 first_type;
|
||||||
|
typedef T2 second_type;
|
||||||
|
typedef typename call_traits<first_type>::param_type first_param_type;
|
||||||
|
typedef typename call_traits<second_type>::param_type second_param_type;
|
||||||
|
typedef typename call_traits<first_type>::reference first_reference;
|
||||||
|
typedef typename call_traits<second_type>::reference second_reference;
|
||||||
|
typedef typename call_traits<first_type>::const_reference first_const_reference;
|
||||||
|
typedef typename call_traits<second_type>::const_reference second_const_reference;
|
||||||
|
|
||||||
|
compressed_pair_imp() {}
|
||||||
|
|
||||||
|
compressed_pair_imp(first_param_type x, second_param_type y)
|
||||||
|
: second_type(y), first_(x) {}
|
||||||
|
|
||||||
|
compressed_pair_imp(first_param_type x)
|
||||||
|
: first_(x) {}
|
||||||
|
|
||||||
|
compressed_pair_imp(second_param_type y)
|
||||||
|
: second_type(y) {}
|
||||||
|
|
||||||
|
first_reference first() {return first_;}
|
||||||
|
first_const_reference first() const {return first_;}
|
||||||
|
|
||||||
|
second_reference second() {return *this;}
|
||||||
|
second_const_reference second() const {return *this;}
|
||||||
|
|
||||||
|
void swap(::boost::compressed_pair<T1,T2>& y)
|
||||||
|
{
|
||||||
|
// no need to swap empty base class:
|
||||||
|
cp_swap(first_, y.first());
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
first_type first_;
|
||||||
|
};
|
||||||
|
|
||||||
|
// 3 derive from T1 and T2
|
||||||
|
|
||||||
|
template <class T1, class T2>
|
||||||
|
class compressed_pair_imp<T1, T2, 3>
|
||||||
|
: protected ::boost::remove_cv<T1>::type,
|
||||||
|
protected ::boost::remove_cv<T2>::type
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
typedef T1 first_type;
|
||||||
|
typedef T2 second_type;
|
||||||
|
typedef typename call_traits<first_type>::param_type first_param_type;
|
||||||
|
typedef typename call_traits<second_type>::param_type second_param_type;
|
||||||
|
typedef typename call_traits<first_type>::reference first_reference;
|
||||||
|
typedef typename call_traits<second_type>::reference second_reference;
|
||||||
|
typedef typename call_traits<first_type>::const_reference first_const_reference;
|
||||||
|
typedef typename call_traits<second_type>::const_reference second_const_reference;
|
||||||
|
|
||||||
|
compressed_pair_imp() {}
|
||||||
|
|
||||||
|
compressed_pair_imp(first_param_type x, second_param_type y)
|
||||||
|
: first_type(x), second_type(y) {}
|
||||||
|
|
||||||
|
compressed_pair_imp(first_param_type x)
|
||||||
|
: first_type(x) {}
|
||||||
|
|
||||||
|
compressed_pair_imp(second_param_type y)
|
||||||
|
: second_type(y) {}
|
||||||
|
|
||||||
|
first_reference first() {return *this;}
|
||||||
|
first_const_reference first() const {return *this;}
|
||||||
|
|
||||||
|
second_reference second() {return *this;}
|
||||||
|
second_const_reference second() const {return *this;}
|
||||||
|
//
|
||||||
|
// no need to swap empty bases:
|
||||||
|
void swap(::boost::compressed_pair<T1,T2>&) {}
|
||||||
|
};
|
||||||
|
|
||||||
|
// JM
|
||||||
|
// 4 T1 == T2, T1 and T2 both empty
|
||||||
|
// Originally this did not store an instance of T2 at all
|
||||||
|
// but that led to problems beause it meant &x.first() == &x.second()
|
||||||
|
// which is not true for any other kind of pair, so now we store an instance
|
||||||
|
// of T2 just in case the user is relying on first() and second() returning
|
||||||
|
// different objects (albeit both empty).
|
||||||
|
template <class T1, class T2>
|
||||||
|
class compressed_pair_imp<T1, T2, 4>
|
||||||
|
: protected ::boost::remove_cv<T1>::type
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
typedef T1 first_type;
|
||||||
|
typedef T2 second_type;
|
||||||
|
typedef typename call_traits<first_type>::param_type first_param_type;
|
||||||
|
typedef typename call_traits<second_type>::param_type second_param_type;
|
||||||
|
typedef typename call_traits<first_type>::reference first_reference;
|
||||||
|
typedef typename call_traits<second_type>::reference second_reference;
|
||||||
|
typedef typename call_traits<first_type>::const_reference first_const_reference;
|
||||||
|
typedef typename call_traits<second_type>::const_reference second_const_reference;
|
||||||
|
|
||||||
|
compressed_pair_imp() {}
|
||||||
|
|
||||||
|
compressed_pair_imp(first_param_type x, second_param_type y)
|
||||||
|
: first_type(x), m_second(y) {}
|
||||||
|
|
||||||
|
compressed_pair_imp(first_param_type x)
|
||||||
|
: first_type(x), m_second(x) {}
|
||||||
|
|
||||||
|
first_reference first() {return *this;}
|
||||||
|
first_const_reference first() const {return *this;}
|
||||||
|
|
||||||
|
second_reference second() {return m_second;}
|
||||||
|
second_const_reference second() const {return m_second;}
|
||||||
|
|
||||||
|
void swap(::boost::compressed_pair<T1,T2>&) {}
|
||||||
|
private:
|
||||||
|
T2 m_second;
|
||||||
|
};
|
||||||
|
|
||||||
|
// 5 T1 == T2 and are not empty: //JM
|
||||||
|
|
||||||
|
template <class T1, class T2>
|
||||||
|
class compressed_pair_imp<T1, T2, 5>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
typedef T1 first_type;
|
||||||
|
typedef T2 second_type;
|
||||||
|
typedef typename call_traits<first_type>::param_type first_param_type;
|
||||||
|
typedef typename call_traits<second_type>::param_type second_param_type;
|
||||||
|
typedef typename call_traits<first_type>::reference first_reference;
|
||||||
|
typedef typename call_traits<second_type>::reference second_reference;
|
||||||
|
typedef typename call_traits<first_type>::const_reference first_const_reference;
|
||||||
|
typedef typename call_traits<second_type>::const_reference second_const_reference;
|
||||||
|
|
||||||
|
compressed_pair_imp() {}
|
||||||
|
|
||||||
|
compressed_pair_imp(first_param_type x, second_param_type y)
|
||||||
|
: first_(x), second_(y) {}
|
||||||
|
|
||||||
|
compressed_pair_imp(first_param_type x)
|
||||||
|
: first_(x), second_(x) {}
|
||||||
|
|
||||||
|
first_reference first() {return first_;}
|
||||||
|
first_const_reference first() const {return first_;}
|
||||||
|
|
||||||
|
second_reference second() {return second_;}
|
||||||
|
second_const_reference second() const {return second_;}
|
||||||
|
|
||||||
|
void swap(::boost::compressed_pair<T1, T2>& y)
|
||||||
|
{
|
||||||
|
cp_swap(first_, y.first());
|
||||||
|
cp_swap(second_, y.second());
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
first_type first_;
|
||||||
|
second_type second_;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // details
|
||||||
|
|
||||||
|
template <class T1, class T2>
|
||||||
|
class compressed_pair
|
||||||
|
: private ::boost::details::compressed_pair_imp<T1, T2,
|
||||||
|
::boost::details::compressed_pair_switch<
|
||||||
|
T1,
|
||||||
|
T2,
|
||||||
|
::boost::is_same<typename remove_cv<T1>::type, typename remove_cv<T2>::type>::value,
|
||||||
|
::boost::is_empty<T1>::value,
|
||||||
|
::boost::is_empty<T2>::value>::value>
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
typedef details::compressed_pair_imp<T1, T2,
|
||||||
|
::boost::details::compressed_pair_switch<
|
||||||
|
T1,
|
||||||
|
T2,
|
||||||
|
::boost::is_same<typename remove_cv<T1>::type, typename remove_cv<T2>::type>::value,
|
||||||
|
::boost::is_empty<T1>::value,
|
||||||
|
::boost::is_empty<T2>::value>::value> base;
|
||||||
|
public:
|
||||||
|
typedef T1 first_type;
|
||||||
|
typedef T2 second_type;
|
||||||
|
typedef typename call_traits<first_type>::param_type first_param_type;
|
||||||
|
typedef typename call_traits<second_type>::param_type second_param_type;
|
||||||
|
typedef typename call_traits<first_type>::reference first_reference;
|
||||||
|
typedef typename call_traits<second_type>::reference second_reference;
|
||||||
|
typedef typename call_traits<first_type>::const_reference first_const_reference;
|
||||||
|
typedef typename call_traits<second_type>::const_reference second_const_reference;
|
||||||
|
|
||||||
|
compressed_pair() : base() {}
|
||||||
|
compressed_pair(first_param_type x, second_param_type y) : base(x, y) {}
|
||||||
|
explicit compressed_pair(first_param_type x) : base(x) {}
|
||||||
|
explicit compressed_pair(second_param_type y) : base(y) {}
|
||||||
|
|
||||||
|
first_reference first() {return base::first();}
|
||||||
|
first_const_reference first() const {return base::first();}
|
||||||
|
|
||||||
|
second_reference second() {return base::second();}
|
||||||
|
second_const_reference second() const {return base::second();}
|
||||||
|
|
||||||
|
void swap(compressed_pair& y) { base::swap(y); }
|
||||||
|
};
|
||||||
|
|
||||||
|
// JM
|
||||||
|
// Partial specialisation for case where T1 == T2:
|
||||||
|
//
|
||||||
|
template <class T>
|
||||||
|
class compressed_pair<T, T>
|
||||||
|
: private details::compressed_pair_imp<T, T,
|
||||||
|
::boost::details::compressed_pair_switch<
|
||||||
|
T,
|
||||||
|
T,
|
||||||
|
::boost::is_same<typename remove_cv<T>::type, typename remove_cv<T>::type>::value,
|
||||||
|
::boost::is_empty<T>::value,
|
||||||
|
::boost::is_empty<T>::value>::value>
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
typedef details::compressed_pair_imp<T, T,
|
||||||
|
::boost::details::compressed_pair_switch<
|
||||||
|
T,
|
||||||
|
T,
|
||||||
|
::boost::is_same<typename remove_cv<T>::type, typename remove_cv<T>::type>::value,
|
||||||
|
::boost::is_empty<T>::value,
|
||||||
|
::boost::is_empty<T>::value>::value> base;
|
||||||
|
public:
|
||||||
|
typedef T first_type;
|
||||||
|
typedef T second_type;
|
||||||
|
typedef typename call_traits<first_type>::param_type first_param_type;
|
||||||
|
typedef typename call_traits<second_type>::param_type second_param_type;
|
||||||
|
typedef typename call_traits<first_type>::reference first_reference;
|
||||||
|
typedef typename call_traits<second_type>::reference second_reference;
|
||||||
|
typedef typename call_traits<first_type>::const_reference first_const_reference;
|
||||||
|
typedef typename call_traits<second_type>::const_reference second_const_reference;
|
||||||
|
|
||||||
|
compressed_pair() : base() {}
|
||||||
|
compressed_pair(first_param_type x, second_param_type y) : base(x, y) {}
|
||||||
|
#if !(defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x530))
|
||||||
|
explicit
|
||||||
|
#endif
|
||||||
|
compressed_pair(first_param_type x) : base(x) {}
|
||||||
|
|
||||||
|
first_reference first() {return base::first();}
|
||||||
|
first_const_reference first() const {return base::first();}
|
||||||
|
|
||||||
|
second_reference second() {return base::second();}
|
||||||
|
second_const_reference second() const {return base::second();}
|
||||||
|
|
||||||
|
void swap(::boost::compressed_pair<T,T>& y) { base::swap(y); }
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class T1, class T2>
|
||||||
|
inline
|
||||||
|
void
|
||||||
|
swap(compressed_pair<T1, T2>& x, compressed_pair<T1, T2>& y)
|
||||||
|
{
|
||||||
|
x.swap(y);
|
||||||
|
}
|
||||||
|
|
||||||
|
} // boost
|
||||||
|
|
||||||
|
#ifdef BOOST_MSVC
|
||||||
|
# pragma warning(pop)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // BOOST_DETAIL_COMPRESSED_PAIR_HPP
|
||||||
|
|
99
library/include/boost/detail/container_fwd.hpp
Normal file
99
library/include/boost/detail/container_fwd.hpp
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
|
||||||
|
// Copyright 2005-2008 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)
|
||||||
|
|
||||||
|
#if !defined(BOOST_DETAIL_CONTAINER_FWD_HPP)
|
||||||
|
#define BOOST_DETAIL_CONTAINER_FWD_HPP
|
||||||
|
|
||||||
|
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
|
||||||
|
# pragma once
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <boost/config.hpp>
|
||||||
|
#include <boost/detail/workaround.hpp>
|
||||||
|
|
||||||
|
#if BOOST_WORKAROUND(__GNUC__, < 3) && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
|
||||||
|
#define BOOST_HASH_CHAR_TRAITS string_char_traits
|
||||||
|
#else
|
||||||
|
#define BOOST_HASH_CHAR_TRAITS char_traits
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (defined(__GLIBCXX__) && defined(_GLIBCXX_DEBUG)) \
|
||||||
|
|| BOOST_WORKAROUND(__BORLANDC__, > 0x551) \
|
||||||
|
|| BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x842)) \
|
||||||
|
|| (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION))
|
||||||
|
|
||||||
|
#include <deque>
|
||||||
|
#include <list>
|
||||||
|
#include <vector>
|
||||||
|
#include <map>
|
||||||
|
#include <set>
|
||||||
|
#include <bitset>
|
||||||
|
#include <string>
|
||||||
|
#include <complex>
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#include <cstddef>
|
||||||
|
|
||||||
|
#if !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION) && \
|
||||||
|
defined(__STL_CONFIG_H)
|
||||||
|
|
||||||
|
#define BOOST_CONTAINER_FWD_BAD_BITSET
|
||||||
|
|
||||||
|
#if !defined(__STL_NON_TYPE_TMPL_PARAM_BUG)
|
||||||
|
#define BOOST_CONTAINER_FWD_BAD_DEQUE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(BOOST_CONTAINER_FWD_BAD_DEQUE)
|
||||||
|
#include <deque>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(BOOST_CONTAINER_FWD_BAD_BITSET)
|
||||||
|
#include <bitset>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(BOOST_MSVC)
|
||||||
|
#pragma warning(push)
|
||||||
|
#pragma warning(disable:4099) // struct/class mismatch in fwd declarations
|
||||||
|
#endif
|
||||||
|
|
||||||
|
namespace std
|
||||||
|
{
|
||||||
|
template <class T> class allocator;
|
||||||
|
template <class charT, class traits, class Allocator> class basic_string;
|
||||||
|
template <class charT> struct BOOST_HASH_CHAR_TRAITS;
|
||||||
|
template <class T> class complex;
|
||||||
|
}
|
||||||
|
|
||||||
|
// gcc 3.4 and greater
|
||||||
|
namespace std
|
||||||
|
{
|
||||||
|
#if !defined(BOOST_CONTAINER_FWD_BAD_DEQUE)
|
||||||
|
template <class T, class Allocator> class deque;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
template <class T, class Allocator> class list;
|
||||||
|
template <class T, class Allocator> class vector;
|
||||||
|
template <class Key, class T, class Compare, class Allocator> class map;
|
||||||
|
template <class Key, class T, class Compare, class Allocator>
|
||||||
|
class multimap;
|
||||||
|
template <class Key, class Compare, class Allocator> class set;
|
||||||
|
template <class Key, class Compare, class Allocator> class multiset;
|
||||||
|
|
||||||
|
#if !defined(BOOST_CONTAINER_FWD_BAD_BITSET)
|
||||||
|
template <size_t N> class bitset;
|
||||||
|
#endif
|
||||||
|
template <class T1, class T2> struct pair;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined(BOOST_MSVC)
|
||||||
|
#pragma warning(pop)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
229
library/include/boost/detail/dynamic_bitset.hpp
Normal file
229
library/include/boost/detail/dynamic_bitset.hpp
Normal file
@ -0,0 +1,229 @@
|
|||||||
|
// -----------------------------------------------------------
|
||||||
|
//
|
||||||
|
// Copyright (c) 2001-2002 Chuck Allison and Jeremy Siek
|
||||||
|
// Copyright (c) 2003-2006, 2008 Gennaro Prota
|
||||||
|
//
|
||||||
|
// 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)
|
||||||
|
//
|
||||||
|
// -----------------------------------------------------------
|
||||||
|
|
||||||
|
#ifndef BOOST_DETAIL_DYNAMIC_BITSET_HPP
|
||||||
|
#define BOOST_DETAIL_DYNAMIC_BITSET_HPP
|
||||||
|
|
||||||
|
#include <cstddef>
|
||||||
|
#include "boost/config.hpp"
|
||||||
|
#include "boost/detail/workaround.hpp"
|
||||||
|
|
||||||
|
|
||||||
|
namespace boost {
|
||||||
|
|
||||||
|
namespace detail {
|
||||||
|
namespace dynamic_bitset_impl {
|
||||||
|
|
||||||
|
// Gives (read-)access to the object representation
|
||||||
|
// of an object of type T (3.9p4). CANNOT be used
|
||||||
|
// on a base sub-object
|
||||||
|
//
|
||||||
|
template <typename T>
|
||||||
|
inline const unsigned char * object_representation (T* p)
|
||||||
|
{
|
||||||
|
return static_cast<const unsigned char *>(static_cast<const void *>(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T, int amount, int width /* = default */>
|
||||||
|
struct shifter
|
||||||
|
{
|
||||||
|
static void left_shift(T & v) {
|
||||||
|
amount >= width ? (v = 0)
|
||||||
|
: (v >>= BOOST_DYNAMIC_BITSET_WRAP_CONSTANT(amount));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// ------- count function implementation --------------
|
||||||
|
|
||||||
|
typedef unsigned char byte_type;
|
||||||
|
|
||||||
|
// These two entities
|
||||||
|
//
|
||||||
|
// enum mode { access_by_bytes, access_by_blocks };
|
||||||
|
// template <mode> struct mode_to_type {};
|
||||||
|
//
|
||||||
|
// were removed, since the regression logs (as of 24 Aug 2008)
|
||||||
|
// showed that several compilers had troubles with recognizing
|
||||||
|
//
|
||||||
|
// const mode m = access_by_bytes
|
||||||
|
//
|
||||||
|
// as a constant expression
|
||||||
|
//
|
||||||
|
// * So, we'll use bool, instead of enum *.
|
||||||
|
//
|
||||||
|
template <bool value>
|
||||||
|
struct value_to_type
|
||||||
|
{
|
||||||
|
value_to_type() {}
|
||||||
|
};
|
||||||
|
const bool access_by_bytes = true;
|
||||||
|
const bool access_by_blocks = false;
|
||||||
|
|
||||||
|
|
||||||
|
// the table: wrapped in a class template, so
|
||||||
|
// that it is only instantiated if/when needed
|
||||||
|
//
|
||||||
|
template <bool dummy_name = true>
|
||||||
|
struct count_table { static const byte_type table[]; };
|
||||||
|
|
||||||
|
template <>
|
||||||
|
struct count_table<false> { /* no table */ };
|
||||||
|
|
||||||
|
|
||||||
|
const unsigned int table_width = 8;
|
||||||
|
template <bool b>
|
||||||
|
const byte_type count_table<b>::table[] =
|
||||||
|
{
|
||||||
|
// Automatically generated by GPTableGen.exe v.1.0
|
||||||
|
//
|
||||||
|
0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
|
||||||
|
1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
|
||||||
|
1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
|
||||||
|
2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
|
||||||
|
1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
|
||||||
|
2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
|
||||||
|
2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
|
||||||
|
3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// overload for access by bytes
|
||||||
|
//
|
||||||
|
|
||||||
|
template <typename Iterator>
|
||||||
|
inline std::size_t do_count(Iterator first, std::size_t length,
|
||||||
|
int /*dummy param*/,
|
||||||
|
value_to_type<access_by_bytes>* )
|
||||||
|
{
|
||||||
|
std::size_t num = 0;
|
||||||
|
if (length)
|
||||||
|
{
|
||||||
|
const byte_type * p = object_representation(&*first);
|
||||||
|
length *= sizeof(*first);
|
||||||
|
|
||||||
|
do {
|
||||||
|
num += count_table<>::table[*p];
|
||||||
|
++p;
|
||||||
|
--length;
|
||||||
|
|
||||||
|
} while (length);
|
||||||
|
}
|
||||||
|
|
||||||
|
return num;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// overload for access by blocks
|
||||||
|
//
|
||||||
|
template <typename Iterator, typename ValueType>
|
||||||
|
inline std::size_t do_count(Iterator first, std::size_t length, ValueType,
|
||||||
|
value_to_type<access_by_blocks>*)
|
||||||
|
{
|
||||||
|
std::size_t num = 0;
|
||||||
|
while (length){
|
||||||
|
|
||||||
|
ValueType value = *first;
|
||||||
|
while (value) {
|
||||||
|
num += count_table<>::table[value & ((1u<<table_width) - 1)];
|
||||||
|
value >>= table_width;
|
||||||
|
}
|
||||||
|
|
||||||
|
++first;
|
||||||
|
--length;
|
||||||
|
}
|
||||||
|
|
||||||
|
return num;
|
||||||
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
// Some library implementations simply return a dummy
|
||||||
|
// value such as
|
||||||
|
//
|
||||||
|
// size_type(-1) / sizeof(T)
|
||||||
|
//
|
||||||
|
// from vector<>::max_size. This tries to get more
|
||||||
|
// meaningful info.
|
||||||
|
//
|
||||||
|
template <typename T>
|
||||||
|
typename T::size_type vector_max_size_workaround(const T & v) {
|
||||||
|
|
||||||
|
typedef typename T::allocator_type allocator_type;
|
||||||
|
|
||||||
|
const typename allocator_type::size_type alloc_max =
|
||||||
|
v.get_allocator().max_size();
|
||||||
|
const typename T::size_type container_max = v.max_size();
|
||||||
|
|
||||||
|
return alloc_max < container_max?
|
||||||
|
alloc_max :
|
||||||
|
container_max;
|
||||||
|
}
|
||||||
|
|
||||||
|
// for static_asserts
|
||||||
|
template <typename T>
|
||||||
|
struct allowed_block_type {
|
||||||
|
enum { value = T(-1) > 0 }; // ensure T has no sign
|
||||||
|
};
|
||||||
|
|
||||||
|
template <>
|
||||||
|
struct allowed_block_type<bool> {
|
||||||
|
enum { value = false };
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
struct is_numeric {
|
||||||
|
enum { value = false };
|
||||||
|
};
|
||||||
|
|
||||||
|
# define BOOST_dynamic_bitset_is_numeric(x) \
|
||||||
|
template<> \
|
||||||
|
struct is_numeric< x > { \
|
||||||
|
enum { value = true }; \
|
||||||
|
} /**/
|
||||||
|
|
||||||
|
BOOST_dynamic_bitset_is_numeric(bool);
|
||||||
|
BOOST_dynamic_bitset_is_numeric(char);
|
||||||
|
|
||||||
|
#if !defined(BOOST_NO_INTRINSIC_WCHAR_T)
|
||||||
|
BOOST_dynamic_bitset_is_numeric(wchar_t);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
BOOST_dynamic_bitset_is_numeric(signed char);
|
||||||
|
BOOST_dynamic_bitset_is_numeric(short int);
|
||||||
|
BOOST_dynamic_bitset_is_numeric(int);
|
||||||
|
BOOST_dynamic_bitset_is_numeric(long int);
|
||||||
|
|
||||||
|
BOOST_dynamic_bitset_is_numeric(unsigned char);
|
||||||
|
BOOST_dynamic_bitset_is_numeric(unsigned short);
|
||||||
|
BOOST_dynamic_bitset_is_numeric(unsigned int);
|
||||||
|
BOOST_dynamic_bitset_is_numeric(unsigned long);
|
||||||
|
|
||||||
|
#if defined(BOOST_HAS_LONG_LONG)
|
||||||
|
BOOST_dynamic_bitset_is_numeric(::boost::long_long_type);
|
||||||
|
BOOST_dynamic_bitset_is_numeric(::boost::ulong_long_type);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// intentionally omitted
|
||||||
|
//BOOST_dynamic_bitset_is_numeric(float);
|
||||||
|
//BOOST_dynamic_bitset_is_numeric(double);
|
||||||
|
//BOOST_dynamic_bitset_is_numeric(long double);
|
||||||
|
|
||||||
|
#undef BOOST_dynamic_bitset_is_numeric
|
||||||
|
|
||||||
|
} // dynamic_bitset_impl
|
||||||
|
} // namespace detail
|
||||||
|
|
||||||
|
} // namespace boost
|
||||||
|
|
||||||
|
#endif // include guard
|
||||||
|
|
73
library/include/boost/detail/endian.hpp
Normal file
73
library/include/boost/detail/endian.hpp
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
// 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
|
||||||
|
* Silicon Graphics Computer Systems, Inc.
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, distribute and sell this software
|
||||||
|
* and its documentation for any purpose is hereby granted without fee,
|
||||||
|
* provided that the above copyright notice appear in all copies and
|
||||||
|
* that both that copyright notice and this permission notice appear
|
||||||
|
* in supporting documentation. Silicon Graphics makes no
|
||||||
|
* representations about the suitability of this software for any
|
||||||
|
* purpose. It is provided "as is" without express or implied warranty.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright notice reproduced from <boost/detail/limits.hpp>, from
|
||||||
|
* which this code was originally taken.
|
||||||
|
*
|
||||||
|
* Modified by Caleb Epstein to use <endian.h> with GNU libc and to
|
||||||
|
* defined the BOOST_ENDIAN macro.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef BOOST_DETAIL_ENDIAN_HPP
|
||||||
|
#define BOOST_DETAIL_ENDIAN_HPP
|
||||||
|
|
||||||
|
// GNU libc offers the helpful header <endian.h> which defines
|
||||||
|
// __BYTE_ORDER
|
||||||
|
|
||||||
|
#if defined (__GLIBC__)
|
||||||
|
# include <endian.h>
|
||||||
|
# if (__BYTE_ORDER == __LITTLE_ENDIAN)
|
||||||
|
# define BOOST_LITTLE_ENDIAN
|
||||||
|
# elif (__BYTE_ORDER == __BIG_ENDIAN)
|
||||||
|
# define BOOST_BIG_ENDIAN
|
||||||
|
# elif (__BYTE_ORDER == __PDP_ENDIAN)
|
||||||
|
# define BOOST_PDP_ENDIAN
|
||||||
|
# else
|
||||||
|
# error Unknown machine endianness detected.
|
||||||
|
# endif
|
||||||
|
# define BOOST_BYTE_ORDER __BYTE_ORDER
|
||||||
|
#elif defined(_BIG_ENDIAN) && !defined(_LITTLE_ENDIAN)
|
||||||
|
# define BOOST_BIG_ENDIAN
|
||||||
|
# define BOOST_BYTE_ORDER 4321
|
||||||
|
#elif defined(_LITTLE_ENDIAN) && !defined(_BIG_ENDIAN)
|
||||||
|
# define BOOST_LITTLE_ENDIAN
|
||||||
|
# define BOOST_BYTE_ORDER 1234
|
||||||
|
#elif defined(__sparc) || defined(__sparc__) \
|
||||||
|
|| defined(_POWER) || defined(__powerpc__) \
|
||||||
|
|| defined(__ppc__) || defined(__hpux) \
|
||||||
|
|| defined(_MIPSEB) || defined(_POWER) \
|
||||||
|
|| defined(__s390__)
|
||||||
|
# define BOOST_BIG_ENDIAN
|
||||||
|
# define BOOST_BYTE_ORDER 4321
|
||||||
|
#elif defined(__i386__) || defined(__alpha__) \
|
||||||
|
|| defined(__ia64) || defined(__ia64__) \
|
||||||
|
|| defined(_M_IX86) || defined(_M_IA64) \
|
||||||
|
|| defined(_M_ALPHA) || defined(__amd64) \
|
||||||
|
|| defined(__amd64__) || defined(_M_AMD64) \
|
||||||
|
|| defined(__x86_64) || defined(__x86_64__) \
|
||||||
|
|| defined(_M_X64) || defined(__bfin__)
|
||||||
|
|
||||||
|
# define BOOST_LITTLE_ENDIAN
|
||||||
|
# define BOOST_BYTE_ORDER 1234
|
||||||
|
#else
|
||||||
|
# error The file boost/detail/endian.hpp needs to be set up for your CPU type.
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
29
library/include/boost/detail/has_default_constructor.hpp
Normal file
29
library/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
|
89
library/include/boost/detail/identifier.hpp
Normal file
89
library/include/boost/detail/identifier.hpp
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
// boost/identifier.hpp ----------------------------------------------------//
|
||||||
|
|
||||||
|
// Copyright Beman Dawes 2006
|
||||||
|
|
||||||
|
// 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)
|
||||||
|
|
||||||
|
// See documentation at http://www.boost.org/libs/utility
|
||||||
|
|
||||||
|
#ifndef BOOST_IDENTIFIER_HPP
|
||||||
|
#define BOOST_IDENTIFIER_HPP
|
||||||
|
|
||||||
|
#include <boost/utility/enable_if.hpp>
|
||||||
|
#include <boost/type_traits/is_base_of.hpp>
|
||||||
|
#include <iosfwd>
|
||||||
|
|
||||||
|
namespace boost
|
||||||
|
{
|
||||||
|
namespace detail
|
||||||
|
{
|
||||||
|
// class template identifier ---------------------------------------------//
|
||||||
|
|
||||||
|
// Always used as a base class so that different instantiations result in
|
||||||
|
// different class types even if instantiated with the same value type T.
|
||||||
|
|
||||||
|
// Expected usage is that T is often an integer type, best passed by
|
||||||
|
// value. There is no reason why T can't be a possibly larger class such as
|
||||||
|
// std::string, best passed by const reference.
|
||||||
|
|
||||||
|
// This implementation uses pass by value, based on expected common uses.
|
||||||
|
|
||||||
|
template <typename T, typename D>
|
||||||
|
class identifier
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
typedef T value_type;
|
||||||
|
|
||||||
|
const value_type value() const { return m_value; }
|
||||||
|
void assign( value_type v ) { m_value = v; }
|
||||||
|
|
||||||
|
bool operator==( const D & rhs ) const { return m_value == rhs.m_value; }
|
||||||
|
bool operator!=( const D & rhs ) const { return m_value != rhs.m_value; }
|
||||||
|
bool operator< ( const D & rhs ) const { return m_value < rhs.m_value; }
|
||||||
|
bool operator<=( const D & rhs ) const { return m_value <= rhs.m_value; }
|
||||||
|
bool operator> ( const D & rhs ) const { return m_value > rhs.m_value; }
|
||||||
|
bool operator>=( const D & rhs ) const { return m_value >= rhs.m_value; }
|
||||||
|
|
||||||
|
typedef void (*unspecified_bool_type)(D); // without the D, unspecified_bool_type
|
||||||
|
static void unspecified_bool_true(D){} // conversion allows relational operators
|
||||||
|
// between different identifier types
|
||||||
|
|
||||||
|
operator unspecified_bool_type() const { return m_value == value_type() ? 0 : unspecified_bool_true; }
|
||||||
|
bool operator!() const { return m_value == value_type(); }
|
||||||
|
|
||||||
|
// constructors are protected so that class can only be used as a base class
|
||||||
|
protected:
|
||||||
|
identifier() {}
|
||||||
|
explicit identifier( value_type v ) : m_value(v) {}
|
||||||
|
|
||||||
|
#if !defined(BOOST_MSVC) || BOOST_MSVC > 1300 // 1300 == VC++ 7.0 bug workaround
|
||||||
|
private:
|
||||||
|
#endif
|
||||||
|
T m_value;
|
||||||
|
};
|
||||||
|
|
||||||
|
//#ifndef BOOST_NO_SFINAE
|
||||||
|
|
||||||
|
// template <class Ostream, class Id>
|
||||||
|
// typename enable_if< is_base_of< identifier< typename Id::value_type, Id >, Id >,
|
||||||
|
// Ostream & >::type operator<<( Ostream & os, const Id & id )
|
||||||
|
// {
|
||||||
|
// return os << id.value();
|
||||||
|
// }
|
||||||
|
|
||||||
|
// template <class Istream, class Id>
|
||||||
|
// typename enable_if< is_base_of< identifier< typename Id::value_type, Id >, Id >,
|
||||||
|
// Istream & >::type operator>>( Istream & is, Id & id )
|
||||||
|
// {
|
||||||
|
// typename Id::value_type v;
|
||||||
|
// is >> v;
|
||||||
|
// id.value( v );
|
||||||
|
// return is;
|
||||||
|
// }
|
||||||
|
//#endif
|
||||||
|
|
||||||
|
} // namespace detail
|
||||||
|
} // namespace boost
|
||||||
|
|
||||||
|
#endif // BOOST_IDENTIFIER_HPP
|
487
library/include/boost/detail/indirect_traits.hpp
Normal file
487
library/include/boost/detail/indirect_traits.hpp
Normal file
@ -0,0 +1,487 @@
|
|||||||
|
// Copyright David Abrahams 2002.
|
||||||
|
// 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)
|
||||||
|
#ifndef INDIRECT_TRAITS_DWA2002131_HPP
|
||||||
|
# define INDIRECT_TRAITS_DWA2002131_HPP
|
||||||
|
# include <boost/type_traits/is_function.hpp>
|
||||||
|
# include <boost/type_traits/is_reference.hpp>
|
||||||
|
# include <boost/type_traits/is_pointer.hpp>
|
||||||
|
# include <boost/type_traits/is_class.hpp>
|
||||||
|
# include <boost/type_traits/is_const.hpp>
|
||||||
|
# include <boost/type_traits/is_volatile.hpp>
|
||||||
|
# include <boost/type_traits/is_member_function_pointer.hpp>
|
||||||
|
# include <boost/type_traits/is_member_pointer.hpp>
|
||||||
|
# include <boost/type_traits/remove_cv.hpp>
|
||||||
|
# include <boost/type_traits/remove_reference.hpp>
|
||||||
|
# include <boost/type_traits/remove_pointer.hpp>
|
||||||
|
|
||||||
|
# include <boost/type_traits/detail/ice_and.hpp>
|
||||||
|
# include <boost/detail/workaround.hpp>
|
||||||
|
|
||||||
|
# include <boost/mpl/eval_if.hpp>
|
||||||
|
# include <boost/mpl/if.hpp>
|
||||||
|
# include <boost/mpl/bool.hpp>
|
||||||
|
# include <boost/mpl/and.hpp>
|
||||||
|
# include <boost/mpl/not.hpp>
|
||||||
|
# include <boost/mpl/aux_/lambda_support.hpp>
|
||||||
|
|
||||||
|
# ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
|
||||||
|
# include <boost/detail/is_function_ref_tester.hpp>
|
||||||
|
# endif
|
||||||
|
|
||||||
|
namespace boost { namespace detail {
|
||||||
|
|
||||||
|
namespace indirect_traits {
|
||||||
|
|
||||||
|
# ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
|
||||||
|
template <class T>
|
||||||
|
struct is_reference_to_const : mpl::false_
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct is_reference_to_const<T const&> : mpl::true_
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
# if defined(BOOST_MSVC) && _MSC_FULL_VER <= 13102140 // vc7.01 alpha workaround
|
||||||
|
template<class T>
|
||||||
|
struct is_reference_to_const<T const volatile&> : mpl::true_
|
||||||
|
{
|
||||||
|
};
|
||||||
|
# endif
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct is_reference_to_function : mpl::false_
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct is_reference_to_function<T&> : is_function<T>
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct is_pointer_to_function : mpl::false_
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
// There's no such thing as a pointer-to-cv-function, so we don't need
|
||||||
|
// specializations for those
|
||||||
|
template <class T>
|
||||||
|
struct is_pointer_to_function<T*> : is_function<T>
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct is_reference_to_member_function_pointer_impl : mpl::false_
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct is_reference_to_member_function_pointer_impl<T&>
|
||||||
|
: is_member_function_pointer<typename remove_cv<T>::type>
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct is_reference_to_member_function_pointer
|
||||||
|
: is_reference_to_member_function_pointer_impl<T>
|
||||||
|
{
|
||||||
|
BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reference_to_member_function_pointer,(T))
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct is_reference_to_function_pointer_aux
|
||||||
|
: mpl::and_<
|
||||||
|
is_reference<T>
|
||||||
|
, is_pointer_to_function<
|
||||||
|
typename remove_cv<
|
||||||
|
typename remove_reference<T>::type
|
||||||
|
>::type
|
||||||
|
>
|
||||||
|
>
|
||||||
|
{
|
||||||
|
// There's no such thing as a pointer-to-cv-function, so we don't need specializations for those
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct is_reference_to_function_pointer
|
||||||
|
: mpl::if_<
|
||||||
|
is_reference_to_function<T>
|
||||||
|
, mpl::false_
|
||||||
|
, is_reference_to_function_pointer_aux<T>
|
||||||
|
>::type
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct is_reference_to_non_const
|
||||||
|
: mpl::and_<
|
||||||
|
is_reference<T>
|
||||||
|
, mpl::not_<
|
||||||
|
is_reference_to_const<T>
|
||||||
|
>
|
||||||
|
>
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct is_reference_to_volatile : mpl::false_
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct is_reference_to_volatile<T volatile&> : mpl::true_
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
# if defined(BOOST_MSVC) && _MSC_FULL_VER <= 13102140 // vc7.01 alpha workaround
|
||||||
|
template <class T>
|
||||||
|
struct is_reference_to_volatile<T const volatile&> : mpl::true_
|
||||||
|
{
|
||||||
|
};
|
||||||
|
# endif
|
||||||
|
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct is_reference_to_pointer : mpl::false_
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct is_reference_to_pointer<T*&> : mpl::true_
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct is_reference_to_pointer<T* const&> : mpl::true_
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct is_reference_to_pointer<T* volatile&> : mpl::true_
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct is_reference_to_pointer<T* const volatile&> : mpl::true_
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct is_reference_to_class
|
||||||
|
: mpl::and_<
|
||||||
|
is_reference<T>
|
||||||
|
, is_class<
|
||||||
|
typename remove_cv<
|
||||||
|
typename remove_reference<T>::type
|
||||||
|
>::type
|
||||||
|
>
|
||||||
|
>
|
||||||
|
{
|
||||||
|
BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reference_to_class,(T))
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct is_pointer_to_class
|
||||||
|
: mpl::and_<
|
||||||
|
is_pointer<T>
|
||||||
|
, is_class<
|
||||||
|
typename remove_cv<
|
||||||
|
typename remove_pointer<T>::type
|
||||||
|
>::type
|
||||||
|
>
|
||||||
|
>
|
||||||
|
{
|
||||||
|
BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_pointer_to_class,(T))
|
||||||
|
};
|
||||||
|
|
||||||
|
# else
|
||||||
|
|
||||||
|
using namespace boost::detail::is_function_ref_tester_;
|
||||||
|
|
||||||
|
typedef char (&inner_yes_type)[3];
|
||||||
|
typedef char (&inner_no_type)[2];
|
||||||
|
typedef char (&outer_no_type)[1];
|
||||||
|
|
||||||
|
template <typename V>
|
||||||
|
struct is_const_help
|
||||||
|
{
|
||||||
|
typedef typename mpl::if_<
|
||||||
|
is_const<V>
|
||||||
|
, inner_yes_type
|
||||||
|
, inner_no_type
|
||||||
|
>::type type;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename V>
|
||||||
|
struct is_volatile_help
|
||||||
|
{
|
||||||
|
typedef typename mpl::if_<
|
||||||
|
is_volatile<V>
|
||||||
|
, inner_yes_type
|
||||||
|
, inner_no_type
|
||||||
|
>::type type;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename V>
|
||||||
|
struct is_pointer_help
|
||||||
|
{
|
||||||
|
typedef typename mpl::if_<
|
||||||
|
is_pointer<V>
|
||||||
|
, inner_yes_type
|
||||||
|
, inner_no_type
|
||||||
|
>::type type;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename V>
|
||||||
|
struct is_class_help
|
||||||
|
{
|
||||||
|
typedef typename mpl::if_<
|
||||||
|
is_class<V>
|
||||||
|
, inner_yes_type
|
||||||
|
, inner_no_type
|
||||||
|
>::type type;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct is_reference_to_function_aux
|
||||||
|
{
|
||||||
|
static T t;
|
||||||
|
BOOST_STATIC_CONSTANT(
|
||||||
|
bool, value = sizeof(detail::is_function_ref_tester(t,0)) == sizeof(::boost::type_traits::yes_type));
|
||||||
|
typedef mpl::bool_<value> type;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct is_reference_to_function
|
||||||
|
: mpl::if_<is_reference<T>, is_reference_to_function_aux<T>, mpl::bool_<false> >::type
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct is_pointer_to_function_aux
|
||||||
|
{
|
||||||
|
static T t;
|
||||||
|
BOOST_STATIC_CONSTANT(
|
||||||
|
bool, value
|
||||||
|
= sizeof(::boost::type_traits::is_function_ptr_tester(t)) == sizeof(::boost::type_traits::yes_type));
|
||||||
|
typedef mpl::bool_<value> type;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct is_pointer_to_function
|
||||||
|
: mpl::if_<is_pointer<T>, is_pointer_to_function_aux<T>, mpl::bool_<false> >::type
|
||||||
|
{
|
||||||
|
BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_pointer_to_function,(T))
|
||||||
|
};
|
||||||
|
|
||||||
|
struct false_helper1
|
||||||
|
{
|
||||||
|
template <class T>
|
||||||
|
struct apply : mpl::false_
|
||||||
|
{
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename V>
|
||||||
|
typename is_const_help<V>::type reference_to_const_helper(V&);
|
||||||
|
outer_no_type
|
||||||
|
reference_to_const_helper(...);
|
||||||
|
|
||||||
|
struct true_helper1
|
||||||
|
{
|
||||||
|
template <class T>
|
||||||
|
struct apply
|
||||||
|
{
|
||||||
|
static T t;
|
||||||
|
BOOST_STATIC_CONSTANT(
|
||||||
|
bool, value
|
||||||
|
= sizeof(reference_to_const_helper(t)) == sizeof(inner_yes_type));
|
||||||
|
typedef mpl::bool_<value> type;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
template <bool ref = true>
|
||||||
|
struct is_reference_to_const_helper1 : true_helper1
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
template <>
|
||||||
|
struct is_reference_to_const_helper1<false> : false_helper1
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct is_reference_to_const
|
||||||
|
: is_reference_to_const_helper1<is_reference<T>::value>::template apply<T>
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
template <bool ref = true>
|
||||||
|
struct is_reference_to_non_const_helper1
|
||||||
|
{
|
||||||
|
template <class T>
|
||||||
|
struct apply
|
||||||
|
{
|
||||||
|
static T t;
|
||||||
|
BOOST_STATIC_CONSTANT(
|
||||||
|
bool, value
|
||||||
|
= sizeof(reference_to_const_helper(t)) == sizeof(inner_no_type));
|
||||||
|
|
||||||
|
typedef mpl::bool_<value> type;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
template <>
|
||||||
|
struct is_reference_to_non_const_helper1<false> : false_helper1
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct is_reference_to_non_const
|
||||||
|
: is_reference_to_non_const_helper1<is_reference<T>::value>::template apply<T>
|
||||||
|
{
|
||||||
|
BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reference_to_non_const,(T))
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
template <typename V>
|
||||||
|
typename is_volatile_help<V>::type reference_to_volatile_helper(V&);
|
||||||
|
outer_no_type
|
||||||
|
reference_to_volatile_helper(...);
|
||||||
|
|
||||||
|
template <bool ref = true>
|
||||||
|
struct is_reference_to_volatile_helper1
|
||||||
|
{
|
||||||
|
template <class T>
|
||||||
|
struct apply
|
||||||
|
{
|
||||||
|
static T t;
|
||||||
|
BOOST_STATIC_CONSTANT(
|
||||||
|
bool, value
|
||||||
|
= sizeof(reference_to_volatile_helper(t)) == sizeof(inner_yes_type));
|
||||||
|
typedef mpl::bool_<value> type;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
template <>
|
||||||
|
struct is_reference_to_volatile_helper1<false> : false_helper1
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct is_reference_to_volatile
|
||||||
|
: is_reference_to_volatile_helper1<is_reference<T>::value>::template apply<T>
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename V>
|
||||||
|
typename is_pointer_help<V>::type reference_to_pointer_helper(V&);
|
||||||
|
outer_no_type reference_to_pointer_helper(...);
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct reference_to_pointer_impl
|
||||||
|
{
|
||||||
|
static T t;
|
||||||
|
BOOST_STATIC_CONSTANT(
|
||||||
|
bool, value
|
||||||
|
= (sizeof((reference_to_pointer_helper)(t)) == sizeof(inner_yes_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))
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct is_reference_to_function_pointer
|
||||||
|
: mpl::eval_if<is_reference<T>, is_pointer_to_function_aux<T>, mpl::false_>::type
|
||||||
|
{
|
||||||
|
BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reference_to_function_pointer,(T))
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct is_member_function_pointer_help
|
||||||
|
: mpl::if_<is_member_function_pointer<T>, inner_yes_type, inner_no_type>
|
||||||
|
{};
|
||||||
|
|
||||||
|
template <typename V>
|
||||||
|
typename is_member_function_pointer_help<V>::type member_function_pointer_helper(V&);
|
||||||
|
outer_no_type member_function_pointer_helper(...);
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct is_pointer_to_member_function_aux
|
||||||
|
{
|
||||||
|
static T t;
|
||||||
|
BOOST_STATIC_CONSTANT(
|
||||||
|
bool, value
|
||||||
|
= sizeof((member_function_pointer_helper)(t)) == sizeof(inner_yes_type));
|
||||||
|
typedef mpl::bool_<value> type;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct is_reference_to_member_function_pointer
|
||||||
|
: mpl::if_<
|
||||||
|
is_reference<T>
|
||||||
|
, is_pointer_to_member_function_aux<T>
|
||||||
|
, mpl::bool_<false>
|
||||||
|
>::type
|
||||||
|
{
|
||||||
|
BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reference_to_member_function_pointer,(T))
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename V>
|
||||||
|
typename is_class_help<V>::type reference_to_class_helper(V const volatile&);
|
||||||
|
outer_no_type reference_to_class_helper(...);
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct is_reference_to_class
|
||||||
|
{
|
||||||
|
static T t;
|
||||||
|
BOOST_STATIC_CONSTANT(
|
||||||
|
bool, value
|
||||||
|
= (is_reference<T>::value
|
||||||
|
& (sizeof(reference_to_class_helper(t)) == sizeof(inner_yes_type)))
|
||||||
|
);
|
||||||
|
typedef mpl::bool_<value> type;
|
||||||
|
BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reference_to_class,(T))
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename V>
|
||||||
|
typename is_class_help<V>::type pointer_to_class_helper(V const volatile*);
|
||||||
|
outer_no_type pointer_to_class_helper(...);
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct is_pointer_to_class
|
||||||
|
{
|
||||||
|
static T t;
|
||||||
|
BOOST_STATIC_CONSTANT(
|
||||||
|
bool, value
|
||||||
|
= (is_pointer<T>::value
|
||||||
|
&& sizeof(pointer_to_class_helper(t)) == sizeof(inner_yes_type))
|
||||||
|
);
|
||||||
|
typedef mpl::bool_<value> type;
|
||||||
|
};
|
||||||
|
# endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
using namespace indirect_traits;
|
||||||
|
|
||||||
|
}} // namespace boost::python::detail
|
||||||
|
|
||||||
|
#endif // INDIRECT_TRAITS_DWA2002131_HPP
|
130
library/include/boost/detail/interlocked.hpp
Normal file
130
library/include/boost/detail/interlocked.hpp
Normal file
@ -0,0 +1,130 @@
|
|||||||
|
#ifndef BOOST_DETAIL_INTERLOCKED_HPP_INCLUDED
|
||||||
|
#define BOOST_DETAIL_INTERLOCKED_HPP_INCLUDED
|
||||||
|
|
||||||
|
// MS compatible compilers support #pragma once
|
||||||
|
|
||||||
|
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
|
||||||
|
# pragma once
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// boost/detail/interlocked.hpp
|
||||||
|
//
|
||||||
|
// Copyright 2005 Peter Dimov
|
||||||
|
//
|
||||||
|
// 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)
|
||||||
|
//
|
||||||
|
|
||||||
|
#include <boost/config.hpp>
|
||||||
|
|
||||||
|
#if defined( BOOST_USE_WINDOWS_H )
|
||||||
|
|
||||||
|
# include <windows.h>
|
||||||
|
|
||||||
|
# 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
|
||||||
|
# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER InterlockedCompareExchangePointer
|
||||||
|
# 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
|
||||||
|
|
||||||
|
# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest,exchange,compare) \
|
||||||
|
((void*)BOOST_INTERLOCKED_COMPARE_EXCHANGE((long*)(dest),(long)(exchange),(long)(compare)))
|
||||||
|
# define BOOST_INTERLOCKED_EXCHANGE_POINTER(dest,exchange) \
|
||||||
|
((void*)BOOST_INTERLOCKED_EXCHANGE((long*)(dest),(long)(exchange)))
|
||||||
|
|
||||||
|
#elif defined( BOOST_MSVC ) || defined( BOOST_INTEL_WIN )
|
||||||
|
|
||||||
|
extern "C" long __cdecl _InterlockedIncrement( long volatile * );
|
||||||
|
extern "C" long __cdecl _InterlockedDecrement( long volatile * );
|
||||||
|
extern "C" long __cdecl _InterlockedCompareExchange( long volatile *, long, long );
|
||||||
|
extern "C" long __cdecl _InterlockedExchange( long volatile *, long);
|
||||||
|
extern "C" long __cdecl _InterlockedExchangeAdd( long volatile *, long);
|
||||||
|
|
||||||
|
# pragma intrinsic( _InterlockedIncrement )
|
||||||
|
# pragma intrinsic( _InterlockedDecrement )
|
||||||
|
# pragma intrinsic( _InterlockedCompareExchange )
|
||||||
|
# pragma intrinsic( _InterlockedExchange )
|
||||||
|
# pragma intrinsic( _InterlockedExchangeAdd )
|
||||||
|
|
||||||
|
# if defined(_M_IA64) || defined(_M_AMD64)
|
||||||
|
|
||||||
|
extern "C" void* __cdecl _InterlockedCompareExchangePointer( void* volatile *, void*, void* );
|
||||||
|
extern "C" void* __cdecl _InterlockedExchangePointer( void* volatile *, void* );
|
||||||
|
|
||||||
|
# pragma intrinsic( _InterlockedCompareExchangePointer )
|
||||||
|
# pragma intrinsic( _InterlockedExchangePointer )
|
||||||
|
|
||||||
|
# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER _InterlockedCompareExchangePointer
|
||||||
|
# define BOOST_INTERLOCKED_EXCHANGE_POINTER _InterlockedExchangePointer
|
||||||
|
|
||||||
|
# else
|
||||||
|
|
||||||
|
# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest,exchange,compare) \
|
||||||
|
((void*)BOOST_INTERLOCKED_COMPARE_EXCHANGE((long volatile*)(dest),(long)(exchange),(long)(compare)))
|
||||||
|
# define BOOST_INTERLOCKED_EXCHANGE_POINTER(dest,exchange) \
|
||||||
|
((void*)BOOST_INTERLOCKED_EXCHANGE((long volatile*)(dest),(long)(exchange)))
|
||||||
|
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# 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( WIN32 ) || defined( _WIN32 ) || defined( __WIN32__ ) || defined( __CYGWIN__ )
|
||||||
|
|
||||||
|
namespace boost
|
||||||
|
{
|
||||||
|
|
||||||
|
namespace detail
|
||||||
|
{
|
||||||
|
|
||||||
|
extern "C" __declspec(dllimport) long __stdcall InterlockedIncrement( long volatile * );
|
||||||
|
extern "C" __declspec(dllimport) long __stdcall InterlockedDecrement( long volatile * );
|
||||||
|
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 InterlockedExchangeAdd( long volatile *, long );
|
||||||
|
|
||||||
|
} // namespace detail
|
||||||
|
|
||||||
|
} // namespace boost
|
||||||
|
|
||||||
|
# define BOOST_INTERLOCKED_INCREMENT ::boost::detail::InterlockedIncrement
|
||||||
|
# define BOOST_INTERLOCKED_DECREMENT ::boost::detail::InterlockedDecrement
|
||||||
|
# define BOOST_INTERLOCKED_COMPARE_EXCHANGE ::boost::detail::InterlockedCompareExchange
|
||||||
|
# define BOOST_INTERLOCKED_EXCHANGE ::boost::detail::InterlockedExchange
|
||||||
|
# define BOOST_INTERLOCKED_EXCHANGE_ADD ::boost::detail::InterlockedExchangeAdd
|
||||||
|
|
||||||
|
# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest,exchange,compare) \
|
||||||
|
((void*)BOOST_INTERLOCKED_COMPARE_EXCHANGE((long volatile*)(dest),(long)(exchange),(long)(compare)))
|
||||||
|
# define BOOST_INTERLOCKED_EXCHANGE_POINTER(dest,exchange) \
|
||||||
|
((void*)BOOST_INTERLOCKED_EXCHANGE((long volatile*)(dest),(long)(exchange)))
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
# error "Interlocked intrinsics not available"
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // #ifndef BOOST_DETAIL_INTERLOCKED_HPP_INCLUDED
|
135
library/include/boost/detail/is_function_ref_tester.hpp
Normal file
135
library/include/boost/detail/is_function_ref_tester.hpp
Normal file
@ -0,0 +1,135 @@
|
|||||||
|
|
||||||
|
// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes,
|
||||||
|
// Aleksey Gurtovoy, Howard Hinnant & John Maddock 2000.
|
||||||
|
// 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_PP_IS_ITERATING)
|
||||||
|
|
||||||
|
///// header body
|
||||||
|
|
||||||
|
#ifndef BOOST_DETAIL_IS_FUNCTION_REF_TESTER_HPP_INCLUDED
|
||||||
|
#define BOOST_DETAIL_IS_FUNCTION_REF_TESTER_HPP_INCLUDED
|
||||||
|
|
||||||
|
#include "boost/type_traits/detail/yes_no_type.hpp"
|
||||||
|
#include "boost/type_traits/config.hpp"
|
||||||
|
|
||||||
|
#if defined(BOOST_TT_PREPROCESSING_MODE)
|
||||||
|
# include "boost/preprocessor/iterate.hpp"
|
||||||
|
# include "boost/preprocessor/enum_params.hpp"
|
||||||
|
# include "boost/preprocessor/comma_if.hpp"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
namespace boost {
|
||||||
|
namespace detail {
|
||||||
|
namespace is_function_ref_tester_ {
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
boost::type_traits::no_type BOOST_TT_DECL is_function_ref_tester(T& ...);
|
||||||
|
|
||||||
|
#if !defined(BOOST_TT_PREPROCESSING_MODE)
|
||||||
|
// preprocessor-generated part, don't edit by hand!
|
||||||
|
|
||||||
|
template <class R>
|
||||||
|
boost::type_traits::yes_type is_function_ref_tester(R (&)(), int);
|
||||||
|
|
||||||
|
template <class R,class T0 >
|
||||||
|
boost::type_traits::yes_type is_function_ref_tester(R (&)(T0), int);
|
||||||
|
|
||||||
|
template <class R,class T0,class T1 >
|
||||||
|
boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1), int);
|
||||||
|
|
||||||
|
template <class R,class T0,class T1,class T2 >
|
||||||
|
boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2), int);
|
||||||
|
|
||||||
|
template <class R,class T0,class T1,class T2,class T3 >
|
||||||
|
boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3), int);
|
||||||
|
|
||||||
|
template <class R,class T0,class T1,class T2,class T3,class T4 >
|
||||||
|
boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4), int);
|
||||||
|
|
||||||
|
template <class R,class T0,class T1,class T2,class T3,class T4,class T5 >
|
||||||
|
boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5), int);
|
||||||
|
|
||||||
|
template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6 >
|
||||||
|
boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6), int);
|
||||||
|
|
||||||
|
template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7 >
|
||||||
|
boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7), int);
|
||||||
|
|
||||||
|
template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8 >
|
||||||
|
boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8), int);
|
||||||
|
|
||||||
|
template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9 >
|
||||||
|
boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9), int);
|
||||||
|
|
||||||
|
template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10 >
|
||||||
|
boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10), int);
|
||||||
|
|
||||||
|
template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11 >
|
||||||
|
boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11), int);
|
||||||
|
|
||||||
|
template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12 >
|
||||||
|
boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12), int);
|
||||||
|
|
||||||
|
template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13 >
|
||||||
|
boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13), int);
|
||||||
|
|
||||||
|
template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14 >
|
||||||
|
boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14), int);
|
||||||
|
|
||||||
|
template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15 >
|
||||||
|
boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15), int);
|
||||||
|
|
||||||
|
template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16 >
|
||||||
|
boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16), int);
|
||||||
|
|
||||||
|
template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17 >
|
||||||
|
boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17), int);
|
||||||
|
|
||||||
|
template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18 >
|
||||||
|
boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18), int);
|
||||||
|
|
||||||
|
template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19 >
|
||||||
|
boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19), int);
|
||||||
|
|
||||||
|
template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19,class T20 >
|
||||||
|
boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20), int);
|
||||||
|
|
||||||
|
template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19,class T20,class T21 >
|
||||||
|
boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21), int);
|
||||||
|
|
||||||
|
template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19,class T20,class T21,class T22 >
|
||||||
|
boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22), int);
|
||||||
|
|
||||||
|
template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19,class T20,class T21,class T22,class T23 >
|
||||||
|
boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23), int);
|
||||||
|
|
||||||
|
template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19,class T20,class T21,class T22,class T23,class T24 >
|
||||||
|
boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24), int);
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#define BOOST_PP_ITERATION_PARAMS_1 \
|
||||||
|
(3, (0, 25, "boost/type_traits/detail/is_function_ref_tester.hpp"))
|
||||||
|
#include BOOST_PP_ITERATE()
|
||||||
|
|
||||||
|
#endif // BOOST_TT_PREPROCESSING_MODE
|
||||||
|
|
||||||
|
} // namespace detail
|
||||||
|
} // namespace python
|
||||||
|
} // namespace boost
|
||||||
|
|
||||||
|
#endif // BOOST_DETAIL_IS_FUNCTION_REF_TESTER_HPP_INCLUDED
|
||||||
|
|
||||||
|
///// iteration
|
||||||
|
|
||||||
|
#else
|
||||||
|
#define i BOOST_PP_FRAME_ITERATION(1)
|
||||||
|
|
||||||
|
template <class R BOOST_PP_COMMA_IF(i) BOOST_PP_ENUM_PARAMS(i,class T) >
|
||||||
|
boost::type_traits::yes_type is_function_ref_tester(R (&)(BOOST_PP_ENUM_PARAMS(i,T)), int);
|
||||||
|
|
||||||
|
#undef i
|
||||||
|
#endif // BOOST_PP_IS_ITERATING
|
124
library/include/boost/detail/is_incrementable.hpp
Normal file
124
library/include/boost/detail/is_incrementable.hpp
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
// Copyright David Abrahams 2004. Use, modification and distribution is
|
||||||
|
// 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)
|
||||||
|
#ifndef IS_INCREMENTABLE_DWA200415_HPP
|
||||||
|
# define IS_INCREMENTABLE_DWA200415_HPP
|
||||||
|
|
||||||
|
# include <boost/type_traits/detail/template_arity_spec.hpp>
|
||||||
|
# include <boost/type_traits/remove_cv.hpp>
|
||||||
|
# include <boost/mpl/aux_/lambda_support.hpp>
|
||||||
|
# include <boost/mpl/bool.hpp>
|
||||||
|
# include <boost/detail/workaround.hpp>
|
||||||
|
|
||||||
|
// Must be the last include
|
||||||
|
# include <boost/type_traits/detail/bool_trait_def.hpp>
|
||||||
|
|
||||||
|
namespace boost { namespace detail {
|
||||||
|
|
||||||
|
// is_incrementable<T> metafunction
|
||||||
|
//
|
||||||
|
// Requires: Given x of type T&, if the expression ++x is well-formed
|
||||||
|
// it must have complete type; otherwise, it must neither be ambiguous
|
||||||
|
// nor violate access.
|
||||||
|
|
||||||
|
// This namespace ensures that ADL doesn't mess things up.
|
||||||
|
namespace is_incrementable_
|
||||||
|
{
|
||||||
|
// a type returned from operator++ when no increment is found in the
|
||||||
|
// type's own namespace
|
||||||
|
struct tag {};
|
||||||
|
|
||||||
|
// any soaks up implicit conversions and makes the following
|
||||||
|
// operator++ less-preferred than any other such operator that
|
||||||
|
// might be found via ADL.
|
||||||
|
struct any { template <class T> any(T const&); };
|
||||||
|
|
||||||
|
// This is a last-resort operator++ for when none other is found
|
||||||
|
# if BOOST_WORKAROUND(__GNUC__, == 4) && __GNUC_MINOR__ == 0 && __GNUC_PATCHLEVEL__ == 2
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace is_incrementable_2
|
||||||
|
{
|
||||||
|
is_incrementable_::tag operator++(is_incrementable_::any const&);
|
||||||
|
is_incrementable_::tag operator++(is_incrementable_::any const&,int);
|
||||||
|
}
|
||||||
|
using namespace is_incrementable_2;
|
||||||
|
|
||||||
|
namespace is_incrementable_
|
||||||
|
{
|
||||||
|
|
||||||
|
# else
|
||||||
|
|
||||||
|
tag operator++(any const&);
|
||||||
|
tag operator++(any const&,int);
|
||||||
|
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3202)) \
|
||||||
|
|| BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
|
||||||
|
# define BOOST_comma(a,b) (a)
|
||||||
|
# else
|
||||||
|
// In case an operator++ is found that returns void, we'll use ++x,0
|
||||||
|
tag operator,(tag,int);
|
||||||
|
# define BOOST_comma(a,b) (a,b)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
// two check overloads help us identify which operator++ was picked
|
||||||
|
char (& check(tag) )[2];
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
char check(T const&);
|
||||||
|
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct impl
|
||||||
|
{
|
||||||
|
static typename boost::remove_cv<T>::type& x;
|
||||||
|
|
||||||
|
BOOST_STATIC_CONSTANT(
|
||||||
|
bool
|
||||||
|
, value = sizeof(is_incrementable_::check(BOOST_comma(++x,0))) == 1
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct postfix_impl
|
||||||
|
{
|
||||||
|
static typename boost::remove_cv<T>::type& x;
|
||||||
|
|
||||||
|
BOOST_STATIC_CONSTANT(
|
||||||
|
bool
|
||||||
|
, value = sizeof(is_incrementable_::check(BOOST_comma(x++,0))) == 1
|
||||||
|
);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
# undef BOOST_comma
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
struct is_incrementable
|
||||||
|
BOOST_TT_AUX_BOOL_C_BASE(::boost::detail::is_incrementable_::impl<T>::value)
|
||||||
|
{
|
||||||
|
BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(::boost::detail::is_incrementable_::impl<T>::value)
|
||||||
|
BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_incrementable,(T))
|
||||||
|
};
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
struct is_postfix_incrementable
|
||||||
|
BOOST_TT_AUX_BOOL_C_BASE(::boost::detail::is_incrementable_::impl<T>::value)
|
||||||
|
{
|
||||||
|
BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(::boost::detail::is_incrementable_::postfix_impl<T>::value)
|
||||||
|
BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_postfix_incrementable,(T))
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace detail
|
||||||
|
|
||||||
|
BOOST_TT_AUX_TEMPLATE_ARITY_SPEC(1, ::boost::detail::is_incrementable)
|
||||||
|
BOOST_TT_AUX_TEMPLATE_ARITY_SPEC(1, ::boost::detail::is_postfix_incrementable)
|
||||||
|
|
||||||
|
} // namespace boost
|
||||||
|
|
||||||
|
# include <boost/type_traits/detail/bool_trait_undef.hpp>
|
||||||
|
|
||||||
|
#endif // IS_INCREMENTABLE_DWA200415_HPP
|
61
library/include/boost/detail/is_xxx.hpp
Normal file
61
library/include/boost/detail/is_xxx.hpp
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
// Copyright David Abrahams 2005. 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)
|
||||||
|
#ifndef BOOST_DETAIL_IS_XXX_DWA20051011_HPP
|
||||||
|
# define BOOST_DETAIL_IS_XXX_DWA20051011_HPP
|
||||||
|
|
||||||
|
# include <boost/config.hpp>
|
||||||
|
# include <boost/mpl/bool.hpp>
|
||||||
|
# include <boost/preprocessor/enum_params.hpp>
|
||||||
|
|
||||||
|
# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
|
||||||
|
# include <boost/type_traits/is_reference.hpp>
|
||||||
|
# include <boost/type_traits/add_reference.hpp>
|
||||||
|
|
||||||
|
# define BOOST_DETAIL_IS_XXX_DEF(name, qualified_name, nargs) \
|
||||||
|
template <class X_> \
|
||||||
|
struct is_##name \
|
||||||
|
{ \
|
||||||
|
typedef char yes; \
|
||||||
|
typedef char (&no)[2]; \
|
||||||
|
\
|
||||||
|
static typename add_reference<X_>::type dummy; \
|
||||||
|
\
|
||||||
|
struct helpers \
|
||||||
|
{ \
|
||||||
|
template < BOOST_PP_ENUM_PARAMS_Z(1, nargs, class U) > \
|
||||||
|
static yes test( \
|
||||||
|
qualified_name< BOOST_PP_ENUM_PARAMS_Z(1, nargs, U) >&, int \
|
||||||
|
); \
|
||||||
|
\
|
||||||
|
template <class U> \
|
||||||
|
static no test(U&, ...); \
|
||||||
|
}; \
|
||||||
|
\
|
||||||
|
BOOST_STATIC_CONSTANT( \
|
||||||
|
bool, value \
|
||||||
|
= !is_reference<X_>::value \
|
||||||
|
& (sizeof(helpers::test(dummy, 0)) == sizeof(yes))); \
|
||||||
|
\
|
||||||
|
typedef mpl::bool_<value> type; \
|
||||||
|
};
|
||||||
|
|
||||||
|
# else
|
||||||
|
|
||||||
|
# define BOOST_DETAIL_IS_XXX_DEF(name, qualified_name, nargs) \
|
||||||
|
template <class T> \
|
||||||
|
struct is_##name : mpl::false_ \
|
||||||
|
{ \
|
||||||
|
}; \
|
||||||
|
\
|
||||||
|
template < BOOST_PP_ENUM_PARAMS_Z(1, nargs, class T) > \
|
||||||
|
struct is_##name< \
|
||||||
|
qualified_name< BOOST_PP_ENUM_PARAMS_Z(1, nargs, T) > \
|
||||||
|
> \
|
||||||
|
: mpl::true_ \
|
||||||
|
{ \
|
||||||
|
};
|
||||||
|
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#endif // BOOST_DETAIL_IS_XXX_DWA20051011_HPP
|
494
library/include/boost/detail/iterator.hpp
Normal file
494
library/include/boost/detail/iterator.hpp
Normal file
@ -0,0 +1,494 @@
|
|||||||
|
// (C) Copyright David Abrahams 2002.
|
||||||
|
// 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)
|
||||||
|
|
||||||
|
// Boost versions of
|
||||||
|
//
|
||||||
|
// std::iterator_traits<>::iterator_category
|
||||||
|
// std::iterator_traits<>::difference_type
|
||||||
|
// std::distance()
|
||||||
|
//
|
||||||
|
// ...for all compilers and iterators
|
||||||
|
//
|
||||||
|
// Additionally, if X is a pointer
|
||||||
|
// std::iterator_traits<X>::pointer
|
||||||
|
|
||||||
|
// Otherwise, if partial specialization is supported or X is not a pointer
|
||||||
|
// std::iterator_traits<X>::value_type
|
||||||
|
// std::iterator_traits<X>::pointer
|
||||||
|
// std::iterator_traits<X>::reference
|
||||||
|
//
|
||||||
|
// See http://www.boost.org for most recent version including documentation.
|
||||||
|
|
||||||
|
// Revision History
|
||||||
|
// 04 Mar 2001 - More attempted fixes for Intel C++ (David Abrahams)
|
||||||
|
// 03 Mar 2001 - Put all implementation into namespace
|
||||||
|
// boost::detail::iterator_traits_. Some progress made on fixes
|
||||||
|
// for Intel compiler. (David Abrahams)
|
||||||
|
// 02 Mar 2001 - Changed BOOST_MSVC to BOOST_MSVC_STD_ITERATOR in a few
|
||||||
|
// places. (Jeremy Siek)
|
||||||
|
// 19 Feb 2001 - Improved workarounds for stock MSVC6; use yes_type and
|
||||||
|
// no_type from type_traits.hpp; stopped trying to remove_cv
|
||||||
|
// before detecting is_pointer, in honor of the new type_traits
|
||||||
|
// semantics. (David Abrahams)
|
||||||
|
// 13 Feb 2001 - Make it work with nearly all standard-conforming iterators
|
||||||
|
// under raw VC6. The one category remaining which will fail is
|
||||||
|
// that of iterators derived from std::iterator but not
|
||||||
|
// boost::iterator and which redefine difference_type.
|
||||||
|
// 11 Feb 2001 - Clean away code which can never be used (David Abrahams)
|
||||||
|
// 09 Feb 2001 - Always have a definition for each traits member, even if it
|
||||||
|
// can't be properly deduced. These will be incomplete types in
|
||||||
|
// some cases (undefined<void>), but it helps suppress MSVC errors
|
||||||
|
// elsewhere (David Abrahams)
|
||||||
|
// 07 Feb 2001 - Support for more of the traits members where possible, making
|
||||||
|
// this useful as a replacement for std::iterator_traits<T> when
|
||||||
|
// used as a default template parameter.
|
||||||
|
// 06 Feb 2001 - Removed useless #includes of standard library headers
|
||||||
|
// (David Abrahams)
|
||||||
|
|
||||||
|
#ifndef ITERATOR_DWA122600_HPP_
|
||||||
|
# define ITERATOR_DWA122600_HPP_
|
||||||
|
|
||||||
|
# include <boost/config.hpp>
|
||||||
|
# include <iterator>
|
||||||
|
|
||||||
|
// STLPort 4.0 and betas have a bug when debugging is enabled and there is no
|
||||||
|
// partial specialization: instead of an iterator_category typedef, the standard
|
||||||
|
// container iterators have _Iterator_category.
|
||||||
|
//
|
||||||
|
// Also, whether debugging is enabled or not, there is a broken specialization
|
||||||
|
// of std::iterator<output_iterator_tag,void,void,void,void> which has no
|
||||||
|
// typedefs but iterator_category.
|
||||||
|
# if defined(__SGI_STL_PORT)
|
||||||
|
|
||||||
|
# if (__SGI_STL_PORT <= 0x410) && !defined(__STL_CLASS_PARTIAL_SPECIALIZATION) && defined(__STL_DEBUG)
|
||||||
|
# define BOOST_BAD_CONTAINER_ITERATOR_CATEGORY_TYPEDEF
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# define BOOST_BAD_OUTPUT_ITERATOR_SPECIALIZATION
|
||||||
|
|
||||||
|
# endif // STLPort <= 4.1b4 && no partial specialization
|
||||||
|
|
||||||
|
# if !defined(BOOST_NO_STD_ITERATOR_TRAITS) \
|
||||||
|
&& !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
|
||||||
|
&& !defined(BOOST_MSVC_STD_ITERATOR)
|
||||||
|
|
||||||
|
namespace boost { namespace detail {
|
||||||
|
|
||||||
|
// Define a new template so it can be specialized
|
||||||
|
template <class Iterator>
|
||||||
|
struct iterator_traits
|
||||||
|
: std::iterator_traits<Iterator>
|
||||||
|
{};
|
||||||
|
using std::distance;
|
||||||
|
|
||||||
|
}} // namespace boost::detail
|
||||||
|
|
||||||
|
# else
|
||||||
|
|
||||||
|
# if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
|
||||||
|
&& !defined(BOOST_MSVC_STD_ITERATOR)
|
||||||
|
|
||||||
|
// This is the case where everything conforms except BOOST_NO_STD_ITERATOR_TRAITS
|
||||||
|
|
||||||
|
namespace boost { namespace detail {
|
||||||
|
|
||||||
|
// Rogue Wave Standard Library fools itself into thinking partial
|
||||||
|
// specialization is missing on some platforms (e.g. Sun), so fails to
|
||||||
|
// supply iterator_traits!
|
||||||
|
template <class Iterator>
|
||||||
|
struct iterator_traits
|
||||||
|
{
|
||||||
|
typedef typename Iterator::value_type value_type;
|
||||||
|
typedef typename Iterator::reference reference;
|
||||||
|
typedef typename Iterator::pointer pointer;
|
||||||
|
typedef typename Iterator::difference_type difference_type;
|
||||||
|
typedef typename Iterator::iterator_category iterator_category;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct iterator_traits<T*>
|
||||||
|
{
|
||||||
|
typedef T value_type;
|
||||||
|
typedef T& reference;
|
||||||
|
typedef T* pointer;
|
||||||
|
typedef std::ptrdiff_t difference_type;
|
||||||
|
typedef std::random_access_iterator_tag iterator_category;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct iterator_traits<T const*>
|
||||||
|
{
|
||||||
|
typedef T value_type;
|
||||||
|
typedef T const& reference;
|
||||||
|
typedef T const* pointer;
|
||||||
|
typedef std::ptrdiff_t difference_type;
|
||||||
|
typedef std::random_access_iterator_tag iterator_category;
|
||||||
|
};
|
||||||
|
|
||||||
|
}} // namespace boost::detail
|
||||||
|
|
||||||
|
# else
|
||||||
|
|
||||||
|
# include <boost/type_traits/remove_const.hpp>
|
||||||
|
# include <boost/type_traits/detail/yes_no_type.hpp>
|
||||||
|
# include <boost/type_traits/is_pointer.hpp>
|
||||||
|
|
||||||
|
# ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
|
||||||
|
# include <boost/type_traits/is_same.hpp>
|
||||||
|
# include <boost/type_traits/remove_pointer.hpp>
|
||||||
|
# endif
|
||||||
|
# ifdef BOOST_BAD_OUTPUT_ITERATOR_SPECIALIZATION
|
||||||
|
# include <boost/type_traits/is_base_and_derived.hpp>
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# include <boost/mpl/if.hpp>
|
||||||
|
# include <boost/mpl/has_xxx.hpp>
|
||||||
|
# include <cstddef>
|
||||||
|
|
||||||
|
// should be the last #include
|
||||||
|
# include "boost/type_traits/detail/bool_trait_def.hpp"
|
||||||
|
|
||||||
|
namespace boost { namespace detail {
|
||||||
|
|
||||||
|
BOOST_MPL_HAS_XXX_TRAIT_DEF(value_type)
|
||||||
|
BOOST_MPL_HAS_XXX_TRAIT_DEF(reference)
|
||||||
|
BOOST_MPL_HAS_XXX_TRAIT_DEF(pointer)
|
||||||
|
BOOST_MPL_HAS_XXX_TRAIT_DEF(difference_type)
|
||||||
|
BOOST_MPL_HAS_XXX_TRAIT_DEF(iterator_category)
|
||||||
|
|
||||||
|
// is_mutable_iterator --
|
||||||
|
//
|
||||||
|
// A metafunction returning true iff T is a mutable iterator type
|
||||||
|
// with a nested value_type. Will only work portably with iterators
|
||||||
|
// whose operator* returns a reference, but that seems to be OK for
|
||||||
|
// the iterators supplied by Dinkumware. Some input iterators may
|
||||||
|
// compile-time if they arrive here, and if the compiler is strict
|
||||||
|
// about not taking the address of an rvalue.
|
||||||
|
|
||||||
|
// This one detects ordinary mutable iterators - the result of
|
||||||
|
// operator* is convertible to the value_type.
|
||||||
|
template <class T>
|
||||||
|
type_traits::yes_type is_mutable_iterator_helper(T const*, BOOST_DEDUCED_TYPENAME T::value_type*);
|
||||||
|
|
||||||
|
// Since you can't take the address of an rvalue, the guts of
|
||||||
|
// is_mutable_iterator_impl will fail if we use &*t directly. This
|
||||||
|
// makes sure we can still work with non-lvalue iterators.
|
||||||
|
template <class T> T* mutable_iterator_lvalue_helper(T& x);
|
||||||
|
int mutable_iterator_lvalue_helper(...);
|
||||||
|
|
||||||
|
|
||||||
|
// This one detects output iterators such as ostream_iterator which
|
||||||
|
// return references to themselves.
|
||||||
|
template <class T>
|
||||||
|
type_traits::yes_type is_mutable_iterator_helper(T const*, T const*);
|
||||||
|
|
||||||
|
type_traits::no_type is_mutable_iterator_helper(...);
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct is_mutable_iterator_impl
|
||||||
|
{
|
||||||
|
static T t;
|
||||||
|
|
||||||
|
BOOST_STATIC_CONSTANT(
|
||||||
|
bool, value = sizeof(
|
||||||
|
detail::is_mutable_iterator_helper(
|
||||||
|
(T*)0
|
||||||
|
, mutable_iterator_lvalue_helper(*t) // like &*t
|
||||||
|
))
|
||||||
|
== sizeof(type_traits::yes_type)
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
BOOST_TT_AUX_BOOL_TRAIT_DEF1(
|
||||||
|
is_mutable_iterator,T,::boost::detail::is_mutable_iterator_impl<T>::value)
|
||||||
|
|
||||||
|
|
||||||
|
// is_full_iterator_traits --
|
||||||
|
//
|
||||||
|
// A metafunction returning true iff T has all the requisite nested
|
||||||
|
// types to satisfy the requirements for a fully-conforming
|
||||||
|
// iterator_traits implementation.
|
||||||
|
template <class T>
|
||||||
|
struct is_full_iterator_traits_impl
|
||||||
|
{
|
||||||
|
enum { value =
|
||||||
|
has_value_type<T>::value
|
||||||
|
& has_reference<T>::value
|
||||||
|
& has_pointer<T>::value
|
||||||
|
& has_difference_type<T>::value
|
||||||
|
& has_iterator_category<T>::value
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
BOOST_TT_AUX_BOOL_TRAIT_DEF1(
|
||||||
|
is_full_iterator_traits,T,::boost::detail::is_full_iterator_traits_impl<T>::value)
|
||||||
|
|
||||||
|
|
||||||
|
# ifdef BOOST_BAD_CONTAINER_ITERATOR_CATEGORY_TYPEDEF
|
||||||
|
BOOST_MPL_HAS_XXX_TRAIT_DEF(_Iterator_category)
|
||||||
|
|
||||||
|
// is_stlport_40_debug_iterator --
|
||||||
|
//
|
||||||
|
// A metafunction returning true iff T has all the requisite nested
|
||||||
|
// types to satisfy the requirements of an STLPort 4.0 debug iterator
|
||||||
|
// iterator_traits implementation.
|
||||||
|
template <class T>
|
||||||
|
struct is_stlport_40_debug_iterator_impl
|
||||||
|
{
|
||||||
|
enum { value =
|
||||||
|
has_value_type<T>::value
|
||||||
|
& has_reference<T>::value
|
||||||
|
& has_pointer<T>::value
|
||||||
|
& has_difference_type<T>::value
|
||||||
|
& has__Iterator_category<T>::value
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
BOOST_TT_AUX_BOOL_TRAIT_DEF1(
|
||||||
|
is_stlport_40_debug_iterator,T,::boost::detail::is_stlport_40_debug_iterator_impl<T>::value)
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct stlport_40_debug_iterator_traits
|
||||||
|
{
|
||||||
|
typedef typename T::value_type value_type;
|
||||||
|
typedef typename T::reference reference;
|
||||||
|
typedef typename T::pointer pointer;
|
||||||
|
typedef typename T::difference_type difference_type;
|
||||||
|
typedef typename T::_Iterator_category iterator_category;
|
||||||
|
};
|
||||||
|
# endif // BOOST_BAD_CONTAINER_ITERATOR_CATEGORY_TYPEDEF
|
||||||
|
|
||||||
|
template <class T> struct pointer_iterator_traits;
|
||||||
|
|
||||||
|
# ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
|
||||||
|
template <class T>
|
||||||
|
struct pointer_iterator_traits<T*>
|
||||||
|
{
|
||||||
|
typedef typename remove_const<T>::type value_type;
|
||||||
|
typedef T* pointer;
|
||||||
|
typedef T& reference;
|
||||||
|
typedef std::random_access_iterator_tag iterator_category;
|
||||||
|
typedef std::ptrdiff_t difference_type;
|
||||||
|
};
|
||||||
|
# else
|
||||||
|
|
||||||
|
// In case of no template partial specialization, and if T is a
|
||||||
|
// pointer, iterator_traits<T>::value_type can still be computed. For
|
||||||
|
// some basic types, remove_pointer is manually defined in
|
||||||
|
// type_traits/broken_compiler_spec.hpp. For others, do it yourself.
|
||||||
|
|
||||||
|
template<class P> class please_invoke_BOOST_TT_BROKEN_COMPILER_SPEC_on_cv_unqualified_pointee;
|
||||||
|
|
||||||
|
template<class P>
|
||||||
|
struct pointer_value_type
|
||||||
|
: mpl::if_<
|
||||||
|
is_same<P, typename remove_pointer<P>::type>
|
||||||
|
, please_invoke_BOOST_TT_BROKEN_COMPILER_SPEC_on_cv_unqualified_pointee<P>
|
||||||
|
, typename remove_const<
|
||||||
|
typename remove_pointer<P>::type
|
||||||
|
>::type
|
||||||
|
>
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
template<class P>
|
||||||
|
struct pointer_reference
|
||||||
|
: mpl::if_<
|
||||||
|
is_same<P, typename remove_pointer<P>::type>
|
||||||
|
, please_invoke_BOOST_TT_BROKEN_COMPILER_SPEC_on_cv_unqualified_pointee<P>
|
||||||
|
, typename remove_pointer<P>::type&
|
||||||
|
>
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct pointer_iterator_traits
|
||||||
|
{
|
||||||
|
typedef T pointer;
|
||||||
|
typedef std::random_access_iterator_tag iterator_category;
|
||||||
|
typedef std::ptrdiff_t difference_type;
|
||||||
|
|
||||||
|
typedef typename pointer_value_type<T>::type value_type;
|
||||||
|
typedef typename pointer_reference<T>::type reference;
|
||||||
|
};
|
||||||
|
|
||||||
|
# endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
|
||||||
|
|
||||||
|
// We'll sort iterator types into one of these classifications, from which we
|
||||||
|
// can determine the difference_type, pointer, reference, and value_type
|
||||||
|
template <class Iterator>
|
||||||
|
struct standard_iterator_traits
|
||||||
|
{
|
||||||
|
typedef typename Iterator::difference_type difference_type;
|
||||||
|
typedef typename Iterator::value_type value_type;
|
||||||
|
typedef typename Iterator::pointer pointer;
|
||||||
|
typedef typename Iterator::reference reference;
|
||||||
|
typedef typename Iterator::iterator_category iterator_category;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class Iterator>
|
||||||
|
struct msvc_stdlib_mutable_traits
|
||||||
|
: std::iterator_traits<Iterator>
|
||||||
|
{
|
||||||
|
typedef typename std::iterator_traits<Iterator>::distance_type difference_type;
|
||||||
|
typedef typename std::iterator_traits<Iterator>::value_type* pointer;
|
||||||
|
typedef typename std::iterator_traits<Iterator>::value_type& reference;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class Iterator>
|
||||||
|
struct msvc_stdlib_const_traits
|
||||||
|
: std::iterator_traits<Iterator>
|
||||||
|
{
|
||||||
|
typedef typename std::iterator_traits<Iterator>::distance_type difference_type;
|
||||||
|
typedef const typename std::iterator_traits<Iterator>::value_type* pointer;
|
||||||
|
typedef const typename std::iterator_traits<Iterator>::value_type& reference;
|
||||||
|
};
|
||||||
|
|
||||||
|
# ifdef BOOST_BAD_OUTPUT_ITERATOR_SPECIALIZATION
|
||||||
|
template <class Iterator>
|
||||||
|
struct is_bad_output_iterator
|
||||||
|
: is_base_and_derived<
|
||||||
|
std::iterator<std::output_iterator_tag,void,void,void,void>
|
||||||
|
, Iterator>
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
struct bad_output_iterator_traits
|
||||||
|
{
|
||||||
|
typedef void value_type;
|
||||||
|
typedef void difference_type;
|
||||||
|
typedef std::output_iterator_tag iterator_category;
|
||||||
|
typedef void pointer;
|
||||||
|
typedef void reference;
|
||||||
|
};
|
||||||
|
# endif
|
||||||
|
|
||||||
|
// If we're looking at an MSVC6 (old Dinkumware) ``standard''
|
||||||
|
// iterator, this will generate an appropriate traits class.
|
||||||
|
template <class Iterator>
|
||||||
|
struct msvc_stdlib_iterator_traits
|
||||||
|
: mpl::if_<
|
||||||
|
is_mutable_iterator<Iterator>
|
||||||
|
, msvc_stdlib_mutable_traits<Iterator>
|
||||||
|
, msvc_stdlib_const_traits<Iterator>
|
||||||
|
>::type
|
||||||
|
{};
|
||||||
|
|
||||||
|
template <class Iterator>
|
||||||
|
struct non_pointer_iterator_traits
|
||||||
|
: mpl::if_<
|
||||||
|
// if the iterator contains all the right nested types...
|
||||||
|
is_full_iterator_traits<Iterator>
|
||||||
|
// Use a standard iterator_traits implementation
|
||||||
|
, standard_iterator_traits<Iterator>
|
||||||
|
# ifdef BOOST_BAD_CONTAINER_ITERATOR_CATEGORY_TYPEDEF
|
||||||
|
// Check for STLPort 4.0 broken _Iterator_category type
|
||||||
|
, mpl::if_<
|
||||||
|
is_stlport_40_debug_iterator<Iterator>
|
||||||
|
, stlport_40_debug_iterator_traits<Iterator>
|
||||||
|
# endif
|
||||||
|
// Otherwise, assume it's a Dinkum iterator
|
||||||
|
, msvc_stdlib_iterator_traits<Iterator>
|
||||||
|
# ifdef BOOST_BAD_CONTAINER_ITERATOR_CATEGORY_TYPEDEF
|
||||||
|
>::type
|
||||||
|
# endif
|
||||||
|
>::type
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class Iterator>
|
||||||
|
struct iterator_traits_aux
|
||||||
|
: mpl::if_<
|
||||||
|
is_pointer<Iterator>
|
||||||
|
, pointer_iterator_traits<Iterator>
|
||||||
|
, non_pointer_iterator_traits<Iterator>
|
||||||
|
>::type
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class Iterator>
|
||||||
|
struct iterator_traits
|
||||||
|
{
|
||||||
|
// Explicit forwarding from base class needed to keep MSVC6 happy
|
||||||
|
// under some circumstances.
|
||||||
|
private:
|
||||||
|
# ifdef BOOST_BAD_OUTPUT_ITERATOR_SPECIALIZATION
|
||||||
|
typedef
|
||||||
|
typename mpl::if_<
|
||||||
|
is_bad_output_iterator<Iterator>
|
||||||
|
, bad_output_iterator_traits
|
||||||
|
, iterator_traits_aux<Iterator>
|
||||||
|
>::type base;
|
||||||
|
# else
|
||||||
|
typedef iterator_traits_aux<Iterator> base;
|
||||||
|
# endif
|
||||||
|
public:
|
||||||
|
typedef typename base::value_type value_type;
|
||||||
|
typedef typename base::pointer pointer;
|
||||||
|
typedef typename base::reference reference;
|
||||||
|
typedef typename base::difference_type difference_type;
|
||||||
|
typedef typename base::iterator_category iterator_category;
|
||||||
|
};
|
||||||
|
|
||||||
|
// This specialization cuts off ETI (Early Template Instantiation) for MSVC.
|
||||||
|
template <> struct iterator_traits<int>
|
||||||
|
{
|
||||||
|
typedef int value_type;
|
||||||
|
typedef int pointer;
|
||||||
|
typedef int reference;
|
||||||
|
typedef int difference_type;
|
||||||
|
typedef int iterator_category;
|
||||||
|
};
|
||||||
|
|
||||||
|
}} // namespace boost::detail
|
||||||
|
|
||||||
|
# endif // workarounds
|
||||||
|
|
||||||
|
namespace boost { namespace detail {
|
||||||
|
|
||||||
|
namespace iterator_traits_
|
||||||
|
{
|
||||||
|
template <class Iterator, class Difference>
|
||||||
|
struct distance_select
|
||||||
|
{
|
||||||
|
static Difference execute(Iterator i1, const Iterator i2, ...)
|
||||||
|
{
|
||||||
|
Difference result = 0;
|
||||||
|
while (i1 != i2)
|
||||||
|
{
|
||||||
|
++i1;
|
||||||
|
++result;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
static Difference execute(Iterator i1, const Iterator i2, std::random_access_iterator_tag*)
|
||||||
|
{
|
||||||
|
return i2 - i1;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
} // namespace boost::detail::iterator_traits_
|
||||||
|
|
||||||
|
template <class Iterator>
|
||||||
|
inline typename iterator_traits<Iterator>::difference_type
|
||||||
|
distance(Iterator first, Iterator last)
|
||||||
|
{
|
||||||
|
typedef typename iterator_traits<Iterator>::difference_type diff_t;
|
||||||
|
typedef typename ::boost::detail::iterator_traits<Iterator>::iterator_category iterator_category;
|
||||||
|
|
||||||
|
return iterator_traits_::distance_select<Iterator,diff_t>::execute(
|
||||||
|
first, last, (iterator_category*)0);
|
||||||
|
}
|
||||||
|
|
||||||
|
}}
|
||||||
|
|
||||||
|
# endif
|
||||||
|
|
||||||
|
|
||||||
|
# undef BOOST_BAD_CONTAINER_ITERATOR_CATEGORY_TYPEDEF
|
||||||
|
# undef BOOST_BAD_OUTPUT_ITERATOR_SPECIALIZATION
|
||||||
|
|
||||||
|
#endif // ITERATOR_DWA122600_HPP_
|
184
library/include/boost/detail/lcast_precision.hpp
Normal file
184
library/include/boost/detail/lcast_precision.hpp
Normal file
@ -0,0 +1,184 @@
|
|||||||
|
// Copyright Alexander Nasonov & Paul A. Bristow 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)
|
||||||
|
|
||||||
|
#ifndef BOOST_DETAIL_LCAST_PRECISION_HPP_INCLUDED
|
||||||
|
#define BOOST_DETAIL_LCAST_PRECISION_HPP_INCLUDED
|
||||||
|
|
||||||
|
#include <climits>
|
||||||
|
#include <ios>
|
||||||
|
#include <limits>
|
||||||
|
|
||||||
|
#include <boost/config.hpp>
|
||||||
|
#include <boost/integer_traits.hpp>
|
||||||
|
|
||||||
|
#ifndef BOOST_NO_IS_ABSTRACT
|
||||||
|
// Fix for SF:1358600 - lexical_cast & pure virtual functions & VC 8 STL
|
||||||
|
#include <boost/mpl/if.hpp>
|
||||||
|
#include <boost/type_traits/is_abstract.hpp>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS) || \
|
||||||
|
(defined(BOOST_MSVC) && (BOOST_MSVC<1310))
|
||||||
|
|
||||||
|
#define BOOST_LCAST_NO_COMPILE_TIME_PRECISION
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef BOOST_LCAST_NO_COMPILE_TIME_PRECISION
|
||||||
|
#include <boost/assert.hpp>
|
||||||
|
#else
|
||||||
|
#include <boost/static_assert.hpp>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
namespace boost { namespace detail {
|
||||||
|
|
||||||
|
class lcast_abstract_stub {};
|
||||||
|
|
||||||
|
#ifndef BOOST_LCAST_NO_COMPILE_TIME_PRECISION
|
||||||
|
// Calculate an argument to pass to std::ios_base::precision from
|
||||||
|
// lexical_cast. See alternative implementation for broken standard
|
||||||
|
// libraries in lcast_get_precision below. Keep them in sync, please.
|
||||||
|
template<class T>
|
||||||
|
struct lcast_precision
|
||||||
|
{
|
||||||
|
#ifdef BOOST_NO_IS_ABSTRACT
|
||||||
|
typedef std::numeric_limits<T> limits; // No fix for SF:1358600.
|
||||||
|
#else
|
||||||
|
typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_<
|
||||||
|
boost::is_abstract<T>
|
||||||
|
, std::numeric_limits<lcast_abstract_stub>
|
||||||
|
, std::numeric_limits<T>
|
||||||
|
>::type limits;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
BOOST_STATIC_CONSTANT(bool, use_default_precision =
|
||||||
|
!limits::is_specialized || limits::is_exact
|
||||||
|
);
|
||||||
|
|
||||||
|
BOOST_STATIC_CONSTANT(bool, is_specialized_bin =
|
||||||
|
!use_default_precision &&
|
||||||
|
limits::radix == 2 && limits::digits > 0
|
||||||
|
);
|
||||||
|
|
||||||
|
BOOST_STATIC_CONSTANT(bool, is_specialized_dec =
|
||||||
|
!use_default_precision &&
|
||||||
|
limits::radix == 10 && limits::digits10 > 0
|
||||||
|
);
|
||||||
|
|
||||||
|
BOOST_STATIC_CONSTANT(std::streamsize, streamsize_max =
|
||||||
|
boost::integer_traits<std::streamsize>::const_max
|
||||||
|
);
|
||||||
|
|
||||||
|
BOOST_STATIC_CONSTANT(unsigned int, precision_dec = limits::digits10 + 1U);
|
||||||
|
|
||||||
|
BOOST_STATIC_ASSERT(!is_specialized_dec ||
|
||||||
|
precision_dec <= streamsize_max + 0UL
|
||||||
|
);
|
||||||
|
|
||||||
|
BOOST_STATIC_CONSTANT(unsigned long, precision_bin =
|
||||||
|
2UL + limits::digits * 30103UL / 100000UL
|
||||||
|
);
|
||||||
|
|
||||||
|
BOOST_STATIC_ASSERT(!is_specialized_bin ||
|
||||||
|
(limits::digits + 0UL < ULONG_MAX / 30103UL &&
|
||||||
|
precision_bin > limits::digits10 + 0UL &&
|
||||||
|
precision_bin <= streamsize_max + 0UL)
|
||||||
|
);
|
||||||
|
|
||||||
|
BOOST_STATIC_CONSTANT(std::streamsize, value =
|
||||||
|
is_specialized_bin ? precision_bin
|
||||||
|
: is_specialized_dec ? precision_dec : 6
|
||||||
|
);
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
template<class T>
|
||||||
|
inline std::streamsize lcast_get_precision(T* = 0)
|
||||||
|
{
|
||||||
|
#ifndef BOOST_LCAST_NO_COMPILE_TIME_PRECISION
|
||||||
|
return lcast_precision<T>::value;
|
||||||
|
#else // Follow lcast_precision algorithm at run-time:
|
||||||
|
|
||||||
|
#ifdef BOOST_NO_IS_ABSTRACT
|
||||||
|
typedef std::numeric_limits<T> limits; // No fix for SF:1358600.
|
||||||
|
#else
|
||||||
|
typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_<
|
||||||
|
boost::is_abstract<T>
|
||||||
|
, std::numeric_limits<lcast_abstract_stub>
|
||||||
|
, std::numeric_limits<T>
|
||||||
|
>::type limits;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
bool const use_default_precision =
|
||||||
|
!limits::is_specialized || limits::is_exact;
|
||||||
|
|
||||||
|
if(!use_default_precision)
|
||||||
|
{ // Includes all built-in floating-point types, float, double ...
|
||||||
|
// and UDT types for which digits (significand bits) is defined (not zero)
|
||||||
|
|
||||||
|
bool const is_specialized_bin =
|
||||||
|
limits::radix == 2 && limits::digits > 0;
|
||||||
|
bool const is_specialized_dec =
|
||||||
|
limits::radix == 10 && limits::digits10 > 0;
|
||||||
|
std::streamsize const streamsize_max =
|
||||||
|
(boost::integer_traits<std::streamsize>::max)();
|
||||||
|
|
||||||
|
if(is_specialized_bin)
|
||||||
|
{ // Floating-point types with
|
||||||
|
// limits::digits defined by the specialization.
|
||||||
|
|
||||||
|
unsigned long const digits = limits::digits;
|
||||||
|
unsigned long const precision = 2UL + digits * 30103UL / 100000UL;
|
||||||
|
// unsigned long is selected because it is at least 32-bits
|
||||||
|
// and thus ULONG_MAX / 30103UL is big enough for all types.
|
||||||
|
BOOST_ASSERT(
|
||||||
|
digits < ULONG_MAX / 30103UL &&
|
||||||
|
precision > limits::digits10 + 0UL &&
|
||||||
|
precision <= streamsize_max + 0UL
|
||||||
|
);
|
||||||
|
return precision;
|
||||||
|
}
|
||||||
|
else if(is_specialized_dec)
|
||||||
|
{ // Decimal Floating-point type, most likely a User Defined Type
|
||||||
|
// rather than a real floating-point hardware type.
|
||||||
|
unsigned int const precision = limits::digits10 + 1U;
|
||||||
|
BOOST_ASSERT(precision <= streamsize_max + 0UL);
|
||||||
|
return precision;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Integral type (for which precision has no effect)
|
||||||
|
// or type T for which limits is NOT specialized,
|
||||||
|
// so assume stream precision remains the default 6 decimal digits.
|
||||||
|
// Warning: if your User-defined Floating-point type T is NOT specialized,
|
||||||
|
// then you may lose accuracy by only using 6 decimal digits.
|
||||||
|
// To avoid this, you need to specialize T with either
|
||||||
|
// radix == 2 and digits == the number of significand bits,
|
||||||
|
// OR
|
||||||
|
// radix = 10 and digits10 == the number of decimal digits.
|
||||||
|
|
||||||
|
return 6;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
template<class T>
|
||||||
|
inline void lcast_set_precision(std::ios_base& stream, T*)
|
||||||
|
{
|
||||||
|
stream.precision(lcast_get_precision<T>());
|
||||||
|
}
|
||||||
|
|
||||||
|
template<class Source, class Target>
|
||||||
|
inline void lcast_set_precision(std::ios_base& stream, Source*, Target*)
|
||||||
|
{
|
||||||
|
std::streamsize const s = lcast_get_precision((Source*)0);
|
||||||
|
std::streamsize const t = lcast_get_precision((Target*)0);
|
||||||
|
stream.precision(s > t ? s : t);
|
||||||
|
}
|
||||||
|
|
||||||
|
}}
|
||||||
|
|
||||||
|
#endif // BOOST_DETAIL_LCAST_PRECISION_HPP_INCLUDED
|
||||||
|
|
42
library/include/boost/detail/lightweight_mutex.hpp
Normal file
42
library/include/boost/detail/lightweight_mutex.hpp
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
#ifndef BOOST_DETAIL_LIGHTWEIGHT_MUTEX_HPP_INCLUDED
|
||||||
|
#define BOOST_DETAIL_LIGHTWEIGHT_MUTEX_HPP_INCLUDED
|
||||||
|
|
||||||
|
// MS compatible compilers support #pragma once
|
||||||
|
|
||||||
|
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
|
||||||
|
# pragma once
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// boost/detail/lightweight_mutex.hpp - lightweight mutex
|
||||||
|
//
|
||||||
|
// Copyright (c) 2002, 2003 Peter Dimov and Multi Media Ltd.
|
||||||
|
//
|
||||||
|
// 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)
|
||||||
|
//
|
||||||
|
// typedef <unspecified> boost::detail::lightweight_mutex;
|
||||||
|
//
|
||||||
|
// boost::detail::lightweight_mutex is a header-only implementation of
|
||||||
|
// a subset of the Mutex concept requirements:
|
||||||
|
//
|
||||||
|
// http://www.boost.org/doc/html/threads/concepts.html#threads.concepts.Mutex
|
||||||
|
//
|
||||||
|
// It maps to a CRITICAL_SECTION on Windows or a pthread_mutex on POSIX.
|
||||||
|
//
|
||||||
|
|
||||||
|
#include <boost/config.hpp>
|
||||||
|
|
||||||
|
#if !defined(BOOST_HAS_THREADS)
|
||||||
|
# include <boost/detail/lwm_nop.hpp>
|
||||||
|
#elif defined(BOOST_HAS_PTHREADS)
|
||||||
|
# include <boost/detail/lwm_pthreads.hpp>
|
||||||
|
#elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__)
|
||||||
|
# include <boost/detail/lwm_win32_cs.hpp>
|
||||||
|
#else
|
||||||
|
// Use #define BOOST_DISABLE_THREADS to avoid the error
|
||||||
|
# error Unrecognized threading platform
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // #ifndef BOOST_DETAIL_LIGHTWEIGHT_MUTEX_HPP_INCLUDED
|
75
library/include/boost/detail/lightweight_test.hpp
Normal file
75
library/include/boost/detail/lightweight_test.hpp
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
#ifndef BOOST_DETAIL_LIGHTWEIGHT_TEST_HPP_INCLUDED
|
||||||
|
#define BOOST_DETAIL_LIGHTWEIGHT_TEST_HPP_INCLUDED
|
||||||
|
|
||||||
|
// MS compatible compilers support #pragma once
|
||||||
|
|
||||||
|
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
|
||||||
|
# pragma once
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// boost/detail/lightweight_test.hpp - lightweight test library
|
||||||
|
//
|
||||||
|
// Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
|
||||||
|
//
|
||||||
|
// 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)
|
||||||
|
//
|
||||||
|
// BOOST_TEST(expression)
|
||||||
|
// BOOST_ERROR(message)
|
||||||
|
//
|
||||||
|
// int boost::report_errors()
|
||||||
|
//
|
||||||
|
|
||||||
|
#include <boost/current_function.hpp>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
namespace boost
|
||||||
|
{
|
||||||
|
|
||||||
|
namespace detail
|
||||||
|
{
|
||||||
|
|
||||||
|
inline int & test_errors()
|
||||||
|
{
|
||||||
|
static int x = 0;
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void test_failed_impl(char const * expr, char const * file, int line, char const * function)
|
||||||
|
{
|
||||||
|
std::cerr << file << "(" << line << "): test '" << expr << "' failed in function '" << function << "'" << std::endl;
|
||||||
|
++test_errors();
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void error_impl(char const * msg, char const * file, int line, char const * function)
|
||||||
|
{
|
||||||
|
std::cerr << file << "(" << line << "): " << msg << " in function '" << function << "'" << std::endl;
|
||||||
|
++test_errors();
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace detail
|
||||||
|
|
||||||
|
inline int report_errors()
|
||||||
|
{
|
||||||
|
int errors = detail::test_errors();
|
||||||
|
|
||||||
|
if(errors == 0)
|
||||||
|
{
|
||||||
|
std::cerr << "No errors detected." << std::endl;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
std::cerr << errors << " error" << (errors == 1? "": "s") << " detected." << std::endl;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace boost
|
||||||
|
|
||||||
|
#define BOOST_TEST(expr) ((expr)? (void)0: ::boost::detail::test_failed_impl(#expr, __FILE__, __LINE__, BOOST_CURRENT_FUNCTION))
|
||||||
|
#define BOOST_ERROR(msg) ::boost::detail::error_impl(msg, __FILE__, __LINE__, BOOST_CURRENT_FUNCTION)
|
||||||
|
|
||||||
|
#endif // #ifndef BOOST_DETAIL_LIGHTWEIGHT_TEST_HPP_INCLUDED
|
135
library/include/boost/detail/lightweight_thread.hpp
Normal file
135
library/include/boost/detail/lightweight_thread.hpp
Normal file
@ -0,0 +1,135 @@
|
|||||||
|
#ifndef BOOST_DETAIL_LIGHTWEIGHT_THREAD_HPP_INCLUDED
|
||||||
|
#define BOOST_DETAIL_LIGHTWEIGHT_THREAD_HPP_INCLUDED
|
||||||
|
|
||||||
|
// MS compatible compilers support #pragma once
|
||||||
|
|
||||||
|
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
|
||||||
|
# pragma once
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// boost/detail/lightweight_thread.hpp
|
||||||
|
//
|
||||||
|
// Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
|
||||||
|
// Copyright (c) 2008 Peter Dimov
|
||||||
|
//
|
||||||
|
// 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
|
||||||
|
|
||||||
|
#include <boost/config.hpp>
|
||||||
|
#include <memory>
|
||||||
|
#include <cerrno>
|
||||||
|
|
||||||
|
// pthread_create, pthread_join
|
||||||
|
|
||||||
|
#if defined( BOOST_HAS_PTHREADS )
|
||||||
|
|
||||||
|
#include <pthread.h>
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#include <windows.h>
|
||||||
|
#include <process.h>
|
||||||
|
|
||||||
|
typedef HANDLE pthread_t;
|
||||||
|
|
||||||
|
int pthread_create( pthread_t * thread, void const *, unsigned (__stdcall * start_routine) (void*), void* arg )
|
||||||
|
{
|
||||||
|
HANDLE h = (HANDLE)_beginthreadex( 0, 0, start_routine, arg, 0, 0 );
|
||||||
|
|
||||||
|
if( h != 0 )
|
||||||
|
{
|
||||||
|
*thread = h;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return EAGAIN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int pthread_join( pthread_t thread, void ** /*value_ptr*/ )
|
||||||
|
{
|
||||||
|
::WaitForSingleObject( thread, INFINITE );
|
||||||
|
::CloseHandle( thread );
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// template<class F> int lw_thread_create( pthread_t & pt, F f );
|
||||||
|
|
||||||
|
namespace boost
|
||||||
|
{
|
||||||
|
|
||||||
|
namespace detail
|
||||||
|
{
|
||||||
|
|
||||||
|
class lw_abstract_thread
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
virtual ~lw_abstract_thread() {}
|
||||||
|
virtual void run() = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
#if defined( BOOST_HAS_PTHREADS )
|
||||||
|
|
||||||
|
extern "C" void * lw_thread_routine( void * pv )
|
||||||
|
{
|
||||||
|
std::auto_ptr<lw_abstract_thread> pt( static_cast<lw_abstract_thread *>( pv ) );
|
||||||
|
|
||||||
|
pt->run();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
unsigned __stdcall lw_thread_routine( void * pv )
|
||||||
|
{
|
||||||
|
std::auto_ptr<lw_abstract_thread> pt( static_cast<lw_abstract_thread *>( pv ) );
|
||||||
|
|
||||||
|
pt->run();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
template<class F> class lw_thread_impl: public lw_abstract_thread
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit lw_thread_impl( F f ): f_( f )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void run()
|
||||||
|
{
|
||||||
|
f_();
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
F f_;
|
||||||
|
};
|
||||||
|
|
||||||
|
template<class F> int lw_thread_create( pthread_t & pt, F f )
|
||||||
|
{
|
||||||
|
std::auto_ptr<lw_abstract_thread> p( new lw_thread_impl<F>( f ) );
|
||||||
|
|
||||||
|
int r = pthread_create( &pt, 0, lw_thread_routine, p.get() );
|
||||||
|
|
||||||
|
if( r == 0 )
|
||||||
|
{
|
||||||
|
p.release();
|
||||||
|
}
|
||||||
|
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace detail
|
||||||
|
} // namespace boost
|
||||||
|
|
||||||
|
#endif // #ifndef BOOST_DETAIL_LIGHTWEIGHT_THREAD_HPP_INCLUDED
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user