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:
		| @@ -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<42>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
		Reference in New Issue
	
	Block a user