diff options
Diffstat (limited to '3rdParty/Boost/src')
506 files changed, 2279 insertions, 20041 deletions
diff --git a/3rdParty/Boost/src/boost/algorithm/string/detail/find_format.hpp b/3rdParty/Boost/src/boost/algorithm/string/detail/find_format.hpp index 7f5f780..8b9ad42 100644 --- a/3rdParty/Boost/src/boost/algorithm/string/detail/find_format.hpp +++ b/3rdParty/Boost/src/boost/algorithm/string/detail/find_format.hpp @@ -74,17 +74,17 @@ namespace boost { const InputT& Input, FormatterT Formatter, const FindResultT& FindResult ) - { + { if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) { - return ::boost::algorithm::detail::find_format_copy_impl2( - Output, - Input, - Formatter, - FindResult, - Formatter(FindResult) ); + return ::boost::algorithm::detail::find_format_copy_impl2( + Output, + Input, + Formatter, + FindResult, + Formatter(FindResult) ); } else { return std::copy( ::boost::begin(Input), ::boost::end(Input), Output ); - } + } } @@ -137,14 +137,14 @@ namespace boost { const FindResultT& FindResult) { if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) { - return ::boost::algorithm::detail::find_format_copy_impl2( - Input, - Formatter, - FindResult, - Formatter(FindResult) ); + return ::boost::algorithm::detail::find_format_copy_impl2( + Input, + Formatter, + FindResult, + Formatter(FindResult) ); } else { return Input; - } + } } // replace implementation ----------------------------------------------------// @@ -189,12 +189,12 @@ namespace boost { const FindResultT& FindResult) { if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) { - ::boost::algorithm::detail::find_format_impl2( - Input, - Formatter, - FindResult, - Formatter(FindResult) ); - } + ::boost::algorithm::detail::find_format_impl2( + Input, + Formatter, + FindResult, + Formatter(FindResult) ); + } } } // namespace detail diff --git a/3rdParty/Boost/src/boost/algorithm/string/detail/find_format_all.hpp b/3rdParty/Boost/src/boost/algorithm/string/detail/find_format_all.hpp index 0f184a3..978710c 100644 --- a/3rdParty/Boost/src/boost/algorithm/string/detail/find_format_all.hpp +++ b/3rdParty/Boost/src/boost/algorithm/string/detail/find_format_all.hpp @@ -84,18 +84,18 @@ namespace boost { FinderT Finder, FormatterT Formatter, const FindResultT& FindResult ) - { + { if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) { - return ::boost::algorithm::detail::find_format_all_copy_impl2( - Output, - Input, - Finder, - Formatter, - FindResult, - Formatter(FindResult) ); + return ::boost::algorithm::detail::find_format_all_copy_impl2( + Output, + Input, + Finder, + Formatter, + FindResult, + Formatter(FindResult) ); } else { return std::copy( ::boost::begin(Input), ::boost::end(Input), Output ); - } + } } // find_format_all_copy implementation ----------------------------------------------// @@ -161,15 +161,15 @@ namespace boost { const FindResultT& FindResult) { if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) { - return ::boost::algorithm::detail::find_format_all_copy_impl2( - Input, - Finder, - Formatter, - FindResult, - Formatter(FindResult) ); + return ::boost::algorithm::detail::find_format_all_copy_impl2( + Input, + Finder, + Formatter, + FindResult, + Formatter(FindResult) ); } else { return Input; - } + } } // find_format_all implementation ------------------------------------------------// @@ -257,13 +257,13 @@ namespace boost { FindResultT FindResult) { if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) { - ::boost::algorithm::detail::find_format_all_impl2( - Input, - Finder, - Formatter, - FindResult, - Formatter(FindResult) ); - } + ::boost::algorithm::detail::find_format_all_impl2( + Input, + Finder, + Formatter, + FindResult, + Formatter(FindResult) ); + } } } // namespace detail diff --git a/3rdParty/Boost/src/boost/algorithm/string/detail/find_format_store.hpp b/3rdParty/Boost/src/boost/algorithm/string/detail/find_format_store.hpp index 4872c5a..e8bd84a 100644 --- a/3rdParty/Boost/src/boost/algorithm/string/detail/find_format_store.hpp +++ b/3rdParty/Boost/src/boost/algorithm/string/detail/find_format_store.hpp @@ -53,7 +53,7 @@ namespace boost { { iterator_range<ForwardIteratorT>::operator=(FindResult); if( !this->empty() ) { - m_FormatResult=m_Formatter(FindResult); + m_FormatResult=m_Formatter(FindResult); } return *this; diff --git a/3rdParty/Boost/src/boost/algorithm/string/find_iterator.hpp b/3rdParty/Boost/src/boost/algorithm/string/find_iterator.hpp index 72696c7..b72ba7c 100644 --- a/3rdParty/Boost/src/boost/algorithm/string/find_iterator.hpp +++ b/3rdParty/Boost/src/boost/algorithm/string/find_iterator.hpp @@ -259,7 +259,11 @@ namespace boost { m_End(End), m_bEof(false) { - increment(); + // force the correct behavior for empty sequences and yield at least one token + if(Begin!=End) + { + increment(); + } } //! Constructor /*! @@ -278,7 +282,11 @@ namespace boost { m_Next=::boost::begin(lit_col); m_End=::boost::end(lit_col); - increment(); + // force the correct behavior for empty sequences and yield at least one token + if(m_Next!=m_End) + { + increment(); + } } diff --git a/3rdParty/Boost/src/boost/archive/archive_exception.hpp b/3rdParty/Boost/src/boost/archive/archive_exception.hpp deleted file mode 100644 index 242f752..0000000 --- a/3rdParty/Boost/src/boost/archive/archive_exception.hpp +++ /dev/null @@ -1,97 +0,0 @@ -#ifndef BOOST_ARCHIVE_ARCHIVE_EXCEPTION_HPP -#define BOOST_ARCHIVE_ARCHIVE_EXCEPTION_HPP - -// MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 -// archive/archive_exception.hpp: - -// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . -// 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) - -// See http://www.boost.org for updates, documentation, and revision history. - -#include <exception> -#include <cassert> -#include <string> - -#include <boost/config.hpp> -#include <boost/preprocessor/empty.hpp> -#include <boost/archive/detail/decl.hpp> - -// note: the only reason this is in here is that windows header -// includes #define exception_code _exception_code (arrrgghhhh!). -// the most expedient way to address this is be sure that this -// header is always included whenever this header file is included. -#if defined(BOOST_WINDOWS) -#include <excpt.h> -#endif - -#include <boost/archive/detail/abi_prefix.hpp> // must be the last header - -namespace boost { -namespace archive { - -////////////////////////////////////////////////////////////////////// -// exceptions thrown by archives -// -class BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY()) archive_exception : - public virtual std::exception -{ -public: - typedef enum { - no_exception, // initialized without code - other_exception, // any excepton not listed below - unregistered_class, // attempt to serialize a pointer of an - // an unregistered class - invalid_signature, // first line of archive does not contain - // expected string - unsupported_version,// archive created with library version - // subsequent to this one - pointer_conflict, // an attempt has been made to directly - // serialize an object which has - // already been serialzed through a pointer. - // Were this permited, the archive load would result - // in the creation of an extra copy of the obect. - incompatible_native_format, // attempt to read native binary format - // on incompatible platform - array_size_too_short,// array being loaded doesn't fit in array allocated - input_stream_error, // error on input stream - invalid_class_name, // class name greater than the maximum permitted. - // most likely a corrupted archive or an attempt - // to insert virus via buffer overrun method. - unregistered_cast, // base - derived relationship not registered with - // void_cast_register - unsupported_class_version, // type saved with a version # greater than the - // one used by the program. This indicates that the proggram - // needs to be rebuilt. - multiple_code_instantiation, // code for implementing serialization for some - // type has been instantiated in more than one module. - output_stream_error // error on input stream - } exception_code; -protected: - std::string m_msg; -public: - exception_code code; - archive_exception( - exception_code c, - const char * e1 = NULL, - const char * e2 = NULL - ); - ~archive_exception() throw (); - virtual const char *what( ) const throw(); -protected: - archive_exception(); -}; - -}// namespace archive -}// namespace boost - -#include <boost/archive/detail/abi_suffix.hpp> // pops abi_suffix.hpp pragmas - -#endif //BOOST_ARCHIVE_ARCHIVE_EXCEPTION_HPP diff --git a/3rdParty/Boost/src/boost/archive/detail/abi_prefix.hpp b/3rdParty/Boost/src/boost/archive/detail/abi_prefix.hpp deleted file mode 100644 index e39ef11..0000000 --- a/3rdParty/Boost/src/boost/archive/detail/abi_prefix.hpp +++ /dev/null @@ -1,20 +0,0 @@ -/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 -// abi_prefix.hpp - -// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . -// 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) - -// See http://www.boost.org for updates, documentation, and revision history. - -#include <boost/config/abi_prefix.hpp> // must be the last header -#ifdef BOOST_MSVC -# pragma warning(push) -# pragma warning(disable : 4251 4231 4660 4275) -#endif - -#if defined( __BORLANDC__ ) -#pragma nopushoptwarn -#endif - diff --git a/3rdParty/Boost/src/boost/archive/detail/abi_suffix.hpp b/3rdParty/Boost/src/boost/archive/detail/abi_suffix.hpp deleted file mode 100644 index a283b36..0000000 --- a/3rdParty/Boost/src/boost/archive/detail/abi_suffix.hpp +++ /dev/null @@ -1,19 +0,0 @@ -/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 -// abi_suffix.hpp - -// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . -// 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) - -// See http://www.boost.org for updates, documentation, and revision history. - -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif -#include <boost/config/abi_suffix.hpp> // pops abi_suffix.hpp pragmas - -#if defined( __BORLANDC__ ) -#pragma nopushoptwarn -#endif - diff --git a/3rdParty/Boost/src/boost/archive/detail/decl.hpp b/3rdParty/Boost/src/boost/archive/detail/decl.hpp deleted file mode 100644 index 9695001..0000000 --- a/3rdParty/Boost/src/boost/archive/detail/decl.hpp +++ /dev/null @@ -1,79 +0,0 @@ -#ifndef BOOST_ARCHIVE_DETAIL_DECL_HPP -#define BOOST_ARCHIVE_DETAIL_DECL_HPP - -// MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -/////////1/////////2///////// 3/////////4/////////5/////////6/////////7/////////8 -// decl.hpp -// -// (c) Copyright Robert Ramey 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) - -// See library home page at http://www.boost.org/libs/serialization - -//----------------------------------------------------------------------------// - -// This header implements separate compilation features as described in -// http://www.boost.org/more/separate_compilation.html - -#include <boost/config.hpp> -#include <boost/preprocessor/facilities/empty.hpp> - -#if defined(BOOST_HAS_DECLSPEC) - #if (defined(BOOST_ALL_DYN_LINK) || defined(BOOST_SERIALIZATION_DYN_LINK)) - #if defined(BOOST_ARCHIVE_SOURCE) - #if defined(__BORLANDC__) - #define BOOST_ARCHIVE_DECL(T) T __export - #define BOOST_ARCHIVE_OR_WARCHIVE_DECL(T) T __export - #else - #define BOOST_ARCHIVE_DECL(T) __declspec(dllexport) T - #define BOOST_ARCHIVE_OR_WARCHIVE_DECL(T) __declspec(dllexport) T - #endif - #else - #if defined(__BORLANDC__) - #define BOOST_ARCHIVE_DECL(T) T __import - #else - #define BOOST_ARCHIVE_DECL(T) __declspec(dllimport) T - #endif - #endif - #if defined(BOOST_WARCHIVE_SOURCE) - #if defined(__BORLANDC__) - #define BOOST_WARCHIVE_DECL(T) T __export - #define BOOST_ARCHIVE_OR_WARCHIVE_DECL(T) T __export - #else - #define BOOST_WARCHIVE_DECL(T) __declspec(dllexport) T - #define BOOST_ARCHIVE_OR_WARCHIVE_DECL(T) __declspec(dllexport) T - #endif - #else - #if defined(__BORLANDC__) - #define BOOST_WARCHIVE_DECL(T) T __import - #else - #define BOOST_WARCHIVE_DECL(T) __declspec(dllimport) T - #endif - #endif - #if !defined(BOOST_WARCHIVE_SOURCE) && !defined(BOOST_ARCHIVE_SOURCE) - #if defined(__BORLANDC__) - #define BOOST_ARCHIVE_OR_WARCHIVE_DECL(T) T __import - #else - #define BOOST_ARCHIVE_OR_WARCHIVE_DECL(T) __declspec(dllimport) T - #endif - #endif - #endif -#endif // BOOST_HAS_DECLSPEC - -#if ! defined(BOOST_ARCHIVE_DECL) - #define BOOST_ARCHIVE_DECL(T) T -#endif -#if ! defined(BOOST_WARCHIVE_DECL) - #define BOOST_WARCHIVE_DECL(T) T -#endif -#if ! defined(BOOST_ARCHIVE_OR_WARCHIVE_DECL) - #define BOOST_ARCHIVE_OR_WARCHIVE_DECL(T) T -#endif - -#endif // BOOST_ARCHIVE_DETAIL_DECL_HPP diff --git a/3rdParty/Boost/src/boost/array.hpp b/3rdParty/Boost/src/boost/array.hpp index 7df2771..85b63a2 100644 --- a/3rdParty/Boost/src/boost/array.hpp +++ b/3rdParty/Boost/src/boost/array.hpp @@ -13,6 +13,7 @@ * accompanying file LICENSE_1_0.txt or copy at * http://www.boost.org/LICENSE_1_0.txt) * + * 28 Dec 2010 - (mtc) Added cbegin and cend (and crbegin and crend) for C++Ox compatibility. * 10 Mar 2010 - (mtc) fill method added, matching resolution of the standard library working group. * See <http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#776> or Trac issue #3168 * Eventually, we should remove "assign" which is now a synonym for "fill" (Marshall Clow) @@ -69,10 +70,13 @@ namespace boost { typedef std::ptrdiff_t difference_type; // iterator support - iterator begin() { return elems; } - const_iterator begin() const { return elems; } - iterator end() { return elems+N; } - const_iterator end() const { return elems+N; } + iterator begin() { return elems; } + const_iterator begin() const { return elems; } + const_iterator cbegin() const { return elems; } + + iterator end() { return elems+N; } + const_iterator end() const { return elems+N; } + const_iterator cend() const { return elems+N; } // reverse iterator support #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_MSVC_STD_ITERATOR) && !defined(BOOST_NO_STD_ITERATOR_TRAITS) @@ -99,10 +103,17 @@ namespace boost { const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); } + const_reverse_iterator crbegin() const { + return const_reverse_iterator(end()); + } + reverse_iterator rend() { return reverse_iterator(begin()); } const_reverse_iterator rend() const { return const_reverse_iterator(begin()); } + const_reverse_iterator crend() const { + return const_reverse_iterator(begin()); + } // operator[] reference operator[](size_type i) @@ -200,10 +211,13 @@ namespace boost { typedef std::ptrdiff_t difference_type; // iterator support - iterator begin() { return iterator( reinterpret_cast< T * >( this ) ); } - const_iterator begin() const { return const_iterator( reinterpret_cast< const T * >( this ) ); } - iterator end() { return begin(); } - const_iterator end() const { return begin(); } + iterator begin() { return iterator( reinterpret_cast< T * >( this ) ); } + const_iterator begin() const { return const_iterator( reinterpret_cast< const T * >( this ) ); } + const_iterator cbegin() const { return const_iterator( reinterpret_cast< const T * >( this ) ); } + + iterator end() { return begin(); } + const_iterator end() const { return begin(); } + const_iterator cend() const { return cbegin(); } // reverse iterator support #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_MSVC_STD_ITERATOR) && !defined(BOOST_NO_STD_ITERATOR_TRAITS) @@ -230,10 +244,17 @@ namespace boost { const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); } + const_reverse_iterator crbegin() const { + return const_reverse_iterator(end()); + } + reverse_iterator rend() { return reverse_iterator(begin()); } const_reverse_iterator rend() const { return const_reverse_iterator(begin()); } + const_reverse_iterator crend() const { + return const_reverse_iterator(begin()); + } // operator[] reference operator[](size_type /*i*/) @@ -346,7 +367,34 @@ namespace boost { x.swap(y); } - // Specific for boost::array: simply returns its elems data member. +#if defined(__SUNPRO_CC) +// Trac ticket #4757; the Sun Solaris compiler can't handle +// syntax like 'T(&get_c_array(boost::array<T,N>& arg))[N]' +// +// We can't just use this for all compilers, because the +// borland compilers can't handle this form. + namespace detail { + template <typename T, std::size_t N> struct c_array + { + typedef T type[N]; + }; + } + + // Specific for boost::array: simply returns its elems data member. + template <typename T, std::size_t N> + typename detail::c_array<T,N>::type& get_c_array(boost::array<T,N>& arg) + { + return arg.elems; + } + + // Specific for boost::array: simply returns its elems data member. + template <typename T, std::size_t N> + typename const detail::c_array<T,N>::type& get_c_array(const boost::array<T,N>& arg) + { + return arg.elems; + } +#else +// Specific for boost::array: simply returns its elems data member. template <typename T, std::size_t N> T(&get_c_array(boost::array<T,N>& arg))[N] { @@ -359,7 +407,8 @@ namespace boost { { return arg.elems; } - +#endif + #if 0 // Overload for std::array, assuming that std::array will have // explicit conversion functions as discussed at the WG21 meeting diff --git a/3rdParty/Boost/src/boost/asio.hpp b/3rdParty/Boost/src/boost/asio.hpp index f94e0d6..2681806 100644 --- a/3rdParty/Boost/src/boost/asio.hpp +++ b/3rdParty/Boost/src/boost/asio.hpp @@ -2,7 +2,7 @@ // asio.hpp // ~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/basic_datagram_socket.hpp b/3rdParty/Boost/src/boost/asio/basic_datagram_socket.hpp index 5272809..a79967f 100644 --- a/3rdParty/Boost/src/boost/asio/basic_datagram_socket.hpp +++ b/3rdParty/Boost/src/boost/asio/basic_datagram_socket.hpp @@ -2,7 +2,7 @@ // basic_datagram_socket.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/basic_deadline_timer.hpp b/3rdParty/Boost/src/boost/asio/basic_deadline_timer.hpp index dc471e2..452999d 100644 --- a/3rdParty/Boost/src/boost/asio/basic_deadline_timer.hpp +++ b/3rdParty/Boost/src/boost/asio/basic_deadline_timer.hpp @@ -2,7 +2,7 @@ // basic_deadline_timer.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/basic_io_object.hpp b/3rdParty/Boost/src/boost/asio/basic_io_object.hpp index 414f365..8e137e7 100644 --- a/3rdParty/Boost/src/boost/asio/basic_io_object.hpp +++ b/3rdParty/Boost/src/boost/asio/basic_io_object.hpp @@ -2,7 +2,7 @@ // basic_io_object.hpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/basic_raw_socket.hpp b/3rdParty/Boost/src/boost/asio/basic_raw_socket.hpp index 0b877de..0e58e7f 100644 --- a/3rdParty/Boost/src/boost/asio/basic_raw_socket.hpp +++ b/3rdParty/Boost/src/boost/asio/basic_raw_socket.hpp @@ -2,7 +2,7 @@ // basic_raw_socket.hpp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/basic_serial_port.hpp b/3rdParty/Boost/src/boost/asio/basic_serial_port.hpp index 4936c9c..744fd3b 100644 --- a/3rdParty/Boost/src/boost/asio/basic_serial_port.hpp +++ b/3rdParty/Boost/src/boost/asio/basic_serial_port.hpp @@ -2,7 +2,7 @@ // basic_serial_port.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/3rdParty/Boost/src/boost/asio/basic_socket.hpp b/3rdParty/Boost/src/boost/asio/basic_socket.hpp index 50a0c47..11ce5c9 100644 --- a/3rdParty/Boost/src/boost/asio/basic_socket.hpp +++ b/3rdParty/Boost/src/boost/asio/basic_socket.hpp @@ -2,7 +2,7 @@ // basic_socket.hpp // ~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/basic_socket_acceptor.hpp b/3rdParty/Boost/src/boost/asio/basic_socket_acceptor.hpp index 5192df7..a877bc3 100644 --- a/3rdParty/Boost/src/boost/asio/basic_socket_acceptor.hpp +++ b/3rdParty/Boost/src/boost/asio/basic_socket_acceptor.hpp @@ -2,7 +2,7 @@ // basic_socket_acceptor.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/basic_socket_iostream.hpp b/3rdParty/Boost/src/boost/asio/basic_socket_iostream.hpp index a8cea4f..142f404 100644 --- a/3rdParty/Boost/src/boost/asio/basic_socket_iostream.hpp +++ b/3rdParty/Boost/src/boost/asio/basic_socket_iostream.hpp @@ -2,7 +2,7 @@ // basic_socket_iostream.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/basic_socket_streambuf.hpp b/3rdParty/Boost/src/boost/asio/basic_socket_streambuf.hpp index 35e96d0..c2a9a99 100644 --- a/3rdParty/Boost/src/boost/asio/basic_socket_streambuf.hpp +++ b/3rdParty/Boost/src/boost/asio/basic_socket_streambuf.hpp @@ -2,7 +2,7 @@ // basic_socket_streambuf.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/basic_stream_socket.hpp b/3rdParty/Boost/src/boost/asio/basic_stream_socket.hpp index 956d623..87bd035 100644 --- a/3rdParty/Boost/src/boost/asio/basic_stream_socket.hpp +++ b/3rdParty/Boost/src/boost/asio/basic_stream_socket.hpp @@ -2,7 +2,7 @@ // basic_stream_socket.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/basic_streambuf.hpp b/3rdParty/Boost/src/boost/asio/basic_streambuf.hpp index 546a4ac..7a04c69 100644 --- a/3rdParty/Boost/src/boost/asio/basic_streambuf.hpp +++ b/3rdParty/Boost/src/boost/asio/basic_streambuf.hpp @@ -2,7 +2,7 @@ // basic_streambuf.hpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) @@ -237,6 +237,8 @@ public: */ void consume(std::size_t n) { + if (egptr() < pptr()) + setg(&buffer_[0], gptr(), pptr()); if (gptr() + n > pptr()) n = pptr() - gptr(); gbump(static_cast<int>(n)); diff --git a/3rdParty/Boost/src/boost/asio/basic_streambuf_fwd.hpp b/3rdParty/Boost/src/boost/asio/basic_streambuf_fwd.hpp index 215937e..a7d82d3 100644 --- a/3rdParty/Boost/src/boost/asio/basic_streambuf_fwd.hpp +++ b/3rdParty/Boost/src/boost/asio/basic_streambuf_fwd.hpp @@ -2,7 +2,7 @@ // basic_streambuf_fwd.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/buffer.hpp b/3rdParty/Boost/src/boost/asio/buffer.hpp index f925361..15eaad4 100644 --- a/3rdParty/Boost/src/boost/asio/buffer.hpp +++ b/3rdParty/Boost/src/boost/asio/buffer.hpp @@ -2,7 +2,7 @@ // buffer.hpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/buffered_read_stream.hpp b/3rdParty/Boost/src/boost/asio/buffered_read_stream.hpp index 935f5b9..af24dd6 100644 --- a/3rdParty/Boost/src/boost/asio/buffered_read_stream.hpp +++ b/3rdParty/Boost/src/boost/asio/buffered_read_stream.hpp @@ -2,7 +2,7 @@ // buffered_read_stream.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/buffered_read_stream_fwd.hpp b/3rdParty/Boost/src/boost/asio/buffered_read_stream_fwd.hpp index 87f27d9..9c8a1af 100644 --- a/3rdParty/Boost/src/boost/asio/buffered_read_stream_fwd.hpp +++ b/3rdParty/Boost/src/boost/asio/buffered_read_stream_fwd.hpp @@ -2,7 +2,7 @@ // buffered_read_stream_fwd.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/buffered_stream.hpp b/3rdParty/Boost/src/boost/asio/buffered_stream.hpp index ceeb6f2..43d21de 100644 --- a/3rdParty/Boost/src/boost/asio/buffered_stream.hpp +++ b/3rdParty/Boost/src/boost/asio/buffered_stream.hpp @@ -2,7 +2,7 @@ // buffered_stream.hpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/buffered_stream_fwd.hpp b/3rdParty/Boost/src/boost/asio/buffered_stream_fwd.hpp index d23bc26..042b990 100644 --- a/3rdParty/Boost/src/boost/asio/buffered_stream_fwd.hpp +++ b/3rdParty/Boost/src/boost/asio/buffered_stream_fwd.hpp @@ -2,7 +2,7 @@ // buffered_stream_fwd.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/buffered_write_stream.hpp b/3rdParty/Boost/src/boost/asio/buffered_write_stream.hpp index c918a0a..a163b13 100644 --- a/3rdParty/Boost/src/boost/asio/buffered_write_stream.hpp +++ b/3rdParty/Boost/src/boost/asio/buffered_write_stream.hpp @@ -2,7 +2,7 @@ // buffered_write_stream.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/buffered_write_stream_fwd.hpp b/3rdParty/Boost/src/boost/asio/buffered_write_stream_fwd.hpp index 8f0f409..0590a96 100644 --- a/3rdParty/Boost/src/boost/asio/buffered_write_stream_fwd.hpp +++ b/3rdParty/Boost/src/boost/asio/buffered_write_stream_fwd.hpp @@ -2,7 +2,7 @@ // buffered_write_stream_fwd.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/buffers_iterator.hpp b/3rdParty/Boost/src/boost/asio/buffers_iterator.hpp index 1ffd02d..3375361 100644 --- a/3rdParty/Boost/src/boost/asio/buffers_iterator.hpp +++ b/3rdParty/Boost/src/boost/asio/buffers_iterator.hpp @@ -2,7 +2,7 @@ // buffers_iterator.hpp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/completion_condition.hpp b/3rdParty/Boost/src/boost/asio/completion_condition.hpp index dfb48ed..7f5fc09 100644 --- a/3rdParty/Boost/src/boost/asio/completion_condition.hpp +++ b/3rdParty/Boost/src/boost/asio/completion_condition.hpp @@ -2,7 +2,7 @@ // completion_condition.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/datagram_socket_service.hpp b/3rdParty/Boost/src/boost/asio/datagram_socket_service.hpp index 4d324e2..0db1f34 100644 --- a/3rdParty/Boost/src/boost/asio/datagram_socket_service.hpp +++ b/3rdParty/Boost/src/boost/asio/datagram_socket_service.hpp @@ -2,7 +2,7 @@ // datagram_socket_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/deadline_timer.hpp b/3rdParty/Boost/src/boost/asio/deadline_timer.hpp index 3ed7b67..866588b 100644 --- a/3rdParty/Boost/src/boost/asio/deadline_timer.hpp +++ b/3rdParty/Boost/src/boost/asio/deadline_timer.hpp @@ -2,7 +2,7 @@ // deadline_timer.hpp // ~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/deadline_timer_service.hpp b/3rdParty/Boost/src/boost/asio/deadline_timer_service.hpp index 77060c4..ce8fd13 100644 --- a/3rdParty/Boost/src/boost/asio/deadline_timer_service.hpp +++ b/3rdParty/Boost/src/boost/asio/deadline_timer_service.hpp @@ -2,7 +2,7 @@ // deadline_timer_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/array_fwd.hpp b/3rdParty/Boost/src/boost/asio/detail/array_fwd.hpp index 3d47a9a..b7a27bf 100644 --- a/3rdParty/Boost/src/boost/asio/detail/array_fwd.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/array_fwd.hpp @@ -2,7 +2,7 @@ // detail/array_fwd.hpp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/base_from_completion_cond.hpp b/3rdParty/Boost/src/boost/asio/detail/base_from_completion_cond.hpp index 797e3ce..b2b76d6 100644 --- a/3rdParty/Boost/src/boost/asio/detail/base_from_completion_cond.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/base_from_completion_cond.hpp @@ -2,7 +2,7 @@ // detail/base_from_completion_cond.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/bind_handler.hpp b/3rdParty/Boost/src/boost/asio/detail/bind_handler.hpp index 6b515db..0199643 100644 --- a/3rdParty/Boost/src/boost/asio/detail/bind_handler.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/bind_handler.hpp @@ -2,7 +2,7 @@ // detail/bind_handler.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/buffer_resize_guard.hpp b/3rdParty/Boost/src/boost/asio/detail/buffer_resize_guard.hpp index bcffc1a..7df4128 100644 --- a/3rdParty/Boost/src/boost/asio/detail/buffer_resize_guard.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/buffer_resize_guard.hpp @@ -2,7 +2,7 @@ // detail/buffer_resize_guard.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/buffer_sequence_adapter.hpp b/3rdParty/Boost/src/boost/asio/detail/buffer_sequence_adapter.hpp index 214cd41..fdda23f 100644 --- a/3rdParty/Boost/src/boost/asio/detail/buffer_sequence_adapter.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/buffer_sequence_adapter.hpp @@ -2,7 +2,7 @@ // detail/buffer_sequence_adapter.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/buffered_stream_storage.hpp b/3rdParty/Boost/src/boost/asio/detail/buffered_stream_storage.hpp index 9a2929e..86763b5 100644 --- a/3rdParty/Boost/src/boost/asio/detail/buffered_stream_storage.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/buffered_stream_storage.hpp @@ -2,7 +2,7 @@ // detail/buffered_stream_storage.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/call_stack.hpp b/3rdParty/Boost/src/boost/asio/detail/call_stack.hpp index 561a826..d5f9099 100644 --- a/3rdParty/Boost/src/boost/asio/detail/call_stack.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/call_stack.hpp @@ -2,7 +2,7 @@ // detail/call_stack.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/completion_handler.hpp b/3rdParty/Boost/src/boost/asio/detail/completion_handler.hpp index 6701fb3..3b023d1 100644 --- a/3rdParty/Boost/src/boost/asio/detail/completion_handler.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/completion_handler.hpp @@ -2,7 +2,7 @@ // detail/completion_handler.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/config.hpp b/3rdParty/Boost/src/boost/asio/detail/config.hpp index abd2044..45c2415 100644 --- a/3rdParty/Boost/src/boost/asio/detail/config.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/config.hpp @@ -2,7 +2,7 @@ // detail/config.hpp // ~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/consuming_buffers.hpp b/3rdParty/Boost/src/boost/asio/detail/consuming_buffers.hpp index 23114a0..f50d4e0 100644 --- a/3rdParty/Boost/src/boost/asio/detail/consuming_buffers.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/consuming_buffers.hpp @@ -2,7 +2,7 @@ // detail/consuming_buffers.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/deadline_timer_service.hpp b/3rdParty/Boost/src/boost/asio/detail/deadline_timer_service.hpp index c391824..82e0d43 100644 --- a/3rdParty/Boost/src/boost/asio/detail/deadline_timer_service.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/deadline_timer_service.hpp @@ -2,7 +2,7 @@ // detail/deadline_timer_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/descriptor_ops.hpp b/3rdParty/Boost/src/boost/asio/detail/descriptor_ops.hpp index 4f82cd6..f92a7b4 100644 --- a/3rdParty/Boost/src/boost/asio/detail/descriptor_ops.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/descriptor_ops.hpp @@ -2,7 +2,7 @@ // detail/descriptor_ops.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/descriptor_read_op.hpp b/3rdParty/Boost/src/boost/asio/detail/descriptor_read_op.hpp index c068108..884f8f6 100644 --- a/3rdParty/Boost/src/boost/asio/detail/descriptor_read_op.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/descriptor_read_op.hpp @@ -2,7 +2,7 @@ // detail/descriptor_read_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/descriptor_write_op.hpp b/3rdParty/Boost/src/boost/asio/detail/descriptor_write_op.hpp index 0983854..805eb0b 100644 --- a/3rdParty/Boost/src/boost/asio/detail/descriptor_write_op.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/descriptor_write_op.hpp @@ -2,7 +2,7 @@ // detail/descriptor_write_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/dev_poll_reactor.hpp b/3rdParty/Boost/src/boost/asio/detail/dev_poll_reactor.hpp index ef2b0dc..79c1cbb 100644 --- a/3rdParty/Boost/src/boost/asio/detail/dev_poll_reactor.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/dev_poll_reactor.hpp @@ -2,7 +2,7 @@ // detail/dev_poll_reactor.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) @@ -46,7 +46,7 @@ class dev_poll_reactor : public boost::asio::detail::service_base<dev_poll_reactor> { public: - enum { read_op = 0, write_op = 1, + enum op_types { read_op = 0, write_op = 1, connect_op = 1, except_op = 2, max_ops = 3 }; // Per-descriptor data. diff --git a/3rdParty/Boost/src/boost/asio/detail/dev_poll_reactor_fwd.hpp b/3rdParty/Boost/src/boost/asio/detail/dev_poll_reactor_fwd.hpp index 7e8defc..c5ceab2 100644 --- a/3rdParty/Boost/src/boost/asio/detail/dev_poll_reactor_fwd.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/dev_poll_reactor_fwd.hpp @@ -2,7 +2,7 @@ // detail/dev_poll_reactor_fwd.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/epoll_reactor.hpp b/3rdParty/Boost/src/boost/asio/detail/epoll_reactor.hpp index 18d87ee..1889017 100644 --- a/3rdParty/Boost/src/boost/asio/detail/epoll_reactor.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/epoll_reactor.hpp @@ -2,7 +2,7 @@ // detail/epoll_reactor.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) @@ -42,7 +42,7 @@ class epoll_reactor : public boost::asio::detail::service_base<epoll_reactor> { public: - enum { read_op = 0, write_op = 1, + enum op_types { read_op = 0, write_op = 1, connect_op = 1, except_op = 2, max_ops = 3 }; // Per-descriptor queues. diff --git a/3rdParty/Boost/src/boost/asio/detail/epoll_reactor_fwd.hpp b/3rdParty/Boost/src/boost/asio/detail/epoll_reactor_fwd.hpp index dc0e92d..01ee84c 100644 --- a/3rdParty/Boost/src/boost/asio/detail/epoll_reactor_fwd.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/epoll_reactor_fwd.hpp @@ -2,7 +2,7 @@ // detail/epoll_reactor_fwd.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/event.hpp b/3rdParty/Boost/src/boost/asio/detail/event.hpp index c33b65a..c8109d1 100644 --- a/3rdParty/Boost/src/boost/asio/detail/event.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/event.hpp @@ -2,7 +2,7 @@ // detail/event.hpp // ~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/eventfd_select_interrupter.hpp b/3rdParty/Boost/src/boost/asio/detail/eventfd_select_interrupter.hpp index b2cb68b..954fe79 100644 --- a/3rdParty/Boost/src/boost/asio/detail/eventfd_select_interrupter.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/eventfd_select_interrupter.hpp @@ -2,7 +2,7 @@ // detail/eventfd_select_interrupter.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Roelof Naude (roelof.naude at gmail dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/3rdParty/Boost/src/boost/asio/detail/fd_set_adapter.hpp b/3rdParty/Boost/src/boost/asio/detail/fd_set_adapter.hpp index 138264f..8df0426 100644 --- a/3rdParty/Boost/src/boost/asio/detail/fd_set_adapter.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/fd_set_adapter.hpp @@ -2,7 +2,7 @@ // detail/fd_set_adapter.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/fenced_block.hpp b/3rdParty/Boost/src/boost/asio/detail/fenced_block.hpp index 443f487..4cb27dc 100644 --- a/3rdParty/Boost/src/boost/asio/detail/fenced_block.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/fenced_block.hpp @@ -2,7 +2,7 @@ // detail/fenced_block.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/gcc_arm_fenced_block.hpp b/3rdParty/Boost/src/boost/asio/detail/gcc_arm_fenced_block.hpp index 1350f09..58cdfb4 100644 --- a/3rdParty/Boost/src/boost/asio/detail/gcc_arm_fenced_block.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/gcc_arm_fenced_block.hpp @@ -2,7 +2,7 @@ // detail/gcc_arm_fenced_block.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/gcc_hppa_fenced_block.hpp b/3rdParty/Boost/src/boost/asio/detail/gcc_hppa_fenced_block.hpp index ef5c093..6c5226b 100644 --- a/3rdParty/Boost/src/boost/asio/detail/gcc_hppa_fenced_block.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/gcc_hppa_fenced_block.hpp @@ -2,7 +2,7 @@ // detail/gcc_hppa_fenced_block.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/gcc_sync_fenced_block.hpp b/3rdParty/Boost/src/boost/asio/detail/gcc_sync_fenced_block.hpp index 83341d5..65472cc 100644 --- a/3rdParty/Boost/src/boost/asio/detail/gcc_sync_fenced_block.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/gcc_sync_fenced_block.hpp @@ -2,7 +2,7 @@ // detail/gcc_sync_fenced_block.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/gcc_x86_fenced_block.hpp b/3rdParty/Boost/src/boost/asio/detail/gcc_x86_fenced_block.hpp index 5353f87..fb8473c 100644 --- a/3rdParty/Boost/src/boost/asio/detail/gcc_x86_fenced_block.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/gcc_x86_fenced_block.hpp @@ -2,7 +2,7 @@ // detail/gcc_x86_fenced_block.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/handler_alloc_helpers.hpp b/3rdParty/Boost/src/boost/asio/detail/handler_alloc_helpers.hpp index 00d4c02..fc3ec33 100644 --- a/3rdParty/Boost/src/boost/asio/detail/handler_alloc_helpers.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/handler_alloc_helpers.hpp @@ -2,7 +2,7 @@ // detail/handler_alloc_helpers.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/handler_invoke_helpers.hpp b/3rdParty/Boost/src/boost/asio/detail/handler_invoke_helpers.hpp index 996bde9..3b44997 100644 --- a/3rdParty/Boost/src/boost/asio/detail/handler_invoke_helpers.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/handler_invoke_helpers.hpp @@ -2,7 +2,7 @@ // detail/handler_invoke_helpers.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/hash_map.hpp b/3rdParty/Boost/src/boost/asio/detail/hash_map.hpp index c58096b..4f4eed3 100644 --- a/3rdParty/Boost/src/boost/asio/detail/hash_map.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/hash_map.hpp @@ -2,7 +2,7 @@ // detail/hash_map.hpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/descriptor_ops.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/descriptor_ops.ipp index 74a8e6f..9a2bb3b 100644 --- a/3rdParty/Boost/src/boost/asio/detail/impl/descriptor_ops.ipp +++ b/3rdParty/Boost/src/boost/asio/detail/impl/descriptor_ops.ipp @@ -2,7 +2,7 @@ // detail/impl/descriptor_ops.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/dev_poll_reactor.hpp b/3rdParty/Boost/src/boost/asio/detail/impl/dev_poll_reactor.hpp index 2aed0a8..a6b7078 100644 --- a/3rdParty/Boost/src/boost/asio/detail/impl/dev_poll_reactor.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/impl/dev_poll_reactor.hpp @@ -2,7 +2,7 @@ // detail/impl/dev_poll_reactor.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/dev_poll_reactor.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/dev_poll_reactor.ipp index 67f6d50..b9d5e61 100644 --- a/3rdParty/Boost/src/boost/asio/detail/impl/dev_poll_reactor.ipp +++ b/3rdParty/Boost/src/boost/asio/detail/impl/dev_poll_reactor.ipp @@ -2,7 +2,7 @@ // detail/impl/dev_poll_reactor.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/epoll_reactor.hpp b/3rdParty/Boost/src/boost/asio/detail/impl/epoll_reactor.hpp index 49f0d50..0339cfd 100644 --- a/3rdParty/Boost/src/boost/asio/detail/impl/epoll_reactor.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/impl/epoll_reactor.hpp @@ -2,7 +2,7 @@ // detail/impl/epoll_reactor.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/epoll_reactor.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/epoll_reactor.ipp index a4c2491..5afb891 100644 --- a/3rdParty/Boost/src/boost/asio/detail/impl/epoll_reactor.ipp +++ b/3rdParty/Boost/src/boost/asio/detail/impl/epoll_reactor.ipp @@ -2,7 +2,7 @@ // detail/impl/epoll_reactor.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) @@ -357,7 +357,7 @@ void epoll_reactor::update_timeout() return; } #endif // defined(BOOST_ASIO_HAS_TIMERFD) - interrupter_.interrupt(); + interrupt(); } int epoll_reactor::get_timeout() diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/eventfd_select_interrupter.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/eventfd_select_interrupter.ipp index 5bcc55b..d270b31 100644 --- a/3rdParty/Boost/src/boost/asio/detail/impl/eventfd_select_interrupter.ipp +++ b/3rdParty/Boost/src/boost/asio/detail/impl/eventfd_select_interrupter.ipp @@ -2,7 +2,7 @@ // detail/impl/eventfd_select_interrupter.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Roelof Naude (roelof.naude at gmail dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/kqueue_reactor.hpp b/3rdParty/Boost/src/boost/asio/detail/impl/kqueue_reactor.hpp index 7bb0269..779f272 100644 --- a/3rdParty/Boost/src/boost/asio/detail/impl/kqueue_reactor.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/impl/kqueue_reactor.hpp @@ -2,7 +2,7 @@ // detail/impl/kqueue_reactor.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2005 Stefan Arentz (stefan at soze dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/kqueue_reactor.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/kqueue_reactor.ipp index 08209bd..3ac9eae 100644 --- a/3rdParty/Boost/src/boost/asio/detail/impl/kqueue_reactor.ipp +++ b/3rdParty/Boost/src/boost/asio/detail/impl/kqueue_reactor.ipp @@ -2,7 +2,7 @@ // detail/impl/kqueue_reactor.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2005 Stefan Arentz (stefan at soze dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying @@ -47,9 +47,9 @@ kqueue_reactor::kqueue_reactor(boost::asio::io_service& io_service) interrupter_(), shutdown_(false) { - // The interrupter is put into a permanently readable state. Whenever we - // want to interrupt the blocked kevent call we register a one-shot read - // operation against the descriptor. + // The interrupter is put into a permanently readable state. Whenever we want + // to interrupt the blocked kevent call we register a read operation against + // the descriptor. interrupter_.interrupt(); } @@ -139,17 +139,17 @@ void kqueue_reactor::start_op(int op_type, socket_type descriptor, { case read_op: BOOST_ASIO_KQUEUE_EV_SET(&event, descriptor, EVFILT_READ, - EV_ADD | EV_ONESHOT, 0, 0, descriptor_data); + EV_ADD | EV_CLEAR, 0, 0, descriptor_data); break; case write_op: BOOST_ASIO_KQUEUE_EV_SET(&event, descriptor, EVFILT_WRITE, - EV_ADD | EV_ONESHOT, 0, 0, descriptor_data); + EV_ADD | EV_CLEAR, 0, 0, descriptor_data); break; case except_op: if (!descriptor_data->op_queue_[read_op].empty()) return; // Already registered for read events. BOOST_ASIO_KQUEUE_EV_SET(&event, descriptor, EVFILT_READ, - EV_ADD | EV_ONESHOT, EV_OOBAND, 0, descriptor_data); + EV_ADD | EV_CLEAR, EV_OOBAND, 0, descriptor_data); break; } @@ -247,7 +247,7 @@ void kqueue_reactor::run(bool block, op_queue<operation>& ops) if (ptr == &interrupter_) { // No need to reset the interrupter since we're leaving the descriptor - // in a ready-to-read state and relying on one-shot notifications. + // in a ready-to-read state and relying on edge-triggered notifications. } else { @@ -296,18 +296,20 @@ void kqueue_reactor::run(bool block, op_queue<operation>& ops) case EVFILT_READ: if (!descriptor_data->op_queue_[read_op].empty()) BOOST_ASIO_KQUEUE_EV_SET(&event, descriptor, EVFILT_READ, - EV_ADD | EV_ONESHOT, 0, 0, descriptor_data); + EV_ADD | EV_CLEAR, 0, 0, descriptor_data); else if (!descriptor_data->op_queue_[except_op].empty()) BOOST_ASIO_KQUEUE_EV_SET(&event, descriptor, EVFILT_READ, - EV_ADD | EV_ONESHOT, EV_OOBAND, 0, descriptor_data); + EV_ADD | EV_CLEAR, EV_OOBAND, 0, descriptor_data); else continue; + break; case EVFILT_WRITE: if (!descriptor_data->op_queue_[write_op].empty()) BOOST_ASIO_KQUEUE_EV_SET(&event, descriptor, EVFILT_WRITE, - EV_ADD | EV_ONESHOT, 0, 0, descriptor_data); + EV_ADD | EV_CLEAR, 0, 0, descriptor_data); else continue; + break; default: break; } @@ -336,7 +338,7 @@ void kqueue_reactor::interrupt() { struct kevent event; BOOST_ASIO_KQUEUE_EV_SET(&event, interrupter_.read_descriptor(), - EVFILT_READ, EV_ADD | EV_ONESHOT, 0, 0, &interrupter_); + EVFILT_READ, EV_ADD | EV_CLEAR, 0, 0, &interrupter_); ::kevent(kqueue_fd_, &event, 1, 0, 0, 0); } diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/pipe_select_interrupter.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/pipe_select_interrupter.ipp index f2a7291..9a0a872 100644 --- a/3rdParty/Boost/src/boost/asio/detail/impl/pipe_select_interrupter.ipp +++ b/3rdParty/Boost/src/boost/asio/detail/impl/pipe_select_interrupter.ipp @@ -2,7 +2,7 @@ // detail/impl/pipe_select_interrupter.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/posix_event.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/posix_event.ipp index 7e89b6c..893e8cc 100644 --- a/3rdParty/Boost/src/boost/asio/detail/impl/posix_event.ipp +++ b/3rdParty/Boost/src/boost/asio/detail/impl/posix_event.ipp @@ -2,7 +2,7 @@ // detail/impl/posix_event.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/posix_mutex.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/posix_mutex.ipp index a4f81bb..908bfab 100644 --- a/3rdParty/Boost/src/boost/asio/detail/impl/posix_mutex.ipp +++ b/3rdParty/Boost/src/boost/asio/detail/impl/posix_mutex.ipp @@ -2,7 +2,7 @@ // detail/impl/posix_mutex.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/posix_thread.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/posix_thread.ipp index 5dc41fa..feb6dd1 100644 --- a/3rdParty/Boost/src/boost/asio/detail/impl/posix_thread.ipp +++ b/3rdParty/Boost/src/boost/asio/detail/impl/posix_thread.ipp @@ -2,7 +2,7 @@ // detail/impl/posix_thread.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/posix_tss_ptr.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/posix_tss_ptr.ipp index 1c626e5..89c1bf5 100644 --- a/3rdParty/Boost/src/boost/asio/detail/impl/posix_tss_ptr.ipp +++ b/3rdParty/Boost/src/boost/asio/detail/impl/posix_tss_ptr.ipp @@ -2,7 +2,7 @@ // detail/impl/posix_tss_ptr.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/reactive_descriptor_service.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/reactive_descriptor_service.ipp index 6f0dc5a..a1ee09a 100644 --- a/3rdParty/Boost/src/boost/asio/detail/impl/reactive_descriptor_service.ipp +++ b/3rdParty/Boost/src/boost/asio/detail/impl/reactive_descriptor_service.ipp @@ -2,7 +2,7 @@ // detail/impl/reactive_descriptor_service.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/reactive_serial_port_service.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/reactive_serial_port_service.ipp index b467209..ece61d3 100644 --- a/3rdParty/Boost/src/boost/asio/detail/impl/reactive_serial_port_service.ipp +++ b/3rdParty/Boost/src/boost/asio/detail/impl/reactive_serial_port_service.ipp @@ -2,7 +2,7 @@ // detail/impl/reactive_serial_port_service.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/reactive_socket_service_base.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/reactive_socket_service_base.ipp index cecbe73..31f5bc4 100644 --- a/3rdParty/Boost/src/boost/asio/detail/impl/reactive_socket_service_base.ipp +++ b/3rdParty/Boost/src/boost/asio/detail/impl/reactive_socket_service_base.ipp @@ -2,7 +2,7 @@ // detail/reactive_socket_service_base.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) @@ -64,7 +64,7 @@ boost::system::error_code reactive_socket_service_base::close( if (is_open(impl)) reactor_.close_descriptor(impl.socket_, impl.reactor_data_); - if (socket_ops::close(impl.socket_, impl.state_, true, ec) == 0) + if (socket_ops::close(impl.socket_, impl.state_, false, ec) == 0) construct(impl); return ec; diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/resolver_service_base.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/resolver_service_base.ipp index d1af0be..e456bb9 100644 --- a/3rdParty/Boost/src/boost/asio/detail/impl/resolver_service_base.ipp +++ b/3rdParty/Boost/src/boost/asio/detail/impl/resolver_service_base.ipp @@ -2,7 +2,7 @@ // detail/impl/resolver_service_base.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/select_reactor.hpp b/3rdParty/Boost/src/boost/asio/detail/impl/select_reactor.hpp index 55e064e..3773bfb 100644 --- a/3rdParty/Boost/src/boost/asio/detail/impl/select_reactor.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/impl/select_reactor.hpp @@ -2,7 +2,7 @@ // detail/impl/select_reactor.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/select_reactor.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/select_reactor.ipp index af6e6c1..8fcf68e 100644 --- a/3rdParty/Boost/src/boost/asio/detail/impl/select_reactor.ipp +++ b/3rdParty/Boost/src/boost/asio/detail/impl/select_reactor.ipp @@ -2,7 +2,7 @@ // detail/impl/select_reactor.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/service_registry.hpp b/3rdParty/Boost/src/boost/asio/detail/impl/service_registry.hpp index 59eb3f7..97f5771 100644 --- a/3rdParty/Boost/src/boost/asio/detail/impl/service_registry.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/impl/service_registry.hpp @@ -2,7 +2,7 @@ // detail/impl/service_registry.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/service_registry.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/service_registry.ipp index 9f7381e..c2f07ec 100644 --- a/3rdParty/Boost/src/boost/asio/detail/impl/service_registry.ipp +++ b/3rdParty/Boost/src/boost/asio/detail/impl/service_registry.ipp @@ -2,7 +2,7 @@ // detail/impl/service_registry.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/socket_ops.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/socket_ops.ipp index 5ac052a..e240acd 100644 --- a/3rdParty/Boost/src/boost/asio/detail/impl/socket_ops.ipp +++ b/3rdParty/Boost/src/boost/asio/detail/impl/socket_ops.ipp @@ -2,7 +2,7 @@ // detail/impl/socket_ops.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/socket_select_interrupter.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/socket_select_interrupter.ipp index d697a6e..3b64771 100644 --- a/3rdParty/Boost/src/boost/asio/detail/impl/socket_select_interrupter.ipp +++ b/3rdParty/Boost/src/boost/asio/detail/impl/socket_select_interrupter.ipp @@ -2,7 +2,7 @@ // detail/impl/socket_select_interrupter.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/strand_service.hpp b/3rdParty/Boost/src/boost/asio/detail/impl/strand_service.hpp index e959947..5cb320d 100644 --- a/3rdParty/Boost/src/boost/asio/detail/impl/strand_service.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/impl/strand_service.hpp @@ -2,7 +2,7 @@ // detail/impl/strand_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/strand_service.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/strand_service.ipp index f94570a..6a42146 100644 --- a/3rdParty/Boost/src/boost/asio/detail/impl/strand_service.ipp +++ b/3rdParty/Boost/src/boost/asio/detail/impl/strand_service.ipp @@ -2,7 +2,7 @@ // detail/impl/strand_service.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/task_io_service.hpp b/3rdParty/Boost/src/boost/asio/detail/impl/task_io_service.hpp index ed5b2c4..a002189 100644 --- a/3rdParty/Boost/src/boost/asio/detail/impl/task_io_service.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/impl/task_io_service.hpp @@ -2,7 +2,7 @@ // detail/impl/task_io_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/task_io_service.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/task_io_service.ipp index 4cc2326..babfa7b 100644 --- a/3rdParty/Boost/src/boost/asio/detail/impl/task_io_service.ipp +++ b/3rdParty/Boost/src/boost/asio/detail/impl/task_io_service.ipp @@ -2,7 +2,7 @@ // detail/impl/task_io_service.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/throw_error.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/throw_error.ipp index e66cca5..5ba6b9c 100644 --- a/3rdParty/Boost/src/boost/asio/detail/impl/throw_error.ipp +++ b/3rdParty/Boost/src/boost/asio/detail/impl/throw_error.ipp @@ -2,7 +2,7 @@ // detail/impl/throw_error.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/timer_queue_set.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/timer_queue_set.ipp index 275b9c5..d1027e6 100644 --- a/3rdParty/Boost/src/boost/asio/detail/impl/timer_queue_set.ipp +++ b/3rdParty/Boost/src/boost/asio/detail/impl/timer_queue_set.ipp @@ -2,7 +2,7 @@ // detail/impl/timer_queue_set.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/win_event.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/win_event.ipp index d383c5b..fe904fb 100644 --- a/3rdParty/Boost/src/boost/asio/detail/impl/win_event.ipp +++ b/3rdParty/Boost/src/boost/asio/detail/impl/win_event.ipp @@ -2,7 +2,7 @@ // detail/win_event.ipp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/win_iocp_handle_service.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/win_iocp_handle_service.ipp index 3169632..eb6643a 100644 --- a/3rdParty/Boost/src/boost/asio/detail/impl/win_iocp_handle_service.ipp +++ b/3rdParty/Boost/src/boost/asio/detail/impl/win_iocp_handle_service.ipp @@ -2,7 +2,7 @@ // detail/impl/win_iocp_handle_service.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/win_iocp_io_service.hpp b/3rdParty/Boost/src/boost/asio/detail/impl/win_iocp_io_service.hpp index cccff70..18b9413 100644 --- a/3rdParty/Boost/src/boost/asio/detail/impl/win_iocp_io_service.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/impl/win_iocp_io_service.hpp @@ -2,7 +2,7 @@ // detail/impl/win_iocp_io_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/win_iocp_io_service.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/win_iocp_io_service.ipp index 08b81e9..9711702 100644 --- a/3rdParty/Boost/src/boost/asio/detail/impl/win_iocp_io_service.ipp +++ b/3rdParty/Boost/src/boost/asio/detail/impl/win_iocp_io_service.ipp @@ -2,7 +2,7 @@ // detail/impl/win_iocp_io_service.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/win_iocp_serial_port_service.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/win_iocp_serial_port_service.ipp index bd2310c..32ab6d1 100644 --- a/3rdParty/Boost/src/boost/asio/detail/impl/win_iocp_serial_port_service.ipp +++ b/3rdParty/Boost/src/boost/asio/detail/impl/win_iocp_serial_port_service.ipp @@ -2,7 +2,7 @@ // detail/impl/win_iocp_serial_port_service.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/win_iocp_socket_service_base.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/win_iocp_socket_service_base.ipp index e301658..0a2825b 100644 --- a/3rdParty/Boost/src/boost/asio/detail/impl/win_iocp_socket_service_base.ipp +++ b/3rdParty/Boost/src/boost/asio/detail/impl/win_iocp_socket_service_base.ipp @@ -2,7 +2,7 @@ // detail/impl/win_iocp_socket_service_base.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/win_mutex.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/win_mutex.ipp index 65ffb3b..af0d20e 100644 --- a/3rdParty/Boost/src/boost/asio/detail/impl/win_mutex.ipp +++ b/3rdParty/Boost/src/boost/asio/detail/impl/win_mutex.ipp @@ -2,7 +2,7 @@ // detail/impl/win_mutex.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/win_thread.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/win_thread.ipp index 22d2300..07cc5c2 100644 --- a/3rdParty/Boost/src/boost/asio/detail/impl/win_thread.ipp +++ b/3rdParty/Boost/src/boost/asio/detail/impl/win_thread.ipp @@ -2,7 +2,7 @@ // detail/impl/win_thread.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/win_tss_ptr.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/win_tss_ptr.ipp index 7da9be3..02abd55 100644 --- a/3rdParty/Boost/src/boost/asio/detail/impl/win_tss_ptr.ipp +++ b/3rdParty/Boost/src/boost/asio/detail/impl/win_tss_ptr.ipp @@ -2,7 +2,7 @@ // detail/impl/win_tss_ptr.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/winsock_init.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/winsock_init.ipp index 082ea84..e8fd647 100644 --- a/3rdParty/Boost/src/boost/asio/detail/impl/winsock_init.ipp +++ b/3rdParty/Boost/src/boost/asio/detail/impl/winsock_init.ipp @@ -2,7 +2,7 @@ // detail/impl/winsock_init.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/io_control.hpp b/3rdParty/Boost/src/boost/asio/detail/io_control.hpp index cb02fee..c63e6e5 100644 --- a/3rdParty/Boost/src/boost/asio/detail/io_control.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/io_control.hpp @@ -2,7 +2,7 @@ // detail/io_control.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/kqueue_reactor.hpp b/3rdParty/Boost/src/boost/asio/detail/kqueue_reactor.hpp index eb2a243..80f7ca3 100644 --- a/3rdParty/Boost/src/boost/asio/detail/kqueue_reactor.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/kqueue_reactor.hpp @@ -2,7 +2,7 @@ // detail/kqueue_reactor.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2005 Stefan Arentz (stefan at soze dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/3rdParty/Boost/src/boost/asio/detail/kqueue_reactor_fwd.hpp b/3rdParty/Boost/src/boost/asio/detail/kqueue_reactor_fwd.hpp index 97f8c96..1bceb30 100644 --- a/3rdParty/Boost/src/boost/asio/detail/kqueue_reactor_fwd.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/kqueue_reactor_fwd.hpp @@ -2,7 +2,7 @@ // detail/kqueue_reactor_fwd.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2005 Stefan Arentz (stefan at soze dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/3rdParty/Boost/src/boost/asio/detail/macos_fenced_block.hpp b/3rdParty/Boost/src/boost/asio/detail/macos_fenced_block.hpp index a653aee..d37eea6 100644 --- a/3rdParty/Boost/src/boost/asio/detail/macos_fenced_block.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/macos_fenced_block.hpp @@ -2,7 +2,7 @@ // detail/macos_fenced_block.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/mutex.hpp b/3rdParty/Boost/src/boost/asio/detail/mutex.hpp index f601996..988dd3a 100644 --- a/3rdParty/Boost/src/boost/asio/detail/mutex.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/mutex.hpp @@ -2,7 +2,7 @@ // detail/mutex.hpp // ~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/noncopyable.hpp b/3rdParty/Boost/src/boost/asio/detail/noncopyable.hpp index 65ae9a2..234ce93 100644 --- a/3rdParty/Boost/src/boost/asio/detail/noncopyable.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/noncopyable.hpp @@ -2,7 +2,7 @@ // detail/noncopyable.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/null_event.hpp b/3rdParty/Boost/src/boost/asio/detail/null_event.hpp index 3acc26c..7f079ae 100644 --- a/3rdParty/Boost/src/boost/asio/detail/null_event.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/null_event.hpp @@ -2,7 +2,7 @@ // detail/null_event.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/null_fenced_block.hpp b/3rdParty/Boost/src/boost/asio/detail/null_fenced_block.hpp index ead4c87..70680c5 100644 --- a/3rdParty/Boost/src/boost/asio/detail/null_fenced_block.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/null_fenced_block.hpp @@ -2,7 +2,7 @@ // detail/null_fenced_block.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/null_mutex.hpp b/3rdParty/Boost/src/boost/asio/detail/null_mutex.hpp index 8fca31c..e095e01 100644 --- a/3rdParty/Boost/src/boost/asio/detail/null_mutex.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/null_mutex.hpp @@ -2,7 +2,7 @@ // detail/null_mutex.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/null_signal_blocker.hpp b/3rdParty/Boost/src/boost/asio/detail/null_signal_blocker.hpp index 9eeccb9..bcf813b 100644 --- a/3rdParty/Boost/src/boost/asio/detail/null_signal_blocker.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/null_signal_blocker.hpp @@ -2,7 +2,7 @@ // detail/null_signal_blocker.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/null_thread.hpp b/3rdParty/Boost/src/boost/asio/detail/null_thread.hpp index 1745011..ae32014 100644 --- a/3rdParty/Boost/src/boost/asio/detail/null_thread.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/null_thread.hpp @@ -2,7 +2,7 @@ // detail/null_thread.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/null_tss_ptr.hpp b/3rdParty/Boost/src/boost/asio/detail/null_tss_ptr.hpp index 3eff2dc..c44b4de 100644 --- a/3rdParty/Boost/src/boost/asio/detail/null_tss_ptr.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/null_tss_ptr.hpp @@ -2,7 +2,7 @@ // detail/null_tss_ptr.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/object_pool.hpp b/3rdParty/Boost/src/boost/asio/detail/object_pool.hpp index 87f3902..69790a0 100644 --- a/3rdParty/Boost/src/boost/asio/detail/object_pool.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/object_pool.hpp @@ -2,7 +2,7 @@ // detail/object_pool.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/old_win_sdk_compat.hpp b/3rdParty/Boost/src/boost/asio/detail/old_win_sdk_compat.hpp index 10cd898..d385d3e 100644 --- a/3rdParty/Boost/src/boost/asio/detail/old_win_sdk_compat.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/old_win_sdk_compat.hpp @@ -2,7 +2,7 @@ // detail/old_win_sdk_compat.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/op_queue.hpp b/3rdParty/Boost/src/boost/asio/detail/op_queue.hpp index e35e82d..d508e9d 100644 --- a/3rdParty/Boost/src/boost/asio/detail/op_queue.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/op_queue.hpp @@ -2,7 +2,7 @@ // detail/op_queue.hpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/operation.hpp b/3rdParty/Boost/src/boost/asio/detail/operation.hpp index e42455c..d2015e7 100644 --- a/3rdParty/Boost/src/boost/asio/detail/operation.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/operation.hpp @@ -2,7 +2,7 @@ // detail/operation.hpp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/pipe_select_interrupter.hpp b/3rdParty/Boost/src/boost/asio/detail/pipe_select_interrupter.hpp index 054f731..ad32736 100644 --- a/3rdParty/Boost/src/boost/asio/detail/pipe_select_interrupter.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/pipe_select_interrupter.hpp @@ -2,7 +2,7 @@ // detail/pipe_select_interrupter.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/pop_options.hpp b/3rdParty/Boost/src/boost/asio/detail/pop_options.hpp index d589cb7..75afc2b 100644 --- a/3rdParty/Boost/src/boost/asio/detail/pop_options.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/pop_options.hpp @@ -2,7 +2,7 @@ // detail/pop_options.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/posix_event.hpp b/3rdParty/Boost/src/boost/asio/detail/posix_event.hpp index 13fa3d4..dc2ed31 100644 --- a/3rdParty/Boost/src/boost/asio/detail/posix_event.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/posix_event.hpp @@ -2,7 +2,7 @@ // detail/posix_event.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/posix_fd_set_adapter.hpp b/3rdParty/Boost/src/boost/asio/detail/posix_fd_set_adapter.hpp index 5395eb9..b8be596 100644 --- a/3rdParty/Boost/src/boost/asio/detail/posix_fd_set_adapter.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/posix_fd_set_adapter.hpp @@ -2,7 +2,7 @@ // detail/posix_fd_set_adapter.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/posix_mutex.hpp b/3rdParty/Boost/src/boost/asio/detail/posix_mutex.hpp index 4fcd8ac..5f5fd83 100644 --- a/3rdParty/Boost/src/boost/asio/detail/posix_mutex.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/posix_mutex.hpp @@ -2,7 +2,7 @@ // detail/posix_mutex.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/posix_signal_blocker.hpp b/3rdParty/Boost/src/boost/asio/detail/posix_signal_blocker.hpp index 247a7a8..88fa330 100644 --- a/3rdParty/Boost/src/boost/asio/detail/posix_signal_blocker.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/posix_signal_blocker.hpp @@ -2,7 +2,7 @@ // detail/posix_signal_blocker.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/posix_thread.hpp b/3rdParty/Boost/src/boost/asio/detail/posix_thread.hpp index a87e396..5d8b684 100644 --- a/3rdParty/Boost/src/boost/asio/detail/posix_thread.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/posix_thread.hpp @@ -2,7 +2,7 @@ // detail/posix_thread.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/posix_tss_ptr.hpp b/3rdParty/Boost/src/boost/asio/detail/posix_tss_ptr.hpp index dfe8369..2edcbc1 100644 --- a/3rdParty/Boost/src/boost/asio/detail/posix_tss_ptr.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/posix_tss_ptr.hpp @@ -2,7 +2,7 @@ // detail/posix_tss_ptr.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/push_options.hpp b/3rdParty/Boost/src/boost/asio/detail/push_options.hpp index 587aef9..050549d 100644 --- a/3rdParty/Boost/src/boost/asio/detail/push_options.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/push_options.hpp @@ -2,7 +2,7 @@ // detail/push_options.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/reactive_descriptor_service.hpp b/3rdParty/Boost/src/boost/asio/detail/reactive_descriptor_service.hpp index 993211a..510c505 100644 --- a/3rdParty/Boost/src/boost/asio/detail/reactive_descriptor_service.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/reactive_descriptor_service.hpp @@ -2,7 +2,7 @@ // detail/reactive_descriptor_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/reactive_null_buffers_op.hpp b/3rdParty/Boost/src/boost/asio/detail/reactive_null_buffers_op.hpp index a2a6911..6ccc19e 100644 --- a/3rdParty/Boost/src/boost/asio/detail/reactive_null_buffers_op.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/reactive_null_buffers_op.hpp @@ -2,7 +2,7 @@ // detail/reactive_null_buffers_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/reactive_serial_port_service.hpp b/3rdParty/Boost/src/boost/asio/detail/reactive_serial_port_service.hpp index 0955f1d..303c1f0 100644 --- a/3rdParty/Boost/src/boost/asio/detail/reactive_serial_port_service.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/reactive_serial_port_service.hpp @@ -2,7 +2,7 @@ // detail/reactive_serial_port_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/3rdParty/Boost/src/boost/asio/detail/reactive_socket_accept_op.hpp b/3rdParty/Boost/src/boost/asio/detail/reactive_socket_accept_op.hpp index 3b2413f..3805c9f 100644 --- a/3rdParty/Boost/src/boost/asio/detail/reactive_socket_accept_op.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/reactive_socket_accept_op.hpp @@ -2,7 +2,7 @@ // detail/reactive_socket_accept_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/reactive_socket_connect_op.hpp b/3rdParty/Boost/src/boost/asio/detail/reactive_socket_connect_op.hpp index 2bfb55d..6de7474 100644 --- a/3rdParty/Boost/src/boost/asio/detail/reactive_socket_connect_op.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/reactive_socket_connect_op.hpp @@ -2,7 +2,7 @@ // detail/reactive_socket_connect_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/reactive_socket_recv_op.hpp b/3rdParty/Boost/src/boost/asio/detail/reactive_socket_recv_op.hpp index d58aa3f..75ce44f 100644 --- a/3rdParty/Boost/src/boost/asio/detail/reactive_socket_recv_op.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/reactive_socket_recv_op.hpp @@ -2,7 +2,7 @@ // detail/reactive_socket_recv_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/reactive_socket_recvfrom_op.hpp b/3rdParty/Boost/src/boost/asio/detail/reactive_socket_recvfrom_op.hpp index 469b6a5..b496ea0 100644 --- a/3rdParty/Boost/src/boost/asio/detail/reactive_socket_recvfrom_op.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/reactive_socket_recvfrom_op.hpp @@ -2,7 +2,7 @@ // detail/reactive_socket_recvfrom_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/reactive_socket_send_op.hpp b/3rdParty/Boost/src/boost/asio/detail/reactive_socket_send_op.hpp index 157d075..2fe195e 100644 --- a/3rdParty/Boost/src/boost/asio/detail/reactive_socket_send_op.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/reactive_socket_send_op.hpp @@ -2,7 +2,7 @@ // detail/reactive_socket_send_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/reactive_socket_sendto_op.hpp b/3rdParty/Boost/src/boost/asio/detail/reactive_socket_sendto_op.hpp index 6199ec2..12046c3 100644 --- a/3rdParty/Boost/src/boost/asio/detail/reactive_socket_sendto_op.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/reactive_socket_sendto_op.hpp @@ -2,7 +2,7 @@ // detail/reactive_socket_sendto_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/reactive_socket_service.hpp b/3rdParty/Boost/src/boost/asio/detail/reactive_socket_service.hpp index 7288881..92eef4a 100644 --- a/3rdParty/Boost/src/boost/asio/detail/reactive_socket_service.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/reactive_socket_service.hpp @@ -2,7 +2,7 @@ // detail/reactive_socket_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/reactive_socket_service_base.hpp b/3rdParty/Boost/src/boost/asio/detail/reactive_socket_service_base.hpp index 1733ce1..df87ddb 100644 --- a/3rdParty/Boost/src/boost/asio/detail/reactive_socket_service_base.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/reactive_socket_service_base.hpp @@ -2,7 +2,7 @@ // detail/reactive_socket_service_base.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/reactor.hpp b/3rdParty/Boost/src/boost/asio/detail/reactor.hpp index 468276d..f225ea0 100644 --- a/3rdParty/Boost/src/boost/asio/detail/reactor.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/reactor.hpp @@ -2,7 +2,7 @@ // detail/reactor.hpp // ~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/reactor_fwd.hpp b/3rdParty/Boost/src/boost/asio/detail/reactor_fwd.hpp index 3fae83c..a4ff94a 100644 --- a/3rdParty/Boost/src/boost/asio/detail/reactor_fwd.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/reactor_fwd.hpp @@ -2,7 +2,7 @@ // detail/reactor_fwd.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/reactor_op.hpp b/3rdParty/Boost/src/boost/asio/detail/reactor_op.hpp index ed4a33d..0c8271c 100644 --- a/3rdParty/Boost/src/boost/asio/detail/reactor_op.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/reactor_op.hpp @@ -2,7 +2,7 @@ // detail/reactor_op.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/reactor_op_queue.hpp b/3rdParty/Boost/src/boost/asio/detail/reactor_op_queue.hpp index 830e9b3..02b8ea2 100644 --- a/3rdParty/Boost/src/boost/asio/detail/reactor_op_queue.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/reactor_op_queue.hpp @@ -2,7 +2,7 @@ // detail/reactor_op_queue.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/regex_fwd.hpp b/3rdParty/Boost/src/boost/asio/detail/regex_fwd.hpp index 2ccb5d1..d61ad61 100644 --- a/3rdParty/Boost/src/boost/asio/detail/regex_fwd.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/regex_fwd.hpp @@ -2,7 +2,7 @@ // detail/regex_fwd.hpp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/resolve_endpoint_op.hpp b/3rdParty/Boost/src/boost/asio/detail/resolve_endpoint_op.hpp index ccf5f53..46acda3 100644 --- a/3rdParty/Boost/src/boost/asio/detail/resolve_endpoint_op.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/resolve_endpoint_op.hpp @@ -2,7 +2,7 @@ // detail/resolve_endpoint_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/resolve_op.hpp b/3rdParty/Boost/src/boost/asio/detail/resolve_op.hpp index aff6104..379ec39 100644 --- a/3rdParty/Boost/src/boost/asio/detail/resolve_op.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/resolve_op.hpp @@ -2,7 +2,7 @@ // detail/resolve_op.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/resolver_service.hpp b/3rdParty/Boost/src/boost/asio/detail/resolver_service.hpp index 1b734a0..1c343cb 100644 --- a/3rdParty/Boost/src/boost/asio/detail/resolver_service.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/resolver_service.hpp @@ -2,7 +2,7 @@ // detail/resolver_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/resolver_service_base.hpp b/3rdParty/Boost/src/boost/asio/detail/resolver_service_base.hpp index cc6ede6..60e9e09 100644 --- a/3rdParty/Boost/src/boost/asio/detail/resolver_service_base.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/resolver_service_base.hpp @@ -2,7 +2,7 @@ // detail/resolver_service_base.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/scoped_lock.hpp b/3rdParty/Boost/src/boost/asio/detail/scoped_lock.hpp index 247411e..b523ae5 100644 --- a/3rdParty/Boost/src/boost/asio/detail/scoped_lock.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/scoped_lock.hpp @@ -2,7 +2,7 @@ // detail/scoped_lock.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/select_interrupter.hpp b/3rdParty/Boost/src/boost/asio/detail/select_interrupter.hpp index 9683e63..f0a1275 100644 --- a/3rdParty/Boost/src/boost/asio/detail/select_interrupter.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/select_interrupter.hpp @@ -2,7 +2,7 @@ // detail/select_interrupter.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/select_reactor.hpp b/3rdParty/Boost/src/boost/asio/detail/select_reactor.hpp index 55a819d..f4f8bdf 100644 --- a/3rdParty/Boost/src/boost/asio/detail/select_reactor.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/select_reactor.hpp @@ -2,7 +2,7 @@ // detail/select_reactor.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) @@ -51,10 +51,10 @@ class select_reactor { public: #if defined(BOOST_WINDOWS) || defined(__CYGWIN__) - enum { read_op = 0, write_op = 1, except_op = 2, + enum op_types { read_op = 0, write_op = 1, except_op = 2, max_select_ops = 3, connect_op = 3, max_ops = 4 }; #else // defined(BOOST_WINDOWS) || defined(__CYGWIN__) - enum { read_op = 0, write_op = 1, except_op = 2, + enum op_types { read_op = 0, write_op = 1, except_op = 2, max_select_ops = 3, connect_op = 1, max_ops = 3 }; #endif // defined(BOOST_WINDOWS) || defined(__CYGWIN__) diff --git a/3rdParty/Boost/src/boost/asio/detail/select_reactor_fwd.hpp b/3rdParty/Boost/src/boost/asio/detail/select_reactor_fwd.hpp index f4f9f65..78ff61b 100644 --- a/3rdParty/Boost/src/boost/asio/detail/select_reactor_fwd.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/select_reactor_fwd.hpp @@ -2,7 +2,7 @@ // detail/select_reactor_fwd.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/service_registry.hpp b/3rdParty/Boost/src/boost/asio/detail/service_registry.hpp index 6ba30f1..a247ea8 100644 --- a/3rdParty/Boost/src/boost/asio/detail/service_registry.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/service_registry.hpp @@ -2,7 +2,7 @@ // detail/service_registry.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/service_registry_fwd.hpp b/3rdParty/Boost/src/boost/asio/detail/service_registry_fwd.hpp index 8713a30..a6bb25e 100644 --- a/3rdParty/Boost/src/boost/asio/detail/service_registry_fwd.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/service_registry_fwd.hpp @@ -2,7 +2,7 @@ // detail/service_registry_fwd.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/shared_ptr.hpp b/3rdParty/Boost/src/boost/asio/detail/shared_ptr.hpp index 0c5586e..fe497b7 100644 --- a/3rdParty/Boost/src/boost/asio/detail/shared_ptr.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/shared_ptr.hpp @@ -2,7 +2,7 @@ // detail/shared_ptr.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/signal_blocker.hpp b/3rdParty/Boost/src/boost/asio/detail/signal_blocker.hpp index 67eaac0..cc00482 100644 --- a/3rdParty/Boost/src/boost/asio/detail/signal_blocker.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/signal_blocker.hpp @@ -2,7 +2,7 @@ // detail/signal_blocker.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/signal_init.hpp b/3rdParty/Boost/src/boost/asio/detail/signal_init.hpp index 76d21bf..f346956 100644 --- a/3rdParty/Boost/src/boost/asio/detail/signal_init.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/signal_init.hpp @@ -2,7 +2,7 @@ // detail/signal_init.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/socket_holder.hpp b/3rdParty/Boost/src/boost/asio/detail/socket_holder.hpp index 7815acc..52d2e4d 100644 --- a/3rdParty/Boost/src/boost/asio/detail/socket_holder.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/socket_holder.hpp @@ -2,7 +2,7 @@ // detail/socket_holder.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/socket_ops.hpp b/3rdParty/Boost/src/boost/asio/detail/socket_ops.hpp index a32b4cc..18a8131 100644 --- a/3rdParty/Boost/src/boost/asio/detail/socket_ops.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/socket_ops.hpp @@ -2,7 +2,7 @@ // detail/socket_ops.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/socket_option.hpp b/3rdParty/Boost/src/boost/asio/detail/socket_option.hpp index 37efa83..c841033 100644 --- a/3rdParty/Boost/src/boost/asio/detail/socket_option.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/socket_option.hpp @@ -2,7 +2,7 @@ // detail/socket_option.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/socket_select_interrupter.hpp b/3rdParty/Boost/src/boost/asio/detail/socket_select_interrupter.hpp index b674514..6d68d5a 100644 --- a/3rdParty/Boost/src/boost/asio/detail/socket_select_interrupter.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/socket_select_interrupter.hpp @@ -2,7 +2,7 @@ // detail/socket_select_interrupter.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/socket_types.hpp b/3rdParty/Boost/src/boost/asio/detail/socket_types.hpp index 616e85a..f0679b6 100644 --- a/3rdParty/Boost/src/boost/asio/detail/socket_types.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/socket_types.hpp @@ -2,7 +2,7 @@ // detail/socket_types.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/solaris_fenced_block.hpp b/3rdParty/Boost/src/boost/asio/detail/solaris_fenced_block.hpp index db6cb98..0b117ad 100644 --- a/3rdParty/Boost/src/boost/asio/detail/solaris_fenced_block.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/solaris_fenced_block.hpp @@ -2,7 +2,7 @@ // detail/solaris_fenced_block.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/strand_service.hpp b/3rdParty/Boost/src/boost/asio/detail/strand_service.hpp index 24bec7c..0783ac4 100644 --- a/3rdParty/Boost/src/boost/asio/detail/strand_service.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/strand_service.hpp @@ -2,7 +2,7 @@ // detail/strand_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/task_io_service.hpp b/3rdParty/Boost/src/boost/asio/detail/task_io_service.hpp index a9a7053..c014855 100644 --- a/3rdParty/Boost/src/boost/asio/detail/task_io_service.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/task_io_service.hpp @@ -2,7 +2,7 @@ // detail/task_io_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/task_io_service_fwd.hpp b/3rdParty/Boost/src/boost/asio/detail/task_io_service_fwd.hpp index 24dd11b..b3243b7 100644 --- a/3rdParty/Boost/src/boost/asio/detail/task_io_service_fwd.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/task_io_service_fwd.hpp @@ -2,7 +2,7 @@ // detail/task_io_service_fwd.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/task_io_service_operation.hpp b/3rdParty/Boost/src/boost/asio/detail/task_io_service_operation.hpp index e234c07..08164fa 100644 --- a/3rdParty/Boost/src/boost/asio/detail/task_io_service_operation.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/task_io_service_operation.hpp @@ -2,7 +2,7 @@ // detail/task_io_service_operation.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/thread.hpp b/3rdParty/Boost/src/boost/asio/detail/thread.hpp index 8848cd0..48cffb1 100644 --- a/3rdParty/Boost/src/boost/asio/detail/thread.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/thread.hpp @@ -2,7 +2,7 @@ // detail/thread.hpp // ~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/throw_error.hpp b/3rdParty/Boost/src/boost/asio/detail/throw_error.hpp index 713a196..43bc9c3 100644 --- a/3rdParty/Boost/src/boost/asio/detail/throw_error.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/throw_error.hpp @@ -2,7 +2,7 @@ // detail/throw_error.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/timer_op.hpp b/3rdParty/Boost/src/boost/asio/detail/timer_op.hpp index 8f82339..24a536c 100644 --- a/3rdParty/Boost/src/boost/asio/detail/timer_op.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/timer_op.hpp @@ -2,7 +2,7 @@ // detail/timer_op.hpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/timer_queue.hpp b/3rdParty/Boost/src/boost/asio/detail/timer_queue.hpp index 09eb825..328a9ed 100644 --- a/3rdParty/Boost/src/boost/asio/detail/timer_queue.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/timer_queue.hpp @@ -2,7 +2,7 @@ // detail/timer_queue.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/timer_queue_base.hpp b/3rdParty/Boost/src/boost/asio/detail/timer_queue_base.hpp index 0290308..d493871 100644 --- a/3rdParty/Boost/src/boost/asio/detail/timer_queue_base.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/timer_queue_base.hpp @@ -2,7 +2,7 @@ // detail/timer_queue_base.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/timer_queue_fwd.hpp b/3rdParty/Boost/src/boost/asio/detail/timer_queue_fwd.hpp index 0a62a44..14c6319 100644 --- a/3rdParty/Boost/src/boost/asio/detail/timer_queue_fwd.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/timer_queue_fwd.hpp @@ -2,7 +2,7 @@ // detail/timer_queue_fwd.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/timer_queue_set.hpp b/3rdParty/Boost/src/boost/asio/detail/timer_queue_set.hpp index c2cea66..549d7e6 100644 --- a/3rdParty/Boost/src/boost/asio/detail/timer_queue_set.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/timer_queue_set.hpp @@ -2,7 +2,7 @@ // detail/timer_queue_set.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/timer_scheduler.hpp b/3rdParty/Boost/src/boost/asio/detail/timer_scheduler.hpp index ec80f40..2edc0c8 100644 --- a/3rdParty/Boost/src/boost/asio/detail/timer_scheduler.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/timer_scheduler.hpp @@ -2,7 +2,7 @@ // detail/timer_scheduler.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/timer_scheduler_fwd.hpp b/3rdParty/Boost/src/boost/asio/detail/timer_scheduler_fwd.hpp index 77d6c99..e01b657 100644 --- a/3rdParty/Boost/src/boost/asio/detail/timer_scheduler_fwd.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/timer_scheduler_fwd.hpp @@ -2,7 +2,7 @@ // detail/timer_scheduler_fwd.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/tss_ptr.hpp b/3rdParty/Boost/src/boost/asio/detail/tss_ptr.hpp index 8edf15b..35ed8e2 100644 --- a/3rdParty/Boost/src/boost/asio/detail/tss_ptr.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/tss_ptr.hpp @@ -2,7 +2,7 @@ // detail/tss_ptr.hpp // ~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/wait_handler.hpp b/3rdParty/Boost/src/boost/asio/detail/wait_handler.hpp index e451f19..95be6bd 100644 --- a/3rdParty/Boost/src/boost/asio/detail/wait_handler.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/wait_handler.hpp @@ -2,7 +2,7 @@ // detail/wait_handler.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/weak_ptr.hpp b/3rdParty/Boost/src/boost/asio/detail/weak_ptr.hpp index 9a14297..81a8b06 100644 --- a/3rdParty/Boost/src/boost/asio/detail/weak_ptr.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/weak_ptr.hpp @@ -2,7 +2,7 @@ // detail/weak_ptr.hpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/win_event.hpp b/3rdParty/Boost/src/boost/asio/detail/win_event.hpp index 736ebb2..63c25c4 100644 --- a/3rdParty/Boost/src/boost/asio/detail/win_event.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/win_event.hpp @@ -2,7 +2,7 @@ // detail/win_event.hpp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/win_fd_set_adapter.hpp b/3rdParty/Boost/src/boost/asio/detail/win_fd_set_adapter.hpp index 4a5d7fa..8636a91 100644 --- a/3rdParty/Boost/src/boost/asio/detail/win_fd_set_adapter.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/win_fd_set_adapter.hpp @@ -2,7 +2,7 @@ // detail/win_fd_set_adapter.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/win_fenced_block.hpp b/3rdParty/Boost/src/boost/asio/detail/win_fenced_block.hpp index 928395e..769db2e 100644 --- a/3rdParty/Boost/src/boost/asio/detail/win_fenced_block.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/win_fenced_block.hpp @@ -2,7 +2,7 @@ // detail/win_fenced_block.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/win_iocp_handle_read_op.hpp b/3rdParty/Boost/src/boost/asio/detail/win_iocp_handle_read_op.hpp index f1a9b1f..5edffa3 100644 --- a/3rdParty/Boost/src/boost/asio/detail/win_iocp_handle_read_op.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/win_iocp_handle_read_op.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_handle_read_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/3rdParty/Boost/src/boost/asio/detail/win_iocp_handle_service.hpp b/3rdParty/Boost/src/boost/asio/detail/win_iocp_handle_service.hpp index 291a06f..86c4391 100644 --- a/3rdParty/Boost/src/boost/asio/detail/win_iocp_handle_service.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/win_iocp_handle_service.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_handle_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/3rdParty/Boost/src/boost/asio/detail/win_iocp_handle_write_op.hpp b/3rdParty/Boost/src/boost/asio/detail/win_iocp_handle_write_op.hpp index 971f174..574dc22 100644 --- a/3rdParty/Boost/src/boost/asio/detail/win_iocp_handle_write_op.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/win_iocp_handle_write_op.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_handle_write_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/3rdParty/Boost/src/boost/asio/detail/win_iocp_io_service.hpp b/3rdParty/Boost/src/boost/asio/detail/win_iocp_io_service.hpp index 235424e..4c88e7b 100644 --- a/3rdParty/Boost/src/boost/asio/detail/win_iocp_io_service.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/win_iocp_io_service.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_io_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/win_iocp_io_service_fwd.hpp b/3rdParty/Boost/src/boost/asio/detail/win_iocp_io_service_fwd.hpp index 1357603..b6da9ec 100644 --- a/3rdParty/Boost/src/boost/asio/detail/win_iocp_io_service_fwd.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/win_iocp_io_service_fwd.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_io_service_fwd.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/win_iocp_null_buffers_op.hpp b/3rdParty/Boost/src/boost/asio/detail/win_iocp_null_buffers_op.hpp index ed1c28f..b3ecbbd 100644 --- a/3rdParty/Boost/src/boost/asio/detail/win_iocp_null_buffers_op.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/win_iocp_null_buffers_op.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_null_buffers_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/win_iocp_operation.hpp b/3rdParty/Boost/src/boost/asio/detail/win_iocp_operation.hpp index c9b3041..3963479 100644 --- a/3rdParty/Boost/src/boost/asio/detail/win_iocp_operation.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/win_iocp_operation.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_operation.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/win_iocp_overlapped_op.hpp b/3rdParty/Boost/src/boost/asio/detail/win_iocp_overlapped_op.hpp index 911449d..149eaa5 100644 --- a/3rdParty/Boost/src/boost/asio/detail/win_iocp_overlapped_op.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/win_iocp_overlapped_op.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_overlapped_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/win_iocp_overlapped_ptr.hpp b/3rdParty/Boost/src/boost/asio/detail/win_iocp_overlapped_ptr.hpp index 5589c11..c560bc3 100644 --- a/3rdParty/Boost/src/boost/asio/detail/win_iocp_overlapped_ptr.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/win_iocp_overlapped_ptr.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_overlapped_ptr.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/win_iocp_serial_port_service.hpp b/3rdParty/Boost/src/boost/asio/detail/win_iocp_serial_port_service.hpp index a0caa69..8b543d2 100644 --- a/3rdParty/Boost/src/boost/asio/detail/win_iocp_serial_port_service.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/win_iocp_serial_port_service.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_serial_port_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_accept_op.hpp b/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_accept_op.hpp index 89dff0c..ecc1f2d 100644 --- a/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_accept_op.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_accept_op.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_socket_accept_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_recv_op.hpp b/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_recv_op.hpp index 98d7e99..61d053c 100644 --- a/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_recv_op.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_recv_op.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_socket_recv_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_recvfrom_op.hpp b/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_recvfrom_op.hpp index eca34df..6b364ee 100644 --- a/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_recvfrom_op.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_recvfrom_op.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_socket_recvfrom_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_send_op.hpp b/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_send_op.hpp index 2dcb4af..33bd380 100644 --- a/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_send_op.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_send_op.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_socket_send_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_service.hpp b/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_service.hpp index 6f1f2bd..183b74b 100644 --- a/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_service.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_service.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_socket_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_service_base.hpp b/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_service_base.hpp index 2dd3ba3..32532f9 100644 --- a/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_service_base.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_service_base.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_socket_service_base.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/win_mutex.hpp b/3rdParty/Boost/src/boost/asio/detail/win_mutex.hpp index 3f6dadb..0c5dc26 100644 --- a/3rdParty/Boost/src/boost/asio/detail/win_mutex.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/win_mutex.hpp @@ -2,7 +2,7 @@ // detail/win_mutex.hpp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/win_thread.hpp b/3rdParty/Boost/src/boost/asio/detail/win_thread.hpp index cba546f..4e33bd9 100644 --- a/3rdParty/Boost/src/boost/asio/detail/win_thread.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/win_thread.hpp @@ -2,7 +2,7 @@ // detail/win_thread.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/win_tss_ptr.hpp b/3rdParty/Boost/src/boost/asio/detail/win_tss_ptr.hpp index 2c5ee3b..75811c1 100644 --- a/3rdParty/Boost/src/boost/asio/detail/win_tss_ptr.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/win_tss_ptr.hpp @@ -2,7 +2,7 @@ // detail/win_tss_ptr.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/wince_thread.hpp b/3rdParty/Boost/src/boost/asio/detail/wince_thread.hpp index 82ca544..7f7b1e4 100644 --- a/3rdParty/Boost/src/boost/asio/detail/wince_thread.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/wince_thread.hpp @@ -2,7 +2,7 @@ // detail/wince_thread.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/winsock_init.hpp b/3rdParty/Boost/src/boost/asio/detail/winsock_init.hpp index ac24b0d..dc50fbf 100644 --- a/3rdParty/Boost/src/boost/asio/detail/winsock_init.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/winsock_init.hpp @@ -2,7 +2,7 @@ // detail/winsock_init.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/detail/wrapped_handler.hpp b/3rdParty/Boost/src/boost/asio/detail/wrapped_handler.hpp index 9645b64..b326847 100644 --- a/3rdParty/Boost/src/boost/asio/detail/wrapped_handler.hpp +++ b/3rdParty/Boost/src/boost/asio/detail/wrapped_handler.hpp @@ -2,7 +2,7 @@ // detail/wrapped_handler.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/error.hpp b/3rdParty/Boost/src/boost/asio/error.hpp index 569ad80..d0287a0 100644 --- a/3rdParty/Boost/src/boost/asio/error.hpp +++ b/3rdParty/Boost/src/boost/asio/error.hpp @@ -2,7 +2,7 @@ // error.hpp // ~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/handler_alloc_hook.hpp b/3rdParty/Boost/src/boost/asio/handler_alloc_hook.hpp index 179f75e..ca56871 100644 --- a/3rdParty/Boost/src/boost/asio/handler_alloc_hook.hpp +++ b/3rdParty/Boost/src/boost/asio/handler_alloc_hook.hpp @@ -2,7 +2,7 @@ // handler_alloc_hook.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/handler_invoke_hook.hpp b/3rdParty/Boost/src/boost/asio/handler_invoke_hook.hpp index f997f11..f4f6831 100644 --- a/3rdParty/Boost/src/boost/asio/handler_invoke_hook.hpp +++ b/3rdParty/Boost/src/boost/asio/handler_invoke_hook.hpp @@ -2,7 +2,7 @@ // handler_invoke_hook.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/impl/error.ipp b/3rdParty/Boost/src/boost/asio/impl/error.ipp index 708654e..7c045c0 100644 --- a/3rdParty/Boost/src/boost/asio/impl/error.ipp +++ b/3rdParty/Boost/src/boost/asio/impl/error.ipp @@ -2,7 +2,7 @@ // impl/error.ipp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/impl/io_service.hpp b/3rdParty/Boost/src/boost/asio/impl/io_service.hpp index 3c082cb..152f983 100644 --- a/3rdParty/Boost/src/boost/asio/impl/io_service.hpp +++ b/3rdParty/Boost/src/boost/asio/impl/io_service.hpp @@ -2,7 +2,7 @@ // impl/io_service.hpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/impl/io_service.ipp b/3rdParty/Boost/src/boost/asio/impl/io_service.ipp index 731adb8..a0b34af 100644 --- a/3rdParty/Boost/src/boost/asio/impl/io_service.ipp +++ b/3rdParty/Boost/src/boost/asio/impl/io_service.ipp @@ -2,7 +2,7 @@ // impl/io_service.ipp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/impl/read.hpp b/3rdParty/Boost/src/boost/asio/impl/read.hpp index 6f9842c..9fba190 100644 --- a/3rdParty/Boost/src/boost/asio/impl/read.hpp +++ b/3rdParty/Boost/src/boost/asio/impl/read.hpp @@ -2,7 +2,7 @@ // impl/read.hpp // ~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/impl/read_at.hpp b/3rdParty/Boost/src/boost/asio/impl/read_at.hpp index f6ea0b3..dcf2c33 100644 --- a/3rdParty/Boost/src/boost/asio/impl/read_at.hpp +++ b/3rdParty/Boost/src/boost/asio/impl/read_at.hpp @@ -2,7 +2,7 @@ // impl/read_at.hpp // ~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/impl/read_until.hpp b/3rdParty/Boost/src/boost/asio/impl/read_until.hpp index 73f8773..5eeb1bc 100644 --- a/3rdParty/Boost/src/boost/asio/impl/read_until.hpp +++ b/3rdParty/Boost/src/boost/asio/impl/read_until.hpp @@ -2,7 +2,7 @@ // impl/read_until.hpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/impl/serial_port_base.hpp b/3rdParty/Boost/src/boost/asio/impl/serial_port_base.hpp index 2b291f3..c75f8c2 100644 --- a/3rdParty/Boost/src/boost/asio/impl/serial_port_base.hpp +++ b/3rdParty/Boost/src/boost/asio/impl/serial_port_base.hpp @@ -2,7 +2,7 @@ // impl/serial_port_base.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/3rdParty/Boost/src/boost/asio/impl/serial_port_base.ipp b/3rdParty/Boost/src/boost/asio/impl/serial_port_base.ipp index 2bfe58a..c665ac8 100644 --- a/3rdParty/Boost/src/boost/asio/impl/serial_port_base.ipp +++ b/3rdParty/Boost/src/boost/asio/impl/serial_port_base.ipp @@ -2,7 +2,7 @@ // impl/serial_port_base.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/3rdParty/Boost/src/boost/asio/impl/write.hpp b/3rdParty/Boost/src/boost/asio/impl/write.hpp index fa2982a..ae420bc 100644 --- a/3rdParty/Boost/src/boost/asio/impl/write.hpp +++ b/3rdParty/Boost/src/boost/asio/impl/write.hpp @@ -2,7 +2,7 @@ // impl/write.hpp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/impl/write_at.hpp b/3rdParty/Boost/src/boost/asio/impl/write_at.hpp index aad64ef..39dc1af 100644 --- a/3rdParty/Boost/src/boost/asio/impl/write_at.hpp +++ b/3rdParty/Boost/src/boost/asio/impl/write_at.hpp @@ -2,7 +2,7 @@ // impl/write_at.hpp // ~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/io_service.hpp b/3rdParty/Boost/src/boost/asio/io_service.hpp index 9350a84..a6a27fa 100644 --- a/3rdParty/Boost/src/boost/asio/io_service.hpp +++ b/3rdParty/Boost/src/boost/asio/io_service.hpp @@ -2,7 +2,7 @@ // io_service.hpp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/ip/address.hpp b/3rdParty/Boost/src/boost/asio/ip/address.hpp index 8cc3a4b..4ecae7a 100644 --- a/3rdParty/Boost/src/boost/asio/ip/address.hpp +++ b/3rdParty/Boost/src/boost/asio/ip/address.hpp @@ -2,7 +2,7 @@ // ip/address.hpp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/ip/address_v4.hpp b/3rdParty/Boost/src/boost/asio/ip/address_v4.hpp index 21c1a7f..5728a17 100644 --- a/3rdParty/Boost/src/boost/asio/ip/address_v4.hpp +++ b/3rdParty/Boost/src/boost/asio/ip/address_v4.hpp @@ -2,7 +2,7 @@ // ip/address_v4.hpp // ~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/ip/address_v6.hpp b/3rdParty/Boost/src/boost/asio/ip/address_v6.hpp index 7165eac..9155bea 100644 --- a/3rdParty/Boost/src/boost/asio/ip/address_v6.hpp +++ b/3rdParty/Boost/src/boost/asio/ip/address_v6.hpp @@ -2,7 +2,7 @@ // ip/address_v6.hpp // ~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/ip/basic_endpoint.hpp b/3rdParty/Boost/src/boost/asio/ip/basic_endpoint.hpp index 10459c4..0047adc 100644 --- a/3rdParty/Boost/src/boost/asio/ip/basic_endpoint.hpp +++ b/3rdParty/Boost/src/boost/asio/ip/basic_endpoint.hpp @@ -2,7 +2,7 @@ // ip/basic_endpoint.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/ip/basic_resolver.hpp b/3rdParty/Boost/src/boost/asio/ip/basic_resolver.hpp index 21b83da..f27515a 100644 --- a/3rdParty/Boost/src/boost/asio/ip/basic_resolver.hpp +++ b/3rdParty/Boost/src/boost/asio/ip/basic_resolver.hpp @@ -2,7 +2,7 @@ // ip/basic_resolver.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/ip/basic_resolver_entry.hpp b/3rdParty/Boost/src/boost/asio/ip/basic_resolver_entry.hpp index 84589b5..980b488 100644 --- a/3rdParty/Boost/src/boost/asio/ip/basic_resolver_entry.hpp +++ b/3rdParty/Boost/src/boost/asio/ip/basic_resolver_entry.hpp @@ -2,7 +2,7 @@ // ip/basic_resolver_entry.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/ip/basic_resolver_iterator.hpp b/3rdParty/Boost/src/boost/asio/ip/basic_resolver_iterator.hpp index de42699..465c278 100644 --- a/3rdParty/Boost/src/boost/asio/ip/basic_resolver_iterator.hpp +++ b/3rdParty/Boost/src/boost/asio/ip/basic_resolver_iterator.hpp @@ -2,7 +2,7 @@ // ip/basic_resolver_iterator.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/ip/basic_resolver_query.hpp b/3rdParty/Boost/src/boost/asio/ip/basic_resolver_query.hpp index 38cba01..8fd63bc 100644 --- a/3rdParty/Boost/src/boost/asio/ip/basic_resolver_query.hpp +++ b/3rdParty/Boost/src/boost/asio/ip/basic_resolver_query.hpp @@ -2,7 +2,7 @@ // ip/basic_resolver_query.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/ip/detail/endpoint.hpp b/3rdParty/Boost/src/boost/asio/ip/detail/endpoint.hpp index 9823e72..fe95a00 100644 --- a/3rdParty/Boost/src/boost/asio/ip/detail/endpoint.hpp +++ b/3rdParty/Boost/src/boost/asio/ip/detail/endpoint.hpp @@ -2,7 +2,7 @@ // ip/detail/endpoint.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/ip/detail/impl/endpoint.ipp b/3rdParty/Boost/src/boost/asio/ip/detail/impl/endpoint.ipp index 4a6e395..0443d38 100644 --- a/3rdParty/Boost/src/boost/asio/ip/detail/impl/endpoint.ipp +++ b/3rdParty/Boost/src/boost/asio/ip/detail/impl/endpoint.ipp @@ -2,7 +2,7 @@ // ip/detail/impl/endpoint.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/ip/detail/socket_option.hpp b/3rdParty/Boost/src/boost/asio/ip/detail/socket_option.hpp index 59ce6c3..6fde8c3 100644 --- a/3rdParty/Boost/src/boost/asio/ip/detail/socket_option.hpp +++ b/3rdParty/Boost/src/boost/asio/ip/detail/socket_option.hpp @@ -2,7 +2,7 @@ // detail/socket_option.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/ip/host_name.hpp b/3rdParty/Boost/src/boost/asio/ip/host_name.hpp index f40a9df..33860c9 100644 --- a/3rdParty/Boost/src/boost/asio/ip/host_name.hpp +++ b/3rdParty/Boost/src/boost/asio/ip/host_name.hpp @@ -2,7 +2,7 @@ // ip/host_name.hpp // ~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/ip/icmp.hpp b/3rdParty/Boost/src/boost/asio/ip/icmp.hpp index ca5d434..14bb944 100644 --- a/3rdParty/Boost/src/boost/asio/ip/icmp.hpp +++ b/3rdParty/Boost/src/boost/asio/ip/icmp.hpp @@ -2,7 +2,7 @@ // ip/icmp.hpp // ~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/ip/impl/address.hpp b/3rdParty/Boost/src/boost/asio/ip/impl/address.hpp index c19d25d..94dfb17 100644 --- a/3rdParty/Boost/src/boost/asio/ip/impl/address.hpp +++ b/3rdParty/Boost/src/boost/asio/ip/impl/address.hpp @@ -2,7 +2,7 @@ // ip/impl/address.hpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/ip/impl/address.ipp b/3rdParty/Boost/src/boost/asio/ip/impl/address.ipp index 70513b7..11f06fc 100644 --- a/3rdParty/Boost/src/boost/asio/ip/impl/address.ipp +++ b/3rdParty/Boost/src/boost/asio/ip/impl/address.ipp @@ -2,7 +2,7 @@ // ip/impl/address.ipp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/ip/impl/address_v4.hpp b/3rdParty/Boost/src/boost/asio/ip/impl/address_v4.hpp index 7e798e8..d27d48d 100644 --- a/3rdParty/Boost/src/boost/asio/ip/impl/address_v4.hpp +++ b/3rdParty/Boost/src/boost/asio/ip/impl/address_v4.hpp @@ -2,7 +2,7 @@ // ip/impl/address_v4.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/ip/impl/address_v4.ipp b/3rdParty/Boost/src/boost/asio/ip/impl/address_v4.ipp index 3cdcbf1..8bdef19 100644 --- a/3rdParty/Boost/src/boost/asio/ip/impl/address_v4.ipp +++ b/3rdParty/Boost/src/boost/asio/ip/impl/address_v4.ipp @@ -2,7 +2,7 @@ // ip/impl/address_v4.ipp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) @@ -141,7 +141,7 @@ bool address_v4::is_multicast() const address_v4 address_v4::broadcast(const address_v4& addr, const address_v4& mask) { - return address_v4(addr.to_ulong() | ~mask.to_ulong()); + return address_v4(addr.to_ulong() | (mask.to_ulong() ^ 0xFFFFFFFF)); } address_v4 address_v4::netmask(const address_v4& addr) diff --git a/3rdParty/Boost/src/boost/asio/ip/impl/address_v6.hpp b/3rdParty/Boost/src/boost/asio/ip/impl/address_v6.hpp index 8b39e3e..11e1797 100644 --- a/3rdParty/Boost/src/boost/asio/ip/impl/address_v6.hpp +++ b/3rdParty/Boost/src/boost/asio/ip/impl/address_v6.hpp @@ -2,7 +2,7 @@ // ip/impl/address_v6.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/ip/impl/address_v6.ipp b/3rdParty/Boost/src/boost/asio/ip/impl/address_v6.ipp index a06dfe5..5a3dddd 100644 --- a/3rdParty/Boost/src/boost/asio/ip/impl/address_v6.ipp +++ b/3rdParty/Boost/src/boost/asio/ip/impl/address_v6.ipp @@ -2,7 +2,7 @@ // ip/impl/address_v6.ipp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/ip/impl/basic_endpoint.hpp b/3rdParty/Boost/src/boost/asio/ip/impl/basic_endpoint.hpp index 474c193..9d39c87 100644 --- a/3rdParty/Boost/src/boost/asio/ip/impl/basic_endpoint.hpp +++ b/3rdParty/Boost/src/boost/asio/ip/impl/basic_endpoint.hpp @@ -2,7 +2,7 @@ // ip/impl/basic_endpoint.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/ip/impl/host_name.ipp b/3rdParty/Boost/src/boost/asio/ip/impl/host_name.ipp index a5ba582..734341e 100644 --- a/3rdParty/Boost/src/boost/asio/ip/impl/host_name.ipp +++ b/3rdParty/Boost/src/boost/asio/ip/impl/host_name.ipp @@ -2,7 +2,7 @@ // ip/impl/host_name.ipp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/ip/multicast.hpp b/3rdParty/Boost/src/boost/asio/ip/multicast.hpp index e4d9f88..2a02627 100644 --- a/3rdParty/Boost/src/boost/asio/ip/multicast.hpp +++ b/3rdParty/Boost/src/boost/asio/ip/multicast.hpp @@ -2,7 +2,7 @@ // ip/multicast.hpp // ~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/ip/resolver_query_base.hpp b/3rdParty/Boost/src/boost/asio/ip/resolver_query_base.hpp index 0173e11..96ad512 100644 --- a/3rdParty/Boost/src/boost/asio/ip/resolver_query_base.hpp +++ b/3rdParty/Boost/src/boost/asio/ip/resolver_query_base.hpp @@ -2,7 +2,7 @@ // ip/resolver_query_base.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/ip/resolver_service.hpp b/3rdParty/Boost/src/boost/asio/ip/resolver_service.hpp index b13e0ad..db0554b 100644 --- a/3rdParty/Boost/src/boost/asio/ip/resolver_service.hpp +++ b/3rdParty/Boost/src/boost/asio/ip/resolver_service.hpp @@ -2,7 +2,7 @@ // ip/resolver_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/ip/tcp.hpp b/3rdParty/Boost/src/boost/asio/ip/tcp.hpp index 2026148..4163a8d 100644 --- a/3rdParty/Boost/src/boost/asio/ip/tcp.hpp +++ b/3rdParty/Boost/src/boost/asio/ip/tcp.hpp @@ -2,7 +2,7 @@ // ip/tcp.hpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/ip/udp.hpp b/3rdParty/Boost/src/boost/asio/ip/udp.hpp index 4d78692..40f5d3a 100644 --- a/3rdParty/Boost/src/boost/asio/ip/udp.hpp +++ b/3rdParty/Boost/src/boost/asio/ip/udp.hpp @@ -2,7 +2,7 @@ // ip/udp.hpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/ip/unicast.hpp b/3rdParty/Boost/src/boost/asio/ip/unicast.hpp index 1f331de..dc7d8e9 100644 --- a/3rdParty/Boost/src/boost/asio/ip/unicast.hpp +++ b/3rdParty/Boost/src/boost/asio/ip/unicast.hpp @@ -2,7 +2,7 @@ // ip/unicast.hpp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/ip/v6_only.hpp b/3rdParty/Boost/src/boost/asio/ip/v6_only.hpp index e9aab31..e67a548 100644 --- a/3rdParty/Boost/src/boost/asio/ip/v6_only.hpp +++ b/3rdParty/Boost/src/boost/asio/ip/v6_only.hpp @@ -2,7 +2,7 @@ // ip/v6_only.hpp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/is_read_buffered.hpp b/3rdParty/Boost/src/boost/asio/is_read_buffered.hpp index e429e6d..1aac50f 100644 --- a/3rdParty/Boost/src/boost/asio/is_read_buffered.hpp +++ b/3rdParty/Boost/src/boost/asio/is_read_buffered.hpp @@ -2,7 +2,7 @@ // is_read_buffered.hpp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/is_write_buffered.hpp b/3rdParty/Boost/src/boost/asio/is_write_buffered.hpp index fff68d6..03de0f1 100644 --- a/3rdParty/Boost/src/boost/asio/is_write_buffered.hpp +++ b/3rdParty/Boost/src/boost/asio/is_write_buffered.hpp @@ -2,7 +2,7 @@ // is_write_buffered.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/local/basic_endpoint.hpp b/3rdParty/Boost/src/boost/asio/local/basic_endpoint.hpp index 2cd93f6..fcb53a0 100644 --- a/3rdParty/Boost/src/boost/asio/local/basic_endpoint.hpp +++ b/3rdParty/Boost/src/boost/asio/local/basic_endpoint.hpp @@ -2,7 +2,7 @@ // local/basic_endpoint.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Derived from a public domain implementation written by Daniel Casimiro. // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/3rdParty/Boost/src/boost/asio/local/connect_pair.hpp b/3rdParty/Boost/src/boost/asio/local/connect_pair.hpp index cb08777..9ef6cd3 100644 --- a/3rdParty/Boost/src/boost/asio/local/connect_pair.hpp +++ b/3rdParty/Boost/src/boost/asio/local/connect_pair.hpp @@ -2,7 +2,7 @@ // local/connect_pair.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/local/datagram_protocol.hpp b/3rdParty/Boost/src/boost/asio/local/datagram_protocol.hpp index 2d78773..eaa0241 100644 --- a/3rdParty/Boost/src/boost/asio/local/datagram_protocol.hpp +++ b/3rdParty/Boost/src/boost/asio/local/datagram_protocol.hpp @@ -2,7 +2,7 @@ // local/datagram_protocol.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/local/detail/endpoint.hpp b/3rdParty/Boost/src/boost/asio/local/detail/endpoint.hpp index 5fb7297..c527793 100644 --- a/3rdParty/Boost/src/boost/asio/local/detail/endpoint.hpp +++ b/3rdParty/Boost/src/boost/asio/local/detail/endpoint.hpp @@ -2,7 +2,7 @@ // local/detail/endpoint.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Derived from a public domain implementation written by Daniel Casimiro. // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/3rdParty/Boost/src/boost/asio/local/detail/impl/endpoint.ipp b/3rdParty/Boost/src/boost/asio/local/detail/impl/endpoint.ipp index ffbc44e..a4c1e56 100644 --- a/3rdParty/Boost/src/boost/asio/local/detail/impl/endpoint.ipp +++ b/3rdParty/Boost/src/boost/asio/local/detail/impl/endpoint.ipp @@ -2,7 +2,7 @@ // local/detail/impl/endpoint.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Derived from a public domain implementation written by Daniel Casimiro. // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/3rdParty/Boost/src/boost/asio/local/stream_protocol.hpp b/3rdParty/Boost/src/boost/asio/local/stream_protocol.hpp index 723c348..e8692c5 100644 --- a/3rdParty/Boost/src/boost/asio/local/stream_protocol.hpp +++ b/3rdParty/Boost/src/boost/asio/local/stream_protocol.hpp @@ -2,7 +2,7 @@ // local/stream_protocol.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/placeholders.hpp b/3rdParty/Boost/src/boost/asio/placeholders.hpp index 2940eda..19ddb66 100644 --- a/3rdParty/Boost/src/boost/asio/placeholders.hpp +++ b/3rdParty/Boost/src/boost/asio/placeholders.hpp @@ -2,7 +2,7 @@ // placeholders.hpp // ~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) @@ -39,7 +39,7 @@ unspecified bytes_transferred; /// An argument placeholder, for use with boost::bind(), that corresponds to /// the iterator argument of a handler for asynchronous functions such as -/// boost::asio::basic_resolver::resolve. +/// boost::asio::basic_resolver::async_resolve. unspecified iterator; #elif defined(__BORLANDC__) || defined(__GNUC__) diff --git a/3rdParty/Boost/src/boost/asio/posix/basic_descriptor.hpp b/3rdParty/Boost/src/boost/asio/posix/basic_descriptor.hpp index 56ec9d8..cf953db 100644 --- a/3rdParty/Boost/src/boost/asio/posix/basic_descriptor.hpp +++ b/3rdParty/Boost/src/boost/asio/posix/basic_descriptor.hpp @@ -2,7 +2,7 @@ // posix/basic_descriptor.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/posix/basic_stream_descriptor.hpp b/3rdParty/Boost/src/boost/asio/posix/basic_stream_descriptor.hpp index 0f70604..ee08567 100644 --- a/3rdParty/Boost/src/boost/asio/posix/basic_stream_descriptor.hpp +++ b/3rdParty/Boost/src/boost/asio/posix/basic_stream_descriptor.hpp @@ -2,7 +2,7 @@ // posix/basic_stream_descriptor.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/posix/descriptor_base.hpp b/3rdParty/Boost/src/boost/asio/posix/descriptor_base.hpp index 70bac63..2e5cb47 100644 --- a/3rdParty/Boost/src/boost/asio/posix/descriptor_base.hpp +++ b/3rdParty/Boost/src/boost/asio/posix/descriptor_base.hpp @@ -2,7 +2,7 @@ // posix/descriptor_base.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/posix/stream_descriptor.hpp b/3rdParty/Boost/src/boost/asio/posix/stream_descriptor.hpp index 30b7e37..22551ab 100644 --- a/3rdParty/Boost/src/boost/asio/posix/stream_descriptor.hpp +++ b/3rdParty/Boost/src/boost/asio/posix/stream_descriptor.hpp @@ -2,7 +2,7 @@ // posix/stream_descriptor.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/posix/stream_descriptor_service.hpp b/3rdParty/Boost/src/boost/asio/posix/stream_descriptor_service.hpp index c2034da..c582b8e 100644 --- a/3rdParty/Boost/src/boost/asio/posix/stream_descriptor_service.hpp +++ b/3rdParty/Boost/src/boost/asio/posix/stream_descriptor_service.hpp @@ -2,7 +2,7 @@ // posix/stream_descriptor_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/raw_socket_service.hpp b/3rdParty/Boost/src/boost/asio/raw_socket_service.hpp index 0db83b6..783c4c2 100644 --- a/3rdParty/Boost/src/boost/asio/raw_socket_service.hpp +++ b/3rdParty/Boost/src/boost/asio/raw_socket_service.hpp @@ -2,7 +2,7 @@ // raw_socket_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/read.hpp b/3rdParty/Boost/src/boost/asio/read.hpp index d2339d5..fd13e75 100644 --- a/3rdParty/Boost/src/boost/asio/read.hpp +++ b/3rdParty/Boost/src/boost/asio/read.hpp @@ -2,7 +2,7 @@ // read.hpp // ~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/read_at.hpp b/3rdParty/Boost/src/boost/asio/read_at.hpp index 27bad65..1feba6c 100644 --- a/3rdParty/Boost/src/boost/asio/read_at.hpp +++ b/3rdParty/Boost/src/boost/asio/read_at.hpp @@ -2,7 +2,7 @@ // read_at.hpp // ~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/read_until.hpp b/3rdParty/Boost/src/boost/asio/read_until.hpp index aa9d2ba..546537b 100644 --- a/3rdParty/Boost/src/boost/asio/read_until.hpp +++ b/3rdParty/Boost/src/boost/asio/read_until.hpp @@ -2,7 +2,7 @@ // read_until.hpp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/serial_port.hpp b/3rdParty/Boost/src/boost/asio/serial_port.hpp index 9775739..a2f1721 100644 --- a/3rdParty/Boost/src/boost/asio/serial_port.hpp +++ b/3rdParty/Boost/src/boost/asio/serial_port.hpp @@ -2,7 +2,7 @@ // serial_port.hpp // ~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/3rdParty/Boost/src/boost/asio/serial_port_base.hpp b/3rdParty/Boost/src/boost/asio/serial_port_base.hpp index a050df2..083d006 100644 --- a/3rdParty/Boost/src/boost/asio/serial_port_base.hpp +++ b/3rdParty/Boost/src/boost/asio/serial_port_base.hpp @@ -2,7 +2,7 @@ // serial_port_base.hpp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/3rdParty/Boost/src/boost/asio/serial_port_service.hpp b/3rdParty/Boost/src/boost/asio/serial_port_service.hpp index b1c8301..1a8a11b 100644 --- a/3rdParty/Boost/src/boost/asio/serial_port_service.hpp +++ b/3rdParty/Boost/src/boost/asio/serial_port_service.hpp @@ -2,7 +2,7 @@ // serial_port_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/socket_acceptor_service.hpp b/3rdParty/Boost/src/boost/asio/socket_acceptor_service.hpp index 3f7436b..f287c65 100644 --- a/3rdParty/Boost/src/boost/asio/socket_acceptor_service.hpp +++ b/3rdParty/Boost/src/boost/asio/socket_acceptor_service.hpp @@ -2,7 +2,7 @@ // socket_acceptor_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/socket_base.hpp b/3rdParty/Boost/src/boost/asio/socket_base.hpp index 083ffb6..f5bac91 100644 --- a/3rdParty/Boost/src/boost/asio/socket_base.hpp +++ b/3rdParty/Boost/src/boost/asio/socket_base.hpp @@ -2,7 +2,7 @@ // socket_base.hpp // ~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/strand.hpp b/3rdParty/Boost/src/boost/asio/strand.hpp index e085030..2928167 100644 --- a/3rdParty/Boost/src/boost/asio/strand.hpp +++ b/3rdParty/Boost/src/boost/asio/strand.hpp @@ -2,7 +2,7 @@ // strand.hpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/stream_socket_service.hpp b/3rdParty/Boost/src/boost/asio/stream_socket_service.hpp index 101eacb..40d5e18 100644 --- a/3rdParty/Boost/src/boost/asio/stream_socket_service.hpp +++ b/3rdParty/Boost/src/boost/asio/stream_socket_service.hpp @@ -2,7 +2,7 @@ // stream_socket_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/streambuf.hpp b/3rdParty/Boost/src/boost/asio/streambuf.hpp index 30196ad..8f724c3 100644 --- a/3rdParty/Boost/src/boost/asio/streambuf.hpp +++ b/3rdParty/Boost/src/boost/asio/streambuf.hpp @@ -2,7 +2,7 @@ // streambuf.hpp // ~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/time_traits.hpp b/3rdParty/Boost/src/boost/asio/time_traits.hpp index 9043d7d..0da7e6b 100644 --- a/3rdParty/Boost/src/boost/asio/time_traits.hpp +++ b/3rdParty/Boost/src/boost/asio/time_traits.hpp @@ -2,7 +2,7 @@ // time_traits.hpp // ~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/version.hpp b/3rdParty/Boost/src/boost/asio/version.hpp index 20858bf..9ef5ab5 100644 --- a/3rdParty/Boost/src/boost/asio/version.hpp +++ b/3rdParty/Boost/src/boost/asio/version.hpp @@ -2,7 +2,7 @@ // version.hpp // ~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) @@ -18,6 +18,6 @@ // BOOST_ASIO_VERSION % 100 is the sub-minor version // BOOST_ASIO_VERSION / 100 % 1000 is the minor version // BOOST_ASIO_VERSION / 100000 is the major version -#define BOOST_ASIO_VERSION 100407 // 1.4.7 +#define BOOST_ASIO_VERSION 100409 // 1.4.9 #endif // BOOST_ASIO_VERSION_HPP diff --git a/3rdParty/Boost/src/boost/asio/windows/basic_handle.hpp b/3rdParty/Boost/src/boost/asio/windows/basic_handle.hpp index 58bb54d..aedd79a 100644 --- a/3rdParty/Boost/src/boost/asio/windows/basic_handle.hpp +++ b/3rdParty/Boost/src/boost/asio/windows/basic_handle.hpp @@ -2,7 +2,7 @@ // windows/basic_handle.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/windows/basic_random_access_handle.hpp b/3rdParty/Boost/src/boost/asio/windows/basic_random_access_handle.hpp index 5c403d0..207e414 100644 --- a/3rdParty/Boost/src/boost/asio/windows/basic_random_access_handle.hpp +++ b/3rdParty/Boost/src/boost/asio/windows/basic_random_access_handle.hpp @@ -2,7 +2,7 @@ // windows/basic_random_access_handle.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/windows/basic_stream_handle.hpp b/3rdParty/Boost/src/boost/asio/windows/basic_stream_handle.hpp index 340e402..105b041 100644 --- a/3rdParty/Boost/src/boost/asio/windows/basic_stream_handle.hpp +++ b/3rdParty/Boost/src/boost/asio/windows/basic_stream_handle.hpp @@ -2,7 +2,7 @@ // windows/basic_stream_handle.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/windows/overlapped_ptr.hpp b/3rdParty/Boost/src/boost/asio/windows/overlapped_ptr.hpp index 24a199f..c9b1889 100644 --- a/3rdParty/Boost/src/boost/asio/windows/overlapped_ptr.hpp +++ b/3rdParty/Boost/src/boost/asio/windows/overlapped_ptr.hpp @@ -2,7 +2,7 @@ // windows/overlapped_ptr.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/windows/random_access_handle.hpp b/3rdParty/Boost/src/boost/asio/windows/random_access_handle.hpp index 03d7055..183ad0d 100644 --- a/3rdParty/Boost/src/boost/asio/windows/random_access_handle.hpp +++ b/3rdParty/Boost/src/boost/asio/windows/random_access_handle.hpp @@ -2,7 +2,7 @@ // windows/random_access_handle.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/windows/random_access_handle_service.hpp b/3rdParty/Boost/src/boost/asio/windows/random_access_handle_service.hpp index e5a2e11..08cb561 100644 --- a/3rdParty/Boost/src/boost/asio/windows/random_access_handle_service.hpp +++ b/3rdParty/Boost/src/boost/asio/windows/random_access_handle_service.hpp @@ -2,7 +2,7 @@ // windows/random_access_handle_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/windows/stream_handle.hpp b/3rdParty/Boost/src/boost/asio/windows/stream_handle.hpp index ca2a56c..67f6452 100644 --- a/3rdParty/Boost/src/boost/asio/windows/stream_handle.hpp +++ b/3rdParty/Boost/src/boost/asio/windows/stream_handle.hpp @@ -2,7 +2,7 @@ // windows/stream_handle.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/windows/stream_handle_service.hpp b/3rdParty/Boost/src/boost/asio/windows/stream_handle_service.hpp index e534646..418ea1e 100644 --- a/3rdParty/Boost/src/boost/asio/windows/stream_handle_service.hpp +++ b/3rdParty/Boost/src/boost/asio/windows/stream_handle_service.hpp @@ -2,7 +2,7 @@ // windows/stream_handle_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/write.hpp b/3rdParty/Boost/src/boost/asio/write.hpp index 0ec0879..537a8d6 100644 --- a/3rdParty/Boost/src/boost/asio/write.hpp +++ b/3rdParty/Boost/src/boost/asio/write.hpp @@ -2,7 +2,7 @@ // write.hpp // ~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/asio/write_at.hpp b/3rdParty/Boost/src/boost/asio/write_at.hpp index a078a70..9c0c575 100644 --- a/3rdParty/Boost/src/boost/asio/write_at.hpp +++ b/3rdParty/Boost/src/boost/asio/write_at.hpp @@ -2,7 +2,7 @@ // write_at.hpp // ~~~~~~~~~~~~ // -// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // 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) diff --git a/3rdParty/Boost/src/boost/assert.hpp b/3rdParty/Boost/src/boost/assert.hpp index c227f17..174f084 100644 --- a/3rdParty/Boost/src/boost/assert.hpp +++ b/3rdParty/Boost/src/boost/assert.hpp @@ -1,8 +1,11 @@ // // boost/assert.hpp - BOOST_ASSERT(expr) +// BOOST_ASSERT_MSG(expr, msg) +// BOOST_VERIFY(expr) // // Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd. // Copyright (c) 2007 Peter Dimov +// Copyright (c) Beman Dawes 2011 // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at @@ -13,6 +16,16 @@ // See http://www.boost.org/libs/utility/assert.html for documentation. // +// +// Stop inspect complaining about use of 'assert': +// +// boostinspect:naassert_macro +// + +//--------------------------------------------------------------------------------------// +// BOOST_ASSERT // +//--------------------------------------------------------------------------------------// + #undef BOOST_ASSERT #if defined(BOOST_DISABLE_ASSERTS) @@ -25,18 +38,86 @@ namespace boost { - -void assertion_failed(char const * expr, char const * function, char const * file, long line); // user defined - + 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__)) +#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 +//--------------------------------------------------------------------------------------// +// BOOST_ASSERT_MSG // +//--------------------------------------------------------------------------------------// + +# undef BOOST_ASSERT_MSG + +#if defined(BOOST_DISABLE_ASSERTS) || defined(NDEBUG) + + #define BOOST_ASSERT_MSG(expr, msg) ((void)0) + +#elif defined(BOOST_ENABLE_ASSERT_HANDLER) + + #include <boost/current_function.hpp> + + namespace boost + { + void assertion_failed_msg(char const * expr, char const * msg, + char const * function, char const * file, long line); // user defined + } // namespace boost + + #define BOOST_ASSERT_MSG(expr, msg) ((expr) \ + ? ((void)0) \ + : ::boost::assertion_failed_msg(#expr, msg, BOOST_CURRENT_FUNCTION, __FILE__, __LINE__)) + +#else + #ifndef BOOST_ASSERT_HPP + #define BOOST_ASSERT_HPP + #include <cstdlib> + #include <iostream> + #include <boost/current_function.hpp> + + // IDE's like Visual Studio perform better if output goes to std::cout or + // some other stream, so allow user to configure output stream: + #ifndef BOOST_ASSERT_MSG_OSTREAM + # define BOOST_ASSERT_MSG_OSTREAM std::cerr + #endif + + namespace boost + { + namespace assertion + { + namespace detail + { + inline void assertion_failed_msg(char const * expr, char const * msg, char const * function, + char const * file, long line) + { + BOOST_ASSERT_MSG_OSTREAM + << "***** Internal Program Error - assertion (" << expr << ") failed in " + << function << ":\n" + << file << '(' << line << "): " << msg << std::endl; + std::abort(); + } + } // detail + } // assertion + } // detail + #endif + + #define BOOST_ASSERT_MSG(expr, msg) ((expr) \ + ? ((void)0) \ + : ::boost::assertion::detail::assertion_failed_msg(#expr, msg, \ + BOOST_CURRENT_FUNCTION, __FILE__, __LINE__)) +#endif + +//--------------------------------------------------------------------------------------// +// BOOST_VERIFY // +//--------------------------------------------------------------------------------------// + #undef BOOST_VERIFY #if defined(BOOST_DISABLE_ASSERTS) || ( !defined(BOOST_ENABLE_ASSERT_HANDLER) && defined(NDEBUG) ) diff --git a/3rdParty/Boost/src/boost/concept_check.hpp b/3rdParty/Boost/src/boost/concept_check.hpp index 58bd8b2..01b2f4e 100644 --- a/3rdParty/Boost/src/boost/concept_check.hpp +++ b/3rdParty/Boost/src/boost/concept_check.hpp @@ -38,14 +38,14 @@ namespace boost // // Backward compatibility // - + template <class Model> inline void function_requires(Model* = 0) { BOOST_CONCEPT_ASSERT((Model)); - } + } template <class T> inline void ignore_unused_variable_warning(T const&) {} - + # define BOOST_CLASS_REQUIRE(type_var, ns, concept) \ BOOST_CONCEPT_ASSERT((ns::concept<type_var>)) @@ -58,20 +58,21 @@ namespace boost # define BOOST_CLASS_REQUIRE4(tv1, tv2, tv3, tv4, ns, concept) \ BOOST_CONCEPT_ASSERT((ns::concept<tv1,tv2,tv3,tv4>)) - + // // Begin concept definitions // BOOST_concept(Integer, (T)) { BOOST_CONCEPT_USAGE(Integer) - { + { x.error_type_must_be_an_integer_type(); } private: T x; }; + template <> struct Integer<char> {}; template <> struct Integer<signed char> {}; template <> struct Integer<unsigned char> {}; template <> struct Integer<short> {}; @@ -89,7 +90,7 @@ namespace boost # endif BOOST_concept(SignedInteger,(T)) { - BOOST_CONCEPT_USAGE(SignedInteger) { + BOOST_CONCEPT_USAGE(SignedInteger) { x.error_type_must_be_a_signed_integer_type(); } private: @@ -103,16 +104,16 @@ namespace boost template <> struct SignedInteger< ::boost::long_long_type> {}; # elif defined(BOOST_HAS_MS_INT64) template <> struct SignedInteger<__int64> {}; -# endif +# endif BOOST_concept(UnsignedInteger,(T)) { - BOOST_CONCEPT_USAGE(UnsignedInteger) { + BOOST_CONCEPT_USAGE(UnsignedInteger) { x.error_type_must_be_an_unsigned_integer_type(); } private: T x; }; - + template <> struct UnsignedInteger<unsigned char> {}; template <> struct UnsignedInteger<unsigned short> {}; template <> struct UnsignedInteger<unsigned int> {}; @@ -138,23 +139,24 @@ namespace boost { BOOST_CONCEPT_USAGE(Assignable) { #if !defined(_ITERATOR_) // back_insert_iterator broken for VC++ STL - a = a; // require assignment operator + a = b; // require assignment operator #endif - const_constraints(a); + const_constraints(b); } private: - void const_constraints(const TT& b) { + void const_constraints(const TT& x) { #if !defined(_ITERATOR_) // back_insert_iterator broken for VC++ STL - a = b; // const required for argument to assignment + a = x; // const required for argument to assignment #else - ignore_unused_variable_warning(b); + ignore_unused_variable_warning(x); #endif } private: TT a; + TT b; }; - + BOOST_concept(CopyConstructible,(TT)) { BOOST_CONCEPT_USAGE(CopyConstructible) { @@ -182,22 +184,23 @@ namespace boost BOOST_concept(SGIAssignable,(TT)) { BOOST_CONCEPT_USAGE(SGIAssignable) { - TT b(a); + TT c(a); #if !defined(_ITERATOR_) // back_insert_iterator broken for VC++ STL - a = a; // require assignment operator + a = b; // require assignment operator #endif - const_constraints(a); - ignore_unused_variable_warning(b); + const_constraints(b); + ignore_unused_variable_warning(c); } private: - void const_constraints(const TT& b) { - TT c(b); + void const_constraints(const TT& x) { + TT c(x); #if !defined(_ITERATOR_) // back_insert_iterator broken for VC++ STL - a = b; // const required for argument to assignment + a = x; // const required for argument to assignment #endif ignore_unused_variable_warning(c); } TT a; + TT b; }; #if (defined _MSC_VER) # pragma warning( pop ) @@ -299,7 +302,7 @@ namespace boost BOOST_concept(Generator,(Func)(Return)) { BOOST_CONCEPT_USAGE(Generator) { test(is_void<Return>()); } - + private: void test(boost::mpl::false_) { @@ -312,22 +315,22 @@ namespace boost { f(); } - + Func f; }; BOOST_concept(UnaryFunction,(Func)(Return)(Arg)) { BOOST_CONCEPT_USAGE(UnaryFunction) { test(is_void<Return>()); } - + private: void test(boost::mpl::false_) { f(arg); // "priming the pump" this way keeps msvc6 happy (ICE) Return r = f(arg); - ignore_unused_variable_warning(r); + ignore_unused_variable_warning(r); } - + void test(boost::mpl::true_) { f(arg); @@ -356,12 +359,21 @@ namespace boost Return r = f(first, second); // require operator() (void)r; } - + void test(boost::mpl::true_) { f(first,second); } - + +#if (BOOST_WORKAROUND(__GNUC__, BOOST_TESTED_AT(4) \ + && BOOST_WORKAROUND(__GNUC__, > 3))) + // Declare a dummy constructor to make gcc happy. + // It seems the compiler can not generate a sensible constructor when this is instantiated with a refence type. + // (warning: non-static reference "const double& boost::BinaryFunction<YourClassHere>::arg" + // in class without a constructor [-Wuninitialized]) + BinaryFunction(); +#endif + Func f; First first; Second second; @@ -373,6 +385,15 @@ namespace boost require_boolean_expr(f(arg)); // require operator() returning bool } private: +#if (BOOST_WORKAROUND(__GNUC__, BOOST_TESTED_AT(4) \ + && BOOST_WORKAROUND(__GNUC__, > 3))) + // Declare a dummy constructor to make gcc happy. + // It seems the compiler can not generate a sensible constructor when this is instantiated with a refence type. + // (warning: non-static reference "const double& boost::UnaryPredicate<YourClassHere>::arg" + // in class without a constructor [-Wuninitialized]) + UnaryPredicate(); +#endif + Func f; Arg arg; }; @@ -383,6 +404,14 @@ namespace boost require_boolean_expr(f(a, b)); // require operator() returning bool } private: +#if (BOOST_WORKAROUND(__GNUC__, BOOST_TESTED_AT(4) \ + && BOOST_WORKAROUND(__GNUC__, > 3))) + // Declare a dummy constructor to make gcc happy. + // It seems the compiler can not generate a sensible constructor when this is instantiated with a refence type. + // (warning: non-static reference "const double& boost::BinaryPredicate<YourClassHere>::arg" + // in class without a constructor [-Wuninitialized]) + BinaryPredicate(); +#endif Func f; First a; Second b; @@ -392,7 +421,7 @@ namespace boost BOOST_concept(Const_BinaryPredicate,(Func)(First)(Second)) : BinaryPredicate<Func, First, Second> { - BOOST_CONCEPT_USAGE(Const_BinaryPredicate) { + BOOST_CONCEPT_USAGE(Const_BinaryPredicate) { const_constraints(f); } private: @@ -400,6 +429,15 @@ namespace boost // operator() must be a const member function require_boolean_expr(fun(a, b)); } +#if (BOOST_WORKAROUND(__GNUC__, BOOST_TESTED_AT(4) \ + && BOOST_WORKAROUND(__GNUC__, > 3))) + // Declare a dummy constructor to make gcc happy. + // It seems the compiler can not generate a sensible constructor when this is instantiated with a refence type. + // (warning: non-static reference "const double& boost::Const_BinaryPredicate<YourClassHere>::arg" + // in class without a constructor [-Wuninitialized]) + Const_BinaryPredicate(); +#endif + Func f; First a; Second b; @@ -409,7 +447,7 @@ namespace boost : Generator<Func, typename Func::result_type> { typedef typename Func::result_type result_type; - + BOOST_CONCEPT_USAGE(AdaptableGenerator) { BOOST_CONCEPT_ASSERT((Convertible<result_type, Return>)); @@ -440,7 +478,7 @@ namespace boost typedef typename Func::first_argument_type first_argument_type; typedef typename Func::second_argument_type second_argument_type; typedef typename Func::result_type result_type; - + ~AdaptableBinaryFunction() { BOOST_CONCEPT_ASSERT((Convertible<result_type, Return>)); @@ -478,7 +516,7 @@ namespace boost { BOOST_CONCEPT_ASSERT((SignedInteger<difference_type>)); BOOST_CONCEPT_ASSERT((Convertible<iterator_category, std::input_iterator_tag>)); - + TT j(i); (void)*i; // require dereference operator ++j; // require preincrement operator @@ -492,7 +530,7 @@ namespace boost : Assignable<TT> { BOOST_CONCEPT_USAGE(OutputIterator) { - + ++i; // require preincrement operator i++; // require postincrement operator *i++ = t; // require postincrement and assignment @@ -511,11 +549,11 @@ namespace boost BOOST_DEDUCED_TYPENAME ForwardIterator::iterator_category , std::forward_iterator_tag >)); - + typename InputIterator<TT>::reference r = *i; ignore_unused_variable_warning(r); } - + private: TT i; }; @@ -577,7 +615,7 @@ namespace boost n = i - j; // require difference operator (void)i[n]; // require element access operator } - + private: TT a, b; TT i, j; @@ -615,7 +653,7 @@ namespace boost BOOST_CONCEPT_ASSERT((InputIterator<const_iterator>)); const_constraints(c); } - + private: void const_constraints(const C& cc) { i = cc.begin(); @@ -636,19 +674,19 @@ namespace boost typedef typename C::reference reference; typedef typename C::iterator iterator; typedef typename C::pointer pointer; - + BOOST_CONCEPT_USAGE(Mutable_Container) { BOOST_CONCEPT_ASSERT(( Assignable<typename Mutable_Container::value_type>)); - + BOOST_CONCEPT_ASSERT((InputIterator<iterator>)); - + i = c.begin(); i = c.end(); c.swap(c2); } - + private: iterator i; C c, c2; @@ -664,7 +702,7 @@ namespace boost typename ForwardContainer::const_iterator >)); } - }; + }; BOOST_concept(Mutable_ForwardContainer,(C)) : ForwardContainer<C> @@ -677,7 +715,7 @@ namespace boost typename Mutable_ForwardContainer::iterator >)); } - }; + }; BOOST_concept(ReversibleContainer,(C)) : ForwardContainer<C> @@ -691,9 +729,9 @@ namespace boost BOOST_CONCEPT_ASSERT(( BidirectionalIterator< typename ReversibleContainer::const_iterator>)); - + BOOST_CONCEPT_ASSERT((BidirectionalIterator<const_reverse_iterator>)); - + const_constraints(c); } private: @@ -710,17 +748,17 @@ namespace boost , ReversibleContainer<C> { typedef typename C::reverse_iterator reverse_iterator; - + BOOST_CONCEPT_USAGE(Mutable_ReversibleContainer) { typedef typename Mutable_ForwardContainer<C>::iterator iterator; BOOST_CONCEPT_ASSERT((Mutable_BidirectionalIterator<iterator>)); BOOST_CONCEPT_ASSERT((Mutable_BidirectionalIterator<reverse_iterator>)); - + reverse_iterator i = c.rbegin(); i = c.rend(); } - private: + private: C c; }; @@ -736,7 +774,7 @@ namespace boost RandomAccessIterator< typename RandomAccessContainer::const_iterator >)); - + const_constraints(c); } private: @@ -745,7 +783,7 @@ namespace boost const_reference r = cc[n]; ignore_unused_variable_warning(r); } - + C c; size_type n; }; @@ -761,11 +799,11 @@ namespace boost { BOOST_CONCEPT_ASSERT((Mutable_RandomAccessIterator<typename self::iterator>)); BOOST_CONCEPT_ASSERT((Mutable_RandomAccessIterator<typename self::reverse_iterator>)); - + typename self::reference r = c[i]; ignore_unused_variable_warning(r); } - + private: typename Mutable_ReversibleContainer<C>::size_type i; C c; @@ -781,7 +819,7 @@ namespace boost { BOOST_CONCEPT_USAGE(Sequence) { - S + S c(n), c2(n, t), c3(first, last); @@ -806,7 +844,7 @@ namespace boost typename Sequence::const_reference r = c.front(); ignore_unused_variable_warning(r); } - + typename S::value_type t; typename S::size_type n; typename S::value_type* first, *last; @@ -865,11 +903,11 @@ namespace boost c.erase(r.first, r.second); const_constraints(c); BOOST_CONCEPT_ASSERT((BinaryPredicate<key_compare,key_type,key_type>)); - + typedef typename AssociativeContainer::value_type value_type_; BOOST_CONCEPT_ASSERT((BinaryPredicate<value_compare,value_type_,value_type_>)); } - + // Redundant with the base concept, but it helps below. typedef typename C::const_iterator const_iterator; private: @@ -895,7 +933,7 @@ namespace boost BOOST_CONCEPT_USAGE(UniqueAssociativeContainer) { C c(first, last); - + pos_flag = c.insert(t); c.insert(first, last); @@ -913,7 +951,7 @@ namespace boost BOOST_CONCEPT_USAGE(MultipleAssociativeContainer) { C c(first, last); - + pos = c.insert(t); c.insert(first, last); @@ -956,7 +994,7 @@ namespace boost { BOOST_CONCEPT_USAGE(SortedAssociativeContainer) { - C + C c(kc), c2(first, last), c3(first, last, kc); @@ -964,15 +1002,15 @@ namespace boost p = c.upper_bound(k); p = c.lower_bound(k); r = c.equal_range(k); - + c.insert(p, t); - + ignore_unused_variable_warning(c); ignore_unused_variable_warning(c2); ignore_unused_variable_warning(c3); const_constraints(c); } - + void const_constraints(const C& c) { kc = c.key_comp(); @@ -982,7 +1020,7 @@ namespace boost cp = c.lower_bound(k); cr = c.equal_range(k); } - + private: typename C::key_compare kc; typename C::value_compare vc; diff --git a/3rdParty/Boost/src/boost/config/auto_link.hpp b/3rdParty/Boost/src/boost/config/auto_link.hpp index e562caf..f5a0a00 100644 --- a/3rdParty/Boost/src/boost/config/auto_link.hpp +++ b/3rdParty/Boost/src/boost/config/auto_link.hpp @@ -414,7 +414,4 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. #if defined(BOOST_DYN_LINK) # undef BOOST_DYN_LINK #endif -#if defined(BOOST_AUTO_LINK_NOMANGLE) -# undef BOOST_AUTO_LINK_NOMANGLE -#endif diff --git a/3rdParty/Boost/src/boost/config/compiler/clang.hpp b/3rdParty/Boost/src/boost/config/compiler/clang.hpp index 2ce6773..0893033 100644 --- a/3rdParty/Boost/src/boost/config/compiler/clang.hpp +++ b/3rdParty/Boost/src/boost/config/compiler/clang.hpp @@ -13,8 +13,7 @@ # define BOOST_NO_EXCEPTIONS #endif -#if __has_feature(cxx_rtti) -#else +#if !__has_feature(cxx_rtti) # define BOOST_NO_RTTI #endif @@ -24,35 +23,57 @@ #define BOOST_HAS_NRVO -// NOTE: Clang's C++0x support is not worth detecting. However, it -// supports both extern templates and "long long" even in C++98/03 -// mode. +// Clang supports "long long" in all compilation modes. + #define BOOST_NO_AUTO_DECLARATIONS #define BOOST_NO_AUTO_MULTIDECLARATIONS #define BOOST_NO_CHAR16_T #define BOOST_NO_CHAR32_T #define BOOST_NO_CONCEPTS #define BOOST_NO_CONSTEXPR -#define BOOST_NO_DECLTYPE + +#if !__has_feature(cxx_decltype) +# define BOOST_NO_DECLTYPE +#endif + #define BOOST_NO_DEFAULTED_FUNCTIONS -#define BOOST_NO_DELETED_FUNCTIONS + +#if !__has_feature(cxx_deleted_functions) +# define BOOST_NO_DELETED_FUNCTIONS +#endif + #define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS -#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS + +#if !__has_feature(cxx_default_function_template_args) + #define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS +#endif + #define BOOST_NO_INITIALIZER_LISTS #define BOOST_NO_LAMBDAS #define BOOST_NO_NULLPTR #define BOOST_NO_RAW_LITERALS -#define BOOST_NO_RVALUE_REFERENCES -#define BOOST_NO_SCOPED_ENUMS -#define BOOST_NO_STATIC_ASSERT + +#if !__has_feature(cxx_rvalue_references) +# define BOOST_NO_RVALUE_REFERENCES +#endif + +#if !__has_feature(cxx_strong_enums) +# define BOOST_NO_SCOPED_ENUMS +#endif + +#if !__has_feature(cxx_static_assert) +# define BOOST_NO_STATIC_ASSERT +#endif + #define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_UNICODE_LITERALS -#define BOOST_NO_VARIADIC_TEMPLATES -#define BOOST_NO_VARIADIC_MACROS -// HACK: Clang does support extern templates, but Boost's test for -// them is wrong. -#define BOOST_NO_EXTERN_TEMPLATE +#if !__has_feature(cxx_variadic_templates) +# define BOOST_NO_VARIADIC_TEMPLATES +#endif + +// Clang always supports variadic macros +// Clang always supports extern templates #ifndef BOOST_COMPILER # define BOOST_COMPILER "Clang version " __clang_version__ diff --git a/3rdParty/Boost/src/boost/config/compiler/common_edg.hpp b/3rdParty/Boost/src/boost/config/compiler/common_edg.hpp index 682c73a..9042578 100644 --- a/3rdParty/Boost/src/boost/config/compiler/common_edg.hpp +++ b/3rdParty/Boost/src/boost/config/compiler/common_edg.hpp @@ -62,10 +62,13 @@ #if (__EDG_VERSION__ < 310) # define BOOST_NO_EXTERN_TEMPLATE #endif -#if (__EDG_VERSION__ <= 310) || !defined(BOOST_STRICT_CONFIG) +#if (__EDG_VERSION__ <= 310) // No support for initializer lists # define BOOST_NO_INITIALIZER_LISTS #endif +#if (__EDG_VERSION__ < 400) +# define BOOST_NO_VARIADIC_MACROS +#endif #define BOOST_NO_AUTO_DECLARATIONS #define BOOST_NO_AUTO_MULTIDECLARATIONS @@ -88,7 +91,6 @@ #define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_VARIADIC_TEMPLATES -#define BOOST_NO_VARIADIC_MACROS #ifdef c_plusplus // EDG has "long long" in non-strict mode diff --git a/3rdParty/Boost/src/boost/config/compiler/gcc.hpp b/3rdParty/Boost/src/boost/config/compiler/gcc.hpp index eeaf998..f633647 100644 --- a/3rdParty/Boost/src/boost/config/compiler/gcc.hpp +++ b/3rdParty/Boost/src/boost/config/compiler/gcc.hpp @@ -148,8 +148,6 @@ // C++0x features not implemented in any GCC version // -#define BOOST_NO_CONSTEXPR -#define BOOST_NO_NULLPTR #define BOOST_NO_TEMPLATE_ALIASES // C++0x features in 4.3.n and later @@ -211,6 +209,13 @@ # define BOOST_NO_UNICODE_LITERALS #endif +// C++0x features in 4.5.n and later +// +#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 6) || !defined(__GXX_EXPERIMENTAL_CXX0X__) +#define BOOST_NO_CONSTEXPR +#define BOOST_NO_NULLPTR +#endif + // ConceptGCC compiler: // http://www.generic-programming.org/software/ConceptGCC/ #ifdef __GXX_CONCEPTS__ @@ -231,8 +236,8 @@ # error "Compiler not configured - please reconfigure" #endif // -// last known and checked version is 4.4 (Pre-release): -#if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 4)) +// last known and checked version is 4.6 (Pre-release): +#if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 6)) # if defined(BOOST_ASSERT_CONFIG) # error "Unknown compiler version - please run the configure tests and report the results" # else diff --git a/3rdParty/Boost/src/boost/config/compiler/intel.hpp b/3rdParty/Boost/src/boost/config/compiler/intel.hpp index e7bc95b..f209ae7 100644 --- a/3rdParty/Boost/src/boost/config/compiler/intel.hpp +++ b/3rdParty/Boost/src/boost/config/compiler/intel.hpp @@ -26,7 +26,19 @@ # define BOOST_INTEL_CXX_VERSION __ECC #endif +// Flags determined by comparing output of 'icpc -dM -E' with and without '-std=c++0x' +#if (!(defined(_WIN32) || defined(_WIN64)) && defined(__STDC_HOSTED__) && __STDC_HOSTED__) || defined(__GXX_EXPERIMENTAL_CPP0X__) +# define BOOST_INTEL_STDCXX0X +#endif +#if defined(_MSC_VER) && (_MSC_VER >= 1600) +# define BOOST_INTEL_STDCXX0X +#endif + +#ifdef BOOST_INTEL_STDCXX0X +#define BOOST_COMPILER "Intel C++ C++0x mode version " BOOST_STRINGIZE(BOOST_INTEL_CXX_VERSION) +#else #define BOOST_COMPILER "Intel C++ version " BOOST_STRINGIZE(BOOST_INTEL_CXX_VERSION) +#endif #define BOOST_INTEL BOOST_INTEL_CXX_VERSION #if defined(_WIN32) || defined(_WIN64) @@ -99,7 +111,7 @@ # define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL # endif #endif -#if (defined(__GNUC__) && (__GNUC__ < 4)) || defined(_WIN32) || (BOOST_INTEL_CXX_VERSION <= 1110) +#if (defined(__GNUC__) && (__GNUC__ < 4)) || defined(_WIN32) || (BOOST_INTEL_CXX_VERSION <= 1200) // GCC or VC emulation: #define BOOST_NO_TWO_PHASE_NAME_LOOKUP #endif @@ -179,6 +191,32 @@ template<> struct assert_intrinsic_wchar_t<unsigned short> {}; # define BOOST_SYMBOL_IMPORT # define BOOST_SYMBOL_VISIBLE __attribute__((visibility("default"))) #endif +// +// C++0x features +// - ICC added static_assert in 11.0 (first version with C++0x support) +// +#if defined(BOOST_INTEL_STDCXX0X) +# undef BOOST_NO_STATIC_ASSERT +// +// These pass our test cases, but aren't officially supported according to: +// http://software.intel.com/en-us/articles/c0x-features-supported-by-intel-c-compiler/ +// +//# undef BOOST_NO_LAMBDAS +//# undef BOOST_NO_DECLTYPE +//# undef BOOST_NO_AUTO_DECLARATIONS +//# undef BOOST_NO_AUTO_MULTIDECLARATIONS +#endif + +#if defined(BOOST_INTEL_STDCXX0X) && (BOOST_INTEL_CXX_VERSION >= 1200) +# undef BOOST_NO_RVALUE_REFERENCES +# undef BOOST_NO_SCOPED_ENUMS +# undef BOOST_NO_DELETED_FUNCTIONS +# undef BOOST_NO_DEFAULTED_FUNCTIONS +# undef BOOST_NO_LAMBDAS +# undef BOOST_NO_DECLTYPE +# undef BOOST_NO_AUTO_DECLARATIONS +# undef BOOST_NO_AUTO_MULTIDECLARATIONS +#endif // // last known and checked version: diff --git a/3rdParty/Boost/src/boost/config/compiler/nvcc.hpp b/3rdParty/Boost/src/boost/config/compiler/nvcc.hpp index eaecf37..03203fb 100644 --- a/3rdParty/Boost/src/boost/config/compiler/nvcc.hpp +++ b/3rdParty/Boost/src/boost/config/compiler/nvcc.hpp @@ -17,71 +17,12 @@ // Boost support macro for NVCC // NVCC Basically behaves like some flavor of MSVC6 + some specific quirks -#define BOOST_NO_INCLASS_MEMBER_INITIALIZATION -#define BOOST_MSVC6_MEMBER_TEMPLATES -#define BOOST_HAS_UNISTD_H -#define BOOST_HAS_STDINT_H -#define BOOST_HAS_SIGACTION -#define BOOST_HAS_SCHED_YIELD -#define BOOST_HAS_PTHREADS -#define BOOST_HAS_PTHREAD_YIELD -#define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE -#define BOOST_HAS_PARTIAL_STD_ALLOCATOR -#define BOOST_HAS_NRVO -#define BOOST_HAS_NL_TYPES_H -#define BOOST_HAS_NANOSLEEP -#define BOOST_HAS_LONG_LONG -#define BOOST_HAS_LOG1P -#define BOOST_HAS_GETTIMEOFDAY -#define BOOST_HAS_EXPM1 -#define BOOST_HAS_DIRENT_H -#define BOOST_HAS_CLOCK_GETTIME -#define BOOST_NO_VARIADIC_TEMPLATES -#define BOOST_NO_VARIADIC_MACROS -#define BOOST_NO_UNICODE_LITERALS -#define BOOST_NO_TEMPLATE_ALIASES -#define BOOST_NO_STD_UNORDERED -#define BOOST_NO_STATIC_ASSERT -#define BOOST_NO_SFINAE_EXPR -#define BOOST_NO_SCOPED_ENUMS -#define BOOST_NO_RVALUE_REFERENCES -#define BOOST_NO_RAW_LITERALS -#define BOOST_NO_NULLPTR -#define BOOST_NO_LAMBDAS -#define BOOST_NO_INITIALIZER_LISTS -#define BOOST_NO_MS_INT64_NUMERIC_LIMITS -#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS -#define BOOST_NO_EXTERN_TEMPLATE -#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS -#define BOOST_NO_DELETED_FUNCTIONS -#define BOOST_NO_DEFAULTED_FUNCTIONS -#define BOOST_NO_DECLTYPE -#define BOOST_NO_CONSTEXPR -#define BOOST_NO_CONCEPTS -#define BOOST_NO_CHAR32_T -#define BOOST_NO_CHAR16_T -#define BOOST_NO_AUTO_MULTIDECLARATIONS -#define BOOST_NO_AUTO_DECLARATIONS -#define BOOST_NO_0X_HDR_UNORDERED_SET -#define BOOST_NO_0X_HDR_UNORDERED_MAP -#define BOOST_NO_0X_HDR_TYPE_TRAITS -#define BOOST_NO_0X_HDR_TUPLE -#define BOOST_NO_0X_HDR_THREAD -#define BOOST_NO_0X_HDR_TYPEINDEX -#define BOOST_NO_0X_HDR_SYSTEM_ERROR -#define BOOST_NO_0X_HDR_REGEX -#define BOOST_NO_0X_HDR_RATIO -#define BOOST_NO_0X_HDR_RANDOM -#define BOOST_NO_0X_HDR_MUTEX -#define BOOST_NO_0X_HDR_MEMORY_CONCEPTS -#define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS -#define BOOST_NO_0X_HDR_INITIALIZER_LIST -#define BOOST_NO_0X_HDR_FUTURE -#define BOOST_NO_0X_HDR_FORWARD_LIST -#define BOOST_NO_0X_HDR_CONTAINER_CONCEPTS -#define BOOST_NO_0X_HDR_CONDITION_VARIABLE -#define BOOST_NO_0X_HDR_CONCEPTS -#define BOOST_NO_0X_HDR_CODECVT -#define BOOST_NO_0X_HDR_CHRONO -#define BOOST_NO_0X_HDR_ARRAY +#ifdef __GNUC__ +#include <boost/config/compiler/gcc.hpp> + +#elif defined(_MSC_VER) + +#include <boost/config/compiler/visualc.hpp> + +#endif diff --git a/3rdParty/Boost/src/boost/config/compiler/pathscale.hpp b/3rdParty/Boost/src/boost/config/compiler/pathscale.hpp new file mode 100644 index 0000000..13ede88 --- /dev/null +++ b/3rdParty/Boost/src/boost/config/compiler/pathscale.hpp @@ -0,0 +1,82 @@ +// (C) Copyright Bryce Lelbach 2011 + +// 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. + +// PathScale EKOPath C++ Compiler + +#ifndef BOOST_COMPILER +# define BOOST_COMPILER "PathScale EKOPath C++ Compiler version " __PATHSCALE__ +#endif + +#if __PATHCC__ >= 4 +# define BOOST_MSVC6_MEMBER_TEMPLATES +# define BOOST_HAS_UNISTD_H +# define BOOST_HAS_STDINT_H +# define BOOST_HAS_SIGACTION +# define BOOST_HAS_SCHED_YIELD +# define BOOST_HAS_THREADS +# define BOOST_HAS_PTHREADS +# define BOOST_HAS_PTHREAD_YIELD +# define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE +# define BOOST_HAS_PARTIAL_STD_ALLOCATOR +# define BOOST_HAS_NRVO +# define BOOST_HAS_NL_TYPES_H +# define BOOST_HAS_NANOSLEEP +# define BOOST_HAS_LONG_LONG +# define BOOST_HAS_LOG1P +# define BOOST_HAS_GETTIMEOFDAY +# define BOOST_HAS_EXPM1 +# define BOOST_HAS_DIRENT_H +# define BOOST_HAS_CLOCK_GETTIME +# define BOOST_NO_VARIADIC_TEMPLATES +# define BOOST_NO_UNICODE_LITERALS +# define BOOST_NO_TEMPLATE_ALIASES +# define BOOST_NO_STD_UNORDERED +# define BOOST_NO_STATIC_ASSERT +# define BOOST_NO_SFINAE_EXPR +# define BOOST_NO_SCOPED_ENUMS +# define BOOST_NO_RVALUE_REFERENCES +# define BOOST_NO_RAW_LITERALS +# define BOOST_NO_NULLPTR +# define BOOST_NO_NUMERIC_LIMITS_LOWEST +# define BOOST_NO_LAMBDAS +# define BOOST_NO_INITIALIZER_LISTS +# define BOOST_NO_MS_INT64_NUMERIC_LIMITS +# define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS +# define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +# define BOOST_NO_DELETED_FUNCTIONS +# define BOOST_NO_DEFAULTED_FUNCTIONS +# define BOOST_NO_DECLTYPE +# define BOOST_NO_CONSTEXPR +# define BOOST_NO_CONCEPTS +# define BOOST_NO_COMPLETE_VALUE_INITIALIZATION +# define BOOST_NO_CHAR32_T +# define BOOST_NO_CHAR16_T +# define BOOST_NO_AUTO_MULTIDECLARATIONS +# define BOOST_NO_AUTO_DECLARATIONS +# define BOOST_NO_0X_HDR_UNORDERED_SET +# define BOOST_NO_0X_HDR_UNORDERED_MAP +# define BOOST_NO_0X_HDR_TYPEINDEX +# define BOOST_NO_0X_HDR_TUPLE +# define BOOST_NO_0X_HDR_THREAD +# define BOOST_NO_0X_HDR_SYSTEM_ERROR +# define BOOST_NO_0X_HDR_REGEX +# define BOOST_NO_0X_HDR_RATIO +# define BOOST_NO_0X_HDR_RANDOM +# define BOOST_NO_0X_HDR_MUTEX +# define BOOST_NO_0X_HDR_MEMORY_CONCEPTS +# define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS +# define BOOST_NO_0X_HDR_INITIALIZER_LIST +# define BOOST_NO_0X_HDR_FUTURE +# define BOOST_NO_0X_HDR_FORWARD_LIST +# define BOOST_NO_0X_HDR_CONTAINER_CONCEPTS +# define BOOST_NO_0X_HDR_CONDITION_VARIABLE +# define BOOST_NO_0X_HDR_CONCEPTS +# define BOOST_NO_0X_HDR_CODECVT +# define BOOST_NO_0X_HDR_CHRONO +#endif + diff --git a/3rdParty/Boost/src/boost/config/compiler/vacpp.hpp b/3rdParty/Boost/src/boost/config/compiler/vacpp.hpp index 5ae9c28..7ad616e 100644 --- a/3rdParty/Boost/src/boost/config/compiler/vacpp.hpp +++ b/3rdParty/Boost/src/boost/config/compiler/vacpp.hpp @@ -27,7 +27,6 @@ #if (__IBMCPP__ <= 600) || !defined(BOOST_STRICT_CONFIG) # define BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS -# define BOOST_NO_INITIALIZER_LISTS #endif #if (__IBMCPP__ <= 1110) @@ -54,44 +53,66 @@ #error "Compiler not supported or configured - please reconfigure" #endif // -// last known and checked version is 600: -#if (__IBMCPP__ > 1010) +// last known and checked version is 1110: +#if (__IBMCPP__ > 1110) # 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 +#if __IBMCPP__ <= 1010 #define BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS +#endif // // C++0x features // // See boost\config\suffix.hpp for BOOST_NO_LONG_LONG // -#define BOOST_NO_AUTO_DECLARATIONS -#define BOOST_NO_AUTO_MULTIDECLARATIONS -#define BOOST_NO_CHAR16_T -#define BOOST_NO_CHAR32_T +#if ! __IBMCPP_AUTO_TYPEDEDUCTION +# define BOOST_NO_AUTO_DECLARATIONS +# define BOOST_NO_AUTO_MULTIDECLARATIONS +#endif +#if ! __IBMCPP_UTF_LITERAL__ +# define BOOST_NO_CHAR16_T +# define BOOST_NO_CHAR32_T +#endif #define BOOST_NO_CONCEPTS #define BOOST_NO_CONSTEXPR -#define BOOST_NO_DECLTYPE +#if ! __IBMCPP_DECLTYPE +# define BOOST_NO_DECLTYPE +#else +# define BOOST_HAS_DECLTYPE +#endif #define BOOST_NO_DEFAULTED_FUNCTIONS #define BOOST_NO_DELETED_FUNCTIONS #define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS -#define BOOST_NO_EXTERN_TEMPLATE -#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS +#if ! __IBMCPP_EXTERN_TEMPLATE +# define BOOST_NO_EXTERN_TEMPLATE +#endif +#if ! __IBMCPP_VARIADIC_TEMPLATES +// not enabled separately at this time +# define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS +#endif +#define BOOST_NO_INITIALIZER_LISTS #define BOOST_NO_LAMBDAS #define BOOST_NO_NULLPTR #define BOOST_NO_RAW_LITERALS #define BOOST_NO_RVALUE_REFERENCES #define BOOST_NO_SCOPED_ENUMS #define BOOST_NO_SFINAE_EXPR -#define BOOST_NO_STATIC_ASSERT +#if ! __IBMCPP_STATIC_ASSERT +# define BOOST_NO_STATIC_ASSERT +#endif #define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_UNICODE_LITERALS -#define BOOST_NO_VARIADIC_TEMPLATES -#define BOOST_NO_VARIADIC_MACROS +#if ! __IBMCPP_VARIADIC_TEMPLATES +# define BOOST_NO_VARIADIC_TEMPLATES +#endif +#if ! __C99_MACRO_WITH_VA_ARGS +# define BOOST_NO_VARIADIC_MACROS +#endif diff --git a/3rdParty/Boost/src/boost/config/compiler/visualc.hpp b/3rdParty/Boost/src/boost/config/compiler/visualc.hpp index 6755287..3878936 100644 --- a/3rdParty/Boost/src/boost/config/compiler/visualc.hpp +++ b/3rdParty/Boost/src/boost/config/compiler/visualc.hpp @@ -37,6 +37,9 @@ // #endif +/// Visual Studio has no fenv.h +#define BOOST_NO_FENV_H + #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 @@ -94,10 +97,6 @@ # 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 @@ -181,6 +180,7 @@ #define BOOST_NO_STATIC_ASSERT #define BOOST_NO_NULLPTR #endif // _MSC_VER < 1600 + #if _MSC_VER >= 1600 #define BOOST_HAS_STDINT_H #endif @@ -198,10 +198,11 @@ #define BOOST_NO_INITIALIZER_LISTS #define BOOST_NO_RAW_LITERALS #define BOOST_NO_SCOPED_ENUMS -#define BOOST_NO_SFINAE_EXPR #define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_VARIADIC_TEMPLATES +#define BOOST_NO_SFINAE_EXPR +#define BOOST_NO_TWO_PHASE_NAME_LOOKUP // // prefix and suffix headers: // diff --git a/3rdParty/Boost/src/boost/config/platform/cygwin.hpp b/3rdParty/Boost/src/boost/config/platform/cygwin.hpp index 8e1bcb0..b7ef572 100644 --- a/3rdParty/Boost/src/boost/config/platform/cygwin.hpp +++ b/3rdParty/Boost/src/boost/config/platform/cygwin.hpp @@ -39,6 +39,9 @@ #define BOOST_HAS_STDINT_H #endif +/// Cygwin has no fenv.h +#define BOOST_NO_FENV_H + // boilerplate code: #include <boost/config/posix_features.hpp> diff --git a/3rdParty/Boost/src/boost/config/platform/win32.hpp b/3rdParty/Boost/src/boost/config/platform/win32.hpp index f59c4ea..72c3dce 100644 --- a/3rdParty/Boost/src/boost/config/platform/win32.hpp +++ b/3rdParty/Boost/src/boost/config/platform/win32.hpp @@ -31,7 +31,6 @@ # define BOOST_SYMBOL_IMPORT __declspec(dllimport) #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 @@ -39,6 +38,11 @@ # define BOOST_HAS_UNISTD_H #endif +#if defined(__MINGW32__) && (__GNUC__ >= 4) +# define BOOST_HAS_EXPM1 +# define BOOST_HAS_LOG1P +# define BOOST_HAS_GETTIMEOFDAY +#endif // // Win32 will normally be using native Win32 threads, // but there is a pthread library avaliable as an option, diff --git a/3rdParty/Boost/src/boost/config/select_compiler_config.hpp b/3rdParty/Boost/src/boost/config/select_compiler_config.hpp index f9b086a..e19469a 100644 --- a/3rdParty/Boost/src/boost/config/select_compiler_config.hpp +++ b/3rdParty/Boost/src/boost/config/select_compiler_config.hpp @@ -14,25 +14,27 @@ // one identification macro for each of the // compilers we support: -# define BOOST_CXX_GCCXML 0 -# define BOOST_CXX_CLANG 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 -# define BOOST_CXX_NVCC 0 +# define BOOST_CXX_GCCXML 0 +# define BOOST_CXX_NVCC 0 +# define BOOST_CXX_COMO 0 +# define BOOST_CXX_PATHSCALE 0 +# define BOOST_CXX_CLANG 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 +# define BOOST_CXX_NVCC 0 // locate which compiler we are using and define @@ -50,6 +52,10 @@ // Comeau C++ # define BOOST_COMPILER_CONFIG "boost/config/compiler/comeau.hpp" +#elif defined(__PATHSCALE__) && (__PATHCC__ >= 4) +// PathScale EKOPath compiler (has to come before clang and gcc) +# define BOOST_COMPILER_CONFIG "boost/config/compiler/pathscale.hpp" + #elif defined __clang__ // Clang C++ emulates GCC, so it has to appear early. # define BOOST_COMPILER_CONFIG "boost/config/compiler/clang.hpp" diff --git a/3rdParty/Boost/src/boost/config/select_stdlib_config.hpp b/3rdParty/Boost/src/boost/config/select_stdlib_config.hpp index 2a1430a..f020482 100644 --- a/3rdParty/Boost/src/boost/config/select_stdlib_config.hpp +++ b/3rdParty/Boost/src/boost/config/select_stdlib_config.hpp @@ -40,6 +40,10 @@ // Rogue Wave library: # define BOOST_STDLIB_CONFIG "boost/config/stdlib/roguewave.hpp" +#elif defined(_LIBCPP_VERSION) +// libc++ +# define BOOST_STDLIB_CONFIG "boost/config/stdlib/libcpp.hpp" + #elif defined(__GLIBCPP__) || defined(__GLIBCXX__) // GNU libstdc++ 3 # define BOOST_STDLIB_CONFIG "boost/config/stdlib/libstdcpp3.hpp" diff --git a/3rdParty/Boost/src/boost/config/stdlib/dinkumware.hpp b/3rdParty/Boost/src/boost/config/stdlib/dinkumware.hpp index e33fef1..a7579da 100644 --- a/3rdParty/Boost/src/boost/config/stdlib/dinkumware.hpp +++ b/3rdParty/Boost/src/boost/config/stdlib/dinkumware.hpp @@ -107,6 +107,7 @@ # define BOOST_NO_0X_HDR_UNORDERED_SET # define BOOST_NO_0X_HDR_TUPLE # define BOOST_NO_0X_HDR_TYPEINDEX +# define BOOST_NO_NUMERIC_LIMITS_LOWEST #endif #if !defined(_HAS_TR1_IMPORTS) && !defined(BOOST_NO_0X_HDR_TUPLE) @@ -125,7 +126,6 @@ # define BOOST_NO_0X_HDR_MUTEX # define BOOST_NO_0X_HDR_RATIO # define BOOST_NO_0X_HDR_THREAD -# define BOOST_NO_NUMERIC_LIMITS_LOWEST #ifdef _CPPLIB_VER # define BOOST_DINKUMWARE_STDLIB _CPPLIB_VER diff --git a/3rdParty/Boost/src/boost/config/stdlib/libcpp.hpp b/3rdParty/Boost/src/boost/config/stdlib/libcpp.hpp new file mode 100644 index 0000000..db7f6f1 --- /dev/null +++ b/3rdParty/Boost/src/boost/config/stdlib/libcpp.hpp @@ -0,0 +1,34 @@ +// (C) Copyright Christopher Jefferson 2011. +// 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 libc++ +// Might need more in here later. + +#if !defined(_LIBCPP_VERSION) +# include <ciso646> +# if !defined(_LIBCPP_VERSION) +# error "This is not libc++!" +# endif +#endif + +#define BOOST_STDLIB "libc++ version " BOOST_STRINGIZE(_LIBCPP_VERSION) + +#define BOOST_HAS_THREADS + +#define BOOST_NO_0X_HDR_CONCEPTS +#define BOOST_NO_0X_HDR_CONTAINER_CONCEPTS +#define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS +#define BOOST_NO_0X_HDR_MEMORY_CONCEPTS + +#ifdef _LIBCPP_HAS_NO_VARIADICS +# define BOOST_NO_0X_HDR_TUPLE +#endif + +// libc++ uses a non-standard messages_base +#define BOOST_NO_STD_MESSAGES + +// --- end --- diff --git a/3rdParty/Boost/src/boost/config/stdlib/libstdcpp3.hpp b/3rdParty/Boost/src/boost/config/stdlib/libstdcpp3.hpp index 01dd490..c048b89 100644 --- a/3rdParty/Boost/src/boost/config/stdlib/libstdcpp3.hpp +++ b/3rdParty/Boost/src/boost/config/stdlib/libstdcpp3.hpp @@ -9,6 +9,8 @@ // config for libstdc++ v3 // not much to go in here: +#define BOOST_GNU_STDLIB 1 + #ifdef __GLIBCXX__ #define BOOST_STDLIB "GNU libstdc++ version " BOOST_STRINGIZE(__GLIBCXX__) #else @@ -54,7 +56,6 @@ # define BOOST_HAS_THREADS #endif - #if !defined(_GLIBCPP_USE_LONG_LONG) \ && !defined(_GLIBCXX_USE_LONG_LONG)\ && defined(BOOST_HAS_LONG_LONG) @@ -63,6 +64,16 @@ # undef BOOST_HAS_LONG_LONG #endif +// Apple doesn't seem to reliably defined a *unix* macro +#if !defined(CYGWIN) && ( defined(__unix__) \ + || defined(__unix) \ + || defined(unix) \ + || defined(__APPLE__) \ + || defined(__APPLE) \ + || defined(APPLE)) +# include <unistd.h> +#endif + #if defined(__GLIBCXX__) || (defined(__GLIBCPP__) && __GLIBCPP__>=20020514) // GCC >= 3.1.0 # define BOOST_STD_EXTENSION_NAMESPACE __gnu_cxx # define BOOST_HAS_SLIST diff --git a/3rdParty/Boost/src/boost/config/stdlib/roguewave.hpp b/3rdParty/Boost/src/boost/config/stdlib/roguewave.hpp index dcd0af8..b43623b 100644 --- a/3rdParty/Boost/src/boost/config/stdlib/roguewave.hpp +++ b/3rdParty/Boost/src/boost/config/stdlib/roguewave.hpp @@ -10,6 +10,8 @@ // Rogue Wave std lib: +#define BOOST_RW_STDLIB 1 + #if !defined(__STD_RWCOMPILER_H__) && !defined(_RWSTD_VER) # include <boost/config/no_tr1/utility.hpp> # if !defined(__STD_RWCOMPILER_H__) && !defined(_RWSTD_VER) @@ -154,7 +156,10 @@ // C++0x headers not yet implemented // +#if _RWSTD_VER < 0x05000000 # define BOOST_NO_0X_HDR_ARRAY +# define BOOST_NO_0X_HDR_TYPE_TRAITS +#endif # define BOOST_NO_0X_HDR_CHRONO # define BOOST_NO_0X_HDR_CODECVT # define BOOST_NO_0X_HDR_CONCEPTS @@ -172,7 +177,6 @@ # define BOOST_NO_0X_HDR_SYSTEM_ERROR # define BOOST_NO_0X_HDR_THREAD # define BOOST_NO_0X_HDR_TUPLE -# define BOOST_NO_0X_HDR_TYPE_TRAITS # define BOOST_NO_0X_HDR_TYPEINDEX # define BOOST_NO_STD_UNORDERED // deprecated; see following # define BOOST_NO_0X_HDR_UNORDERED_MAP diff --git a/3rdParty/Boost/src/boost/config/stdlib/sgi.hpp b/3rdParty/Boost/src/boost/config/stdlib/sgi.hpp index 4d42647..5731fe5 100644 --- a/3rdParty/Boost/src/boost/config/stdlib/sgi.hpp +++ b/3rdParty/Boost/src/boost/config/stdlib/sgi.hpp @@ -40,6 +40,17 @@ # define BOOST_NO_STRINGSTREAM #endif +// Apple doesn't seem to reliably defined a *unix* macro +#if !defined(CYGWIN) && ( defined(__unix__) \ + || defined(__unix) \ + || defined(unix) \ + || defined(__APPLE__) \ + || defined(__APPLE) \ + || defined(APPLE)) +# include <unistd.h> +#endif + + // // Assume no std::locale without own iostreams (this may be an // incorrect assumption in some cases): diff --git a/3rdParty/Boost/src/boost/config/stdlib/stlport.hpp b/3rdParty/Boost/src/boost/config/stdlib/stlport.hpp index 0e1c9b2..85176a4 100644 --- a/3rdParty/Boost/src/boost/config/stdlib/stlport.hpp +++ b/3rdParty/Boost/src/boost/config/stdlib/stlport.hpp @@ -16,6 +16,16 @@ # endif #endif +// Apple doesn't seem to reliably defined a *unix* macro +#if !defined(CYGWIN) && ( defined(__unix__) \ + || defined(__unix) \ + || defined(unix) \ + || defined(__APPLE__) \ + || defined(__APPLE) \ + || defined(APPLE)) +# include <unistd.h> +#endif + // // __STL_STATIC_CONST_INIT_BUG implies BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS // for versions prior to 4.1(beta) diff --git a/3rdParty/Boost/src/boost/config/stdlib/vacpp.hpp b/3rdParty/Boost/src/boost/config/stdlib/vacpp.hpp index 0fc092f..3fcf6e0 100644 --- a/3rdParty/Boost/src/boost/config/stdlib/vacpp.hpp +++ b/3rdParty/Boost/src/boost/config/stdlib/vacpp.hpp @@ -12,6 +12,16 @@ #define BOOST_HAS_MACRO_USE_FACET #define BOOST_NO_STD_MESSAGES +// Apple doesn't seem to reliably defined a *unix* macro +#if !defined(CYGWIN) && ( defined(__unix__) \ + || defined(__unix) \ + || defined(unix) \ + || defined(__APPLE__) \ + || defined(__APPLE) \ + || defined(APPLE)) +# include <unistd.h> +#endif + // C++0x headers not yet implemented // # define BOOST_NO_0X_HDR_ARRAY diff --git a/3rdParty/Boost/src/boost/config/suffix.hpp b/3rdParty/Boost/src/boost/config/suffix.hpp index 722758f..9cce6fd 100644 --- a/3rdParty/Boost/src/boost/config/suffix.hpp +++ b/3rdParty/Boost/src/boost/config/suffix.hpp @@ -349,6 +349,13 @@ #define BOOST_HAS_RVALUE_REFS #endif +// +// Set BOOST_HAS_VARIADIC_TMPL when BOOST_NO_VARIADIC_TEMPLATES is not defined +// +#if !defined(BOOST_NO_VARIADIC_TEMPLATES) && !defined(BOOST_HAS_VARIADIC_TMPL) +#define BOOST_HAS_VARIADIC_TMPL +#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: @@ -593,7 +600,7 @@ namespace boost{ // the global definition into std namespace: #ifdef BOOST_NO_STD_TYPEINFO #include <typeinfo> -namespace std{ using ::typeinfo; } +namespace std{ using ::type_info; } #endif // ---------------------------------------------------------------------------// @@ -643,5 +650,19 @@ namespace std{ using ::typeinfo; } # ifndef BOOST_GPU_ENABLED # define BOOST_GPU_ENABLED # endif + +// +// constexpr workarounds +// +#if defined(BOOST_NO_CONSTEXPR) +#define BOOST_CONSTEXPR +#define BOOST_CONSTEXPR_OR_CONST const +#else +#define BOOST_CONSTEXPR constexpr +#define BOOST_CONSTEXPR_OR_CONST constexpr +#endif + +#define BOOST_STATIC_CONSTEXPR static BOOST_CONSTEXPR_OR_CONST + #endif diff --git a/3rdParty/Boost/src/boost/detail/bitmask.hpp b/3rdParty/Boost/src/boost/detail/bitmask.hpp new file mode 100644 index 0000000..c6714a1 --- /dev/null +++ b/3rdParty/Boost/src/boost/detail/bitmask.hpp @@ -0,0 +1,47 @@ +// boost/detail/bitmask.hpp ------------------------------------------------// + +// Copyright Beman Dawes 2006 + +// Distributed under the Boost Software License, Version 1.0 +// http://www.boost.org/LICENSE_1_0.txt + +// Usage: enum foo { a=1, b=2, c=4 }; +// BOOST_BITMASK( foo ); +// +// void f( foo arg ); +// ... +// f( a | c ); + +#ifndef BOOST_BITMASK_HPP +#define BOOST_BITMASK_HPP + +#include <boost/cstdint.hpp> + +#define BOOST_BITMASK(Bitmask) \ + \ + inline Bitmask operator| (Bitmask x , Bitmask y ) \ + { return static_cast<Bitmask>( static_cast<boost::int_least32_t>(x) \ + | static_cast<boost::int_least32_t>(y)); } \ + \ + inline Bitmask operator& (Bitmask x , Bitmask y ) \ + { return static_cast<Bitmask>( static_cast<boost::int_least32_t>(x) \ + & static_cast<boost::int_least32_t>(y)); } \ + \ + inline Bitmask operator^ (Bitmask x , Bitmask y ) \ + { return static_cast<Bitmask>( static_cast<boost::int_least32_t>(x) \ + ^ static_cast<boost::int_least32_t>(y)); } \ + \ + inline Bitmask operator~ (Bitmask x ) \ + { return static_cast<Bitmask>(~static_cast<boost::int_least32_t>(x)); } \ + \ + inline Bitmask & operator&=(Bitmask & x , Bitmask y) \ + { x = x & y ; return x ; } \ + \ + inline Bitmask & operator|=(Bitmask & x , Bitmask y) \ + { x = x | y ; return x ; } \ + \ + inline Bitmask & operator^=(Bitmask & x , Bitmask y) \ + { x = x ^ y ; return x ; } + +#endif // BOOST_BITMASK_HPP + diff --git a/3rdParty/Boost/src/boost/detail/container_fwd.hpp b/3rdParty/Boost/src/boost/detail/container_fwd.hpp index 67c5a21..9a21252 100644 --- a/3rdParty/Boost/src/boost/detail/container_fwd.hpp +++ b/3rdParty/Boost/src/boost/detail/container_fwd.hpp @@ -68,7 +68,11 @@ namespace std template <class charT> struct char_traits; #endif - template <class T> class complex; + #if BOOST_CLANG + template <class T> struct complex; + #else + template <class T> class complex; + #endif } // gcc 3.4 and greater diff --git a/3rdParty/Boost/src/boost/detail/endian.hpp b/3rdParty/Boost/src/boost/detail/endian.hpp index 5f9b90e..98c870c 100644 --- a/3rdParty/Boost/src/boost/detail/endian.hpp +++ b/3rdParty/Boost/src/boost/detail/endian.hpp @@ -44,11 +44,13 @@ # endif # define BOOST_BYTE_ORDER __BYTE_ORDER #elif defined(_BIG_ENDIAN) && !defined(_LITTLE_ENDIAN) || \ - defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__) + defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__) || \ + defined(_STLP_BIG_ENDIAN) && !defined(_STLP_LITTLE_ENDIAN) # define BOOST_BIG_ENDIAN # define BOOST_BYTE_ORDER 4321 #elif defined(_LITTLE_ENDIAN) && !defined(_BIG_ENDIAN) || \ - defined(__LITTLE_ENDIAN__) && !defined(__BIG_ENDIAN__) + defined(__LITTLE_ENDIAN__) && !defined(__BIG_ENDIAN__) || \ + defined(_STLP_LITTLE_ENDIAN) && !defined(_STLP_BIG_ENDIAN) # define BOOST_LITTLE_ENDIAN # define BOOST_BYTE_ORDER 1234 #elif defined(__sparc) || defined(__sparc__) \ diff --git a/3rdParty/Boost/src/boost/exception/diagnostic_information.hpp b/3rdParty/Boost/src/boost/exception/diagnostic_information.hpp index 1d6bc2c..2297676 100644 --- a/3rdParty/Boost/src/boost/exception/diagnostic_information.hpp +++ b/3rdParty/Boost/src/boost/exception/diagnostic_information.hpp @@ -137,7 +137,7 @@ boost } #ifndef BOOST_NO_RTTI tmp << std::string("Dynamic exception type: ") << - units::detail::demangle((be?BOOST_EXCEPTION_DYNAMIC_TYPEID(*be):BOOST_EXCEPTION_DYNAMIC_TYPEID(*se)).type_.name()) << '\n'; + units::detail::demangle((be?(BOOST_EXCEPTION_DYNAMIC_TYPEID(*be)):(BOOST_EXCEPTION_DYNAMIC_TYPEID(*se))).type_.name()) << '\n'; #endif if( with_what && se ) tmp << "std::exception::what: " << wh << '\n'; diff --git a/3rdParty/Boost/src/boost/filesystem.hpp b/3rdParty/Boost/src/boost/filesystem.hpp index f8b9353..d64d760 100644 --- a/3rdParty/Boost/src/boost/filesystem.hpp +++ b/3rdParty/Boost/src/boost/filesystem.hpp @@ -12,13 +12,16 @@ #ifndef BOOST_FILESYSTEM_FILESYSTEM_HPP #define BOOST_FILESYSTEM_FILESYSTEM_HPP +#include <boost/config.hpp> // for <boost/config/user.hpp>, in case + // BOOST_FILESYSTEM_VERSION defined there + # if defined(BOOST_FILESYSTEM_VERSION) \ && BOOST_FILESYSTEM_VERSION != 2 && BOOST_FILESYSTEM_VERSION != 3 # error BOOST_FILESYSTEM_VERSION defined, but not as 2 or 3 # endif # if !defined(BOOST_FILESYSTEM_VERSION) -# define BOOST_FILESYSTEM_VERSION 2 +# define BOOST_FILESYSTEM_VERSION 3 # endif #if BOOST_FILESYSTEM_VERSION == 2 diff --git a/3rdParty/Boost/src/boost/filesystem/config.hpp b/3rdParty/Boost/src/boost/filesystem/config.hpp index 9d12bce..c813bf5 100644 --- a/3rdParty/Boost/src/boost/filesystem/config.hpp +++ b/3rdParty/Boost/src/boost/filesystem/config.hpp @@ -12,13 +12,16 @@ #ifndef BOOST_FILESYSTEM_CONFIGX_HPP #define BOOST_FILESYSTEM_CONFIGX_HPP +#include <boost/config.hpp> // for <boost/config/user.hpp>, in case + // BOOST_FILESYSTEM_VERSION defined there + # if defined(BOOST_FILESYSTEM_VERSION) \ && BOOST_FILESYSTEM_VERSION != 2 && BOOST_FILESYSTEM_VERSION != 3 # error BOOST_FILESYSTEM_VERSION defined, but not as 2 or 3 # endif # if !defined(BOOST_FILESYSTEM_VERSION) -# define BOOST_FILESYSTEM_VERSION 2 +# define BOOST_FILESYSTEM_VERSION 3 # endif #if BOOST_FILESYSTEM_VERSION == 2 diff --git a/3rdParty/Boost/src/boost/filesystem/exception.hpp b/3rdParty/Boost/src/boost/filesystem/exception.hpp index cced257..6ba8466 100644 --- a/3rdParty/Boost/src/boost/filesystem/exception.hpp +++ b/3rdParty/Boost/src/boost/filesystem/exception.hpp @@ -12,13 +12,16 @@ #ifndef BOOST_FILESYSTEM_EXCEPTIONX_HPP #define BOOST_FILESYSTEM_EXCEPTIONX_HPP +#include <boost/config.hpp> // for <boost/config/user.hpp>, in case + // BOOST_FILESYSTEM_VERSION defined there + # if defined(BOOST_FILESYSTEM_VERSION) \ && BOOST_FILESYSTEM_VERSION != 2 && BOOST_FILESYSTEM_VERSION != 3 # error BOOST_FILESYSTEM_VERSION defined, but not as 2 or 3 # endif # if !defined(BOOST_FILESYSTEM_VERSION) -# define BOOST_FILESYSTEM_VERSION 2 +# define BOOST_FILESYSTEM_VERSION 3 # endif #if BOOST_FILESYSTEM_VERSION == 2 diff --git a/3rdParty/Boost/src/boost/filesystem/fstream.hpp b/3rdParty/Boost/src/boost/filesystem/fstream.hpp index ae44cd9..e159e58 100644 --- a/3rdParty/Boost/src/boost/filesystem/fstream.hpp +++ b/3rdParty/Boost/src/boost/filesystem/fstream.hpp @@ -12,13 +12,16 @@ #ifndef BOOST_FILESYSTEM_FSTREAMX_HPP #define BOOST_FILESYSTEM_FSTREAMX_HPP +#include <boost/config.hpp> // for <boost/config/user.hpp>, in case + // BOOST_FILESYSTEM_VERSION defined there + # if defined(BOOST_FILESYSTEM_VERSION) \ && BOOST_FILESYSTEM_VERSION != 2 && BOOST_FILESYSTEM_VERSION != 3 # error BOOST_FILESYSTEM_VERSION defined, but not as 2 or 3 # endif # if !defined(BOOST_FILESYSTEM_VERSION) -# define BOOST_FILESYSTEM_VERSION 2 +# define BOOST_FILESYSTEM_VERSION 3 # endif #if BOOST_FILESYSTEM_VERSION == 2 diff --git a/3rdParty/Boost/src/boost/filesystem/operations.hpp b/3rdParty/Boost/src/boost/filesystem/operations.hpp index 7dc94e9..db7b123 100644 --- a/3rdParty/Boost/src/boost/filesystem/operations.hpp +++ b/3rdParty/Boost/src/boost/filesystem/operations.hpp @@ -12,13 +12,16 @@ #ifndef BOOST_FILESYSTEM_OPERATIONSX_HPP #define BOOST_FILESYSTEM_OPERATIONSX_HPP +#include <boost/config.hpp> // for <boost/config/user.hpp>, in case + // BOOST_FILESYSTEM_VERSION defined there + # if defined(BOOST_FILESYSTEM_VERSION) \ && BOOST_FILESYSTEM_VERSION != 2 && BOOST_FILESYSTEM_VERSION != 3 # error BOOST_FILESYSTEM_VERSION defined, but not as 2 or 3 # endif # if !defined(BOOST_FILESYSTEM_VERSION) -# define BOOST_FILESYSTEM_VERSION 2 +# define BOOST_FILESYSTEM_VERSION 3 # endif #if BOOST_FILESYSTEM_VERSION == 2 diff --git a/3rdParty/Boost/src/boost/filesystem/path.hpp b/3rdParty/Boost/src/boost/filesystem/path.hpp index bf12174..3bed7d2 100644 --- a/3rdParty/Boost/src/boost/filesystem/path.hpp +++ b/3rdParty/Boost/src/boost/filesystem/path.hpp @@ -12,13 +12,16 @@ #ifndef BOOST_FILESYSTEM_PATHX_HPP #define BOOST_FILESYSTEM_PATHX_HPP +#include <boost/config.hpp> // for <boost/config/user.hpp>, in case + // BOOST_FILESYSTEM_VERSION defined there + # if defined(BOOST_FILESYSTEM_VERSION) \ && BOOST_FILESYSTEM_VERSION != 2 && BOOST_FILESYSTEM_VERSION != 3 # error BOOST_FILESYSTEM_VERSION defined, but not as 2 or 3 # endif # if !defined(BOOST_FILESYSTEM_VERSION) -# define BOOST_FILESYSTEM_VERSION 2 +# define BOOST_FILESYSTEM_VERSION 3 # endif #if BOOST_FILESYSTEM_VERSION == 2 diff --git a/3rdParty/Boost/src/boost/filesystem/v2/config.hpp b/3rdParty/Boost/src/boost/filesystem/v2/config.hpp index 62656ef..7116de5 100644 --- a/3rdParty/Boost/src/boost/filesystem/v2/config.hpp +++ b/3rdParty/Boost/src/boost/filesystem/v2/config.hpp @@ -51,6 +51,16 @@ # endif # endif +// throw an exception ----------------------------------------------------------------// +// +// Exceptions were originally thrown via boost::throw_exception(). +// As throw_exception() became more complex, it caused user error reporting +// to be harder to interpret, since the exception reported became much more complex. +// The immediate fix was to throw directly, wrapped in a macro to make any later change +// easier. + +#define BOOST_FILESYSTEM_THROW(EX) throw EX + // narrow support only for badly broken compilers or libraries -------------// # if defined(BOOST_NO_STD_WSTRING) || defined(BOOST_NO_SFINAE) || defined(BOOST_NO_STD_LOCALE) || BOOST_WORKAROUND(__BORLANDC__, <0x610) diff --git a/3rdParty/Boost/src/boost/filesystem/v2/convenience.hpp b/3rdParty/Boost/src/boost/filesystem/v2/convenience.hpp index 4695a01..30b6ade 100644 --- a/3rdParty/Boost/src/boost/filesystem/v2/convenience.hpp +++ b/3rdParty/Boost/src/boost/filesystem/v2/convenience.hpp @@ -13,7 +13,8 @@ #ifndef BOOST_FILESYSTEM2_CONVENIENCE_HPP #define BOOST_FILESYSTEM2_CONVENIENCE_HPP -#include <boost/filesystem/operations.hpp> +#include <boost/filesystem/v2/config.hpp> +#include <boost/filesystem/v2/operations.hpp> #include <boost/system/error_code.hpp> #include <vector> #include <stack> @@ -85,11 +86,11 @@ namespace boost # if !defined(_STLPORT_VERSION) return ph.parent_path() / (basename(ph) + new_extension); # else - typedef BOOST_FS_TYPENAME Path::string_type string_type; - string_type filename = basename(ph) + new_extension; - return ph.parent_path() / filename; + typedef BOOST_FS_TYPENAME Path::string_type string_type; + string_type filename = basename(ph) + new_extension; + return ph.parent_path() / filename; # endif - } + } # endif # ifndef BOOST_FILESYSTEM2_NARROW_ONLY diff --git a/3rdParty/Boost/src/boost/filesystem/v2/fstream.hpp b/3rdParty/Boost/src/boost/filesystem/v2/fstream.hpp index bdcd485..887d59d 100644 --- a/3rdParty/Boost/src/boost/filesystem/v2/fstream.hpp +++ b/3rdParty/Boost/src/boost/filesystem/v2/fstream.hpp @@ -12,6 +12,7 @@ #ifndef BOOST_FILESYSTEM2_FSTREAM_HPP #define BOOST_FILESYSTEM2_FSTREAM_HPP +#include <boost/filesystem/v2/config.hpp> #include <boost/filesystem/v2/operations.hpp> // for 8.3 hack (see below) #include <boost/utility/enable_if.hpp> #include <boost/detail/workaround.hpp> diff --git a/3rdParty/Boost/src/boost/filesystem/v2/operations.hpp b/3rdParty/Boost/src/boost/filesystem/v2/operations.hpp index c60046f..57c406d 100644 --- a/3rdParty/Boost/src/boost/filesystem/v2/operations.hpp +++ b/3rdParty/Boost/src/boost/filesystem/v2/operations.hpp @@ -14,6 +14,7 @@ #ifndef BOOST_FILESYSTEM2_OPERATIONS_HPP #define BOOST_FILESYSTEM2_OPERATIONS_HPP +#include <boost/filesystem/v2/config.hpp> #include <boost/filesystem/v2/path.hpp> #include <boost/detail/scoped_enum_emulation.hpp> @@ -258,7 +259,7 @@ namespace boost system::error_code ec; file_status result( detail::status_api( ph.external_file_string(), ec ) ); if ( ec ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::status", ph, ec ) ); return result; } @@ -277,7 +278,7 @@ namespace boost system::error_code ec; file_status result( symlink_status( ph, ec ) ); if ( ec ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::symlink_status", ph, ec ) ); return result; } @@ -292,7 +293,7 @@ namespace boost system::error_code ec; file_status result( detail::status_api( ph.external_file_string(), ec ) ); if ( ec ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::exists", ph, ec ) ); return exists( result ); } @@ -302,7 +303,7 @@ namespace boost system::error_code ec; file_status result( detail::status_api( ph.external_file_string(), ec ) ); if ( ec ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::is_directory", ph, ec ) ); return is_directory( result ); } @@ -312,7 +313,7 @@ namespace boost system::error_code ec; file_status result( detail::status_api( ph.external_file_string(), ec ) ); if ( ec ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::is_regular_file", ph, ec ) ); return is_regular_file( result ); } @@ -323,7 +324,7 @@ namespace boost system::error_code ec; file_status result( detail::status_api( ph.external_file_string(), ec ) ); if ( ec ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::is_regular", ph, ec ) ); return is_regular( result ); } @@ -334,7 +335,7 @@ namespace boost system::error_code ec; file_status result( detail::status_api( ph.external_file_string(), ec ) ); if ( ec ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::is_other", ph, ec ) ); return is_other( result ); } @@ -350,7 +351,7 @@ namespace boost system::error_code ec; file_status result( detail::symlink_status_api( ph.external_file_string(), ec ) ); if ( ec ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::is_symlink", ph, ec ) ); return is_symlink( result ); # endif @@ -369,7 +370,7 @@ namespace boost detail::query_pair result( detail::is_empty_api( ph.external_file_string() ) ); if ( result.first ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::is_empty", ph, result.first ) ); return result.second; } @@ -379,7 +380,7 @@ namespace boost detail::query_pair result( detail::equivalent_api( ph1.external_file_string(), ph2.external_file_string() ) ); if ( result.first ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::equivalent", ph1, ph2, result.first ) ); return result.second; } @@ -389,7 +390,7 @@ namespace boost detail::uintmax_pair result ( detail::file_size_api( ph.external_file_string() ) ); if ( result.first ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::file_size", ph, result.first ) ); return result.second; } @@ -399,7 +400,7 @@ namespace boost detail::space_pair result ( detail::space_api( ph.external_file_string() ) ); if ( result.first ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::space", ph, result.first ) ); return result.second; } @@ -409,7 +410,7 @@ namespace boost detail::time_pair result ( detail::last_write_time_api( ph.external_file_string() ) ); if ( result.first ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::last_write_time", ph, result.first ) ); return result.second; } @@ -422,7 +423,7 @@ namespace boost detail::query_pair result( detail::create_directory_api( dir_ph.external_directory_string() ) ); if ( result.first ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::create_directory", dir_ph, result.first ) ); return result.second; @@ -437,7 +438,7 @@ namespace boost to_ph.external_file_string(), from_ph.external_file_string() ) ); if ( ec ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::create_hard_link", to_ph, from_ph, ec ) ); } @@ -461,7 +462,7 @@ namespace boost to_ph.external_file_string(), from_ph.external_file_string() ) ); if ( ec ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::create_symlink", to_ph, from_ph, ec ) ); } @@ -481,7 +482,7 @@ namespace boost system::error_code ec; file_status f = symlink_status( ph, ec ); if ( ec ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::remove", ph, ec ) ); return detail::remove_aux( ph, f ); } @@ -491,7 +492,7 @@ namespace boost system::error_code ec; file_status f = symlink_status( ph, ec ); if ( ec ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::remove_all", ph, ec ) ); return exists( f ) ? detail::remove_all_aux( ph, f ) : 0; } @@ -502,7 +503,7 @@ namespace boost from_path.external_directory_string(), to_path.external_directory_string() ) ); if ( ec ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::rename", from_path, to_path, ec ) ); } @@ -518,7 +519,7 @@ namespace boost from_path.external_directory_string(), to_path.external_directory_string(), option == copy_option::fail_if_exists ) ); if ( ec ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::copy_file", from_path, to_path, ec ) ); } @@ -529,7 +530,7 @@ namespace boost typename Path::external_string_type ph; system::error_code ec( detail::get_current_path_api( ph ) ); if ( ec ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::current_path", ec ) ); return Path( Path::traits_type::to_internal( ph ) ); } @@ -539,7 +540,7 @@ namespace boost system::error_code ec( detail::set_current_path_api( ph.external_directory_string() ) ); if ( ec ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::current_path", ph, ec ) ); } @@ -567,7 +568,7 @@ namespace boost system::error_code ec( detail::get_full_path_name_api( ph.external_file_string(), sys_ph ) ); if ( ec ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::system_complete", ph, ec ) ); return Path( Path::traits_type::to_internal( sys_ph ) ); # else @@ -606,7 +607,7 @@ namespace boost system::error_code ec( detail::last_write_time_api( ph.external_file_string(), new_time ) ); if ( ec ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::last_write_time", ph, ec ) ); } @@ -782,7 +783,7 @@ namespace boost { system::error_code ec = remove_api( ph.external_file_string() ); if ( ec ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::remove", ph, ec ) ); return true; } @@ -803,7 +804,7 @@ namespace boost boost::system::error_code ec; boost::filesystem2::file_status fn = boost::filesystem2::symlink_status( itr->path(), ec ); if ( ec ) - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem:remove_all", ph, ec ) ); count += remove_all_aux( itr->path(), fn ); } @@ -980,7 +981,7 @@ namespace boost system::error_code ec( m_init(dir_path) ); if ( ec ) { - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::basic_directory_iterator constructor", dir_path, ec ) ); } @@ -1013,7 +1014,7 @@ namespace boost name, fs, symlink_fs ); if ( ec ) { - boost::throw_exception( basic_filesystem_error<Path>( + BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>( "boost::filesystem::basic_directory_iterator increment", m_imp->m_directory_entry.path().parent_path(), ec ) ); } diff --git a/3rdParty/Boost/src/boost/filesystem/v2/path.hpp b/3rdParty/Boost/src/boost/filesystem/v2/path.hpp index 16d67ca..615b89c 100644 --- a/3rdParty/Boost/src/boost/filesystem/v2/path.hpp +++ b/3rdParty/Boost/src/boost/filesystem/v2/path.hpp @@ -20,16 +20,15 @@ #include <boost/filesystem/v2/config.hpp> #include <boost/system/system_error.hpp> #include <boost/iterator/iterator_facade.hpp> -#include <boost/throw_exception.hpp> #include <boost/shared_ptr.hpp> #include <boost/type_traits/is_same.hpp> #include <boost/static_assert.hpp> +#include <boost/assert.hpp> #include <string> #include <algorithm> // for lexicographical_compare #include <iosfwd> // needed by basic_path inserter and extractor #include <stdexcept> -#include <cassert> # ifndef BOOST_FILESYSTEM2_NARROW_ONLY # include <locale> @@ -916,7 +915,7 @@ namespace boost boost::BOOST_FILESYSTEM2_NAMESPACE::basic_path<String, Traits> path_type; - assert( !str.empty() && str[pos] == slash<path_type>::value + BOOST_ASSERT( !str.empty() && str[pos] == slash<path_type>::value && "precondition violation" ); // subsequent logic expects pos to be for leftmost slash of a set @@ -1380,7 +1379,7 @@ namespace boost typedef typename Path::string_type string_type; typedef typename Path::traits_type traits_type; - assert( itr.m_pos < itr.m_path_ptr->m_path.size() && "basic_path::iterator increment past end()" ); + BOOST_ASSERT( itr.m_pos < itr.m_path_ptr->m_path.size() && "basic_path::iterator increment past end()" ); bool was_net( itr.m_name.size() > 2 && itr.m_name[0] == slash<Path>::value @@ -1439,7 +1438,7 @@ namespace boost template<class Path> void iterator_helper<Path>::do_decrement( iterator & itr ) { - assert( itr.m_pos && "basic_path::iterator decrement past begin()" ); + BOOST_ASSERT( itr.m_pos && "basic_path::iterator decrement past begin()" ); typedef typename Path::string_type string_type; typedef typename Path::traits_type traits_type; diff --git a/3rdParty/Boost/src/boost/filesystem/v3/fstream.hpp b/3rdParty/Boost/src/boost/filesystem/v3/fstream.hpp index 235aa79..60a2a3b 100644 --- a/3rdParty/Boost/src/boost/filesystem/v3/fstream.hpp +++ b/3rdParty/Boost/src/boost/filesystem/v3/fstream.hpp @@ -27,7 +27,8 @@ // on Windows, except for standard libaries known to have wchar_t overloads for // file stream I/O, use path::string() to get a narrow character c_str() #if defined(BOOST_WINDOWS_API) \ - && !(defined(_CPPLIB_VER) && _CPPLIB_VER >= 405) // not (Dinkumware with overloads) + && (!defined(_CPPLIB_VER) || _CPPLIB_VER < 405 || defined(_STLPORT_VERSION)) + // !Dinkumware || early Dinkumware || STLPort masquerading as Dinkumware # define BOOST_FILESYSTEM_C_STR string().c_str() // use narrow, since wide not available #else // use the native c_str, which will be narrow on POSIX, wide on Windows # define BOOST_FILESYSTEM_C_STR c_str() diff --git a/3rdParty/Boost/src/boost/filesystem/v3/operations.hpp b/3rdParty/Boost/src/boost/filesystem/v3/operations.hpp index cf47c56..7d1608d 100644 --- a/3rdParty/Boost/src/boost/filesystem/v3/operations.hpp +++ b/3rdParty/Boost/src/boost/filesystem/v3/operations.hpp @@ -25,6 +25,7 @@ #include <boost/filesystem/v3/path.hpp> #include <boost/detail/scoped_enum_emulation.hpp> +#include <boost/detail/bitmask.hpp> #include <boost/system/error_code.hpp> #include <boost/system/system_error.hpp> #include <boost/shared_ptr.hpp> @@ -75,8 +76,8 @@ namespace boost fifo_file, socket_file, reparse_file, // Windows: FILE_ATTRIBUTE_REPARSE_POINT that is not a symlink - type_unknown, // file does exist, but isn't one of the above types or - // we don't have strong enough permission to find its type + type_unknown, // file does exist, but isn't one of the above types or + // we don't have strong enough permission to find its type _detail_directory_symlink // internal use only; never exposed to users }; @@ -84,7 +85,8 @@ namespace boost class BOOST_FILESYSTEM_DECL file_status { public: - explicit file_status(file_type v = status_error) : m_value(v) {} + file_status() : m_value(status_error) {} + explicit file_status(file_type v) : m_value(v) {} void type(file_type v) { m_value = v; } file_type type() const { return m_value; } @@ -122,7 +124,7 @@ namespace boost }; BOOST_SCOPED_ENUM_START(copy_option) - {fail_if_exists, overwrite_if_exists}; + {none, fail_if_exists = none, overwrite_if_exists}; BOOST_SCOPED_ENUM_END //--------------------------------------------------------------------------------------// @@ -191,6 +193,8 @@ namespace boost BOOST_FILESYSTEM_DECL path system_complete(const path& p, system::error_code* ec=0); BOOST_FILESYSTEM_DECL + path temp_directory_path(system::error_code* ec=0); + BOOST_FILESYSTEM_DECL path unique_path(const path& p, system::error_code* ec=0); } // namespace detail @@ -258,9 +262,7 @@ namespace boost // forward declarations path current_path(); // fwd declaration -# ifndef BOOST_FILESYSTEM_NO_DEPRECATED path initial_path(); -# endif BOOST_FILESYSTEM_DECL path absolute(const path& p, const path& base=current_path()); @@ -331,17 +333,17 @@ namespace boost void create_directory_symlink(const path& to, const path& from, system::error_code& ec) {detail::create_directory_symlink(to, from, &ec);} inline - void create_hard_link(const path& to, const path& from) {detail::create_hard_link(to, from);} + void create_hard_link(const path& to, const path& new_hard_link) {detail::create_hard_link(to, new_hard_link);} inline - void create_hard_link(const path& to, const path& from, system::error_code& ec) - {detail::create_hard_link(to, from, &ec);} + void create_hard_link(const path& to, const path& new_hard_link, system::error_code& ec) + {detail::create_hard_link(to, new_hard_link, &ec);} inline - void create_symlink(const path& to, const path& from) {detail::create_symlink(to, from);} + void create_symlink(const path& to, const path& new_symlink) {detail::create_symlink(to, new_symlink);} inline - void create_symlink(const path& to, const path& from, system::error_code& ec) - {detail::create_symlink(to, from, &ec);} + void create_symlink(const path& to, const path& new_symlink, system::error_code& ec) + {detail::create_symlink(to, new_symlink, &ec);} inline path current_path() {return detail::current_path();} @@ -372,7 +374,6 @@ namespace boost inline boost::uintmax_t hard_link_count(const path& p, system::error_code& ec) {return detail::hard_link_count(p, &ec);} -# ifndef BOOST_FILESYSTEM_NO_DEPRECATED inline path initial_path() {return detail::initial_path();} @@ -383,7 +384,6 @@ namespace boost path initial_path() {return initial_path();} template <class Path> path initial_path(system::error_code& ec) {return detail::initial_path(&ec);} -# endif inline std::time_t last_write_time(const path& p) {return detail::last_write_time(p);} @@ -446,6 +446,12 @@ namespace boost path system_complete(const path& p, system::error_code& ec) {return detail::system_complete(p, &ec);} inline + path temp_directory_path() {return detail::temp_directory_path();} + + inline + path temp_directory_path(system::error_code& ec) + {return detail::temp_directory_path(&ec);} + inline path unique_path(const path& p="%%%%-%%%%-%%%%-%%%%") { return detail::unique_path(p); } inline @@ -633,6 +639,17 @@ namespace detail // // //--------------------------------------------------------------------------------------// + BOOST_SCOPED_ENUM_START(symlink_option) + { + none, + no_recurse = none, // don't follow directory symlinks (default behavior) + recurse, // follow directory symlinks + _detail_no_push = recurse << 1 // internal use only + }; + BOOST_SCOPED_ENUM_END + + BOOST_BITMASK(BOOST_SCOPED_ENUM(symlink_option)) + namespace detail { struct recur_dir_itr_imp @@ -640,9 +657,9 @@ namespace detail typedef directory_iterator element_type; std::stack< element_type, std::vector< element_type > > m_stack; int m_level; - bool m_no_push_request; + BOOST_SCOPED_ENUM(symlink_option) m_options; - recur_dir_itr_imp() : m_level(0), m_no_push_request(false) {} + recur_dir_itr_imp() : m_level(0), m_options(symlink_option::none) {} void increment(system::error_code* ec); // ec == 0 means throw on error @@ -658,9 +675,11 @@ namespace detail void recur_dir_itr_imp::increment(system::error_code* ec) // ec == 0 means throw on error { - if (m_no_push_request) - { m_no_push_request = false; } - else if (is_directory(m_stack.top()->status())) + if ((m_options & symlink_option::_detail_no_push) == symlink_option::_detail_no_push) + m_options &= ~symlink_option::_detail_no_push; + else if (is_directory(m_stack.top()->status()) + && (!is_symlink(m_stack.top()->symlink_status()) + || (m_options & symlink_option::recurse) == symlink_option::recurse)) { if (ec == 0) m_stack.push(directory_iterator(m_stack.top()->path())); @@ -714,27 +733,41 @@ namespace detail recursive_directory_iterator(){} // creates the "end" iterator - explicit recursive_directory_iterator(const path& dir_path) + explicit recursive_directory_iterator(const path& dir_path, + BOOST_SCOPED_ENUM(symlink_option) opt = symlink_option::none) : m_imp(new detail::recur_dir_itr_imp) { + m_imp->m_options = opt; m_imp->m_stack.push(directory_iterator(dir_path)); if (m_imp->m_stack.top() == directory_iterator()) { m_imp.reset (); } } recursive_directory_iterator(const path& dir_path, + BOOST_SCOPED_ENUM(symlink_option) opt, + system::error_code & ec) + : m_imp(new detail::recur_dir_itr_imp) + { + m_imp->m_options = opt; + m_imp->m_stack.push(directory_iterator(dir_path, ec)); + if (m_imp->m_stack.top() == directory_iterator()) + { m_imp.reset (); } + } + + recursive_directory_iterator(const path& dir_path, system::error_code & ec) : m_imp(new detail::recur_dir_itr_imp) { + m_imp->m_options = symlink_option::none; m_imp->m_stack.push(directory_iterator(dir_path, ec)); if (m_imp->m_stack.top() == directory_iterator()) { m_imp.reset (); } } - recursive_directory_iterator& increment(system::error_code* ec) + recursive_directory_iterator& increment(system::error_code& ec) { BOOST_ASSERT(m_imp.get() && "increment() on end recursive_directory_iterator"); - m_imp->increment(ec); + m_imp->increment(&ec); return *this; } @@ -744,12 +777,17 @@ namespace detail return m_imp->m_level; } - bool no_push_request() const + bool no_push_pending() const { - BOOST_ASSERT(m_imp.get() && "no_push_request() on end recursive_directory_iterator"); - return m_imp->m_no_push_request; + BOOST_ASSERT(m_imp.get() && "is_no_push_requested() on end recursive_directory_iterator"); + return (m_imp->m_options & symlink_option::_detail_no_push) + == symlink_option::_detail_no_push; } +# ifndef BOOST_FILESYSTEM_NO_DEPRECATED + bool no_push_request() const { return no_push_pending(); } +# endif + void pop() { BOOST_ASSERT(m_imp.get() && "pop() on end recursive_directory_iterator"); @@ -757,10 +795,13 @@ namespace detail if (m_imp->m_stack.empty()) m_imp.reset(); // done, so make end iterator } - void no_push() + void no_push(bool value=true) { BOOST_ASSERT(m_imp.get() && "no_push() on end recursive_directory_iterator"); - m_imp->m_no_push_request = true; + if (value) + m_imp->m_options |= symlink_option::_detail_no_push; + else + m_imp->m_options &= ~symlink_option::_detail_no_push; } file_status status() const @@ -799,7 +840,8 @@ namespace detail { BOOST_ASSERT(m_imp.get() && "increment of end recursive_directory_iterator"); m_imp->increment(0); - if (m_imp->m_stack.empty()) m_imp.reset(); // done, so make end iterator + if (m_imp->m_stack.empty()) + m_imp.reset(); // done, so make end iterator } bool equal(const recursive_directory_iterator& rhs) const @@ -963,6 +1005,7 @@ namespace boost using filesystem3::file_type; using filesystem3::filesystem_error; using filesystem3::hard_link_count; + using filesystem3::initial_path; using filesystem3::is_directory; using filesystem3::is_directory; using filesystem3::is_empty; @@ -973,6 +1016,7 @@ namespace boost using filesystem3::read_symlink; using filesystem3::recursive_directory_iterator; using filesystem3::regular_file; + using filesystem3::reparse_file; using filesystem3::remove; using filesystem3::remove_all; using filesystem3::rename; @@ -984,12 +1028,13 @@ namespace boost using filesystem3::status_error; using filesystem3::status_known; using filesystem3::symlink_file; + using filesystem3::symlink_option; using filesystem3::symlink_status; using filesystem3::system_complete; + using filesystem3::temp_directory_path; using filesystem3::type_unknown; using filesystem3::unique_path; # ifndef BOOST_FILESYSTEM_NO_DEPRECATED - using filesystem3::initial_path; using filesystem3::is_regular; using filesystem3::status_unknown; using filesystem3::symbolic_link_exists; diff --git a/3rdParty/Boost/src/boost/filesystem/v3/path.hpp b/3rdParty/Boost/src/boost/filesystem/v3/path.hpp index 1cd1522..f81b631 100644 --- a/3rdParty/Boost/src/boost/filesystem/v3/path.hpp +++ b/3rdParty/Boost/src/boost/filesystem/v3/path.hpp @@ -452,7 +452,6 @@ namespace filesystem3 void m_erase_redundant_separator(string_type::size_type sep_pos); string_type::size_type m_parent_path_end() const; - void m_portable(); path& m_normalize(); @@ -479,7 +478,7 @@ namespace filesystem3 class path::iterator : public boost::iterator_facade< - iterator, + path::iterator, path const, boost::bidirectional_traversal_tag > { diff --git a/3rdParty/Boost/src/boost/functional/hash/detail/hash_float_generic.hpp b/3rdParty/Boost/src/boost/functional/hash/detail/hash_float_generic.hpp index fdbf53f..1278c2f 100644 --- a/3rdParty/Boost/src/boost/functional/hash/detail/hash_float_generic.hpp +++ b/3rdParty/Boost/src/boost/functional/hash/detail/hash_float_generic.hpp @@ -53,7 +53,7 @@ namespace boost v = ldexp(v, limits<std::size_t>::digits); std::size_t seed = static_cast<std::size_t>(v); - v -= seed; + v -= static_cast<T>(seed); // ceiling(digits(T) * log2(radix(T))/ digits(size_t)) - 1; std::size_t const length @@ -66,7 +66,7 @@ namespace boost { v = ldexp(v, limits<std::size_t>::digits); std::size_t part = static_cast<std::size_t>(v); - v -= part; + v -= static_cast<T>(part); hash_float_combine(seed, part); } diff --git a/3rdParty/Boost/src/boost/functional/hash/hash.hpp b/3rdParty/Boost/src/boost/functional/hash/hash.hpp index 0eedf7f..51ec860 100644 --- a/3rdParty/Boost/src/boost/functional/hash/hash.hpp +++ b/3rdParty/Boost/src/boost/functional/hash/hash.hpp @@ -24,6 +24,10 @@ #include <boost/type_traits/is_pointer.hpp> #endif +#if !defined(BOOST_NO_0X_HDR_TYPEINDEX) +#include <typeindex> +#endif + #if BOOST_WORKAROUND(__GNUC__, < 3) \ && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION) #define BOOST_HASH_CHAR_TRAITS string_char_traits @@ -87,6 +91,10 @@ namespace boost std::size_t hash_value( std::basic_string<Ch, std::BOOST_HASH_CHAR_TRAITS<Ch>, A> const&); +#if !defined(BOOST_NO_0X_HDR_TYPEINDEX) + std::size_t hash_value(std::type_index); +#endif + // Implementation namespace hash_detail @@ -210,8 +218,8 @@ namespace boost #endif { #if defined(__VMS) && __INITIAL_POINTER_SIZE == 64 - // for some reason ptrdiff_t on OpenVMS compiler with - // 64 bit is not 64 bit !!! + // for some reason ptrdiff_t on OpenVMS compiler with + // 64 bit is not 64 bit !!! std::size_t x = static_cast<std::size_t>( reinterpret_cast<long long int>(v)); #else @@ -331,6 +339,13 @@ namespace boost return boost::hash_detail::float_hash_value(v); } +#if !defined(BOOST_NO_0X_HDR_TYPEINDEX) + inline std::size_t hash_value(std::type_index v) + { + return v.hash_code(); + } +#endif + // // boost::hash // @@ -435,6 +450,10 @@ namespace boost BOOST_HASH_SPECIALIZE(boost::ulong_long_type) #endif +#if !defined(BOOST_NO_0X_HDR_TYPEINDEX) + BOOST_HASH_SPECIALIZE(std::type_index) +#endif + #undef BOOST_HASH_SPECIALIZE #undef BOOST_HASH_SPECIALIZE_REF diff --git a/3rdParty/Boost/src/boost/io/detail/quoted_manip.hpp b/3rdParty/Boost/src/boost/io/detail/quoted_manip.hpp index 13cfc35..502f422 100644 --- a/3rdParty/Boost/src/boost/io/detail/quoted_manip.hpp +++ b/3rdParty/Boost/src/boost/io/detail/quoted_manip.hpp @@ -125,15 +125,15 @@ namespace boost std::basic_istream<Char, Traits>& operator>>(std::basic_istream<Char, Traits>& is, const quoted_proxy<std::basic_string<Char, Traits, Alloc>&, Char>& proxy) { + proxy.string.clear(); Char c; is >> c; if (c != proxy.delim) { - proxy.string = c; + is.unget(); is >> proxy.string; return is; } - proxy.string.clear(); { boost::io::ios_flags_saver ifs(is); is >> std::noskipws; diff --git a/3rdParty/Boost/src/boost/iterator/iterator_facade.hpp b/3rdParty/Boost/src/boost/iterator/iterator_facade.hpp index 967d60f..5ee73b5 100644 --- a/3rdParty/Boost/src/boost/iterator/iterator_facade.hpp +++ b/3rdParty/Boost/src/boost/iterator/iterator_facade.hpp @@ -105,6 +105,7 @@ namespace boost typedef typename remove_const<ValueParam>::type value_type; + // Not the real associated pointer type typedef typename mpl::eval_if< boost::detail::iterator_writability_disabled<ValueParam,Reference> , add_pointer<const value_type> @@ -323,7 +324,7 @@ namespace boost static type make(Reference x) { - return implicit_cast<type>(&x); + return boost::implicit_cast<type>(&x); } }; @@ -617,6 +618,12 @@ namespace boost Value, CategoryOrTraversal, Reference, Difference > associated_types; + typedef boost::detail::operator_arrow_result< + typename associated_types::value_type + , Reference + , typename associated_types::pointer + > pointer_; + protected: // For use by derived classes typedef iterator_facade<Derived,Value,CategoryOrTraversal,Reference,Difference> iterator_facade_; @@ -626,7 +633,9 @@ namespace boost typedef typename associated_types::value_type value_type; typedef Reference reference; typedef Difference difference_type; - typedef typename associated_types::pointer pointer; + + typedef typename pointer_::type pointer; + typedef typename associated_types::iterator_category iterator_category; reference operator*() const @@ -634,18 +643,9 @@ namespace boost return iterator_core_access::dereference(this->derived()); } - typename boost::detail::operator_arrow_result< - value_type - , reference - , pointer - >::type - operator->() const + pointer operator->() const { - return boost::detail::operator_arrow_result< - value_type - , reference - , pointer - >::make(*this->derived()); + return pointer_::make(*this->derived()); } typename boost::detail::operator_brackets_result<Derived,Value,reference>::type diff --git a/3rdParty/Boost/src/boost/mpl/aux_/config/operators.hpp b/3rdParty/Boost/src/boost/mpl/aux_/config/operators.hpp deleted file mode 100644 index 2a38a3d..0000000 --- a/3rdParty/Boost/src/boost/mpl/aux_/config/operators.hpp +++ /dev/null @@ -1,33 +0,0 @@ - -#ifndef BOOST_MPL_AUX_CONFIG_OPERATORS_HPP_INCLUDED -#define BOOST_MPL_AUX_CONFIG_OPERATORS_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2003-2004 -// -// 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/mpl for documentation. - -// $Id: operators.hpp 49267 2008-10-11 06:19:02Z agurtovoy $ -// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $ -// $Revision: 49267 $ - -#include <boost/mpl/aux_/config/gcc.hpp> -#include <boost/mpl/aux_/config/msvc.hpp> -#include <boost/mpl/aux_/config/workaround.hpp> - -#if !defined(BOOST_MPL_CFG_USE_OPERATORS_OVERLOADING) \ - && ( BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \ - || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \ - || BOOST_WORKAROUND(__EDG_VERSION__, <= 245) \ - || BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, <= 0x0295) \ - || BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600)) \ - ) - -# define BOOST_MPL_CFG_USE_OPERATORS_OVERLOADING - -#endif - -#endif // BOOST_MPL_AUX_CONFIG_OPERATORS_HPP_INCLUDED diff --git a/3rdParty/Boost/src/boost/mpl/aux_/has_key_impl.hpp b/3rdParty/Boost/src/boost/mpl/aux_/has_key_impl.hpp deleted file mode 100644 index 3a12a22..0000000 --- a/3rdParty/Boost/src/boost/mpl/aux_/has_key_impl.hpp +++ /dev/null @@ -1,34 +0,0 @@ - -#ifndef BOOST_MPL_AUX_HAS_KEY_IMPL_HPP_INCLUDED -#define BOOST_MPL_AUX_HAS_KEY_IMPL_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2002-2004 -// Copyright David Abrahams 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/libs/mpl for documentation. - -// $Id: has_key_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $ -// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $ -// $Revision: 49267 $ - -#include <boost/mpl/has_key_fwd.hpp> -#include <boost/mpl/aux_/traits_lambda_spec.hpp> - -namespace boost { namespace mpl { - -// no default implementation; the definition is needed to make MSVC happy - -template< typename Tag > struct has_key_impl -{ - template< typename AssociativeSequence, typename Key > struct apply; -}; - -BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(2,has_key_impl) - -}} - -#endif // BOOST_MPL_AUX_HAS_KEY_IMPL_HPP_INCLUDED diff --git a/3rdParty/Boost/src/boost/mpl/aux_/overload_names.hpp b/3rdParty/Boost/src/boost/mpl/aux_/overload_names.hpp deleted file mode 100644 index 0fa4a98..0000000 --- a/3rdParty/Boost/src/boost/mpl/aux_/overload_names.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_MPL_AUX_OVERLOAD_NAMES_HPP_INCLUDED -#define BOOST_MPL_AUX_OVERLOAD_NAMES_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2004 -// -// 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/mpl for documentation. - -// $Id: overload_names.hpp 49267 2008-10-11 06:19:02Z agurtovoy $ -// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $ -// $Revision: 49267 $ - -#include <boost/mpl/aux_/ptr_to_ref.hpp> -#include <boost/mpl/aux_/config/operators.hpp> - -#if defined(BOOST_MPL_CFG_USE_OPERATORS_OVERLOADING) - -# include <boost/mpl/aux_/static_cast.hpp> - -# define BOOST_MPL_AUX_OVERLOAD_VALUE_BY_KEY operator/ -# define BOOST_MPL_AUX_OVERLOAD_ITEM_BY_ORDER operator| -# define BOOST_MPL_AUX_OVERLOAD_ORDER_BY_KEY operator|| -# define BOOST_MPL_AUX_OVERLOAD_IS_MASKED operator% - -# define BOOST_MPL_AUX_OVERLOAD_CALL_VALUE_BY_KEY(T, x) BOOST_MPL_AUX_PTR_TO_REF(T) / x -# define BOOST_MPL_AUX_OVERLOAD_CALL_ITEM_BY_ORDER(T, x) BOOST_MPL_AUX_PTR_TO_REF(T) | x -# define BOOST_MPL_AUX_OVERLOAD_CALL_ORDER_BY_KEY(T, x) BOOST_MPL_AUX_PTR_TO_REF(T) || x -# define BOOST_MPL_AUX_OVERLOAD_CALL_IS_MASKED(T, x) BOOST_MPL_AUX_PTR_TO_REF(T) % x - -#else - -# define BOOST_MPL_AUX_OVERLOAD_VALUE_BY_KEY value_by_key_ -# define BOOST_MPL_AUX_OVERLOAD_ITEM_BY_ORDER item_by_order_ -# define BOOST_MPL_AUX_OVERLOAD_ORDER_BY_KEY order_by_key_ -# define BOOST_MPL_AUX_OVERLOAD_IS_MASKED is_masked_ - -# define BOOST_MPL_AUX_OVERLOAD_CALL_VALUE_BY_KEY(T, x) T::BOOST_MPL_AUX_OVERLOAD_VALUE_BY_KEY( BOOST_MPL_AUX_PTR_TO_REF(T), x ) -# define BOOST_MPL_AUX_OVERLOAD_CALL_ITEM_BY_ORDER(T, x) T::BOOST_MPL_AUX_OVERLOAD_ITEM_BY_ORDER( BOOST_MPL_AUX_PTR_TO_REF(T), x ) -# define BOOST_MPL_AUX_OVERLOAD_CALL_ORDER_BY_KEY(T, x) T::BOOST_MPL_AUX_OVERLOAD_ORDER_BY_KEY( BOOST_MPL_AUX_PTR_TO_REF(T), x ) -# define BOOST_MPL_AUX_OVERLOAD_CALL_IS_MASKED(T, x) T::BOOST_MPL_AUX_OVERLOAD_IS_MASKED( BOOST_MPL_AUX_PTR_TO_REF(T), x ) - -#endif - -#endif // BOOST_MPL_AUX_OVERLOAD_NAMES_HPP_INCLUDED diff --git a/3rdParty/Boost/src/boost/mpl/aux_/ptr_to_ref.hpp b/3rdParty/Boost/src/boost/mpl/aux_/ptr_to_ref.hpp deleted file mode 100644 index 3b5415c..0000000 --- a/3rdParty/Boost/src/boost/mpl/aux_/ptr_to_ref.hpp +++ /dev/null @@ -1,46 +0,0 @@ - -#ifndef BOOST_MPL_AUX_PTR_TO_REF_HPP_INCLUDED -#define BOOST_MPL_AUX_PTR_TO_REF_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2003-2004 -// -// 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/mpl for documentation. - -// $Id: ptr_to_ref.hpp 49267 2008-10-11 06:19:02Z agurtovoy $ -// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $ -// $Revision: 49267 $ - -#include <boost/mpl/aux_/static_cast.hpp> -#include <boost/mpl/aux_/config/msvc.hpp> -#include <boost/mpl/aux_/config/workaround.hpp> - - -#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1400)) \ - || ( BOOST_WORKAROUND(__EDG_VERSION__, <= 245) \ - && !(defined(__STD_STRICT_ANSI) \ - || defined(__STD_STRICT_ANSI_ERRORS)) ) - -# define BOOST_MPL_AUX_PTR_TO_REF(X) \ - *BOOST_MPL_AUX_STATIC_CAST(X*, 0) \ -/**/ - -#else - -# define BOOST_MPL_AUX_PTR_TO_REF(X) \ - aux::ptr_to_ref(BOOST_MPL_AUX_STATIC_CAST(X*, 0)) \ -/**/ - -#endif - - -namespace boost { namespace mpl { namespace aux { - -template< typename T > static T const& ptr_to_ref(T*); - -}}} - -#endif // BOOST_MPL_AUX_PTR_TO_REF_HPP_INCLUDED diff --git a/3rdParty/Boost/src/boost/mpl/aux_/reverse_iter_fold_impl.hpp b/3rdParty/Boost/src/boost/mpl/aux_/reverse_iter_fold_impl.hpp deleted file mode 100644 index ce9257f..0000000 --- a/3rdParty/Boost/src/boost/mpl/aux_/reverse_iter_fold_impl.hpp +++ /dev/null @@ -1,43 +0,0 @@ - -#ifndef BOOST_MPL_AUX_ITER_FOLD_BACKWARD_IMPL_HPP_INCLUDED -#define BOOST_MPL_AUX_ITER_FOLD_BACKWARD_IMPL_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/mpl for documentation. - -// $Id: reverse_iter_fold_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $ -// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $ -// $Revision: 49267 $ - -#if !defined(BOOST_MPL_PREPROCESSING_MODE) -# include <boost/mpl/next_prior.hpp> -# include <boost/mpl/apply.hpp> -# include <boost/mpl/aux_/config/ctps.hpp> -# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \ - || defined(BOOST_MPL_CFG_NO_NONTYPE_TEMPLATE_PARTIAL_SPEC) -# include <boost/mpl/if.hpp> -# include <boost/type_traits/is_same.hpp> -# endif -#endif - -#include <boost/mpl/aux_/config/use_preprocessed.hpp> - -#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \ - && !defined(BOOST_MPL_PREPROCESSING_MODE) - -# define BOOST_MPL_PREPROCESSED_HEADER reverse_iter_fold_impl.hpp -# include <boost/mpl/aux_/include_preprocessed.hpp> - -#else - -# define AUX778076_FOLD_IMPL_OP(iter) iter -# define AUX778076_FOLD_IMPL_NAME_PREFIX reverse_iter_fold -# include <boost/mpl/aux_/reverse_fold_impl_body.hpp> - -#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS -#endif // BOOST_MPL_AUX_ITER_FOLD_BACKWARD_IMPL_HPP_INCLUDED diff --git a/3rdParty/Boost/src/boost/mpl/base.hpp b/3rdParty/Boost/src/boost/mpl/base.hpp deleted file mode 100644 index 3f7e8a4..0000000 --- a/3rdParty/Boost/src/boost/mpl/base.hpp +++ /dev/null @@ -1,35 +0,0 @@ - -#ifndef BOOST_MPL_BASE_HPP_INCLUDED -#define BOOST_MPL_BASE_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/mpl for documentation. - -// $Id: base.hpp 49267 2008-10-11 06:19:02Z agurtovoy $ -// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $ -// $Revision: 49267 $ - -#include <boost/mpl/aux_/na_spec.hpp> -#include <boost/mpl/aux_/lambda_support.hpp> - -namespace boost { namespace mpl { - -template< - typename BOOST_MPL_AUX_NA_PARAM(T) - > -struct base -{ - typedef typename T::base type; - BOOST_MPL_AUX_LAMBDA_SUPPORT(1,base,(T)) -}; - -BOOST_MPL_AUX_NA_SPEC(1, base) - -}} - -#endif // BOOST_MPL_BASE_HPP_INCLUDED diff --git a/3rdParty/Boost/src/boost/mpl/comparison.hpp b/3rdParty/Boost/src/boost/mpl/comparison.hpp deleted file mode 100644 index 005d280..0000000 --- a/3rdParty/Boost/src/boost/mpl/comparison.hpp +++ /dev/null @@ -1,24 +0,0 @@ - -#ifndef BOOST_MPL_COMPARISON_HPP_INCLUDED -#define BOOST_MPL_COMPARISON_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/mpl for documentation. - -// $Id: comparison.hpp 49267 2008-10-11 06:19:02Z agurtovoy $ -// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $ -// $Revision: 49267 $ - -#include <boost/mpl/equal_to.hpp> -#include <boost/mpl/not_equal_to.hpp> -#include <boost/mpl/less.hpp> -#include <boost/mpl/greater.hpp> -#include <boost/mpl/less_equal.hpp> -#include <boost/mpl/greater_equal.hpp> - -#endif // BOOST_MPL_COMPARISON_HPP_INCLUDED diff --git a/3rdParty/Boost/src/boost/mpl/erase_fwd.hpp b/3rdParty/Boost/src/boost/mpl/erase_fwd.hpp deleted file mode 100644 index 0626ecb..0000000 --- a/3rdParty/Boost/src/boost/mpl/erase_fwd.hpp +++ /dev/null @@ -1,24 +0,0 @@ - -#ifndef BOOST_MPL_ERASE_FWD_HPP_INCLUDED -#define BOOST_MPL_ERASE_FWD_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/mpl for documentation. - -// $Id: erase_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $ -// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $ -// $Revision: 49267 $ - -namespace boost { namespace mpl { - -template< typename Tag > struct erase_impl; -template< typename Sequence, typename First, typename Last > struct erase; - -}} - -#endif // BOOST_MPL_ERASE_FWD_HPP_INCLUDED diff --git a/3rdParty/Boost/src/boost/mpl/erase_key_fwd.hpp b/3rdParty/Boost/src/boost/mpl/erase_key_fwd.hpp deleted file mode 100644 index 4844893..0000000 --- a/3rdParty/Boost/src/boost/mpl/erase_key_fwd.hpp +++ /dev/null @@ -1,24 +0,0 @@ - -#ifndef BOOST_MPL_ERASE_KEY_FWD_HPP_INCLUDED -#define BOOST_MPL_ERASE_KEY_FWD_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/mpl for documentation. - -// $Id: erase_key_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $ -// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $ -// $Revision: 49267 $ - -namespace boost { namespace mpl { - -template< typename Tag > struct erase_key_impl; -template< typename Sequence, typename Key > struct erase_key; - -}} - -#endif // BOOST_MPL_ERASE_KEY_FWD_HPP_INCLUDED diff --git a/3rdParty/Boost/src/boost/mpl/greater.hpp b/3rdParty/Boost/src/boost/mpl/greater.hpp deleted file mode 100644 index e33ae48..0000000 --- a/3rdParty/Boost/src/boost/mpl/greater.hpp +++ /dev/null @@ -1,21 +0,0 @@ - -#ifndef BOOST_MPL_GREATER_HPP_INCLUDED -#define BOOST_MPL_GREATER_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/mpl for documentation. - -// $Id: greater.hpp 49267 2008-10-11 06:19:02Z agurtovoy $ -// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $ -// $Revision: 49267 $ - -#define AUX778076_OP_NAME greater -#define AUX778076_OP_TOKEN > -#include <boost/mpl/aux_/comparison_op.hpp> - -#endif // BOOST_MPL_GREATER_HPP_INCLUDED diff --git a/3rdParty/Boost/src/boost/mpl/greater_equal.hpp b/3rdParty/Boost/src/boost/mpl/greater_equal.hpp deleted file mode 100644 index 91ccf83..0000000 --- a/3rdParty/Boost/src/boost/mpl/greater_equal.hpp +++ /dev/null @@ -1,21 +0,0 @@ - -#ifndef BOOST_MPL_GREATER_EQUAL_HPP_INCLUDED -#define BOOST_MPL_GREATER_EQUAL_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/mpl for documentation. - -// $Id: greater_equal.hpp 49267 2008-10-11 06:19:02Z agurtovoy $ -// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $ -// $Revision: 49267 $ - -#define AUX778076_OP_NAME greater_equal -#define AUX778076_OP_TOKEN >= -#include <boost/mpl/aux_/comparison_op.hpp> - -#endif // BOOST_MPL_GREATER_EQUAL_HPP_INCLUDED diff --git a/3rdParty/Boost/src/boost/mpl/has_key.hpp b/3rdParty/Boost/src/boost/mpl/has_key.hpp deleted file mode 100644 index 85102ed..0000000 --- a/3rdParty/Boost/src/boost/mpl/has_key.hpp +++ /dev/null @@ -1,41 +0,0 @@ - -#ifndef BOOST_MPL_HAS_KEY_HPP_INCLUDED -#define BOOST_MPL_HAS_KEY_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2003-2004 -// Copyright David Abrahams 2003-2004 -// -// 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/mpl for documentation. - -// $Id: has_key.hpp 49267 2008-10-11 06:19:02Z agurtovoy $ -// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $ -// $Revision: 49267 $ - -#include <boost/mpl/has_key_fwd.hpp> -#include <boost/mpl/sequence_tag.hpp> -#include <boost/mpl/aux_/has_key_impl.hpp> -#include <boost/mpl/aux_/na_spec.hpp> -#include <boost/mpl/aux_/lambda_support.hpp> - -namespace boost { namespace mpl { - -template< - typename BOOST_MPL_AUX_NA_PARAM(AssociativeSequence) - , typename BOOST_MPL_AUX_NA_PARAM(Key) - > -struct has_key - : has_key_impl< typename sequence_tag<AssociativeSequence>::type > - ::template apply<AssociativeSequence,Key> -{ - BOOST_MPL_AUX_LAMBDA_SUPPORT(2,has_key,(AssociativeSequence,Key)) -}; - -BOOST_MPL_AUX_NA_SPEC(2, has_key) - -}} - -#endif // BOOST_MPL_HAS_KEY_HPP_INCLUDED diff --git a/3rdParty/Boost/src/boost/mpl/has_key_fwd.hpp b/3rdParty/Boost/src/boost/mpl/has_key_fwd.hpp deleted file mode 100644 index 49b0fb5..0000000 --- a/3rdParty/Boost/src/boost/mpl/has_key_fwd.hpp +++ /dev/null @@ -1,25 +0,0 @@ - -#ifndef BOOST_MPL_HAS_KEY_FWD_HPP_INCLUDED -#define BOOST_MPL_HAS_KEY_FWD_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2003-2004 -// Copyright David Abrahams 2003-2004 -// -// 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/mpl for documentation. - -// $Id: has_key_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $ -// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $ -// $Revision: 49267 $ - -namespace boost { namespace mpl { - -template< typename Tag > struct has_key_impl; -template< typename AssociativeSequence, typename Key > struct has_key; - -}} - -#endif // BOOST_MPL_HAS_KEY_FWD_HPP_INCLUDED diff --git a/3rdParty/Boost/src/boost/mpl/insert_fwd.hpp b/3rdParty/Boost/src/boost/mpl/insert_fwd.hpp deleted file mode 100644 index 9c6ff64..0000000 --- a/3rdParty/Boost/src/boost/mpl/insert_fwd.hpp +++ /dev/null @@ -1,24 +0,0 @@ - -#ifndef BOOST_MPL_INSERT_FWD_HPP_INCLUDED -#define BOOST_MPL_INSERT_FWD_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/mpl for documentation. - -// $Id: insert_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $ -// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $ -// $Revision: 49267 $ - -namespace boost { namespace mpl { - -template< typename Tag > struct insert_impl; -template< typename Sequence, typename Pos_or_T, typename T > struct insert; - -}} - -#endif // BOOST_MPL_INSERT_FWD_HPP_INCLUDED diff --git a/3rdParty/Boost/src/boost/mpl/key_type_fwd.hpp b/3rdParty/Boost/src/boost/mpl/key_type_fwd.hpp deleted file mode 100644 index 95f8445..0000000 --- a/3rdParty/Boost/src/boost/mpl/key_type_fwd.hpp +++ /dev/null @@ -1,25 +0,0 @@ - -#ifndef BOOST_MPL_KEY_TYPE_FWD_HPP_INCLUDED -#define BOOST_MPL_KEY_TYPE_FWD_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2003-2004 -// Copyright David Abrahams 2003-2004 -// -// 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/mpl for documentation. - -// $Id: key_type_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $ -// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $ -// $Revision: 49267 $ - -namespace boost { namespace mpl { - -template< typename Tag > struct key_type_impl; -template< typename AssociativeSequence, typename T > struct key_type; - -}} - -#endif // BOOST_MPL_KEY_TYPE_FWD_HPP_INCLUDED diff --git a/3rdParty/Boost/src/boost/mpl/less_equal.hpp b/3rdParty/Boost/src/boost/mpl/less_equal.hpp deleted file mode 100644 index 2284d1d..0000000 --- a/3rdParty/Boost/src/boost/mpl/less_equal.hpp +++ /dev/null @@ -1,21 +0,0 @@ - -#ifndef BOOST_MPL_LESS_EQUAL_HPP_INCLUDED -#define BOOST_MPL_LESS_EQUAL_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/mpl for documentation. - -// $Id: less_equal.hpp 49267 2008-10-11 06:19:02Z agurtovoy $ -// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $ -// $Revision: 49267 $ - -#define AUX778076_OP_NAME less_equal -#define AUX778076_OP_TOKEN <= -#include <boost/mpl/aux_/comparison_op.hpp> - -#endif // BOOST_MPL_LESS_EQUAL_HPP_INCLUDED diff --git a/3rdParty/Boost/src/boost/mpl/not_equal_to.hpp b/3rdParty/Boost/src/boost/mpl/not_equal_to.hpp deleted file mode 100644 index 00132b1..0000000 --- a/3rdParty/Boost/src/boost/mpl/not_equal_to.hpp +++ /dev/null @@ -1,21 +0,0 @@ - -#ifndef BOOST_MPL_NOT_EQUAL_TO_HPP_INCLUDED -#define BOOST_MPL_NOT_EQUAL_TO_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-2004 -// -// 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/mpl for documentation. - -// $Id: not_equal_to.hpp 49267 2008-10-11 06:19:02Z agurtovoy $ -// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $ -// $Revision: 49267 $ - -#define AUX778076_OP_NAME not_equal_to -#define AUX778076_OP_TOKEN != -#include <boost/mpl/aux_/comparison_op.hpp> - -#endif // BOOST_MPL_NOT_EQUAL_TO_HPP_INCLUDED diff --git a/3rdParty/Boost/src/boost/mpl/reverse_iter_fold.hpp b/3rdParty/Boost/src/boost/mpl/reverse_iter_fold.hpp deleted file mode 100644 index e6b3ed3..0000000 --- a/3rdParty/Boost/src/boost/mpl/reverse_iter_fold.hpp +++ /dev/null @@ -1,56 +0,0 @@ - -#ifndef BOOST_MPL_ITER_FOLD_BACKWARD_HPP_INCLUDED -#define BOOST_MPL_ITER_FOLD_BACKWARD_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2001-2004 -// Copyright Dave Abrahams 2001-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) -// -// See http://www.boost.org/libs/mpl for documentation. - -// $Id: reverse_iter_fold.hpp 49267 2008-10-11 06:19:02Z agurtovoy $ -// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $ -// $Revision: 49267 $ - -#include <boost/mpl/begin_end.hpp> -#include <boost/mpl/O1_size.hpp> -#include <boost/mpl/arg.hpp> -#include <boost/mpl/lambda.hpp> -#include <boost/mpl/aux_/reverse_iter_fold_impl.hpp> -#include <boost/mpl/aux_/na_spec.hpp> -#include <boost/mpl/aux_/lambda_support.hpp> - -namespace boost { namespace mpl { - -template< - typename BOOST_MPL_AUX_NA_PARAM(Sequence) - , typename BOOST_MPL_AUX_NA_PARAM(State) - , typename BOOST_MPL_AUX_NA_PARAM(BackwardOp) - , typename ForwardOp = arg<1> - > -struct reverse_iter_fold -{ - typedef typename aux::reverse_iter_fold_impl< - ::boost::mpl::O1_size<Sequence>::value - , typename begin<Sequence>::type - , typename end<Sequence>::type - , State - , typename lambda<BackwardOp>::type - , typename lambda<ForwardOp>::type - >::state type; - - BOOST_MPL_AUX_LAMBDA_SUPPORT( - 4 - , reverse_iter_fold - , (Sequence,State,BackwardOp,ForwardOp) - ) -}; - -BOOST_MPL_AUX_NA_SPEC(3, reverse_iter_fold) - -}} - -#endif // BOOST_MPL_ITER_FOLD_BACKWARD_HPP_INCLUDED diff --git a/3rdParty/Boost/src/boost/mpl/set/aux_/at_impl.hpp b/3rdParty/Boost/src/boost/mpl/set/aux_/at_impl.hpp deleted file mode 100644 index ad74477..0000000 --- a/3rdParty/Boost/src/boost/mpl/set/aux_/at_impl.hpp +++ /dev/null @@ -1,40 +0,0 @@ - -#ifndef BOOST_MPL_SET_AUX_AT_IMPL_HPP_INCLUDED -#define BOOST_MPL_SET_AUX_AT_IMPL_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2003-2004 -// -// 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/mpl for documentation. - -// $Id: at_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $ -// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $ -// $Revision: 49267 $ - -#include <boost/mpl/at_fwd.hpp> -#include <boost/mpl/set/aux_/has_key_impl.hpp> -#include <boost/mpl/set/aux_/tag.hpp> -#include <boost/mpl/if.hpp> -#include <boost/mpl/void.hpp> - -namespace boost { namespace mpl { - -template<> -struct at_impl< aux::set_tag > -{ - template< typename Set, typename T > struct apply - { - typedef typename if_< - has_key_impl<aux::set_tag>::apply<Set,T> - , T - , void_ - >::type type; - }; -}; - -}} - -#endif // BOOST_MPL_SET_AUX_AT_IMPL_HPP_INCLUDED diff --git a/3rdParty/Boost/src/boost/mpl/set/aux_/begin_end_impl.hpp b/3rdParty/Boost/src/boost/mpl/set/aux_/begin_end_impl.hpp deleted file mode 100644 index f012c2a..0000000 --- a/3rdParty/Boost/src/boost/mpl/set/aux_/begin_end_impl.hpp +++ /dev/null @@ -1,43 +0,0 @@ - -#ifndef BOOST_MPL_SET_AUX_BEGIN_END_IMPL_HPP_INCLUDED -#define BOOST_MPL_SET_AUX_BEGIN_END_IMPL_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2003-2007 -// Copyright David Abrahams 2003-2004 -// -// 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/mpl for documentation. - -// $Id: begin_end_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $ -// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $ -// $Revision: 49267 $ - -#include <boost/mpl/begin_end_fwd.hpp> -#include <boost/mpl/set/aux_/iterator.hpp> - -namespace boost { namespace mpl { - -template<> -struct begin_impl< aux::set_tag > -{ - template< typename Set > struct apply - : s_iter_get<Set,typename Set::item_> - { - }; -}; - -template<> -struct end_impl< aux::set_tag > -{ - template< typename Set > struct apply - { - typedef s_iter< Set,set0<> > type; - }; -}; - -}} - -#endif // BOOST_MPL_SET_AUX_BEGIN_END_IMPL_HPP_INCLUDED diff --git a/3rdParty/Boost/src/boost/mpl/set/aux_/clear_impl.hpp b/3rdParty/Boost/src/boost/mpl/set/aux_/clear_impl.hpp deleted file mode 100644 index 4c965f6..0000000 --- a/3rdParty/Boost/src/boost/mpl/set/aux_/clear_impl.hpp +++ /dev/null @@ -1,35 +0,0 @@ - -#ifndef BOOST_MPL_SET_AUX_CLEAR_IMPL_HPP_INCLUDED -#define BOOST_MPL_SET_AUX_CLEAR_IMPL_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2003-2004 -// Copyright David Abrahams 2003-2004 -// -// 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/mpl for documentation. - -// $Id: clear_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $ -// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $ -// $Revision: 49267 $ - -#include <boost/mpl/clear_fwd.hpp> -#include <boost/mpl/set/aux_/set0.hpp> -#include <boost/mpl/set/aux_/tag.hpp> - -namespace boost { namespace mpl { - -template<> -struct clear_impl< aux::set_tag > -{ - template< typename Set > struct apply - { - typedef set0<> type; - }; -}; - -}} - -#endif // BOOST_MPL_SET_AUX_CLEAR_IMPL_HPP_INCLUDED diff --git a/3rdParty/Boost/src/boost/mpl/set/aux_/empty_impl.hpp b/3rdParty/Boost/src/boost/mpl/set/aux_/empty_impl.hpp deleted file mode 100644 index d40a9c4..0000000 --- a/3rdParty/Boost/src/boost/mpl/set/aux_/empty_impl.hpp +++ /dev/null @@ -1,34 +0,0 @@ - -#ifndef BOOST_MPL_SET_AUX_EMPTY_IMPL_HPP_INCLUDED -#define BOOST_MPL_SET_AUX_EMPTY_IMPL_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2003-2004 -// -// 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/mpl for documentation. - -// $Id: empty_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $ -// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $ -// $Revision: 49267 $ - -#include <boost/mpl/empty_fwd.hpp> -#include <boost/mpl/not.hpp> -#include <boost/mpl/set/aux_/tag.hpp> - -namespace boost { namespace mpl { - -template<> -struct empty_impl< aux::set_tag > -{ - template< typename Set > struct apply - : not_< typename Set::size > - { - }; -}; - -}} - -#endif // BOOST_MPL_SET_AUX_EMPTY_IMPL_HPP_INCLUDED diff --git a/3rdParty/Boost/src/boost/mpl/set/aux_/erase_impl.hpp b/3rdParty/Boost/src/boost/mpl/set/aux_/erase_impl.hpp deleted file mode 100644 index 954a70c..0000000 --- a/3rdParty/Boost/src/boost/mpl/set/aux_/erase_impl.hpp +++ /dev/null @@ -1,41 +0,0 @@ - -#ifndef BOOST_MPL_SET_AUX_ERASE_IMPL_HPP_INCLUDED -#define BOOST_MPL_SET_AUX_ERASE_IMPL_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2003-2004 -// Copyright David Abrahams 2003-2004 -// -// 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/mpl for documentation. - -// $Id: erase_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $ -// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $ -// $Revision: 49267 $ - -#include <boost/mpl/erase_fwd.hpp> -#include <boost/mpl/set/aux_/erase_key_impl.hpp> -#include <boost/mpl/set/aux_/tag.hpp> - -namespace boost { namespace mpl { - -template<> -struct erase_impl< aux::set_tag > -{ - template< - typename Set - , typename Pos - , typename unused_ - > - struct apply - : erase_key_impl<aux::set_tag> - ::apply<Set,typename Pos::type> - { - }; -}; - -}} - -#endif // BOOST_MPL_SET_AUX_ERASE_IMPL_HPP_INCLUDED diff --git a/3rdParty/Boost/src/boost/mpl/set/aux_/erase_key_impl.hpp b/3rdParty/Boost/src/boost/mpl/set/aux_/erase_key_impl.hpp deleted file mode 100644 index 9885196..0000000 --- a/3rdParty/Boost/src/boost/mpl/set/aux_/erase_key_impl.hpp +++ /dev/null @@ -1,53 +0,0 @@ - -#ifndef BOOST_MPL_SET_AUX_ERASE_KEY_IMPL_HPP_INCLUDED -#define BOOST_MPL_SET_AUX_ERASE_KEY_IMPL_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2003-2007 -// Copyright David Abrahams 2003-2004 -// -// 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/mpl for documentation. - -// $Id: erase_key_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $ -// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $ -// $Revision: 49267 $ - -#include <boost/mpl/erase_key_fwd.hpp> -#include <boost/mpl/set/aux_/has_key_impl.hpp> -#include <boost/mpl/set/aux_/item.hpp> -#include <boost/mpl/set/aux_/tag.hpp> -#include <boost/mpl/identity.hpp> -#include <boost/mpl/base.hpp> -#include <boost/mpl/eval_if.hpp> - -#include <boost/type_traits/is_same.hpp> - -namespace boost { namespace mpl { - -template<> -struct erase_key_impl< aux::set_tag > -{ - template< - typename Set - , typename T - > - struct apply - : eval_if< - has_key_impl<aux::set_tag>::apply<Set,T> - , eval_if< - is_same< T,typename Set::item_type_ > - , base<Set> - , identity< s_mask<T,typename Set::item_> > - > - , identity<Set> - > - { - }; -}; - -}} - -#endif // BOOST_MPL_SET_AUX_ERASE_KEY_IMPL_HPP_INCLUDED diff --git a/3rdParty/Boost/src/boost/mpl/set/aux_/has_key_impl.hpp b/3rdParty/Boost/src/boost/mpl/set/aux_/has_key_impl.hpp deleted file mode 100644 index d3cae50..0000000 --- a/3rdParty/Boost/src/boost/mpl/set/aux_/has_key_impl.hpp +++ /dev/null @@ -1,60 +0,0 @@ - -#ifndef BOOST_MPL_SET_AUX_HAS_KEY_IMPL_HPP_INCLUDED -#define BOOST_MPL_SET_AUX_HAS_KEY_IMPL_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2003-2004 -// Copyright David Abrahams 2003-2004 -// -// 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/mpl for documentation. - -// $Id: has_key_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $ -// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $ -// $Revision: 49267 $ - -#include <boost/mpl/set/aux_/tag.hpp> -#include <boost/mpl/has_key_fwd.hpp> -#include <boost/mpl/bool.hpp> -#include <boost/mpl/aux_/overload_names.hpp> -#include <boost/mpl/aux_/static_cast.hpp> -#include <boost/mpl/aux_/yes_no.hpp> -#include <boost/mpl/aux_/type_wrapper.hpp> -#include <boost/mpl/aux_/config/workaround.hpp> -#include <boost/mpl/aux_/config/static_constant.hpp> - -namespace boost { namespace mpl { - -template<> -struct has_key_impl< aux::set_tag > -{ - template< typename Set, typename T > struct apply -#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1400)) \ - || BOOST_WORKAROUND(__EDG_VERSION__, <= 245) - { - BOOST_STATIC_CONSTANT(bool, value = - ( sizeof( BOOST_MPL_AUX_OVERLOAD_CALL_IS_MASKED( - Set - , BOOST_MPL_AUX_STATIC_CAST(aux::type_wrapper<T>*, 0) - ) ) == sizeof(aux::no_tag) ) - ); - - typedef bool_<value> type; - -#else // ISO98 C++ - : bool_< - ( sizeof( BOOST_MPL_AUX_OVERLOAD_CALL_IS_MASKED( - Set - , BOOST_MPL_AUX_STATIC_CAST(aux::type_wrapper<T>*, 0) - ) ) == sizeof(aux::no_tag) ) - > - { -#endif - }; -}; - -}} - -#endif // BOOST_MPL_SET_AUX_HAS_KEY_IMPL_HPP_INCLUDED diff --git a/3rdParty/Boost/src/boost/mpl/set/aux_/insert_impl.hpp b/3rdParty/Boost/src/boost/mpl/set/aux_/insert_impl.hpp deleted file mode 100644 index f1d72ec..0000000 --- a/3rdParty/Boost/src/boost/mpl/set/aux_/insert_impl.hpp +++ /dev/null @@ -1,65 +0,0 @@ - -#ifndef BOOST_MPL_SET_AUX_INSERT_IMPL_HPP_INCLUDED -#define BOOST_MPL_SET_AUX_INSERT_IMPL_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2003-2007 -// Copyright David Abrahams 2003-2004 -// -// 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/mpl for documentation. - -// $Id: insert_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $ -// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $ -// $Revision: 49267 $ - -#include <boost/mpl/insert_fwd.hpp> -#include <boost/mpl/set/aux_/has_key_impl.hpp> -#include <boost/mpl/set/aux_/item.hpp> -#include <boost/mpl/set/aux_/tag.hpp> -#include <boost/mpl/identity.hpp> -#include <boost/mpl/base.hpp> -#include <boost/mpl/eval_if.hpp> -#include <boost/mpl/aux_/na.hpp> - -#include <boost/type_traits/is_same.hpp> - -namespace boost { namespace mpl { - -namespace aux { -template< typename Set, typename T > struct set_insert_impl - : eval_if< - has_key_impl<aux::set_tag>::apply<Set,T> - , identity<Set> - , eval_if< - is_same< T,typename Set::last_masked_ > - , base<Set> - , identity< s_item<T,typename Set::item_> > - > - > -{ -}; -} - -template<> -struct insert_impl< aux::set_tag > -{ - template< - typename Set - , typename PosOrKey - , typename KeyOrNA - > - struct apply - : aux::set_insert_impl< - Set - , typename if_na<KeyOrNA,PosOrKey>::type - > - { - }; -}; - -}} - -#endif // BOOST_MPL_SET_AUX_INSERT_IMPL_HPP_INCLUDED diff --git a/3rdParty/Boost/src/boost/mpl/set/aux_/item.hpp b/3rdParty/Boost/src/boost/mpl/set/aux_/item.hpp deleted file mode 100644 index b9ca19e..0000000 --- a/3rdParty/Boost/src/boost/mpl/set/aux_/item.hpp +++ /dev/null @@ -1,80 +0,0 @@ - -#ifndef BOOST_MPL_SET_AUX_ITEM_HPP_INCLUDED -#define BOOST_MPL_SET_AUX_ITEM_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2003-2007 -// Copyright David Abrahams 2003-2004 -// -// 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/mpl for documentation. - -// $Id: item.hpp 49267 2008-10-11 06:19:02Z agurtovoy $ -// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $ -// $Revision: 49267 $ - -#include <boost/mpl/long.hpp> -#include <boost/mpl/void.hpp> -#include <boost/mpl/next.hpp> -#include <boost/mpl/prior.hpp> -#include <boost/mpl/set/aux_/set0.hpp> -#include <boost/mpl/aux_/type_wrapper.hpp> -#include <boost/mpl/aux_/config/arrays.hpp> - -namespace boost { namespace mpl { - -template< typename T, typename Base > -struct s_item - : Base -{ - typedef s_item<T,Base> item_; - typedef void_ last_masked_; - typedef T item_type_; - typedef Base base; - - typedef typename next< typename Base::size >::type size; - typedef typename next< typename Base::order >::type order; - -#if defined(BOOST_MPL_CFG_NO_DEPENDENT_ARRAY_TYPES) - typedef typename aux::weighted_tag<BOOST_MPL_AUX_MSVC_VALUE_WKND(order)::value>::type order_tag_; -#else - typedef char (&order_tag_)[BOOST_MPL_AUX_MSVC_VALUE_WKND(order)::value]; -#endif - - BOOST_MPL_AUX_SET_OVERLOAD( order_tag_, ORDER_BY_KEY, s_item, aux::type_wrapper<T>* ); - BOOST_MPL_AUX_SET_OVERLOAD( aux::no_tag, IS_MASKED, s_item, aux::type_wrapper<T>* ); -}; - - -template< typename T, typename Base > -struct s_mask - : Base -{ - typedef s_mask<T,Base> item_; - typedef T last_masked_; - typedef void_ item_type_; - typedef Base base; - typedef typename prior< typename Base::size >::type size; - - BOOST_MPL_AUX_SET_OVERLOAD( aux::yes_tag, IS_MASKED, s_mask, aux::type_wrapper<T>* ); -}; - - -template< typename T, typename Base > -struct s_unmask - : Base -{ - typedef s_unmask<T,Base> item_; - typedef void_ last_masked_; - typedef T item_type_; - typedef Base base; - typedef typename next< typename Base::size >::type size; - - BOOST_MPL_AUX_SET_OVERLOAD( aux::no_tag, IS_MASKED, s_unmask, aux::type_wrapper<T>* ); -}; - -}} - -#endif // BOOST_MPL_SET_AUX_ITEM_HPP_INCLUDED diff --git a/3rdParty/Boost/src/boost/mpl/set/aux_/iterator.hpp b/3rdParty/Boost/src/boost/mpl/set/aux_/iterator.hpp deleted file mode 100644 index 90666a6..0000000 --- a/3rdParty/Boost/src/boost/mpl/set/aux_/iterator.hpp +++ /dev/null @@ -1,98 +0,0 @@ - -#ifndef BOOST_MPL_SET_AUX_ITERATOR_HPP_INCLUDED -#define BOOST_MPL_SET_AUX_ITERATOR_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2003-2007 -// Copyright David Abrahams 2003-2004 -// -// 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/mpl for documentation. - -// $Id: iterator.hpp 49267 2008-10-11 06:19:02Z agurtovoy $ -// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $ -// $Revision: 49267 $ - -#include <boost/mpl/set/aux_/set0.hpp> -#include <boost/mpl/has_key.hpp> -#include <boost/mpl/iterator_tags.hpp> -#include <boost/mpl/next.hpp> -#include <boost/mpl/eval_if.hpp> -#include <boost/mpl/if.hpp> -#include <boost/mpl/identity.hpp> -#include <boost/mpl/aux_/config/ctps.hpp> - -namespace boost { namespace mpl { - -// used by 's_iter_get' -template< typename Set, typename Tail > struct s_iter; - -template< typename Set, typename Tail > struct s_iter_get - : eval_if< - has_key< Set,typename Tail::item_type_ > - , identity< s_iter<Set,Tail> > - , next< s_iter<Set,Tail> > - > -{ -}; - -template< typename Set, typename Tail > struct s_iter_impl -{ - typedef Tail tail_; - typedef forward_iterator_tag category; - typedef typename Tail::item_type_ type; - -#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) - typedef typename s_iter_get< Set,typename Tail::base >::type next; -#endif -}; - -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) - -template< typename Set, typename Tail > -struct next< s_iter<Set,Tail> > - : s_iter_get< Set,typename Tail::base > -{ -}; - -template< typename Set > -struct next< s_iter<Set,set0<> > > -{ - typedef s_iter<Set,set0<> > type; -}; - -template< typename Set, typename Tail > struct s_iter - : s_iter_impl<Set,Tail> -{ -}; - -template< typename Set > struct s_iter<Set, set0<> > -{ - typedef forward_iterator_tag category; -}; - -#else - -template< typename Set > -struct s_end_iter -{ - typedef forward_iterator_tag category; - typedef s_iter<Set,set0<> > next; -}; - -template< typename Set, typename Tail > struct s_iter - : if_< - is_same< Tail,set0<> > - , s_end_iter<Set> - , s_iter_impl<Set,Tail> - >::type -{ -}; - -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - -}} - -#endif // BOOST_MPL_SET_AUX_ITERATOR_HPP_INCLUDED diff --git a/3rdParty/Boost/src/boost/mpl/set/aux_/key_type_impl.hpp b/3rdParty/Boost/src/boost/mpl/set/aux_/key_type_impl.hpp deleted file mode 100644 index 23b1a18..0000000 --- a/3rdParty/Boost/src/boost/mpl/set/aux_/key_type_impl.hpp +++ /dev/null @@ -1,34 +0,0 @@ - -#ifndef BOOST_MPL_SET_AUX_KEY_TYPE_IMPL_HPP_INCLUDED -#define BOOST_MPL_SET_AUX_KEY_TYPE_IMPL_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2003-2004 -// Copyright David Abrahams 2003-2004 -// -// 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/mpl for documentation. - -// $Id: key_type_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $ -// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $ -// $Revision: 49267 $ - -#include <boost/mpl/key_type_fwd.hpp> -#include <boost/mpl/set/aux_/tag.hpp> - -namespace boost { namespace mpl { - -template<> -struct key_type_impl< aux::set_tag > -{ - template< typename Set, typename T > struct apply - { - typedef T type; - }; -}; - -}} - -#endif // BOOST_MPL_SET_AUX_KEY_TYPE_IMPL_HPP_INCLUDED diff --git a/3rdParty/Boost/src/boost/mpl/set/aux_/set0.hpp b/3rdParty/Boost/src/boost/mpl/set/aux_/set0.hpp deleted file mode 100644 index 58f1d7d..0000000 --- a/3rdParty/Boost/src/boost/mpl/set/aux_/set0.hpp +++ /dev/null @@ -1,69 +0,0 @@ - -#ifndef BOOST_MPL_SET_AUX_SET0_HPP_INCLUDED -#define BOOST_MPL_SET_AUX_SET0_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2003-2004 -// Copyright David Abrahams 2003-2004 -// -// 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/mpl for documentation. - -// $Id: set0.hpp 49267 2008-10-11 06:19:02Z agurtovoy $ -// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $ -// $Revision: 49267 $ - -#include <boost/mpl/long.hpp> -#include <boost/mpl/void.hpp> -#include <boost/mpl/aux_/na.hpp> -#include <boost/mpl/set/aux_/tag.hpp> -#include <boost/mpl/aux_/yes_no.hpp> -#include <boost/mpl/aux_/overload_names.hpp> -#include <boost/mpl/aux_/config/operators.hpp> - -#include <boost/preprocessor/cat.hpp> - -namespace boost { namespace mpl { - -#if defined(BOOST_MPL_CFG_USE_OPERATORS_OVERLOADING) - -# define BOOST_MPL_AUX_SET0_OVERLOAD(R, f, X, T) \ - friend R BOOST_PP_CAT(BOOST_MPL_AUX_OVERLOAD_,f)(X const&, T) \ -/**/ - -# define BOOST_MPL_AUX_SET_OVERLOAD(R, f, X, T) \ - BOOST_MPL_AUX_SET0_OVERLOAD(R, f, X, T) \ -/**/ - -#else - -# define BOOST_MPL_AUX_SET0_OVERLOAD(R, f, X, T) \ - static R BOOST_PP_CAT(BOOST_MPL_AUX_OVERLOAD_,f)(X const&, T) \ -/**/ - -# define BOOST_MPL_AUX_SET_OVERLOAD(R, f, X, T) \ - BOOST_MPL_AUX_SET0_OVERLOAD(R, f, X, T); \ - using Base::BOOST_PP_CAT(BOOST_MPL_AUX_OVERLOAD_,f) \ -/**/ - -#endif - -template< typename Dummy = na > struct set0 -{ - typedef set0<> item_; - typedef item_ type; - typedef aux::set_tag tag; - typedef void_ last_masked_; - typedef void_ item_type_; - typedef long_<0> size; - typedef long_<1> order; - - BOOST_MPL_AUX_SET0_OVERLOAD( aux::no_tag, ORDER_BY_KEY, set0<>, void const volatile* ); - BOOST_MPL_AUX_SET0_OVERLOAD( aux::yes_tag, IS_MASKED, set0<>, void const volatile* ); -}; - -}} - -#endif // BOOST_MPL_SET_AUX_SET0_HPP_INCLUDED diff --git a/3rdParty/Boost/src/boost/mpl/set/aux_/size_impl.hpp b/3rdParty/Boost/src/boost/mpl/set/aux_/size_impl.hpp deleted file mode 100644 index 0443776..0000000 --- a/3rdParty/Boost/src/boost/mpl/set/aux_/size_impl.hpp +++ /dev/null @@ -1,33 +0,0 @@ - -#ifndef BOOST_MPL_SET_AUX_SIZE_IMPL_HPP_INCLUDED -#define BOOST_MPL_SET_AUX_SIZE_IMPL_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2003-2004 -// -// 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/mpl for documentation. - -// $Id: size_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $ -// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $ -// $Revision: 49267 $ - -#include <boost/mpl/size_fwd.hpp> -#include <boost/mpl/set/aux_/tag.hpp> - -namespace boost { namespace mpl { - -template<> -struct size_impl< aux::set_tag > -{ - template< typename Set > struct apply - : Set::size - { - }; -}; - -}} - -#endif // BOOST_MPL_SET_AUX_SIZE_IMPL_HPP_INCLUDED diff --git a/3rdParty/Boost/src/boost/mpl/set/aux_/tag.hpp b/3rdParty/Boost/src/boost/mpl/set/aux_/tag.hpp deleted file mode 100644 index 651ed44..0000000 --- a/3rdParty/Boost/src/boost/mpl/set/aux_/tag.hpp +++ /dev/null @@ -1,24 +0,0 @@ - -#ifndef BOOST_MPL_SET_AUX_TAG_HPP_INCLUDED -#define BOOST_MPL_SET_AUX_TAG_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2003-2004 -// Copyright David Abrahams 2003-2004 -// -// 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/mpl for documentation. - -// $Id: tag.hpp 49267 2008-10-11 06:19:02Z agurtovoy $ -// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $ -// $Revision: 49267 $ - -namespace boost { namespace mpl { namespace aux { - -struct set_tag; - -}}} - -#endif // BOOST_MPL_SET_AUX_TAG_HPP_INCLUDED diff --git a/3rdParty/Boost/src/boost/mpl/set/aux_/value_type_impl.hpp b/3rdParty/Boost/src/boost/mpl/set/aux_/value_type_impl.hpp deleted file mode 100644 index 7166dae..0000000 --- a/3rdParty/Boost/src/boost/mpl/set/aux_/value_type_impl.hpp +++ /dev/null @@ -1,34 +0,0 @@ - -#ifndef BOOST_MPL_SET_AUX_VALUE_TYPE_IMPL_HPP_INCLUDED -#define BOOST_MPL_SET_AUX_VALUE_TYPE_IMPL_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2003-2004 -// Copyright David Abrahams 2003-2004 -// -// 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/mpl for documentation. - -// $Id: value_type_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $ -// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $ -// $Revision: 49267 $ - -#include <boost/mpl/value_type_fwd.hpp> -#include <boost/mpl/set/aux_/tag.hpp> - -namespace boost { namespace mpl { - -template<> -struct value_type_impl< aux::set_tag > -{ - template< typename Set, typename T > struct apply - { - typedef T type; - }; -}; - -}} - -#endif // BOOST_MPL_SET_AUX_VALUE_TYPE_IMPL_HPP_INCLUDED diff --git a/3rdParty/Boost/src/boost/mpl/set/set0.hpp b/3rdParty/Boost/src/boost/mpl/set/set0.hpp deleted file mode 100644 index f6e5b60..0000000 --- a/3rdParty/Boost/src/boost/mpl/set/set0.hpp +++ /dev/null @@ -1,35 +0,0 @@ - -#ifndef BOOST_MPL_SET_SET0_HPP_INCLUDED -#define BOOST_MPL_SET_SET0_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2003-2004 -// Copyright David Abrahams 2003-2004 -// -// 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/mpl for documentation. - -// $Id: set0.hpp 49267 2008-10-11 06:19:02Z agurtovoy $ -// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $ -// $Revision: 49267 $ - -#include <boost/mpl/set/aux_/at_impl.hpp> -#include <boost/mpl/set/aux_/clear_impl.hpp> -//#include <boost/mpl/set/aux_/O1_size.hpp> -#include <boost/mpl/set/aux_/size_impl.hpp> -#include <boost/mpl/set/aux_/empty_impl.hpp> -#include <boost/mpl/set/aux_/insert_impl.hpp> -#include <boost/mpl/set/aux_/erase_impl.hpp> -#include <boost/mpl/set/aux_/erase_key_impl.hpp> -#include <boost/mpl/set/aux_/has_key_impl.hpp> -#include <boost/mpl/set/aux_/key_type_impl.hpp> -#include <boost/mpl/set/aux_/value_type_impl.hpp> -#include <boost/mpl/set/aux_/begin_end_impl.hpp> -#include <boost/mpl/set/aux_/iterator.hpp> -#include <boost/mpl/set/aux_/item.hpp> -#include <boost/mpl/set/aux_/set0.hpp> -#include <boost/mpl/set/aux_/tag.hpp> - -#endif // BOOST_MPL_SET_SET0_HPP_INCLUDED diff --git a/3rdParty/Boost/src/boost/mpl/value_type_fwd.hpp b/3rdParty/Boost/src/boost/mpl/value_type_fwd.hpp deleted file mode 100644 index 96de3ad..0000000 --- a/3rdParty/Boost/src/boost/mpl/value_type_fwd.hpp +++ /dev/null @@ -1,25 +0,0 @@ - -#ifndef BOOST_MPL_VALUE_TYPE_FWD_HPP_INCLUDED -#define BOOST_MPL_VALUE_TYPE_FWD_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2003-2004 -// Copyright David Abrahams 2003-2004 -// -// 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/mpl for documentation. - -// $Id: value_type_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $ -// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $ -// $Revision: 49267 $ - -namespace boost { namespace mpl { - -template< typename Tag > struct value_type_impl; -template< typename AssociativeSequence, typename T > struct value_type; - -}} - -#endif // BOOST_MPL_VALUE_TYPE_FWD_HPP_INCLUDED diff --git a/3rdParty/Boost/src/boost/multi_index/detail/access_specifier.hpp b/3rdParty/Boost/src/boost/multi_index/detail/access_specifier.hpp deleted file mode 100644 index 84c2f7d..0000000 --- a/3rdParty/Boost/src/boost/multi_index/detail/access_specifier.hpp +++ /dev/null @@ -1,55 +0,0 @@ -/* 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 http://www.boost.org/libs/multi_index for library home page. - */ - -#ifndef BOOST_MULTI_INDEX_DETAIL_ACCESS_SPECIFIER_HPP -#define BOOST_MULTI_INDEX_DETAIL_ACCESS_SPECIFIER_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -#include <boost/config.hpp> -#include <boost/detail/workaround.hpp> - -/* In those compilers that do not accept the member template friend syntax, - * some protected and private sections might need to be specified as - * public. - */ - -#if defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS) -#define BOOST_MULTI_INDEX_PROTECTED_IF_MEMBER_TEMPLATE_FRIENDS public -#define BOOST_MULTI_INDEX_PRIVATE_IF_MEMBER_TEMPLATE_FRIENDS public -#else -#define BOOST_MULTI_INDEX_PROTECTED_IF_MEMBER_TEMPLATE_FRIENDS protected -#define BOOST_MULTI_INDEX_PRIVATE_IF_MEMBER_TEMPLATE_FRIENDS private -#endif - -/* GCC does not correctly support in-class using declarations for template - * functions. See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=9810 - * MSVC 7.1/8.0 seem to have a similar problem, though the conditions in - * which the error happens are not that simple. I have yet to isolate this - * into a snippet suitable for bug reporting. - * Sun Studio also has this problem, which might be related, from the - * information gathered at Sun forums, with a known issue notified at the - * internal bug report 6421933. The bug is present up to Studio Express 2, - * the latest preview version of the future Sun Studio 12. As of this writing - * (October 2006) it is not known whether a fix will finally make it into the - * official Sun Studio 12. - */ - -#if BOOST_WORKAROUND(__GNUC__, <3)||\ - BOOST_WORKAROUND(__GNUC__,==3)&&(__GNUC_MINOR__<4)||\ - BOOST_WORKAROUND(BOOST_MSVC,==1310)||\ - BOOST_WORKAROUND(BOOST_MSVC,==1400)||\ - BOOST_WORKAROUND(__SUNPRO_CC,BOOST_TESTED_AT(0x590)) -#define BOOST_MULTI_INDEX_PRIVATE_IF_USING_DECL_FOR_TEMPL_FUNCTIONS public -#else -#define BOOST_MULTI_INDEX_PRIVATE_IF_USING_DECL_FOR_TEMPL_FUNCTIONS private -#endif - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index/detail/adl_swap.hpp b/3rdParty/Boost/src/boost/multi_index/detail/adl_swap.hpp deleted file mode 100644 index e78235d..0000000 --- a/3rdParty/Boost/src/boost/multi_index/detail/adl_swap.hpp +++ /dev/null @@ -1,44 +0,0 @@ -/* 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 http://www.boost.org/libs/multi_index for library home page. - */ - -#ifndef BOOST_MULTI_INDEX_DETAIL_ADL_SWAP_HPP -#define BOOST_MULTI_INDEX_DETAIL_ADL_SWAP_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */ -#include <algorithm> - -namespace boost{ - -namespace multi_index{ - -namespace detail{ - -template<typename T> -void adl_swap(T& x,T& y) -{ - -#if !defined(BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL) - using std::swap; - swap(x,y); -#else - std::swap(x,y); -#endif - -} - -} /* namespace multi_index::detail */ - -} /* namespace multi_index */ - -} /* namespace boost */ - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index/detail/archive_constructed.hpp b/3rdParty/Boost/src/boost/multi_index/detail/archive_constructed.hpp deleted file mode 100644 index ee00dfa..0000000 --- a/3rdParty/Boost/src/boost/multi_index/detail/archive_constructed.hpp +++ /dev/null @@ -1,79 +0,0 @@ -/* 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 http://www.boost.org/libs/multi_index for library home page. - */ - -#ifndef BOOST_MULTI_INDEX_DETAIL_ARCHIVE_CONSTRUCTED_HPP -#define BOOST_MULTI_INDEX_DETAIL_ARCHIVE_CONSTRUCTED_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */ -#include <boost/detail/no_exceptions_support.hpp> -#include <boost/noncopyable.hpp> -#include <boost/serialization/serialization.hpp> -#include <boost/type_traits/aligned_storage.hpp> -#include <boost/type_traits/alignment_of.hpp> - -namespace boost{ - -namespace multi_index{ - -namespace detail{ - -/* constructs a stack-based object from a serialization archive */ - -template<typename T> -struct archive_constructed:private noncopyable -{ - template<class Archive> - archive_constructed(Archive& ar,const unsigned int version) - { - serialization::load_construct_data_adl(ar,&get(),version); - BOOST_TRY{ - ar>>get(); - } - BOOST_CATCH(...){ - (&get())->~T(); - BOOST_RETHROW; - } - BOOST_CATCH_END - } - - template<class Archive> - archive_constructed(const char* name,Archive& ar,const unsigned int version) - { - serialization::load_construct_data_adl(ar,&get(),version); - BOOST_TRY{ - ar>>serialization::make_nvp(name,get()); - } - BOOST_CATCH(...){ - (&get())->~T(); - BOOST_RETHROW; - } - BOOST_CATCH_END - } - - ~archive_constructed() - { - (&get())->~T(); - } - - T& get(){return *static_cast<T*>(static_cast<void*>(&space));} - -private: - typename aligned_storage<sizeof(T),alignment_of<T>::value>::type space; -}; - -} /* namespace multi_index::detail */ - -} /* namespace multi_index */ - -} /* namespace boost */ - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index/detail/auto_space.hpp b/3rdParty/Boost/src/boost/multi_index/detail/auto_space.hpp deleted file mode 100644 index 9b0a0dc..0000000 --- a/3rdParty/Boost/src/boost/multi_index/detail/auto_space.hpp +++ /dev/null @@ -1,95 +0,0 @@ -/* 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 http://www.boost.org/libs/multi_index for library home page. - */ - -#ifndef BOOST_MULTI_INDEX_DETAIL_AUTO_SPACE_HPP -#define BOOST_MULTI_INDEX_DETAIL_AUTO_SPACE_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */ -#include <algorithm> -#include <boost/detail/allocator_utilities.hpp> -#include <boost/multi_index/detail/adl_swap.hpp> -#include <boost/multi_index/detail/prevent_eti.hpp> -#include <boost/noncopyable.hpp> -#include <memory> - -namespace boost{ - -namespace multi_index{ - -namespace detail{ - -/* auto_space provides uninitialized space suitably to store - * a given number of elements of a given type. - */ - -/* NB: it is not clear whether using an allocator to handle - * zero-sized arrays of elements is conformant or not. GCC 3.3.1 - * and prior fail here, other stdlibs handle the issue gracefully. - * To be on the safe side, the case n==0 is given special treatment. - * References: - * GCC Bugzilla, "standard allocator crashes when deallocating segment - * "of zero length", http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14176 - * C++ Standard Library Defect Report List (Revision 28), issue 199 - * "What does allocate(0) return?", - * http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#199 - */ - -template<typename T,typename Allocator=std::allocator<T> > -struct auto_space:private noncopyable -{ - typedef typename prevent_eti< - Allocator, - typename boost::detail::allocator::rebind_to< - Allocator,T - >::type - >::type::pointer pointer; - - explicit auto_space(const Allocator& al=Allocator(),std::size_t n=1): - al_(al),n_(n),data_(n_?al_.allocate(n_):pointer(0)) - {} - - ~auto_space() - { - if(n_)al_.deallocate(data_,n_); - } - - Allocator get_allocator()const{return al_;} - - pointer data()const{return data_;} - - void swap(auto_space& x) - { - if(al_!=x.al_)adl_swap(al_,x.al_); - std::swap(n_,x.n_); - std::swap(data_,x.data_); - } - -private: - typename boost::detail::allocator::rebind_to< - Allocator,T>::type al_; - std::size_t n_; - pointer data_; -}; - -template<typename T,typename Allocator> -void swap(auto_space<T,Allocator>& x,auto_space<T,Allocator>& y) -{ - x.swap(y); -} - -} /* namespace multi_index::detail */ - -} /* namespace multi_index */ - -} /* namespace boost */ - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index/detail/base_type.hpp b/3rdParty/Boost/src/boost/multi_index/detail/base_type.hpp deleted file mode 100644 index d25332e..0000000 --- a/3rdParty/Boost/src/boost/multi_index/detail/base_type.hpp +++ /dev/null @@ -1,87 +0,0 @@ -/* 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 http://www.boost.org/libs/multi_index for library home page. - */ - -#ifndef BOOST_MULTI_INDEX_DETAIL_BASE_TYPE_HPP -#define BOOST_MULTI_INDEX_DETAIL_BASE_TYPE_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */ -#include <boost/detail/workaround.hpp> -#include <boost/mpl/at.hpp> -#include <boost/mpl/apply.hpp> -#include <boost/mpl/size.hpp> -#include <boost/multi_index/detail/index_base.hpp> -#include <boost/multi_index/detail/is_index_list.hpp> -#include <boost/multi_index/detail/msvc_index_specifier.hpp> -#include <boost/static_assert.hpp> - -namespace boost{ - -namespace multi_index{ - -namespace detail{ - -/* MPL machinery to construct a linear hierarchy of indices out of - * a index list. - */ - -#if BOOST_WORKAROUND(BOOST_MSVC,<1310) -struct index_applier -{ - template<typename IndexSpecifierMeta,typename SuperMeta> - struct apply: - msvc_index_specifier<IndexSpecifierMeta::type>:: - template result_index_class<SuperMeta> - { - }; -}; -#else -struct index_applier -{ - template<typename IndexSpecifierMeta,typename SuperMeta> - struct apply - { - typedef typename IndexSpecifierMeta::type index_specifier; - typedef typename index_specifier:: - BOOST_NESTED_TEMPLATE index_class<SuperMeta>::type type; - }; -}; -#endif - -template<int N,typename Value,typename IndexSpecifierList,typename Allocator> -struct nth_layer -{ - BOOST_STATIC_CONSTANT(int,length=mpl::size<IndexSpecifierList>::value); - - typedef typename mpl::eval_if_c< - N==length, - mpl::identity<index_base<Value,IndexSpecifierList,Allocator> >, - mpl::apply2< - index_applier, - mpl::at_c<IndexSpecifierList,N>, - nth_layer<N+1,Value,IndexSpecifierList,Allocator> - > - >::type type; -}; - -template<typename Value,typename IndexSpecifierList,typename Allocator> -struct multi_index_base_type:nth_layer<0,Value,IndexSpecifierList,Allocator> -{ - BOOST_STATIC_ASSERT(detail::is_index_list<IndexSpecifierList>::value); -}; - -} /* namespace multi_index::detail */ - -} /* namespace multi_index */ - -} /* namespace boost */ - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index/detail/bidir_node_iterator.hpp b/3rdParty/Boost/src/boost/multi_index/detail/bidir_node_iterator.hpp deleted file mode 100644 index 2155255..0000000 --- a/3rdParty/Boost/src/boost/multi_index/detail/bidir_node_iterator.hpp +++ /dev/null @@ -1,113 +0,0 @@ -/* 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 http://www.boost.org/libs/multi_index for library home page. - */ - -#ifndef BOOST_MULTI_INDEX_DETAIL_BIDIR_NODE_ITERATOR_HPP -#define BOOST_MULTI_INDEX_DETAIL_BIDIR_NODE_ITERATOR_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */ -#include <boost/operators.hpp> - -#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION) -#include <boost/serialization/nvp.hpp> -#include <boost/serialization/split_member.hpp> -#endif - -namespace boost{ - -namespace multi_index{ - -namespace detail{ - -/* Iterator class for node-based indices with bidirectional - * iterators (ordered and sequenced indices.) - */ - -template<typename Node> -class bidir_node_iterator: - public bidirectional_iterator_helper< - bidir_node_iterator<Node>, - typename Node::value_type, - std::ptrdiff_t, - const typename Node::value_type*, - const typename Node::value_type&> -{ -public: - bidir_node_iterator(){} - explicit bidir_node_iterator(Node* node_):node(node_){} - - const typename Node::value_type& operator*()const - { - return node->value(); - } - - bidir_node_iterator& operator++() - { - Node::increment(node); - return *this; - } - - bidir_node_iterator& operator--() - { - Node::decrement(node); - return *this; - } - -#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION) - /* Serialization. As for why the following is public, - * see explanation in safe_mode_iterator notes in safe_mode.hpp. - */ - - BOOST_SERIALIZATION_SPLIT_MEMBER() - - typedef typename Node::base_type node_base_type; - - template<class Archive> - void save(Archive& ar,const unsigned int)const - { - node_base_type* bnode=node; - ar<<serialization::make_nvp("pointer",bnode); - } - - template<class Archive> - void load(Archive& ar,const unsigned int) - { - node_base_type* bnode; - ar>>serialization::make_nvp("pointer",bnode); - node=static_cast<Node*>(bnode); - } -#endif - - /* get_node is not to be used by the user */ - - typedef Node node_type; - - Node* get_node()const{return node;} - -private: - Node* node; -}; - -template<typename Node> -bool operator==( - const bidir_node_iterator<Node>& x, - const bidir_node_iterator<Node>& y) -{ - return x.get_node()==y.get_node(); -} - -} /* namespace multi_index::detail */ - -} /* namespace multi_index */ - -} /* namespace boost */ - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index/detail/converter.hpp b/3rdParty/Boost/src/boost/multi_index/detail/converter.hpp deleted file mode 100644 index a46cff6..0000000 --- a/3rdParty/Boost/src/boost/multi_index/detail/converter.hpp +++ /dev/null @@ -1,52 +0,0 @@ -/* 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 http://www.boost.org/libs/multi_index for library home page. - */ - -#ifndef BOOST_MULTI_INDEX_DETAIL_CONVERTER_HPP -#define BOOST_MULTI_INDEX_DETAIL_CONVERTER_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -namespace boost{ - -namespace multi_index{ - -namespace detail{ - -/* converter offers means to access indices of a given multi_index_container - * and for convertibilty between index iterators, so providing a - * localized access point for get() and project() functions. - */ - -template<typename MultiIndexContainer,typename Index> -struct converter -{ - static const Index& index(const MultiIndexContainer& x){return x;} - static Index& index(MultiIndexContainer& x){return x;} - - static typename Index::const_iterator const_iterator( - const MultiIndexContainer& x,typename MultiIndexContainer::node_type* node) - { - return x.Index::make_iterator(node); - } - - static typename Index::iterator iterator( - MultiIndexContainer& x,typename MultiIndexContainer::node_type* node) - { - return x.Index::make_iterator(node); - } -}; - -} /* namespace multi_index::detail */ - -} /* namespace multi_index */ - -} /* namespace boost */ - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index/detail/copy_map.hpp b/3rdParty/Boost/src/boost/multi_index/detail/copy_map.hpp deleted file mode 100644 index 4279a8d..0000000 --- a/3rdParty/Boost/src/boost/multi_index/detail/copy_map.hpp +++ /dev/null @@ -1,140 +0,0 @@ -/* 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 http://www.boost.org/libs/multi_index for library home page. - */ - -#ifndef BOOST_MULTI_INDEX_DETAIL_COPY_MAP_HPP -#define BOOST_MULTI_INDEX_DETAIL_COPY_MAP_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */ -#include <algorithm> -#include <boost/detail/no_exceptions_support.hpp> -#include <boost/multi_index/detail/auto_space.hpp> -#include <boost/multi_index/detail/prevent_eti.hpp> -#include <boost/noncopyable.hpp> -#include <cstddef> -#include <functional> - -namespace boost{ - -namespace multi_index{ - -namespace detail{ - -/* copy_map is used as an auxiliary structure during copy_() operations. - * When a container with n nodes is replicated, node_map holds the pairings - * between original and copied nodes, and provides a fast way to find a - * copied node from an original one. - * The semantics of the class are not simple, and no attempt has been made - * to enforce it: multi_index_container handles it right. On the other hand, - * the const interface, which is the one provided to index implementations, - * only allows for: - * - Enumeration of pairs of (original,copied) nodes (excluding the headers), - * - fast retrieval of copied nodes (including the headers.) - */ - -template <typename Node> -struct copy_map_entry -{ - copy_map_entry(Node* f,Node* s):first(f),second(s){} - - Node* first; - Node* second; - - bool operator<(const copy_map_entry<Node>& x)const - { - return std::less<Node*>()(first,x.first); - } -}; - -template <typename Node,typename Allocator> -class copy_map:private noncopyable -{ -public: - typedef const copy_map_entry<Node>* const_iterator; - - copy_map( - const Allocator& al,std::size_t size,Node* header_org,Node* header_cpy): - al_(al),size_(size),spc(al_,size_),n(0), - header_org_(header_org),header_cpy_(header_cpy),released(false) - {} - - ~copy_map() - { - if(!released){ - for(std::size_t i=0;i<n;++i){ - boost::detail::allocator::destroy(&(spc.data()+i)->second->value()); - deallocate((spc.data()+i)->second); - } - } - } - - const_iterator begin()const{return &*spc.data();} - const_iterator end()const{return &*(spc.data()+n);} - - void clone(Node* node) - { - (spc.data()+n)->first=node; - (spc.data()+n)->second=&*al_.allocate(1); - BOOST_TRY{ - boost::detail::allocator::construct( - &(spc.data()+n)->second->value(),node->value()); - } - BOOST_CATCH(...){ - deallocate((spc.data()+n)->second); - BOOST_RETHROW; - } - BOOST_CATCH_END - ++n; - - if(n==size_)std::sort(&*spc.data(),&*spc.data()+size_); - } - - Node* find(Node* node)const - { - if(node==header_org_)return header_cpy_; - return std::lower_bound( - begin(),end(),copy_map_entry<Node>(node,0))->second; - } - - void release() - { - released=true; - } - -private: - typedef typename prevent_eti< - Allocator, - typename boost::detail::allocator::rebind_to< - Allocator,Node>::type - >::type allocator_type; - typedef typename allocator_type::pointer allocator_pointer; - - allocator_type al_; - std::size_t size_; - auto_space<copy_map_entry<Node>,Allocator> spc; - std::size_t n; - Node* header_org_; - Node* header_cpy_; - bool released; - - void deallocate(Node* node) - { - al_.deallocate(static_cast<allocator_pointer>(node),1); - } -}; - -} /* namespace multi_index::detail */ - -} /* namespace multi_index */ - -} /* namespace boost */ - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index/detail/duplicates_iterator.hpp b/3rdParty/Boost/src/boost/multi_index/detail/duplicates_iterator.hpp deleted file mode 100644 index 027dabd..0000000 --- a/3rdParty/Boost/src/boost/multi_index/detail/duplicates_iterator.hpp +++ /dev/null @@ -1,120 +0,0 @@ -/* 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 http://www.boost.org/libs/multi_index for library home page. - */ - -#ifndef BOOST_MULTI_INDEX_DETAIL_DUPLICATES_ITERATOR_HPP -#define BOOST_MULTI_INDEX_DETAIL_DUPLICATES_ITERATOR_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */ -#include <cstddef> -#include <iterator> - -namespace boost{ - -namespace multi_index{ - -namespace detail{ - -/* duplicates_operator is given a range of ordered elements and - * passes only over those which are duplicated. - */ - -template<typename Node,typename Predicate> -class duplicates_iterator -{ -public: - typedef typename Node::value_type value_type; - typedef std::ptrdiff_t difference_type; - typedef const typename Node::value_type* pointer; - typedef const typename Node::value_type& reference; - typedef std::forward_iterator_tag iterator_category; - - duplicates_iterator(Node* node_,Node* end_,Predicate pred_): - node(node_),begin_chunk(0),end(end_),pred(pred_) - { - advance(); - } - - duplicates_iterator(Node* end_,Predicate pred_): - node(end_),begin_chunk(end_),end(end_),pred(pred_) - { - } - - reference operator*()const - { - return node->value(); - } - - pointer operator->()const - { - return &node->value(); - } - - duplicates_iterator& operator++() - { - Node::increment(node); - sync(); - return *this; - } - - duplicates_iterator operator++(int) - { - duplicates_iterator tmp(*this); - ++(*this); - return tmp; - } - - Node* get_node()const{return node;} - -private: - void sync() - { - if(node!=end&&pred(begin_chunk->value(),node->value()))advance(); - } - - void advance() - { - for(Node* node2=node;node!=end;node=node2){ - Node::increment(node2); - if(node2!=end&&!pred(node->value(),node2->value()))break; - } - begin_chunk=node; - } - - Node* node; - Node* begin_chunk; - Node* end; - Predicate pred; -}; - -template<typename Node,typename Predicate> -bool operator==( - const duplicates_iterator<Node,Predicate>& x, - const duplicates_iterator<Node,Predicate>& y) -{ - return x.get_node()==y.get_node(); -} - -template<typename Node,typename Predicate> -bool operator!=( - const duplicates_iterator<Node,Predicate>& x, - const duplicates_iterator<Node,Predicate>& y) -{ - return !(x==y); -} - -} /* namespace multi_index::detail */ - -} /* namespace multi_index */ - -} /* namespace boost */ - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index/detail/has_tag.hpp b/3rdParty/Boost/src/boost/multi_index/detail/has_tag.hpp deleted file mode 100644 index 83b28cc..0000000 --- a/3rdParty/Boost/src/boost/multi_index/detail/has_tag.hpp +++ /dev/null @@ -1,42 +0,0 @@ -/* 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 http://www.boost.org/libs/multi_index for library home page. - */ - -#ifndef BOOST_MULTI_INDEX_DETAIL_HAS_TAG_HPP -#define BOOST_MULTI_INDEX_DETAIL_HAS_TAG_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */ -#include <boost/mpl/contains.hpp> - -namespace boost{ - -namespace multi_index{ - -namespace detail{ - -/* determines whether an index type has a given tag in its tag list */ - -template<typename Tag> -struct has_tag -{ - template<typename Index> - struct apply:mpl::contains<BOOST_DEDUCED_TYPENAME Index::tag_list,Tag> - { - }; -}; - -} /* namespace multi_index::detail */ - -} /* namespace multi_index */ - -} /* namespace boost */ - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index/detail/header_holder.hpp b/3rdParty/Boost/src/boost/multi_index/detail/header_holder.hpp deleted file mode 100644 index 8716e83..0000000 --- a/3rdParty/Boost/src/boost/multi_index/detail/header_holder.hpp +++ /dev/null @@ -1,50 +0,0 @@ -/* 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 http://www.boost.org/libs/multi_index for library home page. - */ - -#ifndef BOOST_MULTI_INDEX_DETAIL_HEADER_HOLDER_HPP -#define BOOST_MULTI_INDEX_DETAIL_HEADER_HOLDER_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -#include <boost/noncopyable.hpp> - -namespace boost{ - -namespace multi_index{ - -namespace detail{ - -/* A utility class used to hold a pointer to the header node. - * The base from member idiom is used because index classes, which are - * superclasses of multi_index_container, need this header in construction - * time. The allocation is made by the allocator of the multi_index_container - * class --hence, this allocator needs also be stored resorting - * to the base from member trick. - */ - -template<typename NodeTypePtr,typename Final> -struct header_holder:private noncopyable -{ - header_holder():member(final().allocate_node()){} - ~header_holder(){final().deallocate_node(&*member);} - - NodeTypePtr member; - -private: - Final& final(){return *static_cast<Final*>(this);} -}; - -} /* namespace multi_index::detail */ - -} /* namespace multi_index */ - -} /* namespace boost */ - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index/detail/index_base.hpp b/3rdParty/Boost/src/boost/multi_index/detail/index_base.hpp deleted file mode 100644 index 9b73a4b..0000000 --- a/3rdParty/Boost/src/boost/multi_index/detail/index_base.hpp +++ /dev/null @@ -1,185 +0,0 @@ -/* 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 http://www.boost.org/libs/multi_index for library home page. - */ - -#ifndef BOOST_MULTI_INDEX_DETAIL_INDEX_BASE_HPP -#define BOOST_MULTI_INDEX_DETAIL_INDEX_BASE_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */ -#include <boost/call_traits.hpp> -#include <boost/detail/workaround.hpp> -#include <boost/mpl/vector.hpp> -#include <boost/multi_index/detail/copy_map.hpp> -#include <boost/multi_index/detail/node_type.hpp> -#include <boost/multi_index_container_fwd.hpp> -#include <boost/tuple/tuple.hpp> -#include <utility> - -#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION) -#include <boost/multi_index/detail/index_loader.hpp> -#include <boost/multi_index/detail/index_saver.hpp> -#endif - -namespace boost{ - -namespace multi_index{ - -namespace detail{ - -/* The role of this class is threefold: - * - tops the linear hierarchy of indices. - * - terminates some cascading backbone function calls (insert_, etc.), - * - grants access to the backbone functions of the final - * multi_index_container class (for access restriction reasons, these - * cannot be called directly from the index classes.) - */ - -template<typename Value,typename IndexSpecifierList,typename Allocator> -class index_base -{ -protected: - typedef index_node_base<Value,Allocator> node_type; - typedef typename multi_index_node_type< - Value,IndexSpecifierList,Allocator>::type final_node_type; - typedef multi_index_container< - Value,IndexSpecifierList,Allocator> final_type; - typedef tuples::null_type ctor_args_list; - typedef typename - boost::detail::allocator::rebind_to< - Allocator, - typename Allocator::value_type>::type final_allocator_type; - typedef mpl::vector0<> index_type_list; - typedef mpl::vector0<> iterator_type_list; - typedef mpl::vector0<> const_iterator_type_list; - typedef copy_map< - final_node_type, - final_allocator_type> copy_map_type; - -#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION) - typedef index_saver< - node_type, - final_allocator_type> index_saver_type; - typedef index_loader< - node_type, - final_node_type, - final_allocator_type> index_loader_type; -#endif - -private: - typedef typename call_traits<Value>::param_type value_param_type; - -protected: - explicit index_base(const ctor_args_list&,const Allocator&){} - - void copy_( - const index_base<Value,IndexSpecifierList,Allocator>&,const copy_map_type&) - {} - - node_type* insert_(value_param_type v,node_type* x) - { - boost::detail::allocator::construct(&x->value(),v); - return x; - } - - node_type* insert_(value_param_type v,node_type*,node_type* x) - { - boost::detail::allocator::construct(&x->value(),v); - return x; - } - - void erase_(node_type* x) - { - boost::detail::allocator::destroy(&x->value()); - } - - void delete_node_(node_type* x) - { - boost::detail::allocator::destroy(&x->value()); - } - - void clear_(){} - - void swap_(index_base<Value,IndexSpecifierList,Allocator>&){} - - bool replace_(value_param_type v,node_type* x) - { - x->value()=v; - return true; - } - - bool modify_(node_type*){return true;} - - bool modify_rollback_(node_type*){return true;} - -#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION) - /* serialization */ - - template<typename Archive> - void save_(Archive&,const unsigned int,const index_saver_type&)const{} - - template<typename Archive> - void load_(Archive&,const unsigned int,const index_loader_type&){} -#endif - -#if defined(BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING) - /* invariant stuff */ - - bool invariant_()const{return true;} -#endif - - /* access to backbone memfuns of Final class */ - - final_type& final(){return *static_cast<final_type*>(this);} - const final_type& final()const{return *static_cast<const final_type*>(this);} - - final_node_type* final_header()const{return final().header();} - - bool final_empty_()const{return final().empty_();} - std::size_t final_size_()const{return final().size_();} - std::size_t final_max_size_()const{return final().max_size_();} - - std::pair<final_node_type*,bool> final_insert_(value_param_type x) - {return final().insert_(x);} - std::pair<final_node_type*,bool> final_insert_( - value_param_type x,final_node_type* position) - {return final().insert_(x,position);} - - void final_erase_(final_node_type* x){final().erase_(x);} - - void final_delete_node_(final_node_type* x){final().delete_node_(x);} - void final_delete_all_nodes_(){final().delete_all_nodes_();} - void final_clear_(){final().clear_();} - - void final_swap_(final_type& x){final().swap_(x);} - bool final_replace_( - value_param_type k,final_node_type* x) - {return final().replace_(k,x);} - - template<typename Modifier> - bool final_modify_(Modifier& mod,final_node_type* x) - {return final().modify_(mod,x);} - - template<typename Modifier,typename Rollback> - bool final_modify_(Modifier& mod,Rollback& back,final_node_type* x) - {return final().modify_(mod,back,x);} - -#if defined(BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING) - void final_check_invariant_()const{final().check_invariant_();} -#endif -}; - -} /* namespace multi_index::detail */ - -} /* namespace multi_index */ - -} /* namespace boost */ - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index/detail/index_loader.hpp b/3rdParty/Boost/src/boost/multi_index/detail/index_loader.hpp deleted file mode 100644 index 001c01b..0000000 --- a/3rdParty/Boost/src/boost/multi_index/detail/index_loader.hpp +++ /dev/null @@ -1,138 +0,0 @@ -/* 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 http://www.boost.org/libs/multi_index for library home page. - */ - -#ifndef BOOST_MULTI_INDEX_DETAIL_INDEX_LOADER_HPP -#define BOOST_MULTI_INDEX_DETAIL_INDEX_LOADER_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */ -#include <algorithm> -#include <boost/archive/archive_exception.hpp> -#include <boost/noncopyable.hpp> -#include <boost/multi_index/detail/auto_space.hpp> -#include <boost/serialization/nvp.hpp> -#include <boost/throw_exception.hpp> -#include <cstddef> - -namespace boost{ - -namespace multi_index{ - -namespace detail{ - -/* Counterpart of index_saver (check index_saver.hpp for serialization - * details.)* multi_index_container is in charge of supplying the info about - * the base sequence, and each index can subsequently load itself using the - * const interface of index_loader. - */ - -template<typename Node,typename FinalNode,typename Allocator> -class index_loader:private noncopyable -{ -public: - index_loader(const Allocator& al,std::size_t size): - spc(al,size),size_(size),n(0),sorted(false) - { - } - - template<class Archive> - void add(Node* node,Archive& ar,const unsigned int) - { - ar>>serialization::make_nvp("position",*node); - entries()[n++]=node; - } - - template<class Archive> - void add_track(Node* node,Archive& ar,const unsigned int) - { - ar>>serialization::make_nvp("position",*node); - } - - /* A rearranger is passed two nodes, and is expected to - * reposition the second after the first. - * If the first node is 0, then the second should be moved - * to the beginning of the sequence. - */ - - template<typename Rearranger,class Archive> - void load(Rearranger r,Archive& ar,const unsigned int)const - { - FinalNode* prev=unchecked_load_node(ar); - if(!prev)return; - - if(!sorted){ - std::sort(entries(),entries()+size_); - sorted=true; - } - - check_node(prev); - - for(;;){ - for(;;){ - FinalNode* node=load_node(ar); - if(!node)break; - - if(node==prev)prev=0; - r(prev,node); - - prev=node; - } - prev=load_node(ar); - if(!prev)break; - } - } - -private: - Node** entries()const{return &*spc.data();} - - /* We try to delay sorting as much as possible just in case it - * is not necessary, hence this version of load_node. - */ - - template<class Archive> - FinalNode* unchecked_load_node(Archive& ar)const - { - Node* node=0; - ar>>serialization::make_nvp("pointer",node); - return static_cast<FinalNode*>(node); - } - - template<class Archive> - FinalNode* load_node(Archive& ar)const - { - Node* node=0; - ar>>serialization::make_nvp("pointer",node); - check_node(node); - return static_cast<FinalNode*>(node); - } - - void check_node(Node* node)const - { - if(node!=0&&!std::binary_search(entries(),entries()+size_,node)){ - throw_exception( - archive::archive_exception( - archive::archive_exception::other_exception)); - } - } - - auto_space<Node*,Allocator> spc; - std::size_t size_; - std::size_t n; - mutable bool sorted; -}; - -} /* namespace multi_index::detail */ - -} /* namespace multi_index */ - -} /* namespace boost */ - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index/detail/index_matcher.hpp b/3rdParty/Boost/src/boost/multi_index/detail/index_matcher.hpp deleted file mode 100644 index 5828137..0000000 --- a/3rdParty/Boost/src/boost/multi_index/detail/index_matcher.hpp +++ /dev/null @@ -1,248 +0,0 @@ -/* 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 http://www.boost.org/libs/multi_index for library home page. - */ - -#ifndef BOOST_MULTI_INDEX_DETAIL_INDEX_MATCHER_HPP -#define BOOST_MULTI_INDEX_DETAIL_INDEX_MATCHER_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */ -#include <algorithm> -#include <boost/noncopyable.hpp> -#include <boost/multi_index/detail/auto_space.hpp> -#include <cstddef> -#include <functional> - -namespace boost{ - -namespace multi_index{ - -namespace detail{ - -/* index_matcher compares a sequence of elements against a - * base sequence, identifying those elements that belong to the - * longest subsequence which is ordered with respect to the base. - * For instance, if the base sequence is: - * - * 0 1 2 3 4 5 6 7 8 9 - * - * and the compared sequence (not necesarilly the same length): - * - * 1 4 2 3 0 7 8 9 - * - * the elements of the longest ordered subsequence are: - * - * 1 2 3 7 8 9 - * - * The algorithm for obtaining such a subsequence is called - * Patience Sorting, described in ch. 1 of: - * Aldous, D., Diaconis, P.: "Longest increasing subsequences: from - * patience sorting to the Baik-Deift-Johansson Theorem", Bulletin - * of the American Mathematical Society, vol. 36, no 4, pp. 413-432, - * July 1999. - * http://www.ams.org/bull/1999-36-04/S0273-0979-99-00796-X/ - * S0273-0979-99-00796-X.pdf - * - * This implementation is not fully generic since it assumes that - * the sequences given are pointed to by index iterators (having a - * get_node() memfun.) - */ - -namespace index_matcher{ - -/* The algorithm stores the nodes of the base sequence and a number - * of "piles" that are dynamically updated during the calculation - * stage. From a logical point of view, nodes form an independent - * sequence from piles. They are stored together so as to minimize - * allocated memory. - */ - -struct entry -{ - entry(void* node_,std::size_t pos_=0):node(node_),pos(pos_){} - - /* node stuff */ - - void* node; - std::size_t pos; - entry* previous; - bool ordered; - - struct less_by_node - { - bool operator()( - const entry& x,const entry& y)const - { - return std::less<void*>()(x.node,y.node); - } - }; - - /* pile stuff */ - - std::size_t pile_top; - entry* pile_top_entry; - - struct less_by_pile_top - { - bool operator()( - const entry& x,const entry& y)const - { - return x.pile_top<y.pile_top; - } - }; -}; - -/* common code operating on void *'s */ - -template<typename Allocator> -class algorithm_base:private noncopyable -{ -protected: - algorithm_base(const Allocator& al,std::size_t size): - spc(al,size),size_(size),n(0),sorted(false) - { - } - - void add(void* node) - { - entries()[n]=entry(node,n); - ++n; - } - - void begin_algorithm()const - { - if(!sorted){ - std::sort(entries(),entries()+size_,entry::less_by_node()); - sorted=true; - } - num_piles=0; - } - - void add_node_to_algorithm(void* node)const - { - entry* ent= - std::lower_bound( - entries(),entries()+size_, - entry(node),entry::less_by_node()); /* localize entry */ - ent->ordered=false; - std::size_t n=ent->pos; /* get its position */ - - entry dummy(0); - dummy.pile_top=n; - - entry* pile_ent= /* find the first available pile */ - std::lower_bound( /* to stack the entry */ - entries(),entries()+num_piles, - dummy,entry::less_by_pile_top()); - - pile_ent->pile_top=n; /* stack the entry */ - pile_ent->pile_top_entry=ent; - - /* if not the first pile, link entry to top of the preceding pile */ - if(pile_ent>&entries()[0]){ - ent->previous=(pile_ent-1)->pile_top_entry; - } - - if(pile_ent==&entries()[num_piles]){ /* new pile? */ - ++num_piles; - } - } - - void finish_algorithm()const - { - if(num_piles>0){ - /* Mark those elements which are in their correct position, i.e. those - * belonging to the longest increasing subsequence. These are those - * elements linked from the top of the last pile. - */ - - entry* ent=entries()[num_piles-1].pile_top_entry; - for(std::size_t n=num_piles;n--;){ - ent->ordered=true; - ent=ent->previous; - } - } - } - - bool is_ordered(void * node)const - { - return std::lower_bound( - entries(),entries()+size_, - entry(node),entry::less_by_node())->ordered; - } - -private: - entry* entries()const{return &*spc.data();} - - auto_space<entry,Allocator> spc; - std::size_t size_; - std::size_t n; - mutable bool sorted; - mutable std::size_t num_piles; -}; - -/* The algorithm has three phases: - * - Initialization, during which the nodes of the base sequence are added. - * - Execution. - * - Results querying, through the is_ordered memfun. - */ - -template<typename Node,typename Allocator> -class algorithm:private algorithm_base<Allocator> -{ - typedef algorithm_base<Allocator> super; - -public: - algorithm(const Allocator& al,std::size_t size):super(al,size){} - - void add(Node* node) - { - super::add(node); - } - - template<typename IndexIterator> - void execute(IndexIterator first,IndexIterator last)const - { - super::begin_algorithm(); - - for(IndexIterator it=first;it!=last;++it){ - add_node_to_algorithm(get_node(it)); - } - - super::finish_algorithm(); - } - - bool is_ordered(Node* node)const - { - return super::is_ordered(node); - } - -private: - void add_node_to_algorithm(Node* node)const - { - super::add_node_to_algorithm(node); - } - - template<typename IndexIterator> - static Node* get_node(IndexIterator it) - { - return static_cast<Node*>(it.get_node()); - } -}; - -} /* namespace multi_index::detail::index_matcher */ - -} /* namespace multi_index::detail */ - -} /* namespace multi_index */ - -} /* namespace boost */ - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index/detail/index_node_base.hpp b/3rdParty/Boost/src/boost/multi_index/detail/index_node_base.hpp deleted file mode 100644 index ee9f1c6..0000000 --- a/3rdParty/Boost/src/boost/multi_index/detail/index_node_base.hpp +++ /dev/null @@ -1,135 +0,0 @@ -/* 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 http://www.boost.org/libs/multi_index for library home page. - */ - -#ifndef BOOST_MULTI_INDEX_DETAIL_INDEX_NODE_BASE_HPP -#define BOOST_MULTI_INDEX_DETAIL_INDEX_NODE_BASE_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */ -#include <boost/type_traits/aligned_storage.hpp> -#include <boost/type_traits/alignment_of.hpp> - -#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION) -#include <boost/archive/archive_exception.hpp> -#include <boost/serialization/access.hpp> -#include <boost/throw_exception.hpp> -#endif - -namespace boost{ - -namespace multi_index{ - -namespace detail{ - -/* index_node_base tops the node hierarchy of multi_index_container. It holds - * the value of the element contained. - */ - -template<typename Value> -struct pod_value_holder -{ - typename aligned_storage< - sizeof(Value), - alignment_of<Value>::value - >::type space; -}; - -template<typename Value,typename Allocator> -struct index_node_base:private pod_value_holder<Value> -{ - typedef index_node_base base_type; /* used for serialization purposes */ - typedef Value value_type; - typedef Allocator allocator_type; - - value_type& value() - { - return *static_cast<value_type*>( - static_cast<void*>(&this->space)); - } - - const value_type& value()const - { - return *static_cast<const value_type*>( - static_cast<const void*>(&this->space)); - } - - static index_node_base* from_value(const value_type* p) - { - return static_cast<index_node_base *>( - reinterpret_cast<pod_value_holder<Value>*>( /* std 9.2.17 */ - const_cast<value_type*>(p))); - } - -private: -#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION) - friend class boost::serialization::access; - - /* nodes do not emit any kind of serialization info. They are - * fed to Boost.Serialization so that pointers to nodes are - * tracked correctly. - */ - - template<class Archive> - void serialize(Archive&,const unsigned int) - { - } -#endif -}; - -template<typename Node,typename Value> -Node* node_from_value( - const Value* p - BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(Node)) -{ - typedef typename Node::allocator_type allocator_type; - return static_cast<Node*>( - index_node_base<Value,allocator_type>::from_value(p)); -} - -} /* namespace multi_index::detail */ - -} /* namespace multi_index */ - -#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION) -/* Index nodes never get constructed directly by Boost.Serialization, - * as archives are always fed pointers to previously existent - * nodes. So, if this is called it means we are dealing with a - * somehow invalid archive. - */ - -#if defined(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP) -namespace serialization{ -#else -namespace multi_index{ -namespace detail{ -#endif - -template<class Archive,typename Value,typename Allocator> -inline void load_construct_data( - Archive&,boost::multi_index::detail::index_node_base<Value,Allocator>*, - const unsigned int) -{ - throw_exception( - archive::archive_exception(archive::archive_exception::other_exception)); -} - -#if defined(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP) -} /* namespace serialization */ -#else -} /* namespace multi_index::detail */ -} /* namespace multi_index */ -#endif - -#endif - -} /* namespace boost */ - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index/detail/index_saver.hpp b/3rdParty/Boost/src/boost/multi_index/detail/index_saver.hpp deleted file mode 100644 index d9e6bc7..0000000 --- a/3rdParty/Boost/src/boost/multi_index/detail/index_saver.hpp +++ /dev/null @@ -1,135 +0,0 @@ -/* 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 http://www.boost.org/libs/multi_index for library home page. - */ - -#ifndef BOOST_MULTI_INDEX_DETAIL_INDEX_SAVER_HPP -#define BOOST_MULTI_INDEX_DETAIL_INDEX_SAVER_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */ -#include <boost/multi_index/detail/index_matcher.hpp> -#include <boost/noncopyable.hpp> -#include <boost/serialization/nvp.hpp> -#include <cstddef> - -namespace boost{ - -namespace multi_index{ - -namespace detail{ - -/* index_saver accepts a base sequence of previously saved elements - * and saves a possibly reordered subsequence in an efficient manner, - * serializing only the information needed to rearrange the subsequence - * based on the original order of the base. - * multi_index_container is in charge of supplying the info about the - * base sequence, and each index can subsequently save itself using the - * const interface of index_saver. - */ - -template<typename Node,typename Allocator> -class index_saver:private noncopyable -{ -public: - index_saver(const Allocator& al,std::size_t size):alg(al,size){} - - template<class Archive> - void add(Node* node,Archive& ar,const unsigned int) - { - ar<<serialization::make_nvp("position",*node); - alg.add(node); - } - - template<class Archive> - void add_track(Node* node,Archive& ar,const unsigned int) - { - ar<<serialization::make_nvp("position",*node); - } - - template<typename IndexIterator,class Archive> - void save( - IndexIterator first,IndexIterator last,Archive& ar, - const unsigned int)const - { - /* calculate ordered positions */ - - alg.execute(first,last); - - /* Given a consecutive subsequence of displaced elements - * x1,...,xn, the following information is serialized: - * - * p0,p1,...,pn,0 - * - * where pi is a pointer to xi and p0 is a pointer to the element - * preceding x1. Crealy, from this information is possible to - * restore the original order on loading time. If x1 is the first - * element in the sequence, the following is serialized instead: - * - * p1,p1,...,pn,0 - * - * For each subsequence of n elements, n+2 pointers are serialized. - * An optimization policy is applied: consider for instance the - * sequence - * - * a,B,c,D - * - * where B and D are displaced, but c is in its correct position. - * Applying the schema described above we would serialize 6 pointers: - * - * p(a),p(B),0 - * p(c),p(D),0 - * - * but this can be reduced to 5 pointers by treating c as a displaced - * element: - * - * p(a),p(B),p(c),p(D),0 - */ - - std::size_t last_saved=3; /* distance to last pointer saved */ - for(IndexIterator it=first,prev=first;it!=last;prev=it++,++last_saved){ - if(!alg.is_ordered(get_node(it))){ - if(last_saved>1)save_node(get_node(prev),ar); - save_node(get_node(it),ar); - last_saved=0; - } - else if(last_saved==2)save_node(null_node(),ar); - } - if(last_saved<=2)save_node(null_node(),ar); - - /* marks the end of the serialization info for [first,last) */ - - save_node(null_node(),ar); - } - -private: - template<typename IndexIterator> - static Node* get_node(IndexIterator it) - { - return it.get_node(); - } - - static Node* null_node(){return 0;} - - template<typename Archive> - static void save_node(Node* node,Archive& ar) - { - ar<<serialization::make_nvp("pointer",node); - } - - index_matcher::algorithm<Node,Allocator> alg; -}; - -} /* namespace multi_index::detail */ - -} /* namespace multi_index */ - -} /* namespace boost */ - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index/detail/invariant_assert.hpp b/3rdParty/Boost/src/boost/multi_index/detail/invariant_assert.hpp deleted file mode 100644 index d5fc256..0000000 --- a/3rdParty/Boost/src/boost/multi_index/detail/invariant_assert.hpp +++ /dev/null @@ -1,21 +0,0 @@ -/* 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 http://www.boost.org/libs/multi_index for library home page. - */ - -#ifndef BOOST_MULTI_INDEX_DETAIL_INVARIANT_ASSERT_HPP -#define BOOST_MULTI_INDEX_DETAIL_INVARIANT_ASSERT_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -#if !defined(BOOST_MULTI_INDEX_INVARIANT_ASSERT) -#include <boost/assert.hpp> -#define BOOST_MULTI_INDEX_INVARIANT_ASSERT BOOST_ASSERT -#endif - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index/detail/is_index_list.hpp b/3rdParty/Boost/src/boost/multi_index/detail/is_index_list.hpp deleted file mode 100644 index 9ee30ba..0000000 --- a/3rdParty/Boost/src/boost/multi_index/detail/is_index_list.hpp +++ /dev/null @@ -1,40 +0,0 @@ -/* 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 http://www.boost.org/libs/multi_index for library home page. - */ - -#ifndef BOOST_MULTI_INDEX_DETAIL_IS_INDEX_LIST_HPP -#define BOOST_MULTI_INDEX_DETAIL_IS_INDEX_LIST_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */ -#include <boost/mpl/empty.hpp> -#include <boost/mpl/is_sequence.hpp> - -namespace boost{ - -namespace multi_index{ - -namespace detail{ - -template<typename T> -struct is_index_list -{ - BOOST_STATIC_CONSTANT(bool,mpl_sequence=mpl::is_sequence<T>::value); - BOOST_STATIC_CONSTANT(bool,non_empty=!mpl::empty<T>::value); - BOOST_STATIC_CONSTANT(bool,value=mpl_sequence&&non_empty); -}; - -} /* namespace multi_index::detail */ - -} /* namespace multi_index */ - -} /* namespace boost */ - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index/detail/iter_adaptor.hpp b/3rdParty/Boost/src/boost/multi_index/detail/iter_adaptor.hpp deleted file mode 100644 index 0346184..0000000 --- a/3rdParty/Boost/src/boost/multi_index/detail/iter_adaptor.hpp +++ /dev/null @@ -1,325 +0,0 @@ -/* 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 http://www.boost.org/libs/multi_index for library home page. - */ - -#ifndef BOOST_MULTI_INDEX_DETAIL_ITER_ADAPTOR_HPP -#define BOOST_MULTI_INDEX_DETAIL_ITER_ADAPTOR_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */ -#include <boost/mpl/apply.hpp> -#include <boost/multi_index/detail/prevent_eti.hpp> -#include <boost/operators.hpp> - -namespace boost{ - -namespace multi_index{ - -namespace detail{ - -/* Poor man's version of boost::iterator_adaptor. Used instead of the - * original as compile times for the latter are significantly higher. - * The interface is not replicated exactly, only to the extent necessary - * for internal consumption. - */ - -/* NB. The purpose of the (non-inclass) global operators ==, < and - defined - * above is to partially alleviate a problem of MSVC++ 6.0 by * which - * friend-injected operators on T are not visible if T is instantiated only - * in template code where T is a dependent type. - */ - -class iter_adaptor_access -{ -public: - template<class Class> - static typename Class::reference dereference(const Class& x) - { - return x.dereference(); - } - - template<class Class> - static bool equal(const Class& x,const Class& y) - { - return x.equal(y); - } - - template<class Class> - static void increment(Class& x) - { - x.increment(); - } - - template<class Class> - static void decrement(Class& x) - { - x.decrement(); - } - - template<class Class> - static void advance(Class& x,typename Class::difference_type n) - { - x.advance(n); - } - - template<class Class> - static typename Class::difference_type distance_to( - const Class& x,const Class& y) - { - return x.distance_to(y); - } -}; - -template<typename Category> -struct iter_adaptor_selector; - -template<class Derived,class Base> -class forward_iter_adaptor_base: - public forward_iterator_helper< - Derived, - typename Base::value_type, - typename Base::difference_type, - typename Base::pointer, - typename Base::reference> -{ -public: - typedef typename Base::reference reference; - - reference operator*()const - { - return iter_adaptor_access::dereference(final()); - } - - friend bool operator==(const Derived& x,const Derived& y) - { - return iter_adaptor_access::equal(x,y); - } - - Derived& operator++() - { - iter_adaptor_access::increment(final()); - return final(); - } - -private: - Derived& final(){return *static_cast<Derived*>(this);} - const Derived& final()const{return *static_cast<const Derived*>(this);} -}; - -template<class Derived,class Base> -bool operator==( - const forward_iter_adaptor_base<Derived,Base>& x, - const forward_iter_adaptor_base<Derived,Base>& y) -{ - return iter_adaptor_access::equal( - static_cast<const Derived&>(x),static_cast<const Derived&>(y)); -} - -template<> -struct iter_adaptor_selector<std::forward_iterator_tag> -{ - template<class Derived,class Base> - struct apply - { - typedef forward_iter_adaptor_base<Derived,Base> type; - }; -}; - -template<class Derived,class Base> -class bidirectional_iter_adaptor_base: - public bidirectional_iterator_helper< - Derived, - typename Base::value_type, - typename Base::difference_type, - typename Base::pointer, - typename Base::reference> -{ -public: - typedef typename Base::reference reference; - - reference operator*()const - { - return iter_adaptor_access::dereference(final()); - } - - friend bool operator==(const Derived& x,const Derived& y) - { - return iter_adaptor_access::equal(x,y); - } - - Derived& operator++() - { - iter_adaptor_access::increment(final()); - return final(); - } - - Derived& operator--() - { - iter_adaptor_access::decrement(final()); - return final(); - } - -private: - Derived& final(){return *static_cast<Derived*>(this);} - const Derived& final()const{return *static_cast<const Derived*>(this);} -}; - -template<class Derived,class Base> -bool operator==( - const bidirectional_iter_adaptor_base<Derived,Base>& x, - const bidirectional_iter_adaptor_base<Derived,Base>& y) -{ - return iter_adaptor_access::equal( - static_cast<const Derived&>(x),static_cast<const Derived&>(y)); -} - -template<> -struct iter_adaptor_selector<std::bidirectional_iterator_tag> -{ - template<class Derived,class Base> - struct apply - { - typedef bidirectional_iter_adaptor_base<Derived,Base> type; - }; -}; - -template<class Derived,class Base> -class random_access_iter_adaptor_base: - public random_access_iterator_helper< - Derived, - typename Base::value_type, - typename Base::difference_type, - typename Base::pointer, - typename Base::reference> -{ -public: - typedef typename Base::reference reference; - typedef typename Base::difference_type difference_type; - - reference operator*()const - { - return iter_adaptor_access::dereference(final()); - } - - friend bool operator==(const Derived& x,const Derived& y) - { - return iter_adaptor_access::equal(x,y); - } - - friend bool operator<(const Derived& x,const Derived& y) - { - return iter_adaptor_access::distance_to(x,y)>0; - } - - Derived& operator++() - { - iter_adaptor_access::increment(final()); - return final(); - } - - Derived& operator--() - { - iter_adaptor_access::decrement(final()); - return final(); - } - - Derived& operator+=(difference_type n) - { - iter_adaptor_access::advance(final(),n); - return final(); - } - - Derived& operator-=(difference_type n) - { - iter_adaptor_access::advance(final(),-n); - return final(); - } - - friend difference_type operator-(const Derived& x,const Derived& y) - { - return iter_adaptor_access::distance_to(y,x); - } - -private: - Derived& final(){return *static_cast<Derived*>(this);} - const Derived& final()const{return *static_cast<const Derived*>(this);} -}; - -template<class Derived,class Base> -bool operator==( - const random_access_iter_adaptor_base<Derived,Base>& x, - const random_access_iter_adaptor_base<Derived,Base>& y) -{ - return iter_adaptor_access::equal( - static_cast<const Derived&>(x),static_cast<const Derived&>(y)); -} - -template<class Derived,class Base> -bool operator<( - const random_access_iter_adaptor_base<Derived,Base>& x, - const random_access_iter_adaptor_base<Derived,Base>& y) -{ - return iter_adaptor_access::distance_to( - static_cast<const Derived&>(x),static_cast<const Derived&>(y))>0; -} - -template<class Derived,class Base> -typename random_access_iter_adaptor_base<Derived,Base>::difference_type -operator-( - const random_access_iter_adaptor_base<Derived,Base>& x, - const random_access_iter_adaptor_base<Derived,Base>& y) -{ - return iter_adaptor_access::distance_to( - static_cast<const Derived&>(y),static_cast<const Derived&>(x)); -} - -template<> -struct iter_adaptor_selector<std::random_access_iterator_tag> -{ - template<class Derived,class Base> - struct apply - { - typedef random_access_iter_adaptor_base<Derived,Base> type; - }; -}; - -template<class Derived,class Base> -struct iter_adaptor_base -{ - typedef iter_adaptor_selector< - typename Base::iterator_category> selector; - typedef typename prevent_eti< - selector, - typename mpl::apply2< - selector,Derived,Base>::type - >::type type; -}; - -template<class Derived,class Base> -class iter_adaptor:public iter_adaptor_base<Derived,Base>::type -{ -protected: - iter_adaptor(){} - explicit iter_adaptor(const Base& b_):b(b_){} - - const Base& base_reference()const{return b;} - Base& base_reference(){return b;} - -private: - Base b; -}; - -} /* namespace multi_index::detail */ - -} /* namespace multi_index */ - -} /* namespace boost */ - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index/detail/modify_key_adaptor.hpp b/3rdParty/Boost/src/boost/multi_index/detail/modify_key_adaptor.hpp deleted file mode 100644 index 8a93b96..0000000 --- a/3rdParty/Boost/src/boost/multi_index/detail/modify_key_adaptor.hpp +++ /dev/null @@ -1,49 +0,0 @@ -/* 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 http://www.boost.org/libs/multi_index for library home page. - */ - -#ifndef BOOST_MULTI_INDEX_DETAIL_MODIFY_KEY_ADAPTOR_HPP -#define BOOST_MULTI_INDEX_DETAIL_MODIFY_KEY_ADAPTOR_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -namespace boost{ - -namespace multi_index{ - -namespace detail{ - -/* Functional adaptor to resolve modify_key as a call to modify. - * Preferred over compose_f_gx and stuff cause it eliminates problems - * with references to references, dealing with function pointers, etc. - */ - -template<typename Fun,typename Value,typename KeyFromValue> -struct modify_key_adaptor -{ - - modify_key_adaptor(Fun f_,KeyFromValue kfv_):f(f_),kfv(kfv_){} - - void operator()(Value& x) - { - f(kfv(x)); - } - -private: - Fun f; - KeyFromValue kfv; -}; - -} /* namespace multi_index::detail */ - -} /* namespace multi_index */ - -} /* namespace boost */ - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index/detail/msvc_index_specifier.hpp b/3rdParty/Boost/src/boost/multi_index/detail/msvc_index_specifier.hpp deleted file mode 100644 index 4766e53..0000000 --- a/3rdParty/Boost/src/boost/multi_index/detail/msvc_index_specifier.hpp +++ /dev/null @@ -1,69 +0,0 @@ -/* 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 http://www.boost.org/libs/multi_index for library home page. - */ - -#ifndef BOOST_MULTI_INDEX_DETAIL_MSVC_INDEX_SPECIFIER_HPP -#define BOOST_MULTI_INDEX_DETAIL_MSVC_INDEX_SPECIFIER_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */ -#include <boost/detail/workaround.hpp> - -#if BOOST_WORKAROUND(BOOST_MSVC,<1310) -/* Workaround for a problem in MSVC with dependent template typedefs - * when accesing index specifiers. - * Modeled after <boost/mpl/aux_/msvc_dtw.hpp> (thanks, Aleksey!) - */ - -#include <boost/mpl/aux_/msvc_never_true.hpp> - -namespace boost{ - -namespace multi_index{ - -namespace detail{ - -template<typename IndexSpecifier> -struct msvc_index_specifier -{ - template<bool> struct fake_index_type:IndexSpecifier{}; - template<> struct fake_index_type<true> - { - template<typename Super> - struct node_class{}; - - template<typename Super> - struct index_class{}; - }; - - template<typename Super> - struct result_node_class: - fake_index_type<mpl::aux::msvc_never_true<IndexSpecifier>::value>:: - template node_class<Super> - { - }; - - template<typename Super> - struct result_index_class: - fake_index_type<mpl::aux::msvc_never_true<IndexSpecifier>::value>:: - template index_class<Super> - { - }; -}; - -} /* namespace multi_index::detail */ - -} /* namespace multi_index */ - -} /* namespace boost */ - -#endif /* workaround */ - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index/detail/no_duplicate_tags.hpp b/3rdParty/Boost/src/boost/multi_index/detail/no_duplicate_tags.hpp deleted file mode 100644 index 9b56e83..0000000 --- a/3rdParty/Boost/src/boost/multi_index/detail/no_duplicate_tags.hpp +++ /dev/null @@ -1,97 +0,0 @@ -/* 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 http://www.boost.org/libs/multi_index for library home page. - */ - -#ifndef BOOST_MULTI_INDEX_DETAIL_NO_DUPLICATE_TAGS_HPP -#define BOOST_MULTI_INDEX_DETAIL_NO_DUPLICATE_TAGS_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */ -#include <boost/mpl/fold.hpp> -#include <boost/mpl/set/set0.hpp> - -namespace boost{ - -namespace multi_index{ - -namespace detail{ - -/* no_duplicate_tags check at compile-time that a tag list - * has no duplicate tags. - * The algorithm deserves some explanation: tags - * are sequentially inserted into a mpl::set if they were - * not already present. Due to the magic of mpl::set - * (mpl::has_key is contant time), this operation takes linear - * time, and even MSVC++ 6.5 handles it gracefully (other obvious - * solutions are quadratic.) - */ - -struct duplicate_tag_mark{}; - -struct duplicate_tag_marker -{ - template <typename MplSet,typename Tag> - struct apply - { - typedef mpl::s_item< - typename mpl::if_<mpl::has_key<MplSet,Tag>,duplicate_tag_mark,Tag>::type, - MplSet - > type; - }; -}; - -template<typename TagList> -struct no_duplicate_tags -{ - typedef typename mpl::fold< - TagList, - mpl::set0<>, - duplicate_tag_marker - >::type aux; - - BOOST_STATIC_CONSTANT( - bool,value=!(mpl::has_key<aux,duplicate_tag_mark>::value)); -}; - -/* Variant for an index list: duplication is checked - * across all the indices. - */ - -struct duplicate_tag_list_marker -{ - template <typename MplSet,typename Index> - struct apply:mpl::fold< - BOOST_DEDUCED_TYPENAME Index::tag_list, - MplSet, - duplicate_tag_marker> - { - }; -}; - -template<typename IndexList> -struct no_duplicate_tags_in_index_list -{ - typedef typename mpl::fold< - IndexList, - mpl::set0<>, - duplicate_tag_list_marker - >::type aux; - - BOOST_STATIC_CONSTANT( - bool,value=!(mpl::has_key<aux,duplicate_tag_mark>::value)); -}; - -} /* namespace multi_index::detail */ - -} /* namespace multi_index */ - -} /* namespace boost */ - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index/detail/node_type.hpp b/3rdParty/Boost/src/boost/multi_index/detail/node_type.hpp deleted file mode 100644 index 0e87261..0000000 --- a/3rdParty/Boost/src/boost/multi_index/detail/node_type.hpp +++ /dev/null @@ -1,79 +0,0 @@ -/* 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 http://www.boost.org/libs/multi_index for library home page. - */ - -#ifndef BOOST_MULTI_INDEX_DETAIL_NODE_TYPE_HPP -#define BOOST_MULTI_INDEX_DETAIL_NODE_TYPE_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */ -#include <boost/detail/workaround.hpp> -#include <boost/mpl/bind.hpp> -#include <boost/mpl/reverse_iter_fold.hpp> -#include <boost/mpl/deref.hpp> -#include <boost/multi_index_container_fwd.hpp> -#include <boost/multi_index/detail/header_holder.hpp> -#include <boost/multi_index/detail/index_node_base.hpp> -#include <boost/multi_index/detail/is_index_list.hpp> -#include <boost/multi_index/detail/msvc_index_specifier.hpp> -#include <boost/static_assert.hpp> - -namespace boost{ - -namespace multi_index{ - -namespace detail{ - -/* MPL machinery to construct the internal node type associated to an - * index list. - */ - -#if BOOST_WORKAROUND(BOOST_MSVC,<1310) -struct index_node_applier -{ - template<typename IndexSpecifierIterator,typename Super> - struct apply: - msvc_index_specifier< mpl::deref<IndexSpecifierIterator>::type >:: - template result_node_class<Super> - { - }; -}; -#else -struct index_node_applier -{ - template<typename IndexSpecifierIterator,typename Super> - struct apply - { - typedef typename mpl::deref<IndexSpecifierIterator>::type index_specifier; - typedef typename index_specifier:: - BOOST_NESTED_TEMPLATE node_class<Super>::type type; - }; -}; -#endif - -template<typename Value,typename IndexSpecifierList,typename Allocator> -struct multi_index_node_type -{ - BOOST_STATIC_ASSERT(detail::is_index_list<IndexSpecifierList>::value); - - typedef typename mpl::reverse_iter_fold< - IndexSpecifierList, - index_node_base<Value,Allocator>, - mpl::bind2<index_node_applier,mpl::_2,mpl::_1> - >::type type; -}; - -} /* namespace multi_index::detail */ - -} /* namespace multi_index */ - -} /* namespace boost */ - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index/detail/ord_index_args.hpp b/3rdParty/Boost/src/boost/multi_index/detail/ord_index_args.hpp deleted file mode 100644 index bb8eb41..0000000 --- a/3rdParty/Boost/src/boost/multi_index/detail/ord_index_args.hpp +++ /dev/null @@ -1,83 +0,0 @@ -/* 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 http://www.boost.org/libs/multi_index for library home page. - */ - -#ifndef BOOST_MULTI_INDEX_DETAIL_ORD_INDEX_ARGS_HPP -#define BOOST_MULTI_INDEX_DETAIL_ORD_INDEX_ARGS_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */ -#include <boost/mpl/aux_/na.hpp> -#include <boost/mpl/eval_if.hpp> -#include <boost/mpl/identity.hpp> -#include <boost/mpl/if.hpp> -#include <boost/multi_index/tag.hpp> -#include <boost/static_assert.hpp> -#include <boost/type_traits/is_same.hpp> -#include <functional> - -namespace boost{ - -namespace multi_index{ - -namespace detail{ - -/* Oredered index specifiers can be instantiated in two forms: - * - * (ordered_unique|ordered_non_unique)< - * KeyFromValue,Compare=std::less<KeyFromValue::result_type> > - * (ordered_unique|ordered_non_unique)< - * TagList,KeyFromValue,Compare=std::less<KeyFromValue::result_type> > - * - * index_args implements the machinery to accept this argument-dependent - * polymorphism. - */ - -template<typename KeyFromValue> -struct index_args_default_compare -{ - typedef std::less<typename KeyFromValue::result_type> type; -}; - -template<typename Arg1,typename Arg2,typename Arg3> -struct ordered_index_args -{ - typedef is_tag<Arg1> full_form; - - typedef typename mpl::if_< - full_form, - Arg1, - tag< > >::type tag_list_type; - typedef typename mpl::if_< - full_form, - Arg2, - Arg1>::type key_from_value_type; - typedef typename mpl::if_< - full_form, - Arg3, - Arg2>::type supplied_compare_type; - typedef typename mpl::eval_if< - mpl::is_na<supplied_compare_type>, - index_args_default_compare<key_from_value_type>, - mpl::identity<supplied_compare_type> - >::type compare_type; - - BOOST_STATIC_ASSERT(is_tag<tag_list_type>::value); - BOOST_STATIC_ASSERT(!mpl::is_na<key_from_value_type>::value); - BOOST_STATIC_ASSERT(!mpl::is_na<compare_type>::value); -}; - -} /* namespace multi_index::detail */ - -} /* namespace multi_index */ - -} /* namespace boost */ - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index/detail/ord_index_node.hpp b/3rdParty/Boost/src/boost/multi_index/detail/ord_index_node.hpp deleted file mode 100644 index edc4329..0000000 --- a/3rdParty/Boost/src/boost/multi_index/detail/ord_index_node.hpp +++ /dev/null @@ -1,650 +0,0 @@ -/* 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 http://www.boost.org/libs/multi_index for library home page. - * - * The internal implementation of red-black trees is based on that of SGI STL - * stl_tree.h file: - * - * Copyright (c) 1996,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 (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. - * - */ - -#ifndef BOOST_MULTI_INDEX_DETAIL_ORD_INDEX_NODE_HPP -#define BOOST_MULTI_INDEX_DETAIL_ORD_INDEX_NODE_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */ -#include <cstddef> -#include <boost/detail/allocator_utilities.hpp> -#include <boost/multi_index/detail/prevent_eti.hpp> - -#if !defined(BOOST_MULTI_INDEX_DISABLE_COMPRESSED_ORDERED_INDEX_NODES) -#include <boost/mpl/and.hpp> -#include <boost/mpl/if.hpp> -#include <boost/multi_index/detail/uintptr_type.hpp> -#include <boost/type_traits/alignment_of.hpp> -#include <boost/type_traits/is_same.hpp> -#endif - -namespace boost{ - -namespace multi_index{ - -namespace detail{ - -/* definition of red-black nodes for ordered_index */ - -enum ordered_index_color{red=false,black=true}; -enum ordered_index_side{to_left=false,to_right=true}; - -template<typename Allocator> -struct ordered_index_node_impl; /* fwd decl. */ - -template<typename Allocator> -struct ordered_index_node_std_base -{ - typedef typename prevent_eti< - Allocator, - typename boost::detail::allocator::rebind_to< - Allocator, - ordered_index_node_impl<Allocator> - >::type - >::type::pointer pointer; - typedef typename prevent_eti< - Allocator, - typename boost::detail::allocator::rebind_to< - Allocator, - ordered_index_node_impl<Allocator> - >::type - >::type::const_pointer const_pointer; - typedef ordered_index_color& color_ref; - typedef pointer& parent_ref; - - ordered_index_color& color(){return color_;} - ordered_index_color color()const{return color_;} - pointer& parent(){return parent_;} - pointer parent()const{return parent_;} - pointer& left(){return left_;} - pointer left()const{return left_;} - pointer& right(){return right_;} - pointer right()const{return right_;} - -private: - ordered_index_color color_; - pointer parent_; - pointer left_; - pointer right_; -}; - -#if !defined(BOOST_MULTI_INDEX_DISABLE_COMPRESSED_ORDERED_INDEX_NODES) -/* If ordered_index_node_impl has even alignment, we can use the least - * significant bit of one of the ordered_index_node_impl pointers to - * store color information. This typically reduces the size of - * ordered_index_node_impl by 25%. - */ - -#if defined(BOOST_MSVC) -/* This code casts pointers to an integer type that has been computed - * to be large enough to hold the pointer, however the metaprogramming - * logic is not always spotted by the VC++ code analyser that issues a - * long list of warnings. - */ - -#pragma warning(push) -#pragma warning(disable:4312 4311) -#endif - -template<typename Allocator> -struct ordered_index_node_compressed_base -{ - typedef ordered_index_node_impl<Allocator>* pointer; - typedef const ordered_index_node_impl<Allocator>* const_pointer; - - struct color_ref - { - color_ref(uintptr_type* r_):r(r_){} - - operator ordered_index_color()const - { - return ordered_index_color(*r&uintptr_type(1)); - } - - color_ref& operator=(ordered_index_color c) - { - *r&=~uintptr_type(1); - *r|=uintptr_type(c); - return *this; - } - - color_ref& operator=(const color_ref& x) - { - return operator=(x.operator ordered_index_color()); - } - - private: - uintptr_type* r; - }; - - struct parent_ref - { - parent_ref(uintptr_type* r_):r(r_){} - - operator pointer()const - { - return (pointer)(void*)(*r&~uintptr_type(1)); - } - - parent_ref& operator=(pointer p) - { - *r=((uintptr_type)(void*)p)|(*r&uintptr_type(1)); - return *this; - } - - parent_ref& operator=(const parent_ref& x) - { - return operator=(x.operator pointer()); - } - - pointer operator->()const - { - return operator pointer(); - } - - private: - uintptr_type* r; - }; - - color_ref color(){return color_ref(&parentcolor_);} - ordered_index_color color()const - { - return ordered_index_color(parentcolor_&std::size_t(1ul)); - } - - parent_ref parent(){return parent_ref(&parentcolor_);} - pointer parent()const - { - return (pointer)(void*)(parentcolor_&~uintptr_type(1)); - } - - pointer& left(){return left_;} - pointer left()const{return left_;} - pointer& right(){return right_;} - pointer right()const{return right_;} - -private: - uintptr_type parentcolor_; - pointer left_; - pointer right_; -}; -#if defined(BOOST_MSVC) -#pragma warning(pop) -#endif -#endif - -template<typename Allocator> -struct ordered_index_node_impl_base: - -#if !defined(BOOST_MULTI_INDEX_DISABLE_COMPRESSED_ORDERED_INDEX_NODES) - mpl::if_c< - !(has_uintptr_type::value)|| - (alignment_of<ordered_index_node_compressed_base<Allocator> >::value%2)|| - !(is_same< - typename prevent_eti< - Allocator, - typename boost::detail::allocator::rebind_to< - Allocator, - ordered_index_node_impl<Allocator> - >::type - >::type::pointer, - ordered_index_node_impl<Allocator>*>::value), - ordered_index_node_std_base<Allocator>, - ordered_index_node_compressed_base<Allocator> - >::type -#else - ordered_index_node_std_base<Allocator> -#endif - -{}; - -template<typename Allocator> -struct ordered_index_node_impl:ordered_index_node_impl_base<Allocator> -{ -private: - typedef ordered_index_node_impl_base<Allocator> super; - -public: - typedef typename super::color_ref color_ref; - typedef typename super::parent_ref parent_ref; - typedef typename super::pointer pointer; - typedef typename super::const_pointer const_pointer; - - /* interoperability with bidir_node_iterator */ - - static void increment(pointer& x) - { - if(x->right()!=pointer(0)){ - x=x->right(); - while(x->left()!=pointer(0))x=x->left(); - } - else{ - pointer y=x->parent(); - while(x==y->right()){ - x=y; - y=y->parent(); - } - if(x->right()!=y)x=y; - } - } - - static void decrement(pointer& x) - { - if(x->color()==red&&x->parent()->parent()==x){ - x=x->right(); - } - else if(x->left()!=pointer(0)){ - pointer y=x->left(); - while(y->right()!=pointer(0))y=y->right(); - x=y; - }else{ - pointer y=x->parent(); - while(x==y->left()){ - x=y; - y=y->parent(); - } - x=y; - } - } - - /* algorithmic stuff */ - - static void rotate_left(pointer x,parent_ref root) - { - pointer y=x->right(); - x->right()=y->left(); - if(y->left()!=pointer(0))y->left()->parent()=x; - y->parent()=x->parent(); - - if(x==root) root=y; - else if(x==x->parent()->left())x->parent()->left()=y; - else x->parent()->right()=y; - y->left()=x; - x->parent()=y; - } - - static pointer minimum(pointer x) - { - while(x->left()!=pointer(0))x=x->left(); - return x; - } - - static pointer maximum(pointer x) - { - while(x->right()!=pointer(0))x=x->right(); - return x; - } - - static void rotate_right(pointer x,parent_ref root) - { - pointer y=x->left(); - x->left()=y->right(); - if(y->right()!=pointer(0))y->right()->parent()=x; - y->parent()=x->parent(); - - if(x==root) root=y; - else if(x==x->parent()->right())x->parent()->right()=y; - else x->parent()->left()=y; - y->right()=x; - x->parent()=y; - } - - static void rebalance(pointer x,parent_ref root) - { - x->color()=red; - while(x!=root&&x->parent()->color()==red){ - if(x->parent()==x->parent()->parent()->left()){ - pointer y=x->parent()->parent()->right(); - if(y!=pointer(0)&&y->color()==red){ - x->parent()->color()=black; - y->color()=black; - x->parent()->parent()->color()=red; - x=x->parent()->parent(); - } - else{ - if(x==x->parent()->right()){ - x=x->parent(); - rotate_left(x,root); - } - x->parent()->color()=black; - x->parent()->parent()->color()=red; - rotate_right(x->parent()->parent(),root); - } - } - else{ - pointer y=x->parent()->parent()->left(); - if(y!=pointer(0)&&y->color()==red){ - x->parent()->color()=black; - y->color()=black; - x->parent()->parent()->color()=red; - x=x->parent()->parent(); - } - else{ - if(x==x->parent()->left()){ - x=x->parent(); - rotate_right(x,root); - } - x->parent()->color()=black; - x->parent()->parent()->color()=red; - rotate_left(x->parent()->parent(),root); - } - } - } - root->color()=black; - } - - static void link( - pointer x,ordered_index_side side,pointer position,pointer header) - { - if(side==to_left){ - position->left()=x; /* also makes leftmost=x when parent==header */ - if(position==header){ - header->parent()=x; - header->right()=x; - } - else if(position==header->left()){ - header->left()=x; /* maintain leftmost pointing to min node */ - } - } - else{ - position->right()=x; - if(position==header->right()){ - header->right()=x; /* maintain rightmost pointing to max node */ - } - } - x->parent()=position; - x->left()=pointer(0); - x->right()=pointer(0); - ordered_index_node_impl::rebalance(x,header->parent()); - } - - static pointer rebalance_for_erase( - pointer z,parent_ref root,pointer& leftmost,pointer& rightmost) - { - pointer y=z; - pointer x=pointer(0); - pointer x_parent=pointer(0); - if(y->left()==pointer(0)){ /* z has at most one non-null child. y==z. */ - x=y->right(); /* x might be null */ - } - else{ - if(y->right()==pointer(0)){ /* z has exactly one non-null child. y==z. */ - x=y->left(); /* x is not null */ - } - else{ /* z has two non-null children. Set y to */ - y=y->right(); /* z's successor. x might be null. */ - while(y->left()!=pointer(0))y=y->left(); - x=y->right(); - } - } - if(y!=z){ - z->left()->parent()=y; /* relink y in place of z. y is z's successor */ - y->left()=z->left(); - if(y!=z->right()){ - x_parent=y->parent(); - if(x!=pointer(0))x->parent()=y->parent(); - y->parent()->left()=x; /* y must be a child of left */ - y->right()=z->right(); - z->right()->parent()=y; - } - else{ - x_parent=y; - } - - if(root==z) root=y; - else if(z->parent()->left()==z)z->parent()->left()=y; - else z->parent()->right()=y; - y->parent()=z->parent(); - ordered_index_color c=y->color(); - y->color()=z->color(); - z->color()=c; - y=z; /* y now points to node to be actually deleted */ - } - else{ /* y==z */ - x_parent=y->parent(); - if(x!=pointer(0))x->parent()=y->parent(); - if(root==z){ - root=x; - } - else{ - if(z->parent()->left()==z)z->parent()->left()=x; - else z->parent()->right()=x; - } - if(leftmost==z){ - if(z->right()==pointer(0)){ /* z->left() must be null also */ - leftmost=z->parent(); - } - else{ - leftmost=minimum(x); /* makes leftmost==header if z==root */ - } - } - if(rightmost==z){ - if(z->left()==pointer(0)){ /* z->right() must be null also */ - rightmost=z->parent(); - } - else{ /* x==z->left() */ - rightmost=maximum(x); /* makes rightmost==header if z==root */ - } - } - } - if(y->color()!=red){ - while(x!=root&&(x==pointer(0)|| x->color()==black)){ - if(x==x_parent->left()){ - pointer w=x_parent->right(); - if(w->color()==red){ - w->color()=black; - x_parent->color()=red; - rotate_left(x_parent,root); - w=x_parent->right(); - } - if((w->left()==pointer(0)||w->left()->color()==black) && - (w->right()==pointer(0)||w->right()->color()==black)){ - w->color()=red; - x=x_parent; - x_parent=x_parent->parent(); - } - else{ - if(w->right()==pointer(0 ) - || w->right()->color()==black){ - if(w->left()!=pointer(0)) w->left()->color()=black; - w->color()=red; - rotate_right(w,root); - w=x_parent->right(); - } - w->color()=x_parent->color(); - x_parent->color()=black; - if(w->right()!=pointer(0))w->right()->color()=black; - rotate_left(x_parent,root); - break; - } - } - else{ /* same as above,with right <-> left */ - pointer w=x_parent->left(); - if(w->color()==red){ - w->color()=black; - x_parent->color()=red; - rotate_right(x_parent,root); - w=x_parent->left(); - } - if((w->right()==pointer(0)||w->right()->color()==black) && - (w->left()==pointer(0)||w->left()->color()==black)){ - w->color()=red; - x=x_parent; - x_parent=x_parent->parent(); - } - else{ - if(w->left()==pointer(0)||w->left()->color()==black){ - if(w->right()!=pointer(0))w->right()->color()=black; - w->color()=red; - rotate_left(w,root); - w=x_parent->left(); - } - w->color()=x_parent->color(); - x_parent->color()=black; - if(w->left()!=pointer(0))w->left()->color()=black; - rotate_right(x_parent,root); - break; - } - } - } - if(x!=pointer(0))x->color()=black; - } - return y; - } - - static void restore(pointer x,pointer position,pointer header) - { - if(position->left()==pointer(0)||position->left()==header){ - link(x,to_left,position,header); - } - else{ - decrement(position); - link(x,to_right,position,header); - } - } - -#if defined(BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING) - /* invariant stuff */ - - static std::size_t black_count(pointer node,pointer root) - { - if(node==pointer(0))return 0; - std::size_t sum=0; - for(;;){ - if(node->color()==black)++sum; - if(node==root)break; - node=node->parent(); - } - return sum; - } -#endif -}; - -template<typename Super> -struct ordered_index_node_trampoline: - prevent_eti< - Super, - ordered_index_node_impl< - typename boost::detail::allocator::rebind_to< - typename Super::allocator_type, - char - >::type - > - >::type -{ - typedef typename prevent_eti< - Super, - ordered_index_node_impl< - typename boost::detail::allocator::rebind_to< - typename Super::allocator_type, - char - >::type - > - >::type impl_type; -}; - -template<typename Super> -struct ordered_index_node:Super,ordered_index_node_trampoline<Super> -{ -private: - typedef ordered_index_node_trampoline<Super> trampoline; - -public: - typedef typename trampoline::impl_type impl_type; - typedef typename trampoline::color_ref impl_color_ref; - typedef typename trampoline::parent_ref impl_parent_ref; - typedef typename trampoline::pointer impl_pointer; - typedef typename trampoline::const_pointer const_impl_pointer; - - impl_color_ref color(){return trampoline::color();} - ordered_index_color color()const{return trampoline::color();} - impl_parent_ref parent(){return trampoline::parent();} - impl_pointer parent()const{return trampoline::parent();} - impl_pointer& left(){return trampoline::left();} - impl_pointer left()const{return trampoline::left();} - impl_pointer& right(){return trampoline::right();} - impl_pointer right()const{return trampoline::right();} - - impl_pointer impl() - { - return static_cast<impl_pointer>( - static_cast<impl_type*>(static_cast<trampoline*>(this))); - } - - const_impl_pointer impl()const - { - return static_cast<const_impl_pointer>( - static_cast<const impl_type*>(static_cast<const trampoline*>(this))); - } - - static ordered_index_node* from_impl(impl_pointer x) - { - return static_cast<ordered_index_node*>( - static_cast<trampoline*>(&*x)); - } - - static const ordered_index_node* from_impl(const_impl_pointer x) - { - return static_cast<const ordered_index_node*>( - static_cast<const trampoline*>(&*x)); - } - - /* interoperability with bidir_node_iterator */ - - static void increment(ordered_index_node*& x) - { - impl_pointer xi=x->impl(); - trampoline::increment(xi); - x=from_impl(xi); - } - - static void decrement(ordered_index_node*& x) - { - impl_pointer xi=x->impl(); - trampoline::decrement(xi); - x=from_impl(xi); - } -}; - -} /* namespace multi_index::detail */ - -} /* namespace multi_index */ - -} /* namespace boost */ - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index/detail/ord_index_ops.hpp b/3rdParty/Boost/src/boost/multi_index/detail/ord_index_ops.hpp deleted file mode 100644 index caa71aa..0000000 --- a/3rdParty/Boost/src/boost/multi_index/detail/ord_index_ops.hpp +++ /dev/null @@ -1,147 +0,0 @@ -/* 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 http://www.boost.org/libs/multi_index for library home page. - * - * The internal implementation of red-black trees is based on that of SGI STL - * stl_tree.h file: - * - * Copyright (c) 1996,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 (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. - * - */ - -#ifndef BOOST_MULTI_INDEX_DETAIL_ORD_INDEX_OPS_HPP -#define BOOST_MULTI_INDEX_DETAIL_ORD_INDEX_OPS_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */ -#include <utility> - -namespace boost{ - -namespace multi_index{ - -namespace detail{ - -/* Common code for index memfuns having templatized and - * non-templatized versions. - */ - -template< - typename Node,typename KeyFromValue, - typename CompatibleKey,typename CompatibleCompare -> -inline Node* ordered_index_find( - Node* top,Node* y,const KeyFromValue& key,const CompatibleKey& x, - const CompatibleCompare& comp) -{ - Node* y0=y; - - while (top){ - if(!comp(key(top->value()),x)){ - y=top; - top=Node::from_impl(top->left()); - } - else top=Node::from_impl(top->right()); - } - - return (y==y0||comp(x,key(y->value())))?y0:y; -} - -template< - typename Node,typename KeyFromValue, - typename CompatibleKey,typename CompatibleCompare -> -inline Node* ordered_index_lower_bound( - Node* top,Node* y,const KeyFromValue& key,const CompatibleKey& x, - const CompatibleCompare& comp) -{ - while(top){ - if(!comp(key(top->value()),x)){ - y=top; - top=Node::from_impl(top->left()); - } - else top=Node::from_impl(top->right()); - } - - return y; -} - -template< - typename Node,typename KeyFromValue, - typename CompatibleKey,typename CompatibleCompare -> -inline Node* ordered_index_upper_bound( - Node* top,Node* y,const KeyFromValue& key,const CompatibleKey& x, - const CompatibleCompare& comp) -{ - while(top){ - if(comp(x,key(top->value()))){ - y=top; - top=Node::from_impl(top->left()); - } - else top=Node::from_impl(top->right()); - } - - return y; -} - -template< - typename Node,typename KeyFromValue, - typename CompatibleKey,typename CompatibleCompare -> -inline std::pair<Node*,Node*> ordered_index_equal_range( - Node* top,Node* y,const KeyFromValue& key,const CompatibleKey& x, - const CompatibleCompare& comp) -{ - while(top){ - if(comp(key(top->value()),x)){ - top=Node::from_impl(top->right()); - } - else if(comp(x,key(top->value()))){ - y=top; - top=Node::from_impl(top->left()); - } - else{ - return std::pair<Node*,Node*>( - ordered_index_lower_bound(Node::from_impl(top->left()),top,key,x,comp), - ordered_index_upper_bound(Node::from_impl(top->right()),y,key,x,comp)); - } - } - - return std::pair<Node*,Node*>(y,y); -} - -} /* namespace multi_index::detail */ - -} /* namespace multi_index */ - -} /* namespace boost */ - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index/detail/prevent_eti.hpp b/3rdParty/Boost/src/boost/multi_index/detail/prevent_eti.hpp deleted file mode 100644 index 56c067a..0000000 --- a/3rdParty/Boost/src/boost/multi_index/detail/prevent_eti.hpp +++ /dev/null @@ -1,60 +0,0 @@ -/* 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 http://www.boost.org/libs/multi_index for library home page. - */ - -#ifndef BOOST_MULTI_INDEX_DETAIL_PREVENT_ETI_HPP -#define BOOST_MULTI_INDEX_DETAIL_PREVENT_ETI_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */ -#include <boost/detail/workaround.hpp> - -#if BOOST_WORKAROUND(BOOST_MSVC,<1300) -#include <boost/mpl/if.hpp> -#include <boost/mpl/integral_c.hpp> -#include <boost/mpl/aux_/msvc_never_true.hpp> -#endif - -namespace boost{ - -namespace multi_index{ - -namespace detail{ - -#if BOOST_WORKAROUND(BOOST_MSVC,<1300) -/* See - * http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?Effective_MPL - * Item 5.6, Beware of the 'early template instantiation' trap. - */ - -template<typename Type,typename Construct> -struct prevent_eti -{ - typedef typename mpl::if_< - mpl::aux::msvc_never_true<Type>, - mpl::integral_c<int,0>, - Construct - >::type type; -}; -#else -template<typename Type,typename Construct> -struct prevent_eti -{ - typedef Construct type; -}; -#endif - -} /* namespace multi_index::detail */ - -} /* namespace multi_index */ - -} /* namespace boost */ - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index/detail/safe_ctr_proxy.hpp b/3rdParty/Boost/src/boost/multi_index/detail/safe_ctr_proxy.hpp deleted file mode 100644 index c733f96..0000000 --- a/3rdParty/Boost/src/boost/multi_index/detail/safe_ctr_proxy.hpp +++ /dev/null @@ -1,105 +0,0 @@ -/* 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 http://www.boost.org/libs/multi_index for library home page. - */ - -#ifndef BOOST_MULTI_INDEX_DETAIL_SAFE_CTR_PROXY_HPP -#define BOOST_MULTI_INDEX_DETAIL_SAFE_CTR_PROXY_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE) -#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */ -#include <boost/detail/workaround.hpp> - -#if BOOST_WORKAROUND(BOOST_MSVC,<1300) -#include <boost/multi_index/detail/safe_mode.hpp> - -namespace boost{ - -namespace multi_index{ - -namespace detail{ - -/* A safe iterator is instantiated in the form - * safe_iterator<Iterator,Container>: MSVC++ 6.0 has serious troubles with - * the resulting symbols names, given that index names (which stand for - * Container) are fairly long themselves. safe_ctr_proxy does not statically - * depend on Container, and provides the necessary methods (begin and end) to - * the safe mode framework via an abstract interface. With safe_ctr_proxy, - * instead of deriving from safe_container<Container> the following base class - * must be used: - * - * safe_ctr_proxy_impl<Iterator,Container> - * - * where Iterator is the type of the *unsafe* iterator being wrapped. - * The corresponding safe iterator instantiation is then - * - * safe_iterator<Iterator,safe_ctr_proxy<Iterator> >, - * - * which does not include the name of Container. - */ - -template<typename Iterator> -class safe_ctr_proxy: - public safe_mode::safe_container<safe_ctr_proxy<Iterator> > -{ -public: - typedef safe_mode::safe_iterator<Iterator,safe_ctr_proxy> iterator; - typedef iterator const_iterator; - - iterator begin(){return begin_impl();} - const_iterator begin()const{return begin_impl();} - iterator end(){return end_impl();} - const_iterator end()const{return end_impl();} - -protected: - virtual iterator begin_impl()=0; - virtual const_iterator begin_impl()const=0; - virtual iterator end_impl()=0; - virtual const_iterator end_impl()const=0; -}; - -template<typename Iterator,typename Container> -class safe_ctr_proxy_impl:public safe_ctr_proxy<Iterator> -{ - typedef safe_ctr_proxy<Iterator> super; - typedef Container container_type; - -public: - typedef typename super::iterator iterator; - typedef typename super::const_iterator const_iterator; - - virtual iterator begin_impl(){return container().begin();} - virtual const_iterator begin_impl()const{return container().begin();} - virtual iterator end_impl(){return container().end();} - virtual const_iterator end_impl()const{return container().end();} - -private: - container_type& container() - { - return *static_cast<container_type*>(this); - } - - const container_type& container()const - { - return *static_cast<const container_type*>(this); - } -}; - -} /* namespace multi_index::detail */ - -} /* namespace multi_index */ - -} /* namespace boost */ - -#endif /* workaround */ - -#endif /* BOOST_MULTI_INDEX_ENABLE_SAFE_MODE */ - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index/detail/safe_mode.hpp b/3rdParty/Boost/src/boost/multi_index/detail/safe_mode.hpp deleted file mode 100644 index dbfebd8..0000000 --- a/3rdParty/Boost/src/boost/multi_index/detail/safe_mode.hpp +++ /dev/null @@ -1,574 +0,0 @@ -/* Copyright 2003-2009 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 http://www.boost.org/libs/multi_index for library home page. - */ - -#ifndef BOOST_MULTI_INDEX_DETAIL_SAFE_MODE_HPP -#define BOOST_MULTI_INDEX_DETAIL_SAFE_MODE_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -/* Safe mode machinery, in the spirit of Cay Hortmann's "Safe STL" - * (http://www.horstmann.com/safestl.html). - * In this mode, containers of type Container are derived from - * safe_container<Container>, and their corresponding iterators - * are wrapped with safe_iterator. These classes provide - * an internal record of which iterators are at a given moment associated - * to a given container, and properly mark the iterators as invalid - * when the container gets destroyed. - * Iterators are chained in a single attached list, whose header is - * kept by the container. More elaborate data structures would yield better - * performance, but I decided to keep complexity to a minimum since - * speed is not an issue here. - * Safe mode iterators automatically check that only proper operations - * are performed on them: for instance, an invalid iterator cannot be - * dereferenced. Additionally, a set of utilty macros and functions are - * provided that serve to implement preconditions and cooperate with - * the framework within the container. - * Iterators can also be unchecked, i.e. they do not have info about - * which container they belong in. This situation arises when the iterator - * is restored from a serialization archive: only information on the node - * is available, and it is not possible to determine to which container - * the iterator is associated to. The only sensible policy is to assume - * unchecked iterators are valid, though this can certainly generate false - * positive safe mode checks. - * This is not a full-fledged safe mode framework, and is only intended - * for use within the limits of Boost.MultiIndex. - */ - -/* Assertion macros. These resolve to no-ops if - * !defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE). - */ - -#if !defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE) -#undef BOOST_MULTI_INDEX_SAFE_MODE_ASSERT -#define BOOST_MULTI_INDEX_SAFE_MODE_ASSERT(expr,error_code) ((void)0) -#else -#if !defined(BOOST_MULTI_INDEX_SAFE_MODE_ASSERT) -#include <boost/assert.hpp> -#define BOOST_MULTI_INDEX_SAFE_MODE_ASSERT(expr,error_code) BOOST_ASSERT(expr) -#endif -#endif - -#define BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(it) \ - BOOST_MULTI_INDEX_SAFE_MODE_ASSERT( \ - safe_mode::check_valid_iterator(it), \ - safe_mode::invalid_iterator); - -#define BOOST_MULTI_INDEX_CHECK_DEREFERENCEABLE_ITERATOR(it) \ - BOOST_MULTI_INDEX_SAFE_MODE_ASSERT( \ - safe_mode::check_dereferenceable_iterator(it), \ - safe_mode::not_dereferenceable_iterator); - -#define BOOST_MULTI_INDEX_CHECK_INCREMENTABLE_ITERATOR(it) \ - BOOST_MULTI_INDEX_SAFE_MODE_ASSERT( \ - safe_mode::check_incrementable_iterator(it), \ - safe_mode::not_incrementable_iterator); - -#define BOOST_MULTI_INDEX_CHECK_DECREMENTABLE_ITERATOR(it) \ - BOOST_MULTI_INDEX_SAFE_MODE_ASSERT( \ - safe_mode::check_decrementable_iterator(it), \ - safe_mode::not_decrementable_iterator); - -#define BOOST_MULTI_INDEX_CHECK_IS_OWNER(it,cont) \ - BOOST_MULTI_INDEX_SAFE_MODE_ASSERT( \ - safe_mode::check_is_owner(it,cont), \ - safe_mode::not_owner); - -#define BOOST_MULTI_INDEX_CHECK_SAME_OWNER(it0,it1) \ - BOOST_MULTI_INDEX_SAFE_MODE_ASSERT( \ - safe_mode::check_same_owner(it0,it1), \ - safe_mode::not_same_owner); - -#define BOOST_MULTI_INDEX_CHECK_VALID_RANGE(it0,it1) \ - BOOST_MULTI_INDEX_SAFE_MODE_ASSERT( \ - safe_mode::check_valid_range(it0,it1), \ - safe_mode::invalid_range); - -#define BOOST_MULTI_INDEX_CHECK_OUTSIDE_RANGE(it,it0,it1) \ - BOOST_MULTI_INDEX_SAFE_MODE_ASSERT( \ - safe_mode::check_outside_range(it,it0,it1), \ - safe_mode::inside_range); - -#define BOOST_MULTI_INDEX_CHECK_IN_BOUNDS(it,n) \ - BOOST_MULTI_INDEX_SAFE_MODE_ASSERT( \ - safe_mode::check_in_bounds(it,n), \ - safe_mode::out_of_bounds); - -#define BOOST_MULTI_INDEX_CHECK_DIFFERENT_CONTAINER(cont0,cont1) \ - BOOST_MULTI_INDEX_SAFE_MODE_ASSERT( \ - safe_mode::check_different_container(cont0,cont1), \ - safe_mode::same_container); - -#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE) -#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */ -#include <algorithm> -#include <boost/detail/iterator.hpp> -#include <boost/multi_index/detail/access_specifier.hpp> -#include <boost/multi_index/detail/iter_adaptor.hpp> -#include <boost/multi_index/safe_mode_errors.hpp> -#include <boost/noncopyable.hpp> - -#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION) -#include <boost/serialization/split_member.hpp> -#endif - -#if defined(BOOST_HAS_THREADS) -#include <boost/detail/lightweight_mutex.hpp> -#endif - -namespace boost{ - -namespace multi_index{ - -namespace safe_mode{ - -/* Checking routines. Assume the best for unchecked iterators - * (i.e. they pass the checking when there is not enough info - * to know.) - */ - -template<typename Iterator> -inline bool check_valid_iterator(const Iterator& it) -{ - return it.valid()||it.unchecked(); -} - -template<typename Iterator> -inline bool check_dereferenceable_iterator(const Iterator& it) -{ - return it.valid()&&it!=it.owner()->end()||it.unchecked(); -} - -template<typename Iterator> -inline bool check_incrementable_iterator(const Iterator& it) -{ - return it.valid()&&it!=it.owner()->end()||it.unchecked(); -} - -template<typename Iterator> -inline bool check_decrementable_iterator(const Iterator& it) -{ - return it.valid()&&it!=it.owner()->begin()||it.unchecked(); -} - -template<typename Iterator> -inline bool check_is_owner( - const Iterator& it,const typename Iterator::container_type& cont) -{ - return it.valid()&&it.owner()==&cont||it.unchecked(); -} - -template<typename Iterator> -inline bool check_same_owner(const Iterator& it0,const Iterator& it1) -{ - return it0.valid()&&it1.valid()&&it0.owner()==it1.owner()|| - it0.unchecked()||it1.unchecked(); -} - -template<typename Iterator> -inline bool check_valid_range(const Iterator& it0,const Iterator& it1) -{ - if(!check_same_owner(it0,it1))return false; - - if(it0.valid()){ - Iterator last=it0.owner()->end(); - if(it1==last)return true; - - for(Iterator first=it0;first!=last;++first){ - if(first==it1)return true; - } - return false; - } - return true; -} - -template<typename Iterator> -inline bool check_outside_range( - const Iterator& it,const Iterator& it0,const Iterator& it1) -{ - if(!check_same_owner(it0,it1))return false; - - if(it0.valid()){ - Iterator last=it0.owner()->end(); - bool found=false; - - Iterator first=it0; - for(;first!=last;++first){ - if(first==it1)break; - - /* crucial that this check goes after previous break */ - - if(first==it)found=true; - } - if(first!=it1)return false; - return !found; - } - return true; -} - -template<typename Iterator,typename Difference> -inline bool check_in_bounds(const Iterator& it,Difference n) -{ - if(it.unchecked())return true; - if(!it.valid()) return false; - if(n>0) return it.owner()->end()-it>=n; - else return it.owner()->begin()-it<=n; -} - -template<typename Container> -inline bool check_different_container( - const Container& cont0,const Container& cont1) -{ - return &cont0!=&cont1; -} - -/* Invalidates all iterators equivalent to that given. Safe containers - * must call this when deleting elements: the safe mode framework cannot - * perform this operation automatically without outside help. - */ - -template<typename Iterator> -inline void detach_equivalent_iterators(Iterator& it) -{ - if(it.valid()){ - { -#if defined(BOOST_HAS_THREADS) - boost::detail::lightweight_mutex::scoped_lock lock(it.cont->mutex); -#endif - - Iterator *prev_,*next_; - for( - prev_=static_cast<Iterator*>(&it.cont->header); - (next_=static_cast<Iterator*>(prev_->next))!=0;){ - if(next_!=&it&&*next_==it){ - prev_->next=next_->next; - next_->cont=0; - } - else prev_=next_; - } - } - it.detach(); - } -} - -template<typename Container> class safe_container; /* fwd decl. */ - -} /* namespace multi_index::safe_mode */ - -namespace detail{ - -class safe_container_base; /* fwd decl. */ - -class safe_iterator_base -{ -public: - bool valid()const{return cont!=0;} - bool unchecked()const{return unchecked_;} - - inline void detach(); - - void uncheck() - { - detach(); - unchecked_=true; - } - -protected: - safe_iterator_base():cont(0),next(0),unchecked_(false){} - - explicit safe_iterator_base(safe_container_base* cont_): - unchecked_(false) - { - attach(cont_); - } - - safe_iterator_base(const safe_iterator_base& it): - unchecked_(it.unchecked_) - { - attach(it.cont); - } - - safe_iterator_base& operator=(const safe_iterator_base& it) - { - unchecked_=it.unchecked_; - safe_container_base* new_cont=it.cont; - if(cont!=new_cont){ - detach(); - attach(new_cont); - } - return *this; - } - - ~safe_iterator_base() - { - detach(); - } - - const safe_container_base* owner()const{return cont;} - -BOOST_MULTI_INDEX_PRIVATE_IF_MEMBER_TEMPLATE_FRIENDS: - friend class safe_container_base; - -#if !defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS) - template<typename> friend class safe_mode::safe_container; - template<typename Iterator> friend - void safe_mode::detach_equivalent_iterators(Iterator&); -#endif - - inline void attach(safe_container_base* cont_); - - safe_container_base* cont; - safe_iterator_base* next; - bool unchecked_; -}; - -class safe_container_base:private noncopyable -{ -public: - safe_container_base(){} - -BOOST_MULTI_INDEX_PROTECTED_IF_MEMBER_TEMPLATE_FRIENDS: - friend class safe_iterator_base; - -#if !defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS) - template<typename Iterator> friend - void safe_mode::detach_equivalent_iterators(Iterator&); -#endif - - ~safe_container_base() - { - /* Detaches all remaining iterators, which by now will - * be those pointing to the end of the container. - */ - - for(safe_iterator_base* it=header.next;it;it=it->next)it->cont=0; - header.next=0; - } - - void swap(safe_container_base& x) - { - for(safe_iterator_base* it0=header.next;it0;it0=it0->next)it0->cont=&x; - for(safe_iterator_base* it1=x.header.next;it1;it1=it1->next)it1->cont=this; - std::swap(header.cont,x.header.cont); - std::swap(header.next,x.header.next); - } - - safe_iterator_base header; - -#if defined(BOOST_HAS_THREADS) - boost::detail::lightweight_mutex mutex; -#endif -}; - -void safe_iterator_base::attach(safe_container_base* cont_) -{ - cont=cont_; - if(cont){ -#if defined(BOOST_HAS_THREADS) - boost::detail::lightweight_mutex::scoped_lock lock(cont->mutex); -#endif - - next=cont->header.next; - cont->header.next=this; - } -} - -void safe_iterator_base::detach() -{ - if(cont){ -#if defined(BOOST_HAS_THREADS) - boost::detail::lightweight_mutex::scoped_lock lock(cont->mutex); -#endif - - safe_iterator_base *prev_,*next_; - for(prev_=&cont->header;(next_=prev_->next)!=this;prev_=next_){} - prev_->next=next; - cont=0; - } -} - -} /* namespace multi_index::detail */ - -namespace safe_mode{ - -/* In order to enable safe mode on a container: - * - The container must derive from safe_container<container_type>, - * - iterators must be generated via safe_iterator, which adapts a - * preexistent unsafe iterator class. - */ - -template<typename Container> -class safe_container; - -template<typename Iterator,typename Container> -class safe_iterator: - public detail::iter_adaptor<safe_iterator<Iterator,Container>,Iterator>, - public detail::safe_iterator_base -{ - typedef detail::iter_adaptor<safe_iterator,Iterator> super; - typedef detail::safe_iterator_base safe_super; - -public: - typedef Container container_type; - typedef typename Iterator::reference reference; - typedef typename Iterator::difference_type difference_type; - - safe_iterator(){} - explicit safe_iterator(safe_container<container_type>* cont_): - safe_super(cont_){} - template<typename T0> - safe_iterator(const T0& t0,safe_container<container_type>* cont_): - super(Iterator(t0)),safe_super(cont_){} - template<typename T0,typename T1> - safe_iterator( - const T0& t0,const T1& t1,safe_container<container_type>* cont_): - super(Iterator(t0,t1)),safe_super(cont_){} - - safe_iterator& operator=(const safe_iterator& x) - { - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(x); - this->base_reference()=x.base_reference(); - safe_super::operator=(x); - return *this; - } - - const container_type* owner()const - { - return - static_cast<const container_type*>( - static_cast<const safe_container<container_type>*>( - this->safe_super::owner())); - } - - /* get_node is not to be used by the user */ - - typedef typename Iterator::node_type node_type; - - node_type* get_node()const{return this->base_reference().get_node();} - -private: - friend class boost::multi_index::detail::iter_adaptor_access; - - reference dereference()const - { - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(*this); - BOOST_MULTI_INDEX_CHECK_DEREFERENCEABLE_ITERATOR(*this); - return *(this->base_reference()); - } - - bool equal(const safe_iterator& x)const - { - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(*this); - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(x); - BOOST_MULTI_INDEX_CHECK_SAME_OWNER(*this,x); - return this->base_reference()==x.base_reference(); - } - - void increment() - { - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(*this); - BOOST_MULTI_INDEX_CHECK_INCREMENTABLE_ITERATOR(*this); - ++(this->base_reference()); - } - - void decrement() - { - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(*this); - BOOST_MULTI_INDEX_CHECK_DECREMENTABLE_ITERATOR(*this); - --(this->base_reference()); - } - - void advance(difference_type n) - { - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(*this); - BOOST_MULTI_INDEX_CHECK_IN_BOUNDS(*this,n); - this->base_reference()+=n; - } - - difference_type distance_to(const safe_iterator& x)const - { - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(*this); - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(x); - BOOST_MULTI_INDEX_CHECK_SAME_OWNER(*this,x); - return x.base_reference()-this->base_reference(); - } - -#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION) - /* Serialization. Note that Iterator::save and Iterator:load - * are assumed to be defined and public: at first sight it seems - * like we could have resorted to the public serialization interface - * for doing the forwarding to the adapted iterator class: - * ar<<base_reference(); - * ar>>base_reference(); - * but this would cause incompatibilities if a saving - * program is in safe mode and the loading program is not, or - * viceversa --in safe mode, the archived iterator data is one layer - * deeper, this is especially relevant with XML archives. - * It'd be nice if Boost.Serialization provided some forwarding - * facility for use by adaptor classes. - */ - - friend class boost::serialization::access; - - BOOST_SERIALIZATION_SPLIT_MEMBER() - - template<class Archive> - void save(Archive& ar,const unsigned int version)const - { - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(*this); - this->base_reference().save(ar,version); - } - - template<class Archive> - void load(Archive& ar,const unsigned int version) - { - this->base_reference().load(ar,version); - safe_super::uncheck(); - } -#endif -}; - -template<typename Container> -class safe_container:public detail::safe_container_base -{ - typedef detail::safe_container_base super; - -public: - void detach_dereferenceable_iterators() - { - typedef typename Container::iterator iterator; - - iterator end_=static_cast<Container*>(this)->end(); - iterator *prev_,*next_; - for( - prev_=static_cast<iterator*>(&this->header); - (next_=static_cast<iterator*>(prev_->next))!=0;){ - if(*next_!=end_){ - prev_->next=next_->next; - next_->cont=0; - } - else prev_=next_; - } - } - - void swap(safe_container<Container>& x) - { - super::swap(x); - } -}; - -} /* namespace multi_index::safe_mode */ - -} /* namespace multi_index */ - -} /* namespace boost */ - -#endif /* BOOST_MULTI_INDEX_ENABLE_SAFE_MODE */ - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index/detail/scope_guard.hpp b/3rdParty/Boost/src/boost/multi_index/detail/scope_guard.hpp deleted file mode 100644 index 12624c5..0000000 --- a/3rdParty/Boost/src/boost/multi_index/detail/scope_guard.hpp +++ /dev/null @@ -1,277 +0,0 @@ -/* 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 http://www.boost.org/libs/multi_index for library home page. - */ - -#ifndef BOOST_MULTI_INDEX_DETAIL_SCOPE_GUARD_HPP -#define BOOST_MULTI_INDEX_DETAIL_SCOPE_GUARD_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -namespace boost{ - -namespace multi_index{ - -namespace detail{ - -/* Until some official version of the ScopeGuard idiom makes it into Boost, - * we locally define our own. This is a merely reformated version of - * ScopeGuard.h as defined in: - * Alexandrescu, A., Marginean, P.:"Generic<Programming>: Change the Way You - * Write Exception-Safe Code - Forever", C/C++ Users Jornal, Dec 2000, - * http://www.cuj.com/documents/s=8000/cujcexp1812alexandr/ - * with the following modifications: - * - General pretty formatting (pretty to my taste at least.) - * - Naming style changed to standard C++ library requirements. - * - safe_execute does not feature a try-catch protection, so we can - * use this even if BOOST_NO_EXCEPTIONS is defined. - * - Added scope_guard_impl4 and obj_scope_guard_impl3, (Boost.MultiIndex - * needs them). A better design would provide guards for many more - * arguments through the Boost Preprocessor Library. - * - Added scope_guard_impl_base::touch (see below.) - * - Removed RefHolder and ByRef, whose functionality is provided - * already by Boost.Ref. - * - Removed static make_guard's and make_obj_guard's, so that the code - * will work even if BOOST_NO_MEMBER_TEMPLATES is defined. This forces - * us to move some private ctors to public, though. - * - * NB: CodeWarrior Pro 8 seems to have problems looking up safe_execute - * without an explicit qualification. - */ - -class scope_guard_impl_base -{ -public: - scope_guard_impl_base():dismissed_(false){} - void dismiss()const{dismissed_=true;} - - /* This helps prevent some "unused variable" warnings under, for instance, - * GCC 3.2. - */ - void touch()const{} - -protected: - ~scope_guard_impl_base(){} - - scope_guard_impl_base(const scope_guard_impl_base& other): - dismissed_(other.dismissed_) - { - other.dismiss(); - } - - template<typename J> - static void safe_execute(J& j){if(!j.dismissed_)j.execute();} - - mutable bool dismissed_; - -private: - scope_guard_impl_base& operator=(const scope_guard_impl_base&); -}; - -typedef const scope_guard_impl_base& scope_guard; - -template<typename F> -class scope_guard_impl0:public scope_guard_impl_base -{ -public: - scope_guard_impl0(F fun):fun_(fun){} - ~scope_guard_impl0(){scope_guard_impl_base::safe_execute(*this);} - void execute(){fun_();} - -protected: - - F fun_; -}; - -template<typename F> -inline scope_guard_impl0<F> make_guard(F fun) -{ - return scope_guard_impl0<F>(fun); -} - -template<typename F,typename P1> -class scope_guard_impl1:public scope_guard_impl_base -{ -public: - scope_guard_impl1(F fun,P1 p1):fun_(fun),p1_(p1){} - ~scope_guard_impl1(){scope_guard_impl_base::safe_execute(*this);} - void execute(){fun_(p1_);} - -protected: - F fun_; - const P1 p1_; -}; - -template<typename F,typename P1> -inline scope_guard_impl1<F,P1> make_guard(F fun,P1 p1) -{ - return scope_guard_impl1<F,P1>(fun,p1); -} - -template<typename F,typename P1,typename P2> -class scope_guard_impl2:public scope_guard_impl_base -{ -public: - scope_guard_impl2(F fun,P1 p1,P2 p2):fun_(fun),p1_(p1),p2_(p2){} - ~scope_guard_impl2(){scope_guard_impl_base::safe_execute(*this);} - void execute(){fun_(p1_,p2_);} - -protected: - F fun_; - const P1 p1_; - const P2 p2_; -}; - -template<typename F,typename P1,typename P2> -inline scope_guard_impl2<F,P1,P2> make_guard(F fun,P1 p1,P2 p2) -{ - return scope_guard_impl2<F,P1,P2>(fun,p1,p2); -} - -template<typename F,typename P1,typename P2,typename P3> -class scope_guard_impl3:public scope_guard_impl_base -{ -public: - scope_guard_impl3(F fun,P1 p1,P2 p2,P3 p3):fun_(fun),p1_(p1),p2_(p2),p3_(p3){} - ~scope_guard_impl3(){scope_guard_impl_base::safe_execute(*this);} - void execute(){fun_(p1_,p2_,p3_);} - -protected: - F fun_; - const P1 p1_; - const P2 p2_; - const P3 p3_; -}; - -template<typename F,typename P1,typename P2,typename P3> -inline scope_guard_impl3<F,P1,P2,P3> make_guard(F fun,P1 p1,P2 p2,P3 p3) -{ - return scope_guard_impl3<F,P1,P2,P3>(fun,p1,p2,p3); -} - -template<typename F,typename P1,typename P2,typename P3,typename P4> -class scope_guard_impl4:public scope_guard_impl_base -{ -public: - scope_guard_impl4(F fun,P1 p1,P2 p2,P3 p3,P4 p4): - fun_(fun),p1_(p1),p2_(p2),p3_(p3),p4_(p4){} - ~scope_guard_impl4(){scope_guard_impl_base::safe_execute(*this);} - void execute(){fun_(p1_,p2_,p3_,p4_);} - -protected: - F fun_; - const P1 p1_; - const P2 p2_; - const P3 p3_; - const P4 p4_; -}; - -template<typename F,typename P1,typename P2,typename P3,typename P4> -inline scope_guard_impl4<F,P1,P2,P3,P4> make_guard( - F fun,P1 p1,P2 p2,P3 p3,P4 p4) -{ - return scope_guard_impl4<F,P1,P2,P3,P4>(fun,p1,p2,p3,p4); -} - -template<class Obj,typename MemFun> -class obj_scope_guard_impl0:public scope_guard_impl_base -{ -public: - obj_scope_guard_impl0(Obj& obj,MemFun mem_fun):obj_(obj),mem_fun_(mem_fun){} - ~obj_scope_guard_impl0(){scope_guard_impl_base::safe_execute(*this);} - void execute(){(obj_.*mem_fun_)();} - -protected: - Obj& obj_; - MemFun mem_fun_; -}; - -template<class Obj,typename MemFun> -inline obj_scope_guard_impl0<Obj,MemFun> make_obj_guard(Obj& obj,MemFun mem_fun) -{ - return obj_scope_guard_impl0<Obj,MemFun>(obj,mem_fun); -} - -template<class Obj,typename MemFun,typename P1> -class obj_scope_guard_impl1:public scope_guard_impl_base -{ -public: - obj_scope_guard_impl1(Obj& obj,MemFun mem_fun,P1 p1): - obj_(obj),mem_fun_(mem_fun),p1_(p1){} - ~obj_scope_guard_impl1(){scope_guard_impl_base::safe_execute(*this);} - void execute(){(obj_.*mem_fun_)(p1_);} - -protected: - Obj& obj_; - MemFun mem_fun_; - const P1 p1_; -}; - -template<class Obj,typename MemFun,typename P1> -inline obj_scope_guard_impl1<Obj,MemFun,P1> make_obj_guard( - Obj& obj,MemFun mem_fun,P1 p1) -{ - return obj_scope_guard_impl1<Obj,MemFun,P1>(obj,mem_fun,p1); -} - -template<class Obj,typename MemFun,typename P1,typename P2> -class obj_scope_guard_impl2:public scope_guard_impl_base -{ -public: - obj_scope_guard_impl2(Obj& obj,MemFun mem_fun,P1 p1,P2 p2): - obj_(obj),mem_fun_(mem_fun),p1_(p1),p2_(p2) - {} - ~obj_scope_guard_impl2(){scope_guard_impl_base::safe_execute(*this);} - void execute(){(obj_.*mem_fun_)(p1_,p2_);} - -protected: - Obj& obj_; - MemFun mem_fun_; - const P1 p1_; - const P2 p2_; -}; - -template<class Obj,typename MemFun,typename P1,typename P2> -inline obj_scope_guard_impl2<Obj,MemFun,P1,P2> -make_obj_guard(Obj& obj,MemFun mem_fun,P1 p1,P2 p2) -{ - return obj_scope_guard_impl2<Obj,MemFun,P1,P2>(obj,mem_fun,p1,p2); -} - -template<class Obj,typename MemFun,typename P1,typename P2,typename P3> -class obj_scope_guard_impl3:public scope_guard_impl_base -{ -public: - obj_scope_guard_impl3(Obj& obj,MemFun mem_fun,P1 p1,P2 p2,P3 p3): - obj_(obj),mem_fun_(mem_fun),p1_(p1),p2_(p2),p3_(p3) - {} - ~obj_scope_guard_impl3(){scope_guard_impl_base::safe_execute(*this);} - void execute(){(obj_.*mem_fun_)(p1_,p2_,p3_);} - -protected: - Obj& obj_; - MemFun mem_fun_; - const P1 p1_; - const P2 p2_; - const P3 p3_; -}; - -template<class Obj,typename MemFun,typename P1,typename P2,typename P3> -inline obj_scope_guard_impl3<Obj,MemFun,P1,P2,P3> -make_obj_guard(Obj& obj,MemFun mem_fun,P1 p1,P2 p2,P3 p3) -{ - return obj_scope_guard_impl3<Obj,MemFun,P1,P2,P3>(obj,mem_fun,p1,p2,p3); -} - -} /* namespace multi_index::detail */ - -} /* namespace multi_index */ - -} /* namespace boost */ - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index/detail/seq_index_node.hpp b/3rdParty/Boost/src/boost/multi_index/detail/seq_index_node.hpp deleted file mode 100644 index cf409ed..0000000 --- a/3rdParty/Boost/src/boost/multi_index/detail/seq_index_node.hpp +++ /dev/null @@ -1,223 +0,0 @@ -/* 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 http://www.boost.org/libs/multi_index for library home page. - */ - -#ifndef BOOST_MULTI_INDEX_DETAIL_SEQ_INDEX_NODE_HPP -#define BOOST_MULTI_INDEX_DETAIL_SEQ_INDEX_NODE_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */ -#include <algorithm> -#include <boost/detail/allocator_utilities.hpp> -#include <boost/multi_index/detail/prevent_eti.hpp> - -namespace boost{ - -namespace multi_index{ - -namespace detail{ - -/* doubly-linked node for use by sequenced_index */ - -template<typename Allocator> -struct sequenced_index_node_impl -{ - typedef typename prevent_eti< - Allocator, - typename boost::detail::allocator::rebind_to< - Allocator,sequenced_index_node_impl - >::type - >::type::pointer pointer; - typedef typename prevent_eti< - Allocator, - typename boost::detail::allocator::rebind_to< - Allocator,sequenced_index_node_impl - >::type - >::type::const_pointer const_pointer; - - pointer& prior(){return prior_;} - pointer prior()const{return prior_;} - pointer& next(){return next_;} - pointer next()const{return next_;} - - /* interoperability with bidir_node_iterator */ - - static void increment(pointer& x){x=x->next();} - static void decrement(pointer& x){x=x->prior();} - - /* algorithmic stuff */ - - static void link(pointer x,pointer header) - { - x->prior()=header->prior(); - x->next()=header; - x->prior()->next()=x->next()->prior()=x; - }; - - static void unlink(pointer x) - { - x->prior()->next()=x->next(); - x->next()->prior()=x->prior(); - } - - static void relink(pointer position,pointer x) - { - unlink(x); - x->prior()=position->prior(); - x->next()=position; - x->prior()->next()=x->next()->prior()=x; - } - - static void relink(pointer position,pointer x,pointer y) - { - /* position is assumed not to be in [x,y) */ - - if(x!=y){ - pointer z=y->prior(); - x->prior()->next()=y; - y->prior()=x->prior(); - x->prior()=position->prior(); - z->next()=position; - x->prior()->next()=x; - z->next()->prior()=z; - } - } - - static void reverse(pointer header) - { - pointer x=header; - do{ - pointer y=x->next(); - std::swap(x->prior(),x->next()); - x=y; - }while(x!=header); - } - - static void swap(pointer x,pointer y) - { - /* This swap function does not exchange the header nodes, - * but rather their pointers. This is *not* used for implementing - * sequenced_index::swap. - */ - - if(x->next()!=x){ - if(y->next()!=y){ - std::swap(x->next(),y->next()); - std::swap(x->prior(),y->prior()); - x->next()->prior()=x->prior()->next()=x; - y->next()->prior()=y->prior()->next()=y; - } - else{ - y->next()=x->next(); - y->prior()=x->prior(); - x->next()=x->prior()=x; - y->next()->prior()=y->prior()->next()=y; - } - } - else if(y->next()!=y){ - x->next()=y->next(); - x->prior()=y->prior(); - y->next()=y->prior()=y; - x->next()->prior()=x->prior()->next()=x; - } - } - -private: - pointer prior_; - pointer next_; -}; - -template<typename Super> -struct sequenced_index_node_trampoline: - prevent_eti< - Super, - sequenced_index_node_impl< - typename boost::detail::allocator::rebind_to< - typename Super::allocator_type, - char - >::type - > - >::type -{ - typedef typename prevent_eti< - Super, - sequenced_index_node_impl< - typename boost::detail::allocator::rebind_to< - typename Super::allocator_type, - char - >::type - > - >::type impl_type; -}; - -template<typename Super> -struct sequenced_index_node:Super,sequenced_index_node_trampoline<Super> -{ -private: - typedef sequenced_index_node_trampoline<Super> trampoline; - -public: - typedef typename trampoline::impl_type impl_type; - typedef typename trampoline::pointer impl_pointer; - typedef typename trampoline::const_pointer const_impl_pointer; - - impl_pointer& prior(){return trampoline::prior();} - impl_pointer prior()const{return trampoline::prior();} - impl_pointer& next(){return trampoline::next();} - impl_pointer next()const{return trampoline::next();} - - impl_pointer impl() - { - return static_cast<impl_pointer>( - static_cast<impl_type*>(static_cast<trampoline*>(this))); - } - - const_impl_pointer impl()const - { - return static_cast<const_impl_pointer>( - static_cast<const impl_type*>(static_cast<const trampoline*>(this))); - } - - static sequenced_index_node* from_impl(impl_pointer x) - { - return static_cast<sequenced_index_node*>( - static_cast<trampoline*>(&*x)); - } - - static const sequenced_index_node* from_impl(const_impl_pointer x) - { - return static_cast<const sequenced_index_node*>( - static_cast<const trampoline*>(&*x)); - } - - /* interoperability with bidir_node_iterator */ - - static void increment(sequenced_index_node*& x) - { - impl_pointer xi=x->impl(); - trampoline::increment(xi); - x=from_impl(xi); - } - - static void decrement(sequenced_index_node*& x) - { - impl_pointer xi=x->impl(); - trampoline::decrement(xi); - x=from_impl(xi); - } -}; - -} /* namespace multi_index::detail */ - -} /* namespace multi_index */ - -} /* namespace boost */ - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index/detail/seq_index_ops.hpp b/3rdParty/Boost/src/boost/multi_index/detail/seq_index_ops.hpp deleted file mode 100644 index 8135074..0000000 --- a/3rdParty/Boost/src/boost/multi_index/detail/seq_index_ops.hpp +++ /dev/null @@ -1,200 +0,0 @@ -/* 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 http://www.boost.org/libs/multi_index for library home page. - */ - -#ifndef BOOST_MULTI_INDEX_DETAIL_SEQ_INDEX_OPS_HPP -#define BOOST_MULTI_INDEX_DETAIL_SEQ_INDEX_OPS_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */ -#include <boost/detail/no_exceptions_support.hpp> -#include <boost/multi_index/detail/seq_index_node.hpp> -#include <boost/limits.hpp> -#include <boost/type_traits/aligned_storage.hpp> -#include <boost/type_traits/alignment_of.hpp> -#include <cstddef> - -namespace boost{ - -namespace multi_index{ - -namespace detail{ - -/* Common code for sequenced_index memfuns having templatized and - * non-templatized versions. - */ - -template <typename SequencedIndex,typename Predicate> -void sequenced_index_remove(SequencedIndex& x,Predicate pred) -{ - typedef typename SequencedIndex::iterator iterator; - iterator first=x.begin(),last=x.end(); - while(first!=last){ - if(pred(*first))x.erase(first++); - else ++first; - } -} - -template <typename SequencedIndex,class BinaryPredicate> -void sequenced_index_unique(SequencedIndex& x,BinaryPredicate binary_pred) -{ - typedef typename SequencedIndex::iterator iterator; - iterator first=x.begin(); - iterator last=x.end(); - if(first!=last){ - for(iterator middle=first;++middle!=last;middle=first){ - if(binary_pred(*middle,*first))x.erase(middle); - else first=middle; - } - } -} - -template <typename SequencedIndex,typename Compare> -void sequenced_index_merge(SequencedIndex& x,SequencedIndex& y,Compare comp) -{ - typedef typename SequencedIndex::iterator iterator; - if(&x!=&y){ - iterator first0=x.begin(),last0=x.end(); - iterator first1=y.begin(),last1=y.end(); - while(first0!=last0&&first1!=last1){ - if(comp(*first1,*first0))x.splice(first0,y,first1++); - else ++first0; - } - x.splice(last0,y,first1,last1); - } -} - -/* sorting */ - -/* auxiliary stuff */ - -template<typename Node,typename Compare> -void sequenced_index_collate( - BOOST_DEDUCED_TYPENAME Node::impl_type* x, - BOOST_DEDUCED_TYPENAME Node::impl_type* y, - Compare comp - BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(Node)) -{ - typedef typename Node::impl_type impl_type; - typedef typename Node::impl_pointer impl_pointer; - - impl_pointer first0=x->next(); - impl_pointer last0=x; - impl_pointer first1=y->next(); - impl_pointer last1=y; - while(first0!=last0&&first1!=last1){ - if(comp( - Node::from_impl(first1)->value(),Node::from_impl(first0)->value())){ - impl_pointer tmp=first1->next(); - impl_type::relink(first0,first1); - first1=tmp; - } - else first0=first0->next(); - } - impl_type::relink(last0,first1,last1); -} - -/* Some versions of CGG require a bogus typename in counter_spc - * inside sequenced_index_sort if the following is defined - * also inside sequenced_index_sort. - */ - -BOOST_STATIC_CONSTANT( - std::size_t, - sequenced_index_sort_max_fill= - (std::size_t)std::numeric_limits<std::size_t>::digits+1); - -template<typename Node,typename Compare> -void sequenced_index_sort(Node* header,Compare comp) -{ - /* Musser's mergesort, see http://www.cs.rpi.edu/~musser/gp/List/lists1.html. - * The implementation is a little convoluted: in the original code - * counter elements and carry are std::lists: here we do not want - * to use multi_index instead, so we do things at a lower level, managing - * directly the internal node representation. - * Incidentally, the implementations I've seen of this algorithm (SGI, - * Dinkumware, STLPort) are not exception-safe: this is. Moreover, we do not - * use any dynamic storage. - */ - - if(header->next()==header->impl()|| - header->next()->next()==header->impl())return; - - typedef typename Node::impl_type impl_type; - typedef typename Node::impl_pointer impl_pointer; - - typedef typename aligned_storage< - sizeof(impl_type), - alignment_of<impl_type>::value - >::type carry_spc_type; - carry_spc_type carry_spc; - impl_type& carry= - *static_cast<impl_type*>(static_cast<void*>(&carry_spc)); - typedef typename aligned_storage< - sizeof( - impl_type - [sequenced_index_sort_max_fill]), - alignment_of< - impl_type - [sequenced_index_sort_max_fill] - >::value - >::type counter_spc_type; - counter_spc_type counter_spc; - impl_type* counter= - static_cast<impl_type*>(static_cast<void*>(&counter_spc)); - std::size_t fill=0; - - carry.prior()=carry.next()=static_cast<impl_pointer>(&carry); - counter[0].prior()=counter[0].next()=static_cast<impl_pointer>(&counter[0]); - - BOOST_TRY{ - while(header->next()!=header->impl()){ - impl_type::relink(carry.next(),header->next()); - std::size_t i=0; - while(i<fill&&counter[i].next()!=static_cast<impl_pointer>(&counter[i])){ - sequenced_index_collate<Node>(&carry,&counter[i++],comp); - } - impl_type::swap( - static_cast<impl_pointer>(&carry), - static_cast<impl_pointer>(&counter[i])); - if(i==fill){ - ++fill; - counter[fill].prior()=counter[fill].next()= - static_cast<impl_pointer>(&counter[fill]); - } - } - - for(std::size_t i=1;i<fill;++i){ - sequenced_index_collate<Node>(&counter[i],&counter[i-1],comp); - } - impl_type::swap( - header->impl(),static_cast<impl_pointer>(&counter[fill-1])); - } - BOOST_CATCH(...) - { - impl_type::relink( - header->impl(),carry.next(),static_cast<impl_pointer>(&carry)); - for(std::size_t i=0;i<=fill;++i){ - impl_type::relink( - header->impl(),counter[i].next(), - static_cast<impl_pointer>(&counter[i])); - } - BOOST_RETHROW; - } - BOOST_CATCH_END -} - -} /* namespace multi_index::detail */ - -} /* namespace multi_index */ - -} /* namespace boost */ - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index/detail/serialization_version.hpp b/3rdParty/Boost/src/boost/multi_index/detail/serialization_version.hpp deleted file mode 100644 index cced78c..0000000 --- a/3rdParty/Boost/src/boost/multi_index/detail/serialization_version.hpp +++ /dev/null @@ -1,75 +0,0 @@ -/* Copyright 2003-2010 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 http://www.boost.org/libs/multi_index for library home page. - */ - -#ifndef BOOST_MULTI_INDEX_DETAIL_SERIALIZATION_VERSION_HPP -#define BOOST_MULTI_INDEX_DETAIL_SERIALIZATION_VERSION_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */ -#include <boost/serialization/split_member.hpp> -#include <boost/serialization/version.hpp> - -namespace boost{ - -namespace multi_index{ - -namespace detail{ - -/* Helper class for storing and retrieving a given type serialization class - * version while avoiding saving the number multiple times in the same - * archive. - * Behavior undefined if template partial specialization is not supported. - */ - -template<typename T> -struct serialization_version -{ - serialization_version(): - value(boost::serialization::version<serialization_version>::value){} - - serialization_version& operator=(unsigned int x){value=x;return *this;}; - - operator unsigned int()const{return value;} - -private: - friend class boost::serialization::access; - - BOOST_SERIALIZATION_SPLIT_MEMBER() - - template<class Archive> - void save(Archive&,const unsigned int)const{} - - template<class Archive> - void load(Archive&,const unsigned int version) - { - this->value=version; - } - - unsigned int value; -}; - -} /* namespace multi_index::detail */ - -} /* namespace multi_index */ - -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) -namespace serialization { -template<typename T> -struct version<boost::multi_index::detail::serialization_version<T> > -{ - BOOST_STATIC_CONSTANT(int,value=version<T>::value); -}; -} /* namespace serialization */ -#endif - -} /* namespace boost */ - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index/detail/uintptr_type.hpp b/3rdParty/Boost/src/boost/multi_index/detail/uintptr_type.hpp deleted file mode 100644 index 529c623..0000000 --- a/3rdParty/Boost/src/boost/multi_index/detail/uintptr_type.hpp +++ /dev/null @@ -1,76 +0,0 @@ -/* 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 http://www.boost.org/libs/multi_index for library home page. - */ - -#ifndef BOOST_MULTI_INDEX_DETAIL_UINTPTR_TYPE_HPP -#define BOOST_MULTI_INDEX_DETAIL_UINTPTR_TYPE_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */ -#include <boost/mpl/bool.hpp> - -namespace boost{ - -namespace multi_index{ - -namespace detail{ - -/* has_uintptr_type is an MPL integral constant determining whether - * there exists an unsigned integral type with the same size as - * void *. - * uintptr_type is such a type if has_uintptr is true, or unsigned int - * otherwise. - * Note that uintptr_type is more restrictive than C99 uintptr_t, - * where an integral type with size greater than that of void * - * would be conformant. - */ - -template<int N>struct uintptr_candidates; -template<>struct uintptr_candidates<-1>{typedef unsigned int type;}; -template<>struct uintptr_candidates<0> {typedef unsigned int type;}; -template<>struct uintptr_candidates<1> {typedef unsigned short type;}; -template<>struct uintptr_candidates<2> {typedef unsigned long type;}; - -#if defined(BOOST_HAS_LONG_LONG) -template<>struct uintptr_candidates<3> {typedef boost::ulong_long_type type;}; -#else -template<>struct uintptr_candidates<3> {typedef unsigned int type;}; -#endif - -#if defined(BOOST_HAS_MS_INT64) -template<>struct uintptr_candidates<4> {typedef unsigned __int64 type;}; -#else -template<>struct uintptr_candidates<4> {typedef unsigned int type;}; -#endif - -struct uintptr_aux -{ - BOOST_STATIC_CONSTANT(int,index= - sizeof(void*)==sizeof(uintptr_candidates<0>::type)?0: - sizeof(void*)==sizeof(uintptr_candidates<1>::type)?1: - sizeof(void*)==sizeof(uintptr_candidates<2>::type)?2: - sizeof(void*)==sizeof(uintptr_candidates<3>::type)?3: - sizeof(void*)==sizeof(uintptr_candidates<4>::type)?4:-1); - - BOOST_STATIC_CONSTANT(bool,has_uintptr_type=(index>=0)); - - typedef uintptr_candidates<index>::type type; -}; - -typedef mpl::bool_<uintptr_aux::has_uintptr_type> has_uintptr_type; -typedef uintptr_aux::type uintptr_type; - -} /* namespace multi_index::detail */ - -} /* namespace multi_index */ - -} /* namespace boost */ - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index/detail/unbounded.hpp b/3rdParty/Boost/src/boost/multi_index/detail/unbounded.hpp deleted file mode 100644 index 40c3034..0000000 --- a/3rdParty/Boost/src/boost/multi_index/detail/unbounded.hpp +++ /dev/null @@ -1,83 +0,0 @@ -/* 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 http://www.boost.org/libs/multi_index for library home page. - */ - -#ifndef BOOST_MULTI_INDEX_DETAIL_UNBOUNDED_HPP -#define BOOST_MULTI_INDEX_DETAIL_UNBOUNDED_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */ -#include <boost/detail/workaround.hpp> - -namespace boost{ - -namespace multi_index{ - -/* dummy type and variable for use in ordered_index::range() */ - -#if BOOST_WORKAROUND(BOOST_MSVC,<1300) -/* The default branch actually works for MSVC 6.0, but seems like - * this implementation of unbounded improves the performance of ordered - * indices! This behavior is hard to explain and probably a test artifact, - * but it does not hurt to have the workaround anyway. - */ - -namespace detail{struct unbounded_type{};} - -namespace{ - -static detail::unbounded_type unbounded_obj=detail::unbounded_type(); -static detail::unbounded_type& unbounded=unbounded_obj; - -} /* unnamed */ -#else -/* ODR-abiding technique shown at the example attached to - * http://lists.boost.org/Archives/boost/2006/07/108355.php - */ - -namespace detail{class unbounded_helper;} - -detail::unbounded_helper unbounded(detail::unbounded_helper); - -namespace detail{ - -class unbounded_helper -{ - unbounded_helper(){} - unbounded_helper(const unbounded_helper&){} - friend unbounded_helper multi_index::unbounded(unbounded_helper); -}; - -typedef unbounded_helper (*unbounded_type)(unbounded_helper); - -} /* namespace multi_index::detail */ - -inline detail::unbounded_helper unbounded(detail::unbounded_helper) -{ - return detail::unbounded_helper(); -} -#endif - -/* tags used in the implementation of range */ - -namespace detail{ - -struct none_unbounded_tag{}; -struct lower_unbounded_tag{}; -struct upper_unbounded_tag{}; -struct both_unbounded_tag{}; - -} /* namespace multi_index::detail */ - -} /* namespace multi_index */ - -} /* namespace boost */ - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index/detail/value_compare.hpp b/3rdParty/Boost/src/boost/multi_index/detail/value_compare.hpp deleted file mode 100644 index 0bd7b4f..0000000 --- a/3rdParty/Boost/src/boost/multi_index/detail/value_compare.hpp +++ /dev/null @@ -1,53 +0,0 @@ -/* 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 http://www.boost.org/libs/multi_index for library home page. - */ - -#ifndef BOOST_MULTI_INDEX_DETAIL_VALUE_COMPARE_HPP -#define BOOST_MULTI_INDEX_DETAIL_VALUE_COMPARE_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */ -#include <boost/call_traits.hpp> -#include <functional> - -namespace boost{ - -namespace multi_index{ - -namespace detail{ - -template<typename Value,typename KeyFromValue,typename Compare> -struct value_comparison:std::binary_function<Value,Value,bool> -{ - value_comparison( - const KeyFromValue& key_=KeyFromValue(),const Compare& comp_=Compare()): - key(key_),comp(comp_) - { - } - - bool operator()( - typename call_traits<Value>::param_type x, - typename call_traits<Value>::param_type y)const - { - return comp(key(x),key(y)); - } - -private: - KeyFromValue key; - Compare comp; -}; - -} /* namespace multi_index::detail */ - -} /* namespace multi_index */ - -} /* namespace boost */ - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index/identity.hpp b/3rdParty/Boost/src/boost/multi_index/identity.hpp deleted file mode 100644 index b402ad7..0000000 --- a/3rdParty/Boost/src/boost/multi_index/identity.hpp +++ /dev/null @@ -1,147 +0,0 @@ -/* 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 http://www.boost.org/libs/multi_index for library home page. - */ - -#ifndef BOOST_MULTI_INDEX_IDENTITY_HPP -#define BOOST_MULTI_INDEX_IDENTITY_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -#include <boost/config.hpp> -#include <boost/mpl/if.hpp> -#include <boost/multi_index/identity_fwd.hpp> -#include <boost/type_traits/is_const.hpp> -#include <boost/type_traits/remove_const.hpp> -#include <boost/utility/enable_if.hpp> - -#if !defined(BOOST_NO_SFINAE) -#include <boost/type_traits/is_convertible.hpp> -#endif - -namespace boost{ - -template<class Type> class reference_wrapper; /* fwd decl. */ - -namespace multi_index{ - -namespace detail{ - -/* identity is a do-nothing key extractor that returns the [const] Type& - * object passed. - * Additionally, identity is overloaded to support referece_wrappers - * of Type and "chained pointers" to Type's. By chained pointer to Type we - * mean a type P such that, given a p of type P - * *...n...*x is convertible to Type&, for some n>=1. - * Examples of chained pointers are raw and smart pointers, iterators and - * arbitrary combinations of these (vg. Type** or auto_ptr<Type*>.) - */ - -/* NB. Some overloads of operator() have an extra dummy parameter int=0. - * This disambiguator serves several purposes: - * - Without it, MSVC++ 6.0 incorrectly regards some overloads as - * specializations of a previous member function template. - * - MSVC++ 6.0/7.0 seem to incorrectly treat some different memfuns - * as if they have the same signature. - * - If remove_const is broken due to lack of PTS, int=0 avoids the - * declaration of memfuns with identical signature. - */ - -template<typename Type> -struct const_identity_base -{ - typedef Type result_type; - - template<typename ChainedPtr> - -#if !defined(BOOST_NO_SFINAE) - typename disable_if<is_convertible<const ChainedPtr&,Type&>,Type&>::type -#else - Type& -#endif - - operator()(const ChainedPtr& x)const - { - return operator()(*x); - } - - Type& operator()(Type& x)const - { - return x; - } - - Type& operator()(const reference_wrapper<Type>& x)const - { - return x.get(); - } - - Type& operator()( - const reference_wrapper<typename remove_const<Type>::type>& x,int=0)const - { - return x.get(); - } -}; - -template<typename Type> -struct non_const_identity_base -{ - typedef Type result_type; - - /* templatized for pointer-like types */ - - template<typename ChainedPtr> - -#if !defined(BOOST_NO_SFINAE) - typename disable_if< - is_convertible<const ChainedPtr&,const Type&>,Type&>::type -#else - Type& -#endif - - operator()(const ChainedPtr& x)const - { - return operator()(*x); - } - - const Type& operator()(const Type& x,int=0)const - { - return x; - } - - Type& operator()(Type& x)const - { - return x; - } - - const Type& operator()(const reference_wrapper<const Type>& x,int=0)const - { - return x.get(); - } - - Type& operator()(const reference_wrapper<Type>& x)const - { - return x.get(); - } -}; - -} /* namespace multi_index::detail */ - -template<class Type> -struct identity: - mpl::if_c< - is_const<Type>::value, - detail::const_identity_base<Type>,detail::non_const_identity_base<Type> - >::type -{ -}; - -} /* namespace multi_index */ - -} /* namespace boost */ - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index/identity_fwd.hpp b/3rdParty/Boost/src/boost/multi_index/identity_fwd.hpp deleted file mode 100644 index baafa43..0000000 --- a/3rdParty/Boost/src/boost/multi_index/identity_fwd.hpp +++ /dev/null @@ -1,26 +0,0 @@ -/* 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 http://www.boost.org/libs/multi_index for library home page. - */ - -#ifndef BOOST_MULTI_INDEX_IDENTITY_FWD_HPP -#define BOOST_MULTI_INDEX_IDENTITY_FWD_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -namespace boost{ - -namespace multi_index{ - -template<class Type> struct identity; - -} /* namespace multi_index */ - -} /* namespace boost */ - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index/indexed_by.hpp b/3rdParty/Boost/src/boost/multi_index/indexed_by.hpp deleted file mode 100644 index 94a8dcb..0000000 --- a/3rdParty/Boost/src/boost/multi_index/indexed_by.hpp +++ /dev/null @@ -1,72 +0,0 @@ -/* 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 http://www.boost.org/libs/multi_index for library home page. - */ - -#ifndef BOOST_MULTI_INDEX_INDEXED_BY_HPP -#define BOOST_MULTI_INDEX_INDEXED_BY_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */ -#include <boost/mpl/vector.hpp> -#include <boost/preprocessor/cat.hpp> -#include <boost/preprocessor/control/expr_if.hpp> -#include <boost/preprocessor/repetition/enum.hpp> -#include <boost/preprocessor/repetition/enum_params.hpp> - -/* An alias to mpl::vector used to hide MPL from the user. - * indexed_by contains the index specifiers for instantiation - * of a multi_index_container. - */ - -/* This user_definable macro limits the number of elements of an index list; - * useful for shortening resulting symbol names (MSVC++ 6.0, for instance, - * has problems coping with very long symbol names.) - */ - -#if !defined(BOOST_MULTI_INDEX_LIMIT_INDEXED_BY_SIZE) -#if defined(BOOST_MSVC)&&(BOOST_MSVC<1300) -#define BOOST_MULTI_INDEX_LIMIT_INDEXED_BY_SIZE 5 -#else -#define BOOST_MULTI_INDEX_LIMIT_INDEXED_BY_SIZE BOOST_MPL_LIMIT_VECTOR_SIZE -#endif -#endif - -#if BOOST_MULTI_INDEX_LIMIT_INDEXED_BY_SIZE<BOOST_MPL_LIMIT_VECTOR_SIZE -#define BOOST_MULTI_INDEX_INDEXED_BY_SIZE \ - BOOST_MULTI_INDEX_LIMIT_INDEXED_BY_SIZE -#else -#define BOOST_MULTI_INDEX_INDEXED_BY_SIZE BOOST_MPL_LIMIT_VECTOR_SIZE -#endif - -#define BOOST_MULTI_INDEX_INDEXED_BY_TEMPLATE_PARM(z,n,var) \ - typename BOOST_PP_CAT(var,n) BOOST_PP_EXPR_IF(n,=mpl::na) - -namespace boost{ - -namespace multi_index{ - -template< - BOOST_PP_ENUM( - BOOST_MULTI_INDEX_INDEXED_BY_SIZE, - BOOST_MULTI_INDEX_INDEXED_BY_TEMPLATE_PARM,T) -> -struct indexed_by: - mpl::vector<BOOST_PP_ENUM_PARAMS(BOOST_MULTI_INDEX_INDEXED_BY_SIZE,T)> -{ -}; - -} /* namespace multi_index */ - -} /* namespace boost */ - -#undef BOOST_MULTI_INDEX_INDEXED_BY_TEMPLATE_PARM -#undef BOOST_MULTI_INDEX_INDEXED_BY_SIZE - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index/member.hpp b/3rdParty/Boost/src/boost/multi_index/member.hpp deleted file mode 100644 index 848e9b2..0000000 --- a/3rdParty/Boost/src/boost/multi_index/member.hpp +++ /dev/null @@ -1,269 +0,0 @@ -/* 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 http://www.boost.org/libs/multi_index for library home page. - */ - -#ifndef BOOST_MULTI_INDEX_MEMBER_HPP -#define BOOST_MULTI_INDEX_MEMBER_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */ -#include <boost/mpl/if.hpp> -#include <boost/type_traits/is_const.hpp> -#include <boost/utility/enable_if.hpp> -#include <cstddef> - -#if !defined(BOOST_NO_SFINAE) -#include <boost/type_traits/is_convertible.hpp> -#endif - -namespace boost{ - -template<class T> class reference_wrapper; /* fwd decl. */ - -namespace multi_index{ - -namespace detail{ - -/* member is a read/write key extractor for accessing a given - * member of a class. - * Additionally, member is overloaded to support referece_wrappers - * of T and "chained pointers" to T's. By chained pointer to T we mean - * a type P such that, given a p of Type P - * *...n...*x is convertible to T&, for some n>=1. - * Examples of chained pointers are raw and smart pointers, iterators and - * arbitrary combinations of these (vg. T** or auto_ptr<T*>.) - */ - -/* NB. Some overloads of operator() have an extra dummy parameter int=0. - * This disambiguator serves several purposes: - * - Without it, MSVC++ 6.0 incorrectly regards some overloads as - * specializations of a previous member function template. - * - MSVC++ 6.0/7.0 seem to incorrectly treat some different memfuns - * as if they have the same signature. - * - If remove_const is broken due to lack of PTS, int=0 avoids the - * declaration of memfuns with identical signature. - */ - -template<class Class,typename Type,Type Class::*PtrToMember> -struct const_member_base -{ - typedef Type result_type; - - template<typename ChainedPtr> - -#if !defined(BOOST_NO_SFINAE) - typename disable_if< - is_convertible<const ChainedPtr&,const Class&>,Type&>::type -#else - Type& -#endif - - operator()(const ChainedPtr& x)const - { - return operator()(*x); - } - - Type& operator()(const Class& x)const - { - return x.*PtrToMember; - } - - Type& operator()(const reference_wrapper<const Class>& x)const - { - return operator()(x.get()); - } - - Type& operator()(const reference_wrapper<Class>& x,int=0)const - { - return operator()(x.get()); - } -}; - -template<class Class,typename Type,Type Class::*PtrToMember> -struct non_const_member_base -{ - typedef Type result_type; - - template<typename ChainedPtr> - -#if !defined(BOOST_NO_SFINAE) - typename disable_if< - is_convertible<const ChainedPtr&,const Class&>,Type&>::type -#else - Type& -#endif - - operator()(const ChainedPtr& x)const - { - return operator()(*x); - } - - const Type& operator()(const Class& x,int=0)const - { - return x.*PtrToMember; - } - - Type& operator()(Class& x)const - { - return x.*PtrToMember; - } - - const Type& operator()(const reference_wrapper<const Class>& x,int=0)const - { - return operator()(x.get()); - } - - Type& operator()(const reference_wrapper<Class>& x)const - { - return operator()(x.get()); - } -}; - -} /* namespace multi_index::detail */ - -template<class Class,typename Type,Type Class::*PtrToMember> -struct member: - mpl::if_c< - is_const<Type>::value, - detail::const_member_base<Class,Type,PtrToMember>, - detail::non_const_member_base<Class,Type,PtrToMember> - >::type -{ -}; - -namespace detail{ - -/* MSVC++ 6.0 does not support properly pointers to members as - * non-type template arguments, as reported in - * http://support.microsoft.com/default.aspx?scid=kb;EN-US;249045 - * A similar problem (though not identical) is shown by MSVC++ 7.0. - * We provide an alternative to member<> accepting offsets instead - * of pointers to members. This happens to work even for non-POD - * types (although the standard forbids use of offsetof on these), - * so it serves as a workaround in this compiler for all practical - * purposes. - * Surprisingly enough, other compilers, like Intel C++ 7.0/7.1 and - * Visual Age 6.0, have similar bugs. This replacement of member<> - * can be used for them too. - */ - -template<class Class,typename Type,std::size_t OffsetOfMember> -struct const_member_offset_base -{ - typedef Type result_type; - - template<typename ChainedPtr> - -#if !defined(BOOST_NO_SFINAE) - typename disable_if< - is_convertible<const ChainedPtr&,const Class&>,Type&>::type -#else - Type& -#endif - - operator()(const ChainedPtr& x)const - { - return operator()(*x); - } - - Type& operator()(const Class& x)const - { - return *static_cast<const Type*>( - static_cast<const void*>( - static_cast<const char*>( - static_cast<const void *>(&x))+OffsetOfMember)); - } - - Type& operator()(const reference_wrapper<const Class>& x)const - { - return operator()(x.get()); - } - - Type& operator()(const reference_wrapper<Class>& x,int=0)const - { - return operator()(x.get()); - } -}; - -template<class Class,typename Type,std::size_t OffsetOfMember> -struct non_const_member_offset_base -{ - typedef Type result_type; - - template<typename ChainedPtr> - -#if !defined(BOOST_NO_SFINAE) - typename disable_if< - is_convertible<const ChainedPtr&,const Class&>,Type&>::type -#else - Type& -#endif - - operator()(const ChainedPtr& x)const - { - return operator()(*x); - } - - const Type& operator()(const Class& x,int=0)const - { - return *static_cast<const Type*>( - static_cast<const void*>( - static_cast<const char*>( - static_cast<const void *>(&x))+OffsetOfMember)); - } - - Type& operator()(Class& x)const - { - return *static_cast<Type*>( - static_cast<void*>( - static_cast<char*>(static_cast<void *>(&x))+OffsetOfMember)); - } - - const Type& operator()(const reference_wrapper<const Class>& x,int=0)const - { - return operator()(x.get()); - } - - Type& operator()(const reference_wrapper<Class>& x)const - { - return operator()(x.get()); - } -}; - -} /* namespace multi_index::detail */ - -template<class Class,typename Type,std::size_t OffsetOfMember> -struct member_offset: - mpl::if_c< - is_const<Type>::value, - detail::const_member_offset_base<Class,Type,OffsetOfMember>, - detail::non_const_member_offset_base<Class,Type,OffsetOfMember> - >::type -{ -}; - -/* BOOST_MULTI_INDEX_MEMBER resolves to member in the normal cases, - * and to member_offset as a workaround in those defective compilers for - * which BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS is defined. - */ - -#if defined(BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS) -#define BOOST_MULTI_INDEX_MEMBER(Class,Type,MemberName) \ -::boost::multi_index::member_offset< Class,Type,offsetof(Class,MemberName) > -#else -#define BOOST_MULTI_INDEX_MEMBER(Class,Type,MemberName) \ -::boost::multi_index::member< Class,Type,&Class::MemberName > -#endif - -} /* namespace multi_index */ - -} /* namespace boost */ - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index/ordered_index.hpp b/3rdParty/Boost/src/boost/multi_index/ordered_index.hpp deleted file mode 100644 index a49e4cf..0000000 --- a/3rdParty/Boost/src/boost/multi_index/ordered_index.hpp +++ /dev/null @@ -1,1390 +0,0 @@ -/* Copyright 2003-2010 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 http://www.boost.org/libs/multi_index for library home page. - * - * The internal implementation of red-black trees is based on that of SGI STL - * stl_tree.h file: - * - * Copyright (c) 1996,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 (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. - * - */ - -#ifndef BOOST_MULTI_INDEX_ORDERED_INDEX_HPP -#define BOOST_MULTI_INDEX_ORDERED_INDEX_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */ -#include <algorithm> -#include <boost/call_traits.hpp> -#include <boost/detail/no_exceptions_support.hpp> -#include <boost/detail/workaround.hpp> -#include <boost/iterator/reverse_iterator.hpp> -#include <boost/mpl/if.hpp> -#include <boost/mpl/push_front.hpp> -#include <boost/multi_index/detail/access_specifier.hpp> -#include <boost/multi_index/detail/bidir_node_iterator.hpp> -#include <boost/multi_index/detail/index_node_base.hpp> -#include <boost/multi_index/detail/modify_key_adaptor.hpp> -#include <boost/multi_index/detail/ord_index_node.hpp> -#include <boost/multi_index/detail/ord_index_ops.hpp> -#include <boost/multi_index/detail/safe_ctr_proxy.hpp> -#include <boost/multi_index/detail/safe_mode.hpp> -#include <boost/multi_index/detail/scope_guard.hpp> -#include <boost/multi_index/detail/unbounded.hpp> -#include <boost/multi_index/detail/value_compare.hpp> -#include <boost/multi_index/ordered_index_fwd.hpp> -#include <boost/ref.hpp> -#include <boost/tuple/tuple.hpp> -#include <boost/type_traits/is_same.hpp> -#include <utility> - -#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION) -#include <boost/archive/archive_exception.hpp> -#include <boost/bind.hpp> -#include <boost/multi_index/detail/duplicates_iterator.hpp> -#include <boost/throw_exception.hpp> -#endif - -#if defined(BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING) -#define BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT \ - detail::scope_guard BOOST_JOIN(check_invariant_,__LINE__)= \ - detail::make_obj_guard(*this,&ordered_index::check_invariant_); \ - BOOST_JOIN(check_invariant_,__LINE__).touch(); -#else -#define BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT -#endif - -namespace boost{ - -namespace multi_index{ - -namespace detail{ - -/* ordered_index adds a layer of ordered indexing to a given Super */ - -/* Most of the implementation of unique and non-unique indices is - * shared. We tell from one another on instantiation time by using - * these tags. - */ - -struct ordered_unique_tag{}; -struct ordered_non_unique_tag{}; - -template< - typename KeyFromValue,typename Compare, - typename SuperMeta,typename TagList,typename Category -> -class ordered_index: - BOOST_MULTI_INDEX_PROTECTED_IF_MEMBER_TEMPLATE_FRIENDS SuperMeta::type - -#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE) -#if BOOST_WORKAROUND(BOOST_MSVC,<1300) - ,public safe_ctr_proxy_impl< - bidir_node_iterator< - ordered_index_node<typename SuperMeta::type::node_type> >, - ordered_index<KeyFromValue,Compare,SuperMeta,TagList,Category> > -#else - ,public safe_mode::safe_container< - ordered_index<KeyFromValue,Compare,SuperMeta,TagList,Category> > -#endif -#endif - -{ -#if defined(BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING)&&\ - BOOST_WORKAROUND(__MWERKS__,<=0x3003) -/* The "ISO C++ Template Parser" option in CW8.3 has a problem with the - * lifetime of const references bound to temporaries --precisely what - * scopeguards are. - */ - -#pragma parse_mfunc_templ off -#endif - - typedef typename SuperMeta::type super; - -protected: - typedef ordered_index_node< - typename super::node_type> node_type; - -private: - typedef typename node_type::impl_type node_impl_type; - typedef typename node_impl_type::pointer node_impl_pointer; - -public: - /* types */ - - typedef typename KeyFromValue::result_type key_type; - typedef typename node_type::value_type value_type; - typedef KeyFromValue key_from_value; - typedef Compare key_compare; - typedef value_comparison< - value_type,KeyFromValue,Compare> value_compare; - typedef tuple<key_from_value,key_compare> ctor_args; - typedef typename super::final_allocator_type allocator_type; - typedef typename allocator_type::reference reference; - typedef typename allocator_type::const_reference const_reference; - -#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE) -#if BOOST_WORKAROUND(BOOST_MSVC,<1300) - typedef safe_mode::safe_iterator< - bidir_node_iterator<node_type>, - safe_ctr_proxy< - bidir_node_iterator<node_type> > > iterator; -#else - typedef safe_mode::safe_iterator< - bidir_node_iterator<node_type>, - ordered_index> iterator; -#endif -#else - typedef bidir_node_iterator<node_type> iterator; -#endif - - typedef iterator const_iterator; - - typedef std::size_t size_type; - typedef std::ptrdiff_t difference_type; - typedef typename allocator_type::pointer pointer; - typedef typename allocator_type::const_pointer const_pointer; - typedef typename - boost::reverse_iterator<iterator> reverse_iterator; - typedef typename - boost::reverse_iterator<const_iterator> const_reverse_iterator; - typedef TagList tag_list; - -protected: - typedef typename super::final_node_type final_node_type; - typedef tuples::cons< - ctor_args, - typename super::ctor_args_list> ctor_args_list; - typedef typename mpl::push_front< - typename super::index_type_list, - ordered_index>::type index_type_list; - typedef typename mpl::push_front< - typename super::iterator_type_list, - iterator>::type iterator_type_list; - typedef typename mpl::push_front< - typename super::const_iterator_type_list, - const_iterator>::type const_iterator_type_list; - typedef typename super::copy_map_type copy_map_type; - -#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION) - typedef typename super::index_saver_type index_saver_type; - typedef typename super::index_loader_type index_loader_type; -#endif - -private: -#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE) -#if BOOST_WORKAROUND(BOOST_MSVC,<1300) - typedef safe_ctr_proxy_impl< - bidir_node_iterator<node_type>, - ordered_index> safe_super; -#else - typedef safe_mode::safe_container<ordered_index> safe_super; -#endif -#endif - - typedef typename call_traits< - value_type>::param_type value_param_type; - typedef typename call_traits< - key_type>::param_type key_param_type; - -public: - - /* construct/copy/destroy - * Default and copy ctors are in the protected section as indices are - * not supposed to be created on their own. No range ctor either. - */ - - ordered_index<KeyFromValue,Compare,SuperMeta,TagList,Category>& operator=( - const ordered_index<KeyFromValue,Compare,SuperMeta,TagList,Category>& x) - { - this->final()=x.final(); - return *this; - } - - allocator_type get_allocator()const - { - return this->final().get_allocator(); - } - - /* iterators */ - - iterator begin(){return make_iterator(leftmost());} - const_iterator begin()const{return make_iterator(leftmost());} - iterator end(){return make_iterator(header());} - const_iterator end()const{return make_iterator(header());} - reverse_iterator rbegin(){return make_reverse_iterator(end());} - const_reverse_iterator rbegin()const{return make_reverse_iterator(end());} - reverse_iterator rend(){return make_reverse_iterator(begin());} - const_reverse_iterator rend()const{return make_reverse_iterator(begin());} - const_iterator cbegin()const{return begin();} - const_iterator cend()const{return end();} - const_reverse_iterator crbegin()const{return rbegin();} - const_reverse_iterator crend()const{return rend();} - - iterator iterator_to(const value_type& x) - { - return make_iterator(node_from_value<node_type>(&x)); - } - - const_iterator iterator_to(const value_type& x)const - { - return make_iterator(node_from_value<node_type>(&x)); - } - - /* capacity */ - - bool empty()const{return this->final_empty_();} - size_type size()const{return this->final_size_();} - size_type max_size()const{return this->final_max_size_();} - - /* modifiers */ - - std::pair<iterator,bool> insert(value_param_type x) - { - BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT; - std::pair<final_node_type*,bool> p=this->final_insert_(x); - return std::pair<iterator,bool>(make_iterator(p.first),p.second); - } - - iterator insert(iterator position,value_param_type x) - { - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position); - BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this); - BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT; - std::pair<final_node_type*,bool> p=this->final_insert_( - x,static_cast<final_node_type*>(position.get_node())); - return make_iterator(p.first); - } - - template<typename InputIterator> - void insert(InputIterator first,InputIterator last) - { - BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT; - iterator hint=end(); - for(;first!=last;++first)hint=insert(hint,*first); - } - - iterator erase(iterator position) - { - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position); - BOOST_MULTI_INDEX_CHECK_DEREFERENCEABLE_ITERATOR(position); - BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this); - BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT; - this->final_erase_(static_cast<final_node_type*>(position++.get_node())); - return position; - } - - size_type erase(key_param_type x) - { - BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT; - std::pair<iterator,iterator> p=equal_range(x); - size_type s=0; - while(p.first!=p.second){ - p.first=erase(p.first); - ++s; - } - return s; - } - - iterator erase(iterator first,iterator last) - { - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(first); - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(last); - BOOST_MULTI_INDEX_CHECK_IS_OWNER(first,*this); - BOOST_MULTI_INDEX_CHECK_IS_OWNER(last,*this); - BOOST_MULTI_INDEX_CHECK_VALID_RANGE(first,last); - BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT; - while(first!=last){ - first=erase(first); - } - return first; - } - - bool replace(iterator position,value_param_type x) - { - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position); - BOOST_MULTI_INDEX_CHECK_DEREFERENCEABLE_ITERATOR(position); - BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this); - BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT; - return this->final_replace_( - x,static_cast<final_node_type*>(position.get_node())); - } - - template<typename Modifier> - bool modify(iterator position,Modifier mod) - { - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position); - BOOST_MULTI_INDEX_CHECK_DEREFERENCEABLE_ITERATOR(position); - BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this); - BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT; - -#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE) - /* MSVC++ 6.0 optimizer on safe mode code chokes if this - * this is not added. Left it for all compilers as it does no - * harm. - */ - - position.detach(); -#endif - - return this->final_modify_( - mod,static_cast<final_node_type*>(position.get_node())); - } - - template<typename Modifier,typename Rollback> - bool modify(iterator position,Modifier mod,Rollback back) - { - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position); - BOOST_MULTI_INDEX_CHECK_DEREFERENCEABLE_ITERATOR(position); - BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this); - BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT; - -#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE) - /* MSVC++ 6.0 optimizer on safe mode code chokes if this - * this is not added. Left it for all compilers as it does no - * harm. - */ - - position.detach(); -#endif - - return this->final_modify_( - mod,back,static_cast<final_node_type*>(position.get_node())); - } - - template<typename Modifier> - bool modify_key(iterator position,Modifier mod) - { - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position); - BOOST_MULTI_INDEX_CHECK_DEREFERENCEABLE_ITERATOR(position); - BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this); - BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT; - return modify( - position,modify_key_adaptor<Modifier,value_type,KeyFromValue>(mod,key)); - } - - template<typename Modifier,typename Rollback> - bool modify_key(iterator position,Modifier mod,Rollback back) - { - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position); - BOOST_MULTI_INDEX_CHECK_DEREFERENCEABLE_ITERATOR(position); - BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this); - BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT; - return modify( - position, - modify_key_adaptor<Modifier,value_type,KeyFromValue>(mod,key), - modify_key_adaptor<Rollback,value_type,KeyFromValue>(back,key)); - } - - void swap(ordered_index<KeyFromValue,Compare,SuperMeta,TagList,Category>& x) - { - BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT; - this->final_swap_(x.final()); - } - - void clear() - { - BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT; - this->final_clear_(); - } - - /* observers */ - - key_from_value key_extractor()const{return key;} - key_compare key_comp()const{return comp;} - value_compare value_comp()const{return value_compare(key,comp);} - - /* set operations */ - - /* Internally, these ops rely on const_iterator being the same - * type as iterator. - */ - - template<typename CompatibleKey> - iterator find(const CompatibleKey& x)const - { - return make_iterator(ordered_index_find(root(),header(),key,x,comp)); - } - - template<typename CompatibleKey,typename CompatibleCompare> - iterator find( - const CompatibleKey& x,const CompatibleCompare& comp)const - { - return make_iterator(ordered_index_find(root(),header(),key,x,comp)); - } - - template<typename CompatibleKey> - size_type count(const CompatibleKey& x)const - { - return count(x,comp); - } - - template<typename CompatibleKey,typename CompatibleCompare> - size_type count(const CompatibleKey& x,const CompatibleCompare& comp)const - { - std::pair<iterator,iterator> p=equal_range(x,comp); - size_type n=std::distance(p.first,p.second); - return n; - } - - template<typename CompatibleKey> - iterator lower_bound(const CompatibleKey& x)const - { - return make_iterator( - ordered_index_lower_bound(root(),header(),key,x,comp)); - } - - template<typename CompatibleKey,typename CompatibleCompare> - iterator lower_bound( - const CompatibleKey& x,const CompatibleCompare& comp)const - { - return make_iterator( - ordered_index_lower_bound(root(),header(),key,x,comp)); - } - - template<typename CompatibleKey> - iterator upper_bound(const CompatibleKey& x)const - { - return make_iterator( - ordered_index_upper_bound(root(),header(),key,x,comp)); - } - - template<typename CompatibleKey,typename CompatibleCompare> - iterator upper_bound( - const CompatibleKey& x,const CompatibleCompare& comp)const - { - return make_iterator( - ordered_index_upper_bound(root(),header(),key,x,comp)); - } - - template<typename CompatibleKey> - std::pair<iterator,iterator> equal_range( - const CompatibleKey& x)const - { - std::pair<node_type*,node_type*> p= - ordered_index_equal_range(root(),header(),key,x,comp); - return std::pair<iterator,iterator>( - make_iterator(p.first),make_iterator(p.second)); - } - - template<typename CompatibleKey,typename CompatibleCompare> - std::pair<iterator,iterator> equal_range( - const CompatibleKey& x,const CompatibleCompare& comp)const - { - std::pair<node_type*,node_type*> p= - ordered_index_equal_range(root(),header(),key,x,comp); - return std::pair<iterator,iterator>( - make_iterator(p.first),make_iterator(p.second)); - } - - /* range */ - - template<typename LowerBounder,typename UpperBounder> - std::pair<iterator,iterator> - range(LowerBounder lower,UpperBounder upper)const - { - typedef typename mpl::if_< - is_same<LowerBounder,unbounded_type>, - BOOST_DEDUCED_TYPENAME mpl::if_< - is_same<UpperBounder,unbounded_type>, - both_unbounded_tag, - lower_unbounded_tag - >::type, - BOOST_DEDUCED_TYPENAME mpl::if_< - is_same<UpperBounder,unbounded_type>, - upper_unbounded_tag, - none_unbounded_tag - >::type - >::type dispatch; - - return range(lower,upper,dispatch()); - } - -BOOST_MULTI_INDEX_PROTECTED_IF_MEMBER_TEMPLATE_FRIENDS: - ordered_index(const ctor_args_list& args_list,const allocator_type& al): - super(args_list.get_tail(),al), - key(tuples::get<0>(args_list.get_head())), - comp(tuples::get<1>(args_list.get_head())) - { - empty_initialize(); - } - - ordered_index( - const ordered_index<KeyFromValue,Compare,SuperMeta,TagList,Category>& x): - super(x), - -#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE) - safe_super(), -#endif - - key(x.key), - comp(x.comp) - { - /* Copy ctor just takes the key and compare objects from x. The rest is - * done in subsequent call to copy_(). - */ - } - - ~ordered_index() - { - /* the container is guaranteed to be empty by now */ - } - -#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE) - iterator make_iterator(node_type* node){return iterator(node,this);} - const_iterator make_iterator(node_type* node)const - {return const_iterator(node,const_cast<ordered_index*>(this));} -#else - iterator make_iterator(node_type* node){return iterator(node);} - const_iterator make_iterator(node_type* node)const - {return const_iterator(node);} -#endif - - void copy_( - const ordered_index<KeyFromValue,Compare,SuperMeta,TagList,Category>& x, - const copy_map_type& map) - { - if(!x.root()){ - empty_initialize(); - } - else{ - header()->color()=x.header()->color(); - - node_type* root_cpy=map.find(static_cast<final_node_type*>(x.root())); - header()->parent()=root_cpy->impl(); - - node_type* leftmost_cpy=map.find( - static_cast<final_node_type*>(x.leftmost())); - header()->left()=leftmost_cpy->impl(); - - node_type* rightmost_cpy=map.find( - static_cast<final_node_type*>(x.rightmost())); - header()->right()=rightmost_cpy->impl(); - - typedef typename copy_map_type::const_iterator copy_map_iterator; - for(copy_map_iterator it=map.begin(),it_end=map.end();it!=it_end;++it){ - node_type* org=it->first; - node_type* cpy=it->second; - - cpy->color()=org->color(); - - node_impl_pointer parent_org=org->parent(); - if(parent_org==node_impl_pointer(0))cpy->parent()=node_impl_pointer(0); - else{ - node_type* parent_cpy=map.find( - static_cast<final_node_type*>(node_type::from_impl(parent_org))); - cpy->parent()=parent_cpy->impl(); - if(parent_org->left()==org->impl()){ - parent_cpy->left()=cpy->impl(); - } - else if(parent_org->right()==org->impl()){ - /* header() does not satisfy this nor the previous check */ - parent_cpy->right()=cpy->impl(); - } - } - - if(org->left()==node_impl_pointer(0)) - cpy->left()=node_impl_pointer(0); - if(org->right()==node_impl_pointer(0)) - cpy->right()=node_impl_pointer(0); - } - } - - super::copy_(x,map); - } - - node_type* insert_(value_param_type v,node_type* x) - { - link_info inf; - if(!link_point(key(v),inf,Category())){ - return node_type::from_impl(inf.pos); - } - - node_type* res=static_cast<node_type*>(super::insert_(v,x)); - if(res==x){ - node_impl_type::link(x->impl(),inf.side,inf.pos,header()->impl()); - } - return res; - } - - node_type* insert_(value_param_type v,node_type* position,node_type* x) - { - link_info inf; - if(!hinted_link_point(key(v),position,inf,Category())){ - return node_type::from_impl(inf.pos); - } - - node_type* res=static_cast<node_type*>(super::insert_(v,position,x)); - if(res==x){ - node_impl_type::link(x->impl(),inf.side,inf.pos,header()->impl()); - } - return res; - } - - void erase_(node_type* x) - { - node_impl_type::rebalance_for_erase( - x->impl(),header()->parent(),header()->left(),header()->right()); - super::erase_(x); - -#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE) - detach_iterators(x); -#endif - } - - void delete_all_nodes_() - { - delete_all_nodes(root()); - } - - void clear_() - { - super::clear_(); - empty_initialize(); - -#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE) - safe_super::detach_dereferenceable_iterators(); -#endif - } - - void swap_(ordered_index<KeyFromValue,Compare,SuperMeta,TagList,Category>& x) - { - std::swap(key,x.key); - std::swap(comp,x.comp); - -#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE) - safe_super::swap(x); -#endif - - super::swap_(x); - } - - bool replace_(value_param_type v,node_type* x) - { - if(in_place(v,x,Category())){ - return super::replace_(v,x); - } - - node_type* next=x; - node_type::increment(next); - - node_impl_type::rebalance_for_erase( - x->impl(),header()->parent(),header()->left(),header()->right()); - - BOOST_TRY{ - link_info inf; - if(link_point(key(v),inf,Category())&&super::replace_(v,x)){ - node_impl_type::link(x->impl(),inf.side,inf.pos,header()->impl()); - return true; - } - node_impl_type::restore(x->impl(),next->impl(),header()->impl()); - return false; - } - BOOST_CATCH(...){ - node_impl_type::restore(x->impl(),next->impl(),header()->impl()); - BOOST_RETHROW; - } - BOOST_CATCH_END - } - - bool modify_(node_type* x) - { - bool b; - BOOST_TRY{ - b=in_place(x->value(),x,Category()); - } - BOOST_CATCH(...){ - erase_(x); - BOOST_RETHROW; - } - BOOST_CATCH_END - if(!b){ - node_impl_type::rebalance_for_erase( - x->impl(),header()->parent(),header()->left(),header()->right()); - BOOST_TRY{ - link_info inf; - if(!link_point(key(x->value()),inf,Category())){ - super::erase_(x); - -#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE) - detach_iterators(x); -#endif - return false; - } - node_impl_type::link(x->impl(),inf.side,inf.pos,header()->impl()); - } - BOOST_CATCH(...){ - super::erase_(x); - -#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE) - detach_iterators(x); -#endif - - BOOST_RETHROW; - } - BOOST_CATCH_END - } - - BOOST_TRY{ - if(!super::modify_(x)){ - node_impl_type::rebalance_for_erase( - x->impl(),header()->parent(),header()->left(),header()->right()); - -#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE) - detach_iterators(x); -#endif - - return false; - } - else return true; - } - BOOST_CATCH(...){ - node_impl_type::rebalance_for_erase( - x->impl(),header()->parent(),header()->left(),header()->right()); - -#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE) - detach_iterators(x); -#endif - - BOOST_RETHROW; - } - BOOST_CATCH_END - } - - bool modify_rollback_(node_type* x) - { - if(in_place(x->value(),x,Category())){ - return super::modify_rollback_(x); - } - - node_type* next=x; - node_type::increment(next); - - node_impl_type::rebalance_for_erase( - x->impl(),header()->parent(),header()->left(),header()->right()); - - BOOST_TRY{ - link_info inf; - if(link_point(key(x->value()),inf,Category())&& - super::modify_rollback_(x)){ - node_impl_type::link(x->impl(),inf.side,inf.pos,header()->impl()); - return true; - } - node_impl_type::restore(x->impl(),next->impl(),header()->impl()); - return false; - } - BOOST_CATCH(...){ - node_impl_type::restore(x->impl(),next->impl(),header()->impl()); - BOOST_RETHROW; - } - BOOST_CATCH_END - } - -#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION) - /* serialization */ - - template<typename Archive> - void save_( - Archive& ar,const unsigned int version,const index_saver_type& sm)const - { - save_(ar,version,sm,Category()); - } - - template<typename Archive> - void load_(Archive& ar,const unsigned int version,const index_loader_type& lm) - { - load_(ar,version,lm,Category()); - } -#endif - -#if defined(BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING) - /* invariant stuff */ - - bool invariant_()const - { - if(size()==0||begin()==end()){ - if(size()!=0||begin()!=end()|| - header()->left()!=header()->impl()|| - header()->right()!=header()->impl())return false; - } - else{ - if((size_type)std::distance(begin(),end())!=size())return false; - - std::size_t len=node_impl_type::black_count( - leftmost()->impl(),root()->impl()); - for(const_iterator it=begin(),it_end=end();it!=it_end;++it){ - node_type* x=it.get_node(); - node_type* left_x=node_type::from_impl(x->left()); - node_type* right_x=node_type::from_impl(x->right()); - - if(x->color()==red){ - if((left_x&&left_x->color()==red)|| - (right_x&&right_x->color()==red))return false; - } - if(left_x&&comp(key(x->value()),key(left_x->value())))return false; - if(right_x&&comp(key(right_x->value()),key(x->value())))return false; - if(!left_x&&!right_x&& - node_impl_type::black_count(x->impl(),root()->impl())!=len) - return false; - } - - if(leftmost()->impl()!=node_impl_type::minimum(root()->impl())) - return false; - if(rightmost()->impl()!=node_impl_type::maximum(root()->impl())) - return false; - } - - return super::invariant_(); - } - - - /* This forwarding function eases things for the boost::mem_fn construct - * in BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT. Actually, - * final_check_invariant is already an inherited member function of - * ordered_index. - */ - void check_invariant_()const{this->final_check_invariant_();} -#endif - -private: - node_type* header()const{return this->final_header();} - node_type* root()const{return node_type::from_impl(header()->parent());} - node_type* leftmost()const{return node_type::from_impl(header()->left());} - node_type* rightmost()const{return node_type::from_impl(header()->right());} - - void empty_initialize() - { - header()->color()=red; - /* used to distinguish header() from root, in iterator.operator++ */ - - header()->parent()=node_impl_pointer(0); - header()->left()=header()->impl(); - header()->right()=header()->impl(); - } - - struct link_info - { - link_info():side(to_left){} - - ordered_index_side side; - node_impl_pointer pos; - }; - - bool link_point(key_param_type k,link_info& inf,ordered_unique_tag) - { - node_type* y=header(); - node_type* x=root(); - bool c=true; - while(x){ - y=x; - c=comp(k,key(x->value())); - x=node_type::from_impl(c?x->left():x->right()); - } - node_type* yy=y; - if(c){ - if(yy==leftmost()){ - inf.side=to_left; - inf.pos=y->impl(); - return true; - } - else node_type::decrement(yy); - } - - if(comp(key(yy->value()),k)){ - inf.side=c?to_left:to_right; - inf.pos=y->impl(); - return true; - } - else{ - inf.pos=yy->impl(); - return false; - } - } - - bool link_point(key_param_type k,link_info& inf,ordered_non_unique_tag) - { - node_type* y=header(); - node_type* x=root(); - bool c=true; - while (x){ - y=x; - c=comp(k,key(x->value())); - x=node_type::from_impl(c?x->left():x->right()); - } - inf.side=c?to_left:to_right; - inf.pos=y->impl(); - return true; - } - - bool lower_link_point(key_param_type k,link_info& inf,ordered_non_unique_tag) - { - node_type* y=header(); - node_type* x=root(); - bool c=false; - while (x){ - y=x; - c=comp(key(x->value()),k); - x=node_type::from_impl(c?x->right():x->left()); - } - inf.side=c?to_right:to_left; - inf.pos=y->impl(); - return true; - } - - bool hinted_link_point( - key_param_type k,node_type* position,link_info& inf,ordered_unique_tag) - { - if(position->impl()==header()->left()){ - if(size()>0&&comp(k,key(position->value()))){ - inf.side=to_left; - inf.pos=position->impl(); - return true; - } - else return link_point(k,inf,ordered_unique_tag()); - } - else if(position==header()){ - if(comp(key(rightmost()->value()),k)){ - inf.side=to_right; - inf.pos=rightmost()->impl(); - return true; - } - else return link_point(k,inf,ordered_unique_tag()); - } - else{ - node_type* before=position; - node_type::decrement(before); - if(comp(key(before->value()),k)&&comp(k,key(position->value()))){ - if(before->right()==node_impl_pointer(0)){ - inf.side=to_right; - inf.pos=before->impl(); - return true; - } - else{ - inf.side=to_left; - inf.pos=position->impl(); - return true; - } - } - else return link_point(k,inf,ordered_unique_tag()); - } - } - - bool hinted_link_point( - key_param_type k,node_type* position,link_info& inf,ordered_non_unique_tag) - { - if(position->impl()==header()->left()){ - if(size()>0&&!comp(key(position->value()),k)){ - inf.side=to_left; - inf.pos=position->impl(); - return true; - } - else return lower_link_point(k,inf,ordered_non_unique_tag()); - } - else if(position==header()){ - if(!comp(k,key(rightmost()->value()))){ - inf.side=to_right; - inf.pos=rightmost()->impl(); - return true; - } - else return link_point(k,inf,ordered_non_unique_tag()); - } - else{ - node_type* before=position; - node_type::decrement(before); - if(!comp(k,key(before->value()))){ - if(!comp(key(position->value()),k)){ - if(before->right()==node_impl_pointer(0)){ - inf.side=to_right; - inf.pos=before->impl(); - return true; - } - else{ - inf.side=to_left; - inf.pos=position->impl(); - return true; - } - } - else return lower_link_point(k,inf,ordered_non_unique_tag()); - } - else return link_point(k,inf,ordered_non_unique_tag()); - } - } - - void delete_all_nodes(node_type* x) - { - if(!x)return; - - delete_all_nodes(node_type::from_impl(x->left())); - delete_all_nodes(node_type::from_impl(x->right())); - this->final_delete_node_(static_cast<final_node_type*>(x)); - } - - bool in_place(value_param_type v,node_type* x,ordered_unique_tag) - { - node_type* y; - if(x!=leftmost()){ - y=x; - node_type::decrement(y); - if(!comp(key(y->value()),key(v)))return false; - } - - y=x; - node_type::increment(y); - return y==header()||comp(key(v),key(y->value())); - } - - bool in_place(value_param_type v,node_type* x,ordered_non_unique_tag) - { - node_type* y; - if(x!=leftmost()){ - y=x; - node_type::decrement(y); - if(comp(key(v),key(y->value())))return false; - } - - y=x; - node_type::increment(y); - return y==header()||!comp(key(y->value()),key(v)); - } - -#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE) - void detach_iterators(node_type* x) - { - iterator it=make_iterator(x); - safe_mode::detach_equivalent_iterators(it); - } -#endif - - template<typename LowerBounder,typename UpperBounder> - std::pair<iterator,iterator> - range(LowerBounder lower,UpperBounder upper,none_unbounded_tag)const - { - node_type* y=header(); - node_type* z=root(); - - while(z){ - if(!lower(key(z->value()))){ - z=node_type::from_impl(z->right()); - } - else if(!upper(key(z->value()))){ - y=z; - z=node_type::from_impl(z->left()); - } - else{ - return std::pair<iterator,iterator>( - make_iterator( - lower_range(node_type::from_impl(z->left()),z,lower)), - make_iterator( - upper_range(node_type::from_impl(z->right()),y,upper))); - } - } - - return std::pair<iterator,iterator>(make_iterator(y),make_iterator(y)); - } - - template<typename LowerBounder,typename UpperBounder> - std::pair<iterator,iterator> - range(LowerBounder,UpperBounder upper,lower_unbounded_tag)const - { - return std::pair<iterator,iterator>( - begin(), - make_iterator(upper_range(root(),header(),upper))); - } - - template<typename LowerBounder,typename UpperBounder> - std::pair<iterator,iterator> - range(LowerBounder lower,UpperBounder,upper_unbounded_tag)const - { - return std::pair<iterator,iterator>( - make_iterator(lower_range(root(),header(),lower)), - end()); - } - - template<typename LowerBounder,typename UpperBounder> - std::pair<iterator,iterator> - range(LowerBounder,UpperBounder,both_unbounded_tag)const - { - return std::pair<iterator,iterator>(begin(),end()); - } - - template<typename LowerBounder> - node_type * lower_range(node_type* top,node_type* y,LowerBounder lower)const - { - while(top){ - if(lower(key(top->value()))){ - y=top; - top=node_type::from_impl(top->left()); - } - else top=node_type::from_impl(top->right()); - } - - return y; - } - - template<typename UpperBounder> - node_type * upper_range(node_type* top,node_type* y,UpperBounder upper)const - { - while(top){ - if(!upper(key(top->value()))){ - y=top; - top=node_type::from_impl(top->left()); - } - else top=node_type::from_impl(top->right()); - } - - return y; - } - -#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION) - template<typename Archive> - void save_( - Archive& ar,const unsigned int version,const index_saver_type& sm, - ordered_unique_tag)const - { - super::save_(ar,version,sm); - } - - template<typename Archive> - void load_( - Archive& ar,const unsigned int version,const index_loader_type& lm, - ordered_unique_tag) - { - super::load_(ar,version,lm); - } - - template<typename Archive> - void save_( - Archive& ar,const unsigned int version,const index_saver_type& sm, - ordered_non_unique_tag)const - { - typedef duplicates_iterator<node_type,value_compare> dup_iterator; - - sm.save( - dup_iterator(begin().get_node(),end().get_node(),value_comp()), - dup_iterator(end().get_node(),value_comp()), - ar,version); - super::save_(ar,version,sm); - } - - template<typename Archive> - void load_( - Archive& ar,const unsigned int version,const index_loader_type& lm, - ordered_non_unique_tag) - { - lm.load( - ::boost::bind(&ordered_index::rearranger,this,_1,_2), - ar,version); - super::load_(ar,version,lm); - } - - void rearranger(node_type* position,node_type *x) - { - if(!position||comp(key(position->value()),key(x->value()))){ - position=lower_bound(key(x->value())).get_node(); - } - else if(comp(key(x->value()),key(position->value()))){ - /* inconsistent rearrangement */ - throw_exception( - archive::archive_exception( - archive::archive_exception::other_exception)); - } - else node_type::increment(position); - - if(position!=x){ - node_impl_type::rebalance_for_erase( - x->impl(),header()->parent(),header()->left(),header()->right()); - node_impl_type::restore( - x->impl(),position->impl(),header()->impl()); - } - } -#endif /* serialization */ - - key_from_value key; - key_compare comp; - -#if defined(BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING)&&\ - BOOST_WORKAROUND(__MWERKS__,<=0x3003) -#pragma parse_mfunc_templ reset -#endif -}; - -/* comparison */ - -template< - typename KeyFromValue1,typename Compare1, - typename SuperMeta1,typename TagList1,typename Category1, - typename KeyFromValue2,typename Compare2, - typename SuperMeta2,typename TagList2,typename Category2 -> -bool operator==( - const ordered_index<KeyFromValue1,Compare1,SuperMeta1,TagList1,Category1>& x, - const ordered_index<KeyFromValue2,Compare2,SuperMeta2,TagList2,Category2>& y) -{ - return x.size()==y.size()&&std::equal(x.begin(),x.end(),y.begin()); -} - -template< - typename KeyFromValue1,typename Compare1, - typename SuperMeta1,typename TagList1,typename Category1, - typename KeyFromValue2,typename Compare2, - typename SuperMeta2,typename TagList2,typename Category2 -> -bool operator<( - const ordered_index<KeyFromValue1,Compare1,SuperMeta1,TagList1,Category1>& x, - const ordered_index<KeyFromValue2,Compare2,SuperMeta2,TagList2,Category2>& y) -{ - return std::lexicographical_compare(x.begin(),x.end(),y.begin(),y.end()); -} - -template< - typename KeyFromValue1,typename Compare1, - typename SuperMeta1,typename TagList1,typename Category1, - typename KeyFromValue2,typename Compare2, - typename SuperMeta2,typename TagList2,typename Category2 -> -bool operator!=( - const ordered_index<KeyFromValue1,Compare1,SuperMeta1,TagList1,Category1>& x, - const ordered_index<KeyFromValue2,Compare2,SuperMeta2,TagList2,Category2>& y) -{ - return !(x==y); -} - -template< - typename KeyFromValue1,typename Compare1, - typename SuperMeta1,typename TagList1,typename Category1, - typename KeyFromValue2,typename Compare2, - typename SuperMeta2,typename TagList2,typename Category2 -> -bool operator>( - const ordered_index<KeyFromValue1,Compare1,SuperMeta1,TagList1,Category1>& x, - const ordered_index<KeyFromValue2,Compare2,SuperMeta2,TagList2,Category2>& y) -{ - return y<x; -} - -template< - typename KeyFromValue1,typename Compare1, - typename SuperMeta1,typename TagList1,typename Category1, - typename KeyFromValue2,typename Compare2, - typename SuperMeta2,typename TagList2,typename Category2 -> -bool operator>=( - const ordered_index<KeyFromValue1,Compare1,SuperMeta1,TagList1,Category1>& x, - const ordered_index<KeyFromValue2,Compare2,SuperMeta2,TagList2,Category2>& y) -{ - return !(x<y); -} - -template< - typename KeyFromValue1,typename Compare1, - typename SuperMeta1,typename TagList1,typename Category1, - typename KeyFromValue2,typename Compare2, - typename SuperMeta2,typename TagList2,typename Category2 -> -bool operator<=( - const ordered_index<KeyFromValue1,Compare1,SuperMeta1,TagList1,Category1>& x, - const ordered_index<KeyFromValue2,Compare2,SuperMeta2,TagList2,Category2>& y) -{ - return !(x>y); -} - -/* specialized algorithms */ - -template< - typename KeyFromValue,typename Compare, - typename SuperMeta,typename TagList,typename Category -> -void swap( - ordered_index<KeyFromValue,Compare,SuperMeta,TagList,Category>& x, - ordered_index<KeyFromValue,Compare,SuperMeta,TagList,Category>& y) -{ - x.swap(y); -} - -} /* namespace multi_index::detail */ - -/* ordered_index specifiers */ - -template<typename Arg1,typename Arg2,typename Arg3> -struct ordered_unique -{ - typedef typename detail::ordered_index_args< - Arg1,Arg2,Arg3> index_args; - typedef typename index_args::tag_list_type::type tag_list_type; - typedef typename index_args::key_from_value_type key_from_value_type; - typedef typename index_args::compare_type compare_type; - - template<typename Super> - struct node_class - { - typedef detail::ordered_index_node<Super> type; - }; - - template<typename SuperMeta> - struct index_class - { - typedef detail::ordered_index< - key_from_value_type,compare_type, - SuperMeta,tag_list_type,detail::ordered_unique_tag> type; - }; -}; - -template<typename Arg1,typename Arg2,typename Arg3> -struct ordered_non_unique -{ - typedef detail::ordered_index_args< - Arg1,Arg2,Arg3> index_args; - typedef typename index_args::tag_list_type::type tag_list_type; - typedef typename index_args::key_from_value_type key_from_value_type; - typedef typename index_args::compare_type compare_type; - - template<typename Super> - struct node_class - { - typedef detail::ordered_index_node<Super> type; - }; - - template<typename SuperMeta> - struct index_class - { - typedef detail::ordered_index< - key_from_value_type,compare_type, - SuperMeta,tag_list_type,detail::ordered_non_unique_tag> type; - }; -}; - -} /* namespace multi_index */ - -} /* namespace boost */ - -#undef BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index/ordered_index_fwd.hpp b/3rdParty/Boost/src/boost/multi_index/ordered_index_fwd.hpp deleted file mode 100644 index 6288a71..0000000 --- a/3rdParty/Boost/src/boost/multi_index/ordered_index_fwd.hpp +++ /dev/null @@ -1,124 +0,0 @@ -/* 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 http://www.boost.org/libs/multi_index for library home page. - */ - -#ifndef BOOST_MULTI_INDEX_ORDERED_INDEX_FWD_HPP -#define BOOST_MULTI_INDEX_ORDERED_INDEX_FWD_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -#include <boost/multi_index/detail/ord_index_args.hpp> - -namespace boost{ - -namespace multi_index{ - -namespace detail{ - -template< - typename KeyFromValue,typename Compare, - typename SuperMeta,typename TagList,typename Category -> -class ordered_index; - -template< - typename KeyFromValue1,typename Compare1, - typename SuperMeta1,typename TagList1,typename Category1, - typename KeyFromValue2,typename Compare2, - typename SuperMeta2,typename TagList2,typename Category2 -> -bool operator==( - const ordered_index< - KeyFromValue1,Compare1,SuperMeta1,TagList1,Category1>& x, - const ordered_index< - KeyFromValue2,Compare2,SuperMeta2,TagList2,Category2>& y); - -template< - typename KeyFromValue1,typename Compare1, - typename SuperMeta1,typename TagList1,typename Category1, - typename KeyFromValue2,typename Compare2, - typename SuperMeta2,typename TagList2,typename Category2 -> -bool operator<( - const ordered_index< - KeyFromValue1,Compare1,SuperMeta1,TagList1,Category1>& x, - const ordered_index< - KeyFromValue2,Compare2,SuperMeta2,TagList2,Category2>& y); - -template< - typename KeyFromValue1,typename Compare1, - typename SuperMeta1,typename TagList1,typename Category1, - typename KeyFromValue2,typename Compare2, - typename SuperMeta2,typename TagList2,typename Category2 -> -bool operator!=( - const ordered_index< - KeyFromValue1,Compare1,SuperMeta1,TagList1,Category1>& x, - const ordered_index< - KeyFromValue2,Compare2,SuperMeta2,TagList2,Category2>& y); - -template< - typename KeyFromValue1,typename Compare1, - typename SuperMeta1,typename TagList1,typename Category1, - typename KeyFromValue2,typename Compare2, - typename SuperMeta2,typename TagList2,typename Category2 -> -bool operator>( - const ordered_index< - KeyFromValue1,Compare1,SuperMeta1,TagList1,Category1>& x, - const ordered_index< - KeyFromValue2,Compare2,SuperMeta2,TagList2,Category2>& y); - -template< - typename KeyFromValue1,typename Compare1, - typename SuperMeta1,typename TagList1,typename Category1, - typename KeyFromValue2,typename Compare2, - typename SuperMeta2,typename TagList2,typename Category2 -> -bool operator>=( - const ordered_index< - KeyFromValue1,Compare1,SuperMeta1,TagList1,Category1>& x, - const ordered_index< - KeyFromValue2,Compare2,SuperMeta2,TagList2,Category2>& y); - -template< - typename KeyFromValue1,typename Compare1, - typename SuperMeta1,typename TagList1,typename Category1, - typename KeyFromValue2,typename Compare2, - typename SuperMeta2,typename TagList2,typename Category2 -> -bool operator<=( - const ordered_index< - KeyFromValue1,Compare1,SuperMeta1,TagList1,Category1>& x, - const ordered_index< - KeyFromValue2,Compare2,SuperMeta2,TagList2,Category2>& y); - -template< - typename KeyFromValue,typename Compare, - typename SuperMeta,typename TagList,typename Category -> -void swap( - ordered_index<KeyFromValue,Compare,SuperMeta,TagList,Category>& x, - ordered_index<KeyFromValue,Compare,SuperMeta,TagList,Category>& y); - -} /* namespace multi_index::detail */ - -/* ordered_index specifiers */ - -template<typename Arg1,typename Arg2=mpl::na,typename Arg3=mpl::na> -struct ordered_unique; - -template<typename Arg1,typename Arg2=mpl::na,typename Arg3=mpl::na> -struct ordered_non_unique; - -} /* namespace multi_index */ - -} /* namespace boost */ - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index/safe_mode_errors.hpp b/3rdParty/Boost/src/boost/multi_index/safe_mode_errors.hpp deleted file mode 100644 index ff6f960..0000000 --- a/3rdParty/Boost/src/boost/multi_index/safe_mode_errors.hpp +++ /dev/null @@ -1,48 +0,0 @@ -/* 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 http://www.boost.org/libs/multi_index for library home page. - */ - -#ifndef BOOST_MULTI_INDEX_SAFE_MODE_ERRORS_HPP -#define BOOST_MULTI_INDEX_SAFE_MODE_ERRORS_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -namespace boost{ - -namespace multi_index{ - -namespace safe_mode{ - -/* Error codes for Boost.MultiIndex safe mode. These go in a separate - * header so that the user can include it when redefining - * BOOST_MULTI_INDEX_SAFE_MODE_ASSERT prior to the inclusion of - * any other header of Boost.MultiIndex. - */ - -enum error_code -{ - invalid_iterator=0, - not_dereferenceable_iterator, - not_incrementable_iterator, - not_decrementable_iterator, - not_owner, - not_same_owner, - invalid_range, - inside_range, - out_of_bounds, - same_container -}; - -} /* namespace multi_index::safe_mode */ - -} /* namespace multi_index */ - -} /* namespace boost */ - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index/sequenced_index.hpp b/3rdParty/Boost/src/boost/multi_index/sequenced_index.hpp deleted file mode 100644 index 8e09115..0000000 --- a/3rdParty/Boost/src/boost/multi_index/sequenced_index.hpp +++ /dev/null @@ -1,922 +0,0 @@ -/* 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 http://www.boost.org/libs/multi_index for library home page. - */ - -#ifndef BOOST_MULTI_INDEX_SEQUENCED_INDEX_HPP -#define BOOST_MULTI_INDEX_SEQUENCED_INDEX_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */ -#include <boost/call_traits.hpp> -#include <boost/detail/allocator_utilities.hpp> -#include <boost/detail/no_exceptions_support.hpp> -#include <boost/detail/workaround.hpp> -#include <boost/iterator/reverse_iterator.hpp> -#include <boost/mpl/bool.hpp> -#include <boost/mpl/not.hpp> -#include <boost/mpl/push_front.hpp> -#include <boost/multi_index/detail/access_specifier.hpp> -#include <boost/multi_index/detail/bidir_node_iterator.hpp> -#include <boost/multi_index/detail/index_node_base.hpp> -#include <boost/multi_index/detail/safe_ctr_proxy.hpp> -#include <boost/multi_index/detail/safe_mode.hpp> -#include <boost/multi_index/detail/scope_guard.hpp> -#include <boost/multi_index/detail/seq_index_node.hpp> -#include <boost/multi_index/detail/seq_index_ops.hpp> -#include <boost/multi_index/sequenced_index_fwd.hpp> -#include <boost/tuple/tuple.hpp> -#include <boost/type_traits/is_integral.hpp> -#include <cstddef> -#include <functional> -#include <utility> - -#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION) -#include <boost/bind.hpp> -#endif - -#if defined(BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING) -#define BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT \ - detail::scope_guard BOOST_JOIN(check_invariant_,__LINE__)= \ - detail::make_obj_guard(*this,&sequenced_index::check_invariant_); \ - BOOST_JOIN(check_invariant_,__LINE__).touch(); -#else -#define BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT -#endif - -namespace boost{ - -namespace multi_index{ - -namespace detail{ - -/* sequenced_index adds a layer of sequenced indexing to a given Super */ - -template<typename SuperMeta,typename TagList> -class sequenced_index: - BOOST_MULTI_INDEX_PROTECTED_IF_MEMBER_TEMPLATE_FRIENDS SuperMeta::type - -#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE) -#if BOOST_WORKAROUND(BOOST_MSVC,<1300) - ,public safe_ctr_proxy_impl< - bidir_node_iterator< - sequenced_index_node<typename SuperMeta::type::node_type> >, - sequenced_index<SuperMeta,TagList> > -#else - ,public safe_mode::safe_container< - sequenced_index<SuperMeta,TagList> > -#endif -#endif - -{ -#if defined(BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING)&&\ - BOOST_WORKAROUND(__MWERKS__,<=0x3003) -/* The "ISO C++ Template Parser" option in CW8.3 has a problem with the - * lifetime of const references bound to temporaries --precisely what - * scopeguards are. - */ - -#pragma parse_mfunc_templ off -#endif - - typedef typename SuperMeta::type super; - -protected: - typedef sequenced_index_node< - typename super::node_type> node_type; - -private: - typedef typename node_type::impl_type node_impl_type; - -public: - /* types */ - - typedef typename node_type::value_type value_type; - typedef tuples::null_type ctor_args; - typedef typename super::final_allocator_type allocator_type; - typedef typename allocator_type::reference reference; - typedef typename allocator_type::const_reference const_reference; - -#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE) -#if BOOST_WORKAROUND(BOOST_MSVC,<1300) - typedef safe_mode::safe_iterator< - bidir_node_iterator<node_type>, - safe_ctr_proxy< - bidir_node_iterator<node_type> > > iterator; -#else - typedef safe_mode::safe_iterator< - bidir_node_iterator<node_type>, - sequenced_index> iterator; -#endif -#else - typedef bidir_node_iterator<node_type> iterator; -#endif - - typedef iterator const_iterator; - - typedef std::size_t size_type; - typedef std::ptrdiff_t difference_type; - typedef typename allocator_type::pointer pointer; - typedef typename allocator_type::const_pointer const_pointer; - typedef typename - boost::reverse_iterator<iterator> reverse_iterator; - typedef typename - boost::reverse_iterator<const_iterator> const_reverse_iterator; - typedef TagList tag_list; - -protected: - typedef typename super::final_node_type final_node_type; - typedef tuples::cons< - ctor_args, - typename super::ctor_args_list> ctor_args_list; - typedef typename mpl::push_front< - typename super::index_type_list, - sequenced_index>::type index_type_list; - typedef typename mpl::push_front< - typename super::iterator_type_list, - iterator>::type iterator_type_list; - typedef typename mpl::push_front< - typename super::const_iterator_type_list, - const_iterator>::type const_iterator_type_list; - typedef typename super::copy_map_type copy_map_type; - -#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION) - typedef typename super::index_saver_type index_saver_type; - typedef typename super::index_loader_type index_loader_type; -#endif - -private: -#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE) -#if BOOST_WORKAROUND(BOOST_MSVC,<1300) - typedef safe_ctr_proxy_impl< - bidir_node_iterator<node_type>, - sequenced_index> safe_super; -#else - typedef safe_mode::safe_container< - sequenced_index> safe_super; -#endif -#endif - - typedef typename call_traits<value_type>::param_type value_param_type; - -public: - - /* construct/copy/destroy - * Default and copy ctors are in the protected section as indices are - * not supposed to be created on their own. No range ctor either. - */ - - sequenced_index<SuperMeta,TagList>& operator=( - const sequenced_index<SuperMeta,TagList>& x) - { - this->final()=x.final(); - return *this; - } - - template <class InputIterator> - void assign(InputIterator first,InputIterator last) - { - assign_iter(first,last,mpl::not_<is_integral<InputIterator> >()); - } - - void assign(size_type n,value_param_type value) - { - BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT; - clear(); - for(size_type i=0;i<n;++i)push_back(value); - } - - allocator_type get_allocator()const - { - return this->final().get_allocator(); - } - - /* iterators */ - - iterator begin() - {return make_iterator(node_type::from_impl(header()->next()));} - const_iterator begin()const - {return make_iterator(node_type::from_impl(header()->next()));} - iterator end(){return make_iterator(header());} - const_iterator end()const{return make_iterator(header());} - reverse_iterator rbegin(){return make_reverse_iterator(end());} - const_reverse_iterator rbegin()const{return make_reverse_iterator(end());} - reverse_iterator rend(){return make_reverse_iterator(begin());} - const_reverse_iterator rend()const{return make_reverse_iterator(begin());} - const_iterator cbegin()const{return begin();} - const_iterator cend()const{return end();} - const_reverse_iterator crbegin()const{return rbegin();} - const_reverse_iterator crend()const{return rend();} - - iterator iterator_to(const value_type& x) - { - return make_iterator(node_from_value<node_type>(&x)); - } - - const_iterator iterator_to(const value_type& x)const - { - return make_iterator(node_from_value<node_type>(&x)); - } - - /* capacity */ - - bool empty()const{return this->final_empty_();} - size_type size()const{return this->final_size_();} - size_type max_size()const{return this->final_max_size_();} - - void resize(size_type n,value_param_type x=value_type()) - { - BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT; - if(n>size())insert(end(),n-size(),x); - else if(n<size()){ - iterator it; - if(n<=size()/2){ - it=begin(); - std::advance(it,n); - } - else{ - it=end(); - for(size_type m=size()-n;m--;--it){} - } - erase(it,end()); - } - } - - /* access: no non-const versions provided as sequenced_index - * handles const elements. - */ - - const_reference front()const{return *begin();} - const_reference back()const{return *--end();} - - /* modifiers */ - - std::pair<iterator,bool> push_front(value_param_type x) - {return insert(begin(),x);} - void pop_front(){erase(begin());} - std::pair<iterator,bool> push_back(value_param_type x) - {return insert(end(),x);} - void pop_back(){erase(--end());} - - std::pair<iterator,bool> insert(iterator position,value_param_type x) - { - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position); - BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this); - BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT; - std::pair<final_node_type*,bool> p=this->final_insert_(x); - if(p.second&&position.get_node()!=header()){ - relink(position.get_node(),p.first); - } - return std::pair<iterator,bool>(make_iterator(p.first),p.second); - } - - void insert(iterator position,size_type n,value_param_type x) - { - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position); - BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this); - BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT; - for(size_type i=0;i<n;++i)insert(position,x); - } - - template<typename InputIterator> - void insert(iterator position,InputIterator first,InputIterator last) - { - insert_iter(position,first,last,mpl::not_<is_integral<InputIterator> >()); - } - - iterator erase(iterator position) - { - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position); - BOOST_MULTI_INDEX_CHECK_DEREFERENCEABLE_ITERATOR(position); - BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this); - BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT; - this->final_erase_(static_cast<final_node_type*>(position++.get_node())); - return position; - } - - iterator erase(iterator first,iterator last) - { - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(first); - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(last); - BOOST_MULTI_INDEX_CHECK_IS_OWNER(first,*this); - BOOST_MULTI_INDEX_CHECK_IS_OWNER(last,*this); - BOOST_MULTI_INDEX_CHECK_VALID_RANGE(first,last); - BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT; - while(first!=last){ - first=erase(first); - } - return first; - } - - bool replace(iterator position,value_param_type x) - { - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position); - BOOST_MULTI_INDEX_CHECK_DEREFERENCEABLE_ITERATOR(position); - BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this); - BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT; - return this->final_replace_( - x,static_cast<final_node_type*>(position.get_node())); - } - - template<typename Modifier> - bool modify(iterator position,Modifier mod) - { - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position); - BOOST_MULTI_INDEX_CHECK_DEREFERENCEABLE_ITERATOR(position); - BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this); - BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT; - -#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE) - /* MSVC++ 6.0 optimizer on safe mode code chokes if this - * this is not added. Left it for all compilers as it does no - * harm. - */ - - position.detach(); -#endif - - return this->final_modify_( - mod,static_cast<final_node_type*>(position.get_node())); - } - - template<typename Modifier,typename Rollback> - bool modify(iterator position,Modifier mod,Rollback back) - { - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position); - BOOST_MULTI_INDEX_CHECK_DEREFERENCEABLE_ITERATOR(position); - BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this); - BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT; - -#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE) - /* MSVC++ 6.0 optimizer on safe mode code chokes if this - * this is not added. Left it for all compilers as it does no - * harm. - */ - - position.detach(); -#endif - - return this->final_modify_( - mod,back,static_cast<final_node_type*>(position.get_node())); - } - - void swap(sequenced_index<SuperMeta,TagList>& x) - { - BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT; - this->final_swap_(x.final()); - } - - void clear() - { - BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT; - this->final_clear_(); - } - - /* list operations */ - - void splice(iterator position,sequenced_index<SuperMeta,TagList>& x) - { - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position); - BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this); - BOOST_MULTI_INDEX_CHECK_DIFFERENT_CONTAINER(*this,x); - BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT; - iterator first=x.begin(),last=x.end(); - while(first!=last){ - if(insert(position,*first).second)first=x.erase(first); - else ++first; - } - } - - void splice(iterator position,sequenced_index<SuperMeta,TagList>& x,iterator i) - { - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position); - BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this); - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(i); - BOOST_MULTI_INDEX_CHECK_DEREFERENCEABLE_ITERATOR(i); - BOOST_MULTI_INDEX_CHECK_IS_OWNER(i,x); - BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT; - if(&x==this){ - if(position!=i)relink(position.get_node(),i.get_node()); - } - else{ - if(insert(position,*i).second){ - -#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE) - /* MSVC++ 6.0 optimizer has a hard time with safe mode, and the following - * workaround is needed. Left it for all compilers as it does no - * harm. - */ - i.detach(); - x.erase(x.make_iterator(i.get_node())); -#else - x.erase(i); -#endif - - } - } - } - - void splice( - iterator position,sequenced_index<SuperMeta,TagList>& x, - iterator first,iterator last) - { - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position); - BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this); - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(first); - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(last); - BOOST_MULTI_INDEX_CHECK_IS_OWNER(first,x); - BOOST_MULTI_INDEX_CHECK_IS_OWNER(last,x); - BOOST_MULTI_INDEX_CHECK_VALID_RANGE(first,last); - BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT; - if(&x==this){ - BOOST_MULTI_INDEX_CHECK_OUTSIDE_RANGE(position,first,last); - if(position!=last)relink( - position.get_node(),first.get_node(),last.get_node()); - } - else{ - while(first!=last){ - if(insert(position,*first).second)first=x.erase(first); - else ++first; - } - } - } - - void remove(value_param_type value) - { - sequenced_index_remove( - *this,std::bind2nd(std::equal_to<value_type>(),value)); - } - - template<typename Predicate> - void remove_if(Predicate pred) - { - sequenced_index_remove(*this,pred); - } - - void unique() - { - sequenced_index_unique(*this,std::equal_to<value_type>()); - } - - template <class BinaryPredicate> - void unique(BinaryPredicate binary_pred) - { - sequenced_index_unique(*this,binary_pred); - } - - void merge(sequenced_index<SuperMeta,TagList>& x) - { - sequenced_index_merge(*this,x,std::less<value_type>()); - } - - template <typename Compare> - void merge(sequenced_index<SuperMeta,TagList>& x,Compare comp) - { - sequenced_index_merge(*this,x,comp); - } - - void sort() - { - BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT; - sequenced_index_sort(header(),std::less<value_type>()); - } - - template <typename Compare> - void sort(Compare comp) - { - BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT; - sequenced_index_sort(header(),comp); - } - - void reverse() - { - BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT; - node_impl_type::reverse(header()->impl()); - } - - /* rearrange operations */ - - void relocate(iterator position,iterator i) - { - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position); - BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this); - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(i); - BOOST_MULTI_INDEX_CHECK_DEREFERENCEABLE_ITERATOR(i); - BOOST_MULTI_INDEX_CHECK_IS_OWNER(i,*this); - BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT; - if(position!=i)relink(position.get_node(),i.get_node()); - } - - void relocate(iterator position,iterator first,iterator last) - { - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position); - BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this); - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(first); - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(last); - BOOST_MULTI_INDEX_CHECK_IS_OWNER(first,*this); - BOOST_MULTI_INDEX_CHECK_IS_OWNER(last,*this); - BOOST_MULTI_INDEX_CHECK_VALID_RANGE(first,last); - BOOST_MULTI_INDEX_CHECK_OUTSIDE_RANGE(position,first,last); - BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT; - if(position!=last)relink( - position.get_node(),first.get_node(),last.get_node()); - } - - template<typename InputIterator> - void rearrange(InputIterator first) - { - BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT; - node_type* pos=header(); - for(size_type s=size();s--;){ - const value_type& v=*first++; - relink(pos,node_from_value<node_type>(&v)); - } - } - -BOOST_MULTI_INDEX_PROTECTED_IF_MEMBER_TEMPLATE_FRIENDS: - sequenced_index(const ctor_args_list& args_list,const allocator_type& al): - super(args_list.get_tail(),al) - { - empty_initialize(); - } - - sequenced_index(const sequenced_index<SuperMeta,TagList>& x): - super(x) - -#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE) - ,safe_super() -#endif - - { - /* The actual copying takes place in subsequent call to copy_(). - */ - } - - ~sequenced_index() - { - /* the container is guaranteed to be empty by now */ - } - -#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE) - iterator make_iterator(node_type* node){return iterator(node,this);} - const_iterator make_iterator(node_type* node)const - {return const_iterator(node,const_cast<sequenced_index*>(this));} -#else - iterator make_iterator(node_type* node){return iterator(node);} - const_iterator make_iterator(node_type* node)const - {return const_iterator(node);} -#endif - - void copy_( - const sequenced_index<SuperMeta,TagList>& x,const copy_map_type& map) - { - node_type* org=x.header(); - node_type* cpy=header(); - do{ - node_type* next_org=node_type::from_impl(org->next()); - node_type* next_cpy=map.find(static_cast<final_node_type*>(next_org)); - cpy->next()=next_cpy->impl(); - next_cpy->prior()=cpy->impl(); - org=next_org; - cpy=next_cpy; - }while(org!=x.header()); - - super::copy_(x,map); - } - - node_type* insert_(value_param_type v,node_type* x) - { - node_type* res=static_cast<node_type*>(super::insert_(v,x)); - if(res==x)link(x); - return res; - } - - node_type* insert_(value_param_type v,node_type* position,node_type* x) - { - node_type* res=static_cast<node_type*>(super::insert_(v,position,x)); - if(res==x)link(x); - return res; - } - - void erase_(node_type* x) - { - unlink(x); - super::erase_(x); - -#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE) - detach_iterators(x); -#endif - } - - void delete_all_nodes_() - { - for(node_type* x=node_type::from_impl(header()->next());x!=header();){ - node_type* y=node_type::from_impl(x->next()); - this->final_delete_node_(static_cast<final_node_type*>(x)); - x=y; - } - } - - void clear_() - { - super::clear_(); - empty_initialize(); - -#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE) - safe_super::detach_dereferenceable_iterators(); -#endif - } - - void swap_(sequenced_index<SuperMeta,TagList>& x) - { -#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE) - safe_super::swap(x); -#endif - - super::swap_(x); - } - - bool replace_(value_param_type v,node_type* x) - { - return super::replace_(v,x); - } - - bool modify_(node_type* x) - { - BOOST_TRY{ - if(!super::modify_(x)){ - unlink(x); - -#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE) - detach_iterators(x); -#endif - - return false; - } - else return true; - } - BOOST_CATCH(...){ - unlink(x); - -#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE) - detach_iterators(x); -#endif - - BOOST_RETHROW; - } - BOOST_CATCH_END - } - - bool modify_rollback_(node_type* x) - { - return super::modify_rollback_(x); - } - -#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION) - /* serialization */ - - template<typename Archive> - void save_( - Archive& ar,const unsigned int version,const index_saver_type& sm)const - { - sm.save(begin(),end(),ar,version); - super::save_(ar,version,sm); - } - - template<typename Archive> - void load_( - Archive& ar,const unsigned int version,const index_loader_type& lm) - { - lm.load( - ::boost::bind(&sequenced_index::rearranger,this,_1,_2), - ar,version); - super::load_(ar,version,lm); - } -#endif - -#if defined(BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING) - /* invariant stuff */ - - bool invariant_()const - { - if(size()==0||begin()==end()){ - if(size()!=0||begin()!=end()|| - header()->next()!=header()->impl()|| - header()->prior()!=header()->impl())return false; - } - else{ - size_type s=0; - for(const_iterator it=begin(),it_end=end();it!=it_end;++it,++s){ - if(it.get_node()->next()->prior()!=it.get_node()->impl())return false; - if(it.get_node()->prior()->next()!=it.get_node()->impl())return false; - } - if(s!=size())return false; - } - - return super::invariant_(); - } - - /* This forwarding function eases things for the boost::mem_fn construct - * in BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT. Actually, - * final_check_invariant is already an inherited member function of index. - */ - void check_invariant_()const{this->final_check_invariant_();} -#endif - -private: - node_type* header()const{return this->final_header();} - - void empty_initialize() - { - header()->prior()=header()->next()=header()->impl(); - } - - void link(node_type* x) - { - node_impl_type::link(x->impl(),header()->impl()); - }; - - static void unlink(node_type* x) - { - node_impl_type::unlink(x->impl()); - } - - static void relink(node_type* position,node_type* x) - { - node_impl_type::relink(position->impl(),x->impl()); - } - - static void relink(node_type* position,node_type* first,node_type* last) - { - node_impl_type::relink( - position->impl(),first->impl(),last->impl()); - } - -#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION) - void rearranger(node_type* position,node_type *x) - { - if(!position)position=header(); - node_type::increment(position); - if(position!=x)relink(position,x); - } -#endif - -#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE) - void detach_iterators(node_type* x) - { - iterator it=make_iterator(x); - safe_mode::detach_equivalent_iterators(it); - } -#endif - - template <class InputIterator> - void assign_iter(InputIterator first,InputIterator last,mpl::true_) - { - BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT; - clear(); - for(;first!=last;++first)push_back(*first); - } - - void assign_iter(size_type n,value_param_type value,mpl::false_) - { - BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT; - clear(); - for(size_type i=0;i<n;++i)push_back(value); - } - - template<typename InputIterator> - void insert_iter( - iterator position,InputIterator first,InputIterator last,mpl::true_) - { - BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT; - for(;first!=last;++first)insert(position,*first); - } - - void insert_iter( - iterator position,size_type n,value_param_type x,mpl::false_) - { - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position); - BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this); - BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT; - for(size_type i=0;i<n;++i)insert(position,x); - } - -#if defined(BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING)&&\ - BOOST_WORKAROUND(__MWERKS__,<=0x3003) -#pragma parse_mfunc_templ reset -#endif -}; - -/* comparison */ - -template< - typename SuperMeta1,typename TagList1, - typename SuperMeta2,typename TagList2 -> -bool operator==( - const sequenced_index<SuperMeta1,TagList1>& x, - const sequenced_index<SuperMeta2,TagList2>& y) -{ - return x.size()==y.size()&&std::equal(x.begin(),x.end(),y.begin()); -} - -template< - typename SuperMeta1,typename TagList1, - typename SuperMeta2,typename TagList2 -> -bool operator<( - const sequenced_index<SuperMeta1,TagList1>& x, - const sequenced_index<SuperMeta2,TagList2>& y) -{ - return std::lexicographical_compare(x.begin(),x.end(),y.begin(),y.end()); -} - -template< - typename SuperMeta1,typename TagList1, - typename SuperMeta2,typename TagList2 -> -bool operator!=( - const sequenced_index<SuperMeta1,TagList1>& x, - const sequenced_index<SuperMeta2,TagList2>& y) -{ - return !(x==y); -} - -template< - typename SuperMeta1,typename TagList1, - typename SuperMeta2,typename TagList2 -> -bool operator>( - const sequenced_index<SuperMeta1,TagList1>& x, - const sequenced_index<SuperMeta2,TagList2>& y) -{ - return y<x; -} - -template< - typename SuperMeta1,typename TagList1, - typename SuperMeta2,typename TagList2 -> -bool operator>=( - const sequenced_index<SuperMeta1,TagList1>& x, - const sequenced_index<SuperMeta2,TagList2>& y) -{ - return !(x<y); -} - -template< - typename SuperMeta1,typename TagList1, - typename SuperMeta2,typename TagList2 -> -bool operator<=( - const sequenced_index<SuperMeta1,TagList1>& x, - const sequenced_index<SuperMeta2,TagList2>& y) -{ - return !(x>y); -} - -/* specialized algorithms */ - -template<typename SuperMeta,typename TagList> -void swap( - sequenced_index<SuperMeta,TagList>& x, - sequenced_index<SuperMeta,TagList>& y) -{ - x.swap(y); -} - -} /* namespace multi_index::detail */ - -/* sequenced index specifier */ - -template <typename TagList> -struct sequenced -{ - BOOST_STATIC_ASSERT(detail::is_tag<TagList>::value); - - template<typename Super> - struct node_class - { - typedef detail::sequenced_index_node<Super> type; - }; - - template<typename SuperMeta> - struct index_class - { - typedef detail::sequenced_index<SuperMeta,typename TagList::type> type; - }; -}; - -} /* namespace multi_index */ - -} /* namespace boost */ - -#undef BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index/sequenced_index_fwd.hpp b/3rdParty/Boost/src/boost/multi_index/sequenced_index_fwd.hpp deleted file mode 100644 index 5211390..0000000 --- a/3rdParty/Boost/src/boost/multi_index/sequenced_index_fwd.hpp +++ /dev/null @@ -1,91 +0,0 @@ -/* 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 http://www.boost.org/libs/multi_index for library home page. - */ - -#ifndef BOOST_MULTI_INDEX_SEQUENCED_INDEX_FWD_HPP -#define BOOST_MULTI_INDEX_SEQUENCED_INDEX_FWD_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -#include <boost/multi_index/tag.hpp> - -namespace boost{ - -namespace multi_index{ - -namespace detail{ - -template<typename SuperMeta,typename TagList> -class sequenced_index; - -template< - typename SuperMeta1,typename TagList1, - typename SuperMeta2,typename TagList2 -> -bool operator==( - const sequenced_index<SuperMeta1,TagList1>& x, - const sequenced_index<SuperMeta2,TagList2>& y); - -template< - typename SuperMeta1,typename TagList1, - typename SuperMeta2,typename TagList2 -> -bool operator<( - const sequenced_index<SuperMeta1,TagList1>& x, - const sequenced_index<SuperMeta2,TagList2>& y); - -template< - typename SuperMeta1,typename TagList1, - typename SuperMeta2,typename TagList2 -> -bool operator!=( - const sequenced_index<SuperMeta1,TagList1>& x, - const sequenced_index<SuperMeta2,TagList2>& y); - -template< - typename SuperMeta1,typename TagList1, - typename SuperMeta2,typename TagList2 -> -bool operator>( - const sequenced_index<SuperMeta1,TagList1>& x, - const sequenced_index<SuperMeta2,TagList2>& y); - -template< - typename SuperMeta1,typename TagList1, - typename SuperMeta2,typename TagList2 -> -bool operator>=( - const sequenced_index<SuperMeta1,TagList1>& x, - const sequenced_index<SuperMeta2,TagList2>& y); - -template< - typename SuperMeta1,typename TagList1, - typename SuperMeta2,typename TagList2 -> -bool operator<=( - const sequenced_index<SuperMeta1,TagList1>& x, - const sequenced_index<SuperMeta2,TagList2>& y); - -template<typename SuperMeta,typename TagList> -void swap( - sequenced_index<SuperMeta,TagList>& x, - sequenced_index<SuperMeta,TagList>& y); - -} /* namespace multi_index::detail */ - -/* index specifiers */ - -template <typename TagList=tag<> > -struct sequenced; - -} /* namespace multi_index */ - -} /* namespace boost */ - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index/tag.hpp b/3rdParty/Boost/src/boost/multi_index/tag.hpp deleted file mode 100644 index ba7cab4..0000000 --- a/3rdParty/Boost/src/boost/multi_index/tag.hpp +++ /dev/null @@ -1,92 +0,0 @@ -/* 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 http://www.boost.org/libs/multi_index for library home page. - */ - -#ifndef BOOST_MULTI_INDEX_TAG_HPP -#define BOOST_MULTI_INDEX_TAG_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */ -#include <boost/multi_index/detail/no_duplicate_tags.hpp> -#include <boost/mpl/identity.hpp> -#include <boost/mpl/transform.hpp> -#include <boost/mpl/vector.hpp> -#include <boost/preprocessor/facilities/intercept.hpp> -#include <boost/preprocessor/repetition/enum_binary_params.hpp> -#include <boost/preprocessor/repetition/enum_params.hpp> -#include <boost/static_assert.hpp> -#include <boost/type_traits/is_base_and_derived.hpp> - -/* A wrapper of mpl::vector used to hide MPL from the user. - * tag contains types used as tag names for indices in get() functions. - */ - -/* This user_definable macro limits the number of elements of a tag; - * useful for shortening resulting symbol names (MSVC++ 6.0, for instance, - * has problems coping with very long symbol names.) - */ - -#if !defined(BOOST_MULTI_INDEX_LIMIT_TAG_SIZE) -#if defined(BOOST_MSVC)&&(BOOST_MSVC<1300) -#define BOOST_MULTI_INDEX_LIMIT_TAG_SIZE 3 -#else -#define BOOST_MULTI_INDEX_LIMIT_TAG_SIZE BOOST_MPL_LIMIT_VECTOR_SIZE -#endif -#endif - -#if BOOST_MULTI_INDEX_LIMIT_TAG_SIZE<BOOST_MPL_LIMIT_VECTOR_SIZE -#define BOOST_MULTI_INDEX_TAG_SIZE BOOST_MULTI_INDEX_LIMIT_TAG_SIZE -#else -#define BOOST_MULTI_INDEX_TAG_SIZE BOOST_MPL_LIMIT_VECTOR_SIZE -#endif - -namespace boost{ - -namespace multi_index{ - -namespace detail{ - -struct tag_marker{}; - -template<typename T> -struct is_tag -{ - BOOST_STATIC_CONSTANT(bool,value=(is_base_and_derived<tag_marker,T>::value)); -}; - -} /* namespace multi_index::detail */ - -template< - BOOST_PP_ENUM_BINARY_PARAMS( - BOOST_MULTI_INDEX_TAG_SIZE, - typename T, - =mpl::na BOOST_PP_INTERCEPT) -> -struct tag:private detail::tag_marker -{ - /* The mpl::transform pass produces shorter symbols (without - * trailing mpl::na's.) - */ - - typedef typename mpl::transform< - mpl::vector<BOOST_PP_ENUM_PARAMS(BOOST_MULTI_INDEX_TAG_SIZE,T)>, - mpl::identity<mpl::_1> - >::type type; - - BOOST_STATIC_ASSERT(detail::no_duplicate_tags<type>::value); -}; - -} /* namespace multi_index */ - -} /* namespace boost */ - -#undef BOOST_MULTI_INDEX_TAG_SIZE - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index_container.hpp b/3rdParty/Boost/src/boost/multi_index_container.hpp deleted file mode 100644 index e1969b9..0000000 --- a/3rdParty/Boost/src/boost/multi_index_container.hpp +++ /dev/null @@ -1,1143 +0,0 @@ -/* Multiply indexed container. - * - * Copyright 2003-2010 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 http://www.boost.org/libs/multi_index for library home page. - */ - -#ifndef BOOST_MULTI_INDEX_HPP -#define BOOST_MULTI_INDEX_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */ -#include <algorithm> -#include <boost/detail/allocator_utilities.hpp> -#include <boost/detail/no_exceptions_support.hpp> -#include <boost/detail/workaround.hpp> -#include <boost/mpl/at.hpp> -#include <boost/mpl/contains.hpp> -#include <boost/mpl/find_if.hpp> -#include <boost/mpl/identity.hpp> -#include <boost/mpl/int.hpp> -#include <boost/mpl/size.hpp> -#include <boost/mpl/deref.hpp> -#include <boost/multi_index_container_fwd.hpp> -#include <boost/multi_index/detail/access_specifier.hpp> -#include <boost/multi_index/detail/adl_swap.hpp> -#include <boost/multi_index/detail/base_type.hpp> -#include <boost/multi_index/detail/converter.hpp> -#include <boost/multi_index/detail/header_holder.hpp> -#include <boost/multi_index/detail/has_tag.hpp> -#include <boost/multi_index/detail/no_duplicate_tags.hpp> -#include <boost/multi_index/detail/prevent_eti.hpp> -#include <boost/multi_index/detail/safe_mode.hpp> -#include <boost/multi_index/detail/scope_guard.hpp> -#include <boost/static_assert.hpp> -#include <boost/type_traits/is_same.hpp> -#include <boost/utility/base_from_member.hpp> - -#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION) -#include <boost/multi_index/detail/archive_constructed.hpp> -#include <boost/multi_index/detail/serialization_version.hpp> -#include <boost/serialization/collection_size_type.hpp> -#include <boost/serialization/nvp.hpp> -#include <boost/serialization/split_member.hpp> -#include <boost/serialization/version.hpp> -#include <boost/throw_exception.hpp> -#endif - -#if defined(BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING) -#include <boost/multi_index/detail/invariant_assert.hpp> -#define BOOST_MULTI_INDEX_CHECK_INVARIANT \ - detail::scope_guard BOOST_JOIN(check_invariant_,__LINE__)= \ - detail::make_obj_guard(*this,&multi_index_container::check_invariant_); \ - BOOST_JOIN(check_invariant_,__LINE__).touch(); -#else -#define BOOST_MULTI_INDEX_CHECK_INVARIANT -#endif - -namespace boost{ - -namespace multi_index{ - -template<typename Value,typename IndexSpecifierList,typename Allocator> -class multi_index_container: - private ::boost::base_from_member< - typename boost::detail::allocator::rebind_to< - Allocator, - typename detail::multi_index_node_type< - Value,IndexSpecifierList,Allocator>::type - >::type>, - BOOST_MULTI_INDEX_PRIVATE_IF_MEMBER_TEMPLATE_FRIENDS detail::header_holder< - typename detail::prevent_eti< - Allocator, - typename boost::detail::allocator::rebind_to< - Allocator, - typename detail::multi_index_node_type< - Value,IndexSpecifierList,Allocator>::type - >::type - >::type::pointer, - multi_index_container<Value,IndexSpecifierList,Allocator> >, - public detail::multi_index_base_type< - Value,IndexSpecifierList,Allocator>::type -{ -#if defined(BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING)&&\ - BOOST_WORKAROUND(__MWERKS__,<=0x3003) -/* The "ISO C++ Template Parser" option in CW8.3 has a problem with the - * lifetime of const references bound to temporaries --precisely what - * scopeguards are. - */ - -#pragma parse_mfunc_templ off -#endif - -private: -#if !defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS) - template <typename,typename,typename> friend class detail::index_base; - template <typename,typename> friend struct detail::header_holder; - template <typename,typename> friend struct detail::converter; -#endif - - typedef typename detail::multi_index_base_type< - Value,IndexSpecifierList,Allocator>::type super; - typedef typename - boost::detail::allocator::rebind_to< - Allocator, - typename super::node_type - >::type node_allocator; - typedef ::boost::base_from_member< - node_allocator> bfm_allocator; - typedef detail::header_holder< - typename detail::prevent_eti< - Allocator, - node_allocator - >::type::pointer, - multi_index_container> bfm_header; - -#if BOOST_WORKAROUND(BOOST_MSVC,<1300) - /* see definition of index_type_list below */ - typedef typename super::index_type_list super_index_type_list; -#endif - -public: - /* All types are inherited from super, a few are explicitly - * brought forward here to save us some typename's. - */ - - typedef typename super::ctor_args_list ctor_args_list; - typedef IndexSpecifierList index_specifier_type_list; - -#if BOOST_WORKAROUND(BOOST_MSVC,<1300) - /* MSVC++ 6.0 chokes on moderately long index lists (around 6 indices - * or more), with errors ranging from corrupt exes to duplicate - * comdats. The following type hiding hack alleviates this condition; - * best results combined with type hiding of the indexed_by construct - * itself, as explained in the "Compiler specifics" section of - * the documentation. - */ - - struct index_type_list:super_index_type_list - { - typedef index_type_list type; - typedef typename super_index_type_list::back back; - typedef mpl::v_iter<type,0> begin; - typedef mpl::v_iter< - type, - mpl::size<super_index_type_list>::value> end; - }; -#else - typedef typename super::index_type_list index_type_list; -#endif - - typedef typename super::iterator_type_list iterator_type_list; - typedef typename super::const_iterator_type_list const_iterator_type_list; - typedef typename super::value_type value_type; - typedef typename super::final_allocator_type allocator_type; - typedef typename super::iterator iterator; - typedef typename super::const_iterator const_iterator; - - BOOST_STATIC_ASSERT( - detail::no_duplicate_tags_in_index_list<index_type_list>::value); - - /* global project() needs to see this publicly */ - - typedef typename super::node_type node_type; - - /* construct/copy/destroy */ - - explicit multi_index_container( - -#if BOOST_WORKAROUND(__IBMCPP__,<=600) - /* VisualAge seems to have an ETI issue with the default values - * for arguments args_list and al. - */ - - const ctor_args_list& args_list= - typename mpl::identity<multi_index_container>::type:: - ctor_args_list(), - const allocator_type& al= - typename mpl::identity<multi_index_container>::type:: - allocator_type()): -#else - const ctor_args_list& args_list=ctor_args_list(), - const allocator_type& al=allocator_type()): -#endif - - bfm_allocator(al), - super(args_list,bfm_allocator::member), - node_count(0) - { - BOOST_MULTI_INDEX_CHECK_INVARIANT; - } - - explicit multi_index_container(const allocator_type& al): - bfm_allocator(al), - super(ctor_args_list(),bfm_allocator::member), - node_count(0) - { - BOOST_MULTI_INDEX_CHECK_INVARIANT; - } - - template<typename InputIterator> - multi_index_container( - InputIterator first,InputIterator last, - -#if BOOST_WORKAROUND(__IBMCPP__,<=600) - /* VisualAge seems to have an ETI issue with the default values - * for arguments args_list and al. - */ - - const ctor_args_list& args_list= - typename mpl::identity<multi_index_container>::type:: - ctor_args_list(), - const allocator_type& al= - typename mpl::identity<multi_index_container>::type:: - allocator_type()): -#else - const ctor_args_list& args_list=ctor_args_list(), - const allocator_type& al=allocator_type()): -#endif - - bfm_allocator(al), - super(args_list,bfm_allocator::member), - node_count(0) - { - BOOST_MULTI_INDEX_CHECK_INVARIANT; - BOOST_TRY{ - iterator hint=super::end(); - for(;first!=last;++first){ - hint=super::make_iterator(insert_(*first,hint.get_node()).first); - } - } - BOOST_CATCH(...){ - clear_(); - BOOST_RETHROW; - } - BOOST_CATCH_END - } - - multi_index_container( - const multi_index_container<Value,IndexSpecifierList,Allocator>& x): - bfm_allocator(x.bfm_allocator::member), - bfm_header(), - super(x), - node_count(0) - { - copy_map_type map(bfm_allocator::member,x.size(),x.header(),header()); - for(const_iterator it=x.begin(),it_end=x.end();it!=it_end;++it){ - map.clone(it.get_node()); - } - super::copy_(x,map); - map.release(); - node_count=x.size(); - - /* Not until this point are the indices required to be consistent, - * hence the position of the invariant checker. - */ - - BOOST_MULTI_INDEX_CHECK_INVARIANT; - } - - ~multi_index_container() - { - delete_all_nodes_(); - } - - multi_index_container<Value,IndexSpecifierList,Allocator>& operator=( - multi_index_container<Value,IndexSpecifierList,Allocator> x) - { - BOOST_MULTI_INDEX_CHECK_INVARIANT; - this->swap(x); - return *this; - } - - allocator_type get_allocator()const - { - return allocator_type(bfm_allocator::member); - } - - /* retrieval of indices by number */ - -#if !defined(BOOST_NO_MEMBER_TEMPLATES) - template<int N> - struct nth_index - { - BOOST_STATIC_ASSERT(N>=0&&N<mpl::size<index_type_list>::type::value); - typedef typename mpl::at_c<index_type_list,N>::type type; - }; - - template<int N> - typename nth_index<N>::type& get(BOOST_EXPLICIT_TEMPLATE_NON_TYPE(int,N)) - { - BOOST_STATIC_ASSERT(N>=0&&N<mpl::size<index_type_list>::type::value); - return *this; - } - - template<int N> - const typename nth_index<N>::type& get( - BOOST_EXPLICIT_TEMPLATE_NON_TYPE(int,N))const - { - BOOST_STATIC_ASSERT(N>=0&&N<mpl::size<index_type_list>::type::value); - return *this; - } -#endif - - /* retrieval of indices by tag */ - -#if !defined(BOOST_NO_MEMBER_TEMPLATES) - template<typename Tag> - struct index - { - typedef typename mpl::find_if< - index_type_list, - detail::has_tag<Tag> - >::type iter; - - BOOST_STATIC_CONSTANT( - bool,index_found=!(is_same<iter,typename mpl::end<index_type_list>::type >::value)); - BOOST_STATIC_ASSERT(index_found); - - typedef typename mpl::deref<iter>::type type; - }; - - template<typename Tag> - typename index<Tag>::type& get(BOOST_EXPLICIT_TEMPLATE_TYPE(Tag)) - { - return *this; - } - - template<typename Tag> - const typename index<Tag>::type& get( - BOOST_EXPLICIT_TEMPLATE_TYPE(Tag))const - { - return *this; - } -#endif - - /* projection of iterators by number */ - -#if !defined(BOOST_NO_MEMBER_TEMPLATES) - template<int N> - struct nth_index_iterator - { - typedef typename nth_index<N>::type::iterator type; - }; - - template<int N> - struct nth_index_const_iterator - { - typedef typename nth_index<N>::type::const_iterator type; - }; - - template<int N,typename IteratorType> - typename nth_index_iterator<N>::type project( - IteratorType it - BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(int,N)) - { - typedef typename nth_index<N>::type index; - -#if !defined(__SUNPRO_CC)||!(__SUNPRO_CC<0x580) /* fails in Sun C++ 5.7 */ - BOOST_STATIC_ASSERT( - (mpl::contains<iterator_type_list,IteratorType>::value)); -#endif - - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(it); - BOOST_MULTI_INDEX_CHECK_IS_OWNER( - it,static_cast<typename IteratorType::container_type&>(*this)); - - return index::make_iterator(static_cast<node_type*>(it.get_node())); - } - - template<int N,typename IteratorType> - typename nth_index_const_iterator<N>::type project( - IteratorType it - BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(int,N))const - { - typedef typename nth_index<N>::type index; - -#if !defined(__SUNPRO_CC)||!(__SUNPRO_CC<0x580) /* fails in Sun C++ 5.7 */ - BOOST_STATIC_ASSERT(( - mpl::contains<iterator_type_list,IteratorType>::value|| - mpl::contains<const_iterator_type_list,IteratorType>::value)); -#endif - - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(it); - BOOST_MULTI_INDEX_CHECK_IS_OWNER( - it,static_cast<const typename IteratorType::container_type&>(*this)); - return index::make_iterator(static_cast<node_type*>(it.get_node())); - } -#endif - - /* projection of iterators by tag */ - -#if !defined(BOOST_NO_MEMBER_TEMPLATES) - template<typename Tag> - struct index_iterator - { - typedef typename index<Tag>::type::iterator type; - }; - - template<typename Tag> - struct index_const_iterator - { - typedef typename index<Tag>::type::const_iterator type; - }; - - template<typename Tag,typename IteratorType> - typename index_iterator<Tag>::type project( - IteratorType it - BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(Tag)) - { - typedef typename index<Tag>::type index; - -#if !defined(__SUNPRO_CC)||!(__SUNPRO_CC<0x580) /* fails in Sun C++ 5.7 */ - BOOST_STATIC_ASSERT( - (mpl::contains<iterator_type_list,IteratorType>::value)); -#endif - - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(it); - BOOST_MULTI_INDEX_CHECK_IS_OWNER( - it,static_cast<typename IteratorType::container_type&>(*this)); - return index::make_iterator(static_cast<node_type*>(it.get_node())); - } - - template<typename Tag,typename IteratorType> - typename index_const_iterator<Tag>::type project( - IteratorType it - BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(Tag))const - { - typedef typename index<Tag>::type index; - -#if !defined(__SUNPRO_CC)||!(__SUNPRO_CC<0x580) /* fails in Sun C++ 5.7 */ - BOOST_STATIC_ASSERT(( - mpl::contains<iterator_type_list,IteratorType>::value|| - mpl::contains<const_iterator_type_list,IteratorType>::value)); -#endif - - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(it); - BOOST_MULTI_INDEX_CHECK_IS_OWNER( - it,static_cast<const typename IteratorType::container_type&>(*this)); - return index::make_iterator(static_cast<node_type*>(it.get_node())); - } -#endif - -BOOST_MULTI_INDEX_PROTECTED_IF_MEMBER_TEMPLATE_FRIENDS: - typedef typename super::copy_map_type copy_map_type; - - node_type* header()const - { - return &*bfm_header::member; - } - - node_type* allocate_node() - { - return &*bfm_allocator::member.allocate(1); - } - - void deallocate_node(node_type* x) - { - typedef typename node_allocator::pointer node_pointer; - bfm_allocator::member.deallocate(static_cast<node_pointer>(x),1); - } - - bool empty_()const - { - return node_count==0; - } - - std::size_t size_()const - { - return node_count; - } - - std::size_t max_size_()const - { - return static_cast<std::size_t >(-1); - } - - std::pair<node_type*,bool> insert_(const Value& v) - { - node_type* x=allocate_node(); - BOOST_TRY{ - node_type* res=super::insert_(v,x); - if(res==x){ - ++node_count; - return std::pair<node_type*,bool>(res,true); - } - else{ - deallocate_node(x); - return std::pair<node_type*,bool>(res,false); - } - } - BOOST_CATCH(...){ - deallocate_node(x); - BOOST_RETHROW; - } - BOOST_CATCH_END - } - - std::pair<node_type*,bool> insert_(const Value& v,node_type* position) - { - node_type* x=allocate_node(); - BOOST_TRY{ - node_type* res=super::insert_(v,position,x); - if(res==x){ - ++node_count; - return std::pair<node_type*,bool>(res,true); - } - else{ - deallocate_node(x); - return std::pair<node_type*,bool>(res,false); - } - } - BOOST_CATCH(...){ - deallocate_node(x); - BOOST_RETHROW; - } - BOOST_CATCH_END - } - - void erase_(node_type* x) - { - --node_count; - super::erase_(x); - deallocate_node(x); - } - - void delete_node_(node_type* x) - { - super::delete_node_(x); - deallocate_node(x); - } - - void delete_all_nodes_() - { - super::delete_all_nodes_(); - } - - void clear_() - { - delete_all_nodes_(); - super::clear_(); - node_count=0; - } - - void swap_(multi_index_container<Value,IndexSpecifierList,Allocator>& x) - { - if(bfm_allocator::member!=x.bfm_allocator::member){ - detail::adl_swap(bfm_allocator::member,x.bfm_allocator::member); - } - std::swap(bfm_header::member,x.bfm_header::member); - super::swap_(x); - std::swap(node_count,x.node_count); - } - - bool replace_(const Value& k,node_type* x) - { - return super::replace_(k,x); - } - - template<typename Modifier> - bool modify_(Modifier& mod,node_type* x) - { - mod(const_cast<value_type&>(x->value())); - - BOOST_TRY{ - if(!super::modify_(x)){ - deallocate_node(x); - --node_count; - return false; - } - else return true; - } - BOOST_CATCH(...){ - deallocate_node(x); - --node_count; - BOOST_RETHROW; - } - BOOST_CATCH_END - } - - template<typename Modifier,typename Rollback> - bool modify_(Modifier& mod,Rollback& back,node_type* x) - { - mod(const_cast<value_type&>(x->value())); - - bool b; - BOOST_TRY{ - b=super::modify_rollback_(x); - } - BOOST_CATCH(...){ - BOOST_TRY{ - back(const_cast<value_type&>(x->value())); - BOOST_RETHROW; - } - BOOST_CATCH(...){ - this->erase_(x); - BOOST_RETHROW; - } - BOOST_CATCH_END - } - BOOST_CATCH_END - - BOOST_TRY{ - if(!b){ - back(const_cast<value_type&>(x->value())); - return false; - } - else return true; - } - BOOST_CATCH(...){ - this->erase_(x); - BOOST_RETHROW; - } - BOOST_CATCH_END - } - -#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION) - /* serialization */ - - friend class boost::serialization::access; - - BOOST_SERIALIZATION_SPLIT_MEMBER() - - typedef typename super::index_saver_type index_saver_type; - typedef typename super::index_loader_type index_loader_type; - - template<class Archive> - void save(Archive& ar,const unsigned int version)const - { - -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) - const serialization::collection_size_type s(size_()); - const detail::serialization_version<value_type> value_version; - ar<<serialization::make_nvp("count",s); - ar<<serialization::make_nvp("value_version",value_version); -#else - const std::size_t s=size_(); - const unsigned int value_version=0; - ar<<serialization::make_nvp("count",s); -#endif - - index_saver_type sm(bfm_allocator::member,s); - - for(iterator it=super::begin(),it_end=super::end();it!=it_end;++it){ - serialization::save_construct_data_adl(ar,&*it,value_version); - ar<<serialization::make_nvp("item",*it); - sm.add(it.get_node(),ar,version); - } - sm.add_track(header(),ar,version); - - super::save_(ar,version,sm); - } - - template<class Archive> - void load(Archive& ar,const unsigned int version) - { - BOOST_MULTI_INDEX_CHECK_INVARIANT; - - clear_(); - -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) - serialization::collection_size_type s; - detail::serialization_version<value_type> value_version; - if(version<1){ - std::size_t sz; - ar>>serialization::make_nvp("count",sz); - s=sz; - } - else{ - ar>>serialization::make_nvp("count",s); - } - if(version<2){ - value_version=0; - } - else{ - ar>>serialization::make_nvp("value_version",value_version); - } -#else - std::size_t s; - unsigned int value_version=0; - ar>>serialization::make_nvp("count",s); -#endif - - index_loader_type lm(bfm_allocator::member,s); - - for(std::size_t n=0;n<s;++n){ - detail::archive_constructed<Value> value("item",ar,value_version); - std::pair<node_type*,bool> p=insert_( - value.get(),super::end().get_node()); - if(!p.second)throw_exception( - archive::archive_exception( - archive::archive_exception::other_exception)); - ar.reset_object_address(&p.first->value(),&value.get()); - lm.add(p.first,ar,version); - } - lm.add_track(header(),ar,version); - - super::load_(ar,version,lm); - } -#endif - -#if defined(BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING) - /* invariant stuff */ - - bool invariant_()const - { - return super::invariant_(); - } - - void check_invariant_()const - { - BOOST_MULTI_INDEX_INVARIANT_ASSERT(invariant_()); - } -#endif - -private: - std::size_t node_count; - -#if defined(BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING)&&\ - BOOST_WORKAROUND(__MWERKS__,<=0x3003) -#pragma parse_mfunc_templ reset -#endif -}; - -/* retrieval of indices by number */ - -template<typename MultiIndexContainer,int N> -struct nth_index -{ - BOOST_STATIC_CONSTANT( - int, - M=mpl::size<typename MultiIndexContainer::index_type_list>::type::value); - BOOST_STATIC_ASSERT(N>=0&&N<M); - typedef typename mpl::at_c< - typename MultiIndexContainer::index_type_list,N>::type type; -}; - -template<int N,typename Value,typename IndexSpecifierList,typename Allocator> -typename nth_index< - multi_index_container<Value,IndexSpecifierList,Allocator>,N>::type& -get( - multi_index_container<Value,IndexSpecifierList,Allocator>& m - BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(int,N)) -{ - typedef multi_index_container< - Value,IndexSpecifierList,Allocator> multi_index_type; - typedef typename nth_index< - multi_index_container< - Value,IndexSpecifierList,Allocator>, - N - >::type index; - - BOOST_STATIC_ASSERT(N>=0&& - N< - mpl::size< - BOOST_DEDUCED_TYPENAME multi_index_type::index_type_list - >::type::value); - - return detail::converter<multi_index_type,index>::index(m); -} - -template<int N,typename Value,typename IndexSpecifierList,typename Allocator> -const typename nth_index< - multi_index_container<Value,IndexSpecifierList,Allocator>,N>::type& -get( - const multi_index_container<Value,IndexSpecifierList,Allocator>& m - BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(int,N)) -{ - typedef multi_index_container< - Value,IndexSpecifierList,Allocator> multi_index_type; - typedef typename nth_index< - multi_index_container< - Value,IndexSpecifierList,Allocator>, - N - >::type index; - - BOOST_STATIC_ASSERT(N>=0&& - N< - mpl::size< - BOOST_DEDUCED_TYPENAME multi_index_type::index_type_list - >::type::value); - - return detail::converter<multi_index_type,index>::index(m); -} - -/* retrieval of indices by tag */ - -template<typename MultiIndexContainer,typename Tag> -struct index -{ - typedef typename MultiIndexContainer::index_type_list index_type_list; - - typedef typename mpl::find_if< - index_type_list, - detail::has_tag<Tag> - >::type iter; - - BOOST_STATIC_CONSTANT( - bool,index_found=!(is_same<iter,typename mpl::end<index_type_list>::type >::value)); - BOOST_STATIC_ASSERT(index_found); - - typedef typename mpl::deref<iter>::type type; -}; - -template< - typename Tag,typename Value,typename IndexSpecifierList,typename Allocator -> -typename ::boost::multi_index::index< - multi_index_container<Value,IndexSpecifierList,Allocator>,Tag>::type& -get( - multi_index_container<Value,IndexSpecifierList,Allocator>& m - BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(Tag)) -{ - typedef multi_index_container< - Value,IndexSpecifierList,Allocator> multi_index_type; - typedef typename ::boost::multi_index::index< - multi_index_container< - Value,IndexSpecifierList,Allocator>, - Tag - >::type index; - - return detail::converter<multi_index_type,index>::index(m); -} - -template< - typename Tag,typename Value,typename IndexSpecifierList,typename Allocator -> -const typename ::boost::multi_index::index< - multi_index_container<Value,IndexSpecifierList,Allocator>,Tag>::type& -get( - const multi_index_container<Value,IndexSpecifierList,Allocator>& m - BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(Tag)) -{ - typedef multi_index_container< - Value,IndexSpecifierList,Allocator> multi_index_type; - typedef typename ::boost::multi_index::index< - multi_index_container< - Value,IndexSpecifierList,Allocator>, - Tag - >::type index; - - return detail::converter<multi_index_type,index>::index(m); -} - -/* projection of iterators by number */ - -template<typename MultiIndexContainer,int N> -struct nth_index_iterator -{ - typedef typename detail::prevent_eti< - nth_index<MultiIndexContainer,N>, - typename nth_index<MultiIndexContainer,N>::type>::type::iterator type; -}; - -template<typename MultiIndexContainer,int N> -struct nth_index_const_iterator -{ - typedef typename detail::prevent_eti< - nth_index<MultiIndexContainer,N>, - typename nth_index<MultiIndexContainer,N>::type - >::type::const_iterator type; -}; - -template< - int N,typename IteratorType, - typename Value,typename IndexSpecifierList,typename Allocator> -typename nth_index_iterator< - multi_index_container<Value,IndexSpecifierList,Allocator>,N>::type -project( - multi_index_container<Value,IndexSpecifierList,Allocator>& m, - IteratorType it - BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(int,N)) -{ - typedef multi_index_container< - Value,IndexSpecifierList,Allocator> multi_index_type; - typedef typename nth_index<multi_index_type,N>::type index; - -#if (!defined(BOOST_MSVC)||!(BOOST_MSVC<1310))&& /* MSVC++ 6.0/7.0 fails */\ - (!defined(__SUNPRO_CC)||!(__SUNPRO_CC<0x580)) /* as does Sun C++ 5.7 */ - BOOST_STATIC_ASSERT(( - mpl::contains< - BOOST_DEDUCED_TYPENAME multi_index_type::iterator_type_list, - IteratorType>::value)); -#endif - - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(it); - -#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE) - typedef detail::converter< - multi_index_type, - BOOST_DEDUCED_TYPENAME IteratorType::container_type> converter; - BOOST_MULTI_INDEX_CHECK_IS_OWNER(it,converter::index(m)); -#endif - - return detail::converter<multi_index_type,index>::iterator( - m,static_cast<typename multi_index_type::node_type*>(it.get_node())); -} - -template< - int N,typename IteratorType, - typename Value,typename IndexSpecifierList,typename Allocator> -typename nth_index_const_iterator< - multi_index_container<Value,IndexSpecifierList,Allocator>,N>::type -project( - const multi_index_container<Value,IndexSpecifierList,Allocator>& m, - IteratorType it - BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(int,N)) -{ - typedef multi_index_container< - Value,IndexSpecifierList,Allocator> multi_index_type; - typedef typename nth_index<multi_index_type,N>::type index; - -#if (!defined(BOOST_MSVC)||!(BOOST_MSVC<1310))&& /* MSVC++ 6.0/7.0 fails */\ - (!defined(__SUNPRO_CC)||!(__SUNPRO_CC<0x580)) /* as does Sun C++ 5.7 */ - BOOST_STATIC_ASSERT(( - mpl::contains< - BOOST_DEDUCED_TYPENAME multi_index_type::iterator_type_list, - IteratorType>::value|| - mpl::contains< - BOOST_DEDUCED_TYPENAME multi_index_type::const_iterator_type_list, - IteratorType>::value)); -#endif - - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(it); - -#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE) - typedef detail::converter< - multi_index_type, - BOOST_DEDUCED_TYPENAME IteratorType::container_type> converter; - BOOST_MULTI_INDEX_CHECK_IS_OWNER(it,converter::index(m)); -#endif - - return detail::converter<multi_index_type,index>::const_iterator( - m,static_cast<typename multi_index_type::node_type*>(it.get_node())); -} - -/* projection of iterators by tag */ - -template<typename MultiIndexContainer,typename Tag> -struct index_iterator -{ - typedef typename ::boost::multi_index::index< - MultiIndexContainer,Tag>::type::iterator type; -}; - -template<typename MultiIndexContainer,typename Tag> -struct index_const_iterator -{ - typedef typename ::boost::multi_index::index< - MultiIndexContainer,Tag>::type::const_iterator type; -}; - -template< - typename Tag,typename IteratorType, - typename Value,typename IndexSpecifierList,typename Allocator> -typename index_iterator< - multi_index_container<Value,IndexSpecifierList,Allocator>,Tag>::type -project( - multi_index_container<Value,IndexSpecifierList,Allocator>& m, - IteratorType it - BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(Tag)) -{ - typedef multi_index_container< - Value,IndexSpecifierList,Allocator> multi_index_type; - typedef typename ::boost::multi_index::index< - multi_index_type,Tag>::type index; - -#if (!defined(BOOST_MSVC)||!(BOOST_MSVC<1310))&& /* MSVC++ 6.0/7.0 fails */\ - (!defined(__SUNPRO_CC)||!(__SUNPRO_CC<0x580)) /* as does Sun C++ 5.7 */ - BOOST_STATIC_ASSERT(( - mpl::contains< - BOOST_DEDUCED_TYPENAME multi_index_type::iterator_type_list, - IteratorType>::value)); -#endif - - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(it); - -#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE) - typedef detail::converter< - multi_index_type, - BOOST_DEDUCED_TYPENAME IteratorType::container_type> converter; - BOOST_MULTI_INDEX_CHECK_IS_OWNER(it,converter::index(m)); -#endif - - return detail::converter<multi_index_type,index>::iterator( - m,static_cast<typename multi_index_type::node_type*>(it.get_node())); -} - -template< - typename Tag,typename IteratorType, - typename Value,typename IndexSpecifierList,typename Allocator> -typename index_const_iterator< - multi_index_container<Value,IndexSpecifierList,Allocator>,Tag>::type -project( - const multi_index_container<Value,IndexSpecifierList,Allocator>& m, - IteratorType it - BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(Tag)) -{ - typedef multi_index_container< - Value,IndexSpecifierList,Allocator> multi_index_type; - typedef typename ::boost::multi_index::index< - multi_index_type,Tag>::type index; - -#if (!defined(BOOST_MSVC)||!(BOOST_MSVC<1310))&& /* MSVC++ 6.0/7.0 fails */\ - (!defined(__SUNPRO_CC)||!(__SUNPRO_CC<0x580)) /* as does Sun C++ 5.7 */ - BOOST_STATIC_ASSERT(( - mpl::contains< - BOOST_DEDUCED_TYPENAME multi_index_type::iterator_type_list, - IteratorType>::value|| - mpl::contains< - BOOST_DEDUCED_TYPENAME multi_index_type::const_iterator_type_list, - IteratorType>::value)); -#endif - - BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(it); - -#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE) - typedef detail::converter< - multi_index_type, - BOOST_DEDUCED_TYPENAME IteratorType::container_type> converter; - BOOST_MULTI_INDEX_CHECK_IS_OWNER(it,converter::index(m)); -#endif - - return detail::converter<multi_index_type,index>::const_iterator( - m,static_cast<typename multi_index_type::node_type*>(it.get_node())); -} - -/* Comparison. Simple forward to first index. */ - -template< - typename Value1,typename IndexSpecifierList1,typename Allocator1, - typename Value2,typename IndexSpecifierList2,typename Allocator2 -> -bool operator==( - const multi_index_container<Value1,IndexSpecifierList1,Allocator1>& x, - const multi_index_container<Value2,IndexSpecifierList2,Allocator2>& y) -{ - return get<0>(x)==get<0>(y); -} - -template< - typename Value1,typename IndexSpecifierList1,typename Allocator1, - typename Value2,typename IndexSpecifierList2,typename Allocator2 -> -bool operator<( - const multi_index_container<Value1,IndexSpecifierList1,Allocator1>& x, - const multi_index_container<Value2,IndexSpecifierList2,Allocator2>& y) -{ - return get<0>(x)<get<0>(y); -} - -template< - typename Value1,typename IndexSpecifierList1,typename Allocator1, - typename Value2,typename IndexSpecifierList2,typename Allocator2 -> -bool operator!=( - const multi_index_container<Value1,IndexSpecifierList1,Allocator1>& x, - const multi_index_container<Value2,IndexSpecifierList2,Allocator2>& y) -{ - return get<0>(x)!=get<0>(y); -} - -template< - typename Value1,typename IndexSpecifierList1,typename Allocator1, - typename Value2,typename IndexSpecifierList2,typename Allocator2 -> -bool operator>( - const multi_index_container<Value1,IndexSpecifierList1,Allocator1>& x, - const multi_index_container<Value2,IndexSpecifierList2,Allocator2>& y) -{ - return get<0>(x)>get<0>(y); -} - -template< - typename Value1,typename IndexSpecifierList1,typename Allocator1, - typename Value2,typename IndexSpecifierList2,typename Allocator2 -> -bool operator>=( - const multi_index_container<Value1,IndexSpecifierList1,Allocator1>& x, - const multi_index_container<Value2,IndexSpecifierList2,Allocator2>& y) -{ - return get<0>(x)>=get<0>(y); -} - -template< - typename Value1,typename IndexSpecifierList1,typename Allocator1, - typename Value2,typename IndexSpecifierList2,typename Allocator2 -> -bool operator<=( - const multi_index_container<Value1,IndexSpecifierList1,Allocator1>& x, - const multi_index_container<Value2,IndexSpecifierList2,Allocator2>& y) -{ - return get<0>(x)<=get<0>(y); -} - -/* specialized algorithms */ - -template<typename Value,typename IndexSpecifierList,typename Allocator> -void swap( - multi_index_container<Value,IndexSpecifierList,Allocator>& x, - multi_index_container<Value,IndexSpecifierList,Allocator>& y) -{ - x.swap(y); -} - -} /* namespace multi_index */ - -#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION)&&\ - !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) -/* class version = 1 : we now serialize the size through - * boost::serialization::collection_size_type. - * class version = 2 : proper use of {save|load}_construct_data. - */ - -namespace serialization { -template<typename Value,typename IndexSpecifierList,typename Allocator> -struct version< - boost::multi_index_container<Value,IndexSpecifierList,Allocator> -> -{ - BOOST_STATIC_CONSTANT(int,value=2); -}; -} /* namespace serialization */ -#endif - -/* Associated global functions are promoted to namespace boost, except - * comparison operators and swap, which are meant to be Koenig looked-up. - */ - -using multi_index::get; -using multi_index::project; - -} /* namespace boost */ - -#undef BOOST_MULTI_INDEX_CHECK_INVARIANT - -#endif diff --git a/3rdParty/Boost/src/boost/multi_index_container_fwd.hpp b/3rdParty/Boost/src/boost/multi_index_container_fwd.hpp deleted file mode 100644 index 99e8db3..0000000 --- a/3rdParty/Boost/src/boost/multi_index_container_fwd.hpp +++ /dev/null @@ -1,121 +0,0 @@ -/* 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 http://www.boost.org/libs/multi_index for library home page. - */ - -#ifndef BOOST_MULTI_INDEX_FWD_HPP -#define BOOST_MULTI_INDEX_FWD_HPP - -#if defined(_MSC_VER)&&(_MSC_VER>=1200) -#pragma once -#endif - -#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */ -#include <boost/multi_index/identity.hpp> -#include <boost/multi_index/indexed_by.hpp> -#include <boost/multi_index/ordered_index_fwd.hpp> -#include <memory> - -namespace boost{ - -namespace multi_index{ - -/* Default value for IndexSpecifierList specifies a container - * equivalent to std::set<Value>. - */ - -template< - typename Value, - typename IndexSpecifierList=indexed_by<ordered_unique<identity<Value> > >, - typename Allocator=std::allocator<Value> > -class multi_index_container; - -template<typename MultiIndexContainer,int N> -struct nth_index; - -template<typename MultiIndexContainer,typename Tag> -struct index; - -template<typename MultiIndexContainer,int N> -struct nth_index_iterator; - -template<typename MultiIndexContainer,int N> -struct nth_index_const_iterator; - -template<typename MultiIndexContainer,typename Tag> -struct index_iterator; - -template<typename MultiIndexContainer,typename Tag> -struct index_const_iterator; - -/* get and project functions not fwd declared due to problems - * with dependent typenames - */ - -template< - typename Value1,typename IndexSpecifierList1,typename Allocator1, - typename Value2,typename IndexSpecifierList2,typename Allocator2 -> -bool operator==( - const multi_index_container<Value1,IndexSpecifierList1,Allocator1>& x, - const multi_index_container<Value2,IndexSpecifierList2,Allocator2>& y); - -template< - typename Value1,typename IndexSpecifierList1,typename Allocator1, - typename Value2,typename IndexSpecifierList2,typename Allocator2 -> -bool operator<( - const multi_index_container<Value1,IndexSpecifierList1,Allocator1>& x, - const multi_index_container<Value2,IndexSpecifierList2,Allocator2>& y); - -template< - typename Value1,typename IndexSpecifierList1,typename Allocator1, - typename Value2,typename IndexSpecifierList2,typename Allocator2 -> -bool operator!=( - const multi_index_container<Value1,IndexSpecifierList1,Allocator1>& x, - const multi_index_container<Value2,IndexSpecifierList2,Allocator2>& y); - -template< - typename Value1,typename IndexSpecifierList1,typename Allocator1, - typename Value2,typename IndexSpecifierList2,typename Allocator2 -> -bool operator>( - const multi_index_container<Value1,IndexSpecifierList1,Allocator1>& x, - const multi_index_container<Value2,IndexSpecifierList2,Allocator2>& y); - -template< - typename Value1,typename IndexSpecifierList1,typename Allocator1, - typename Value2,typename IndexSpecifierList2,typename Allocator2 -> -bool operator>=( - const multi_index_container<Value1,IndexSpecifierList1,Allocator1>& x, - const multi_index_container<Value2,IndexSpecifierList2,Allocator2>& y); - -template< - typename Value1,typename IndexSpecifierList1,typename Allocator1, - typename Value2,typename IndexSpecifierList2,typename Allocator2 -> -bool operator<=( - const multi_index_container<Value1,IndexSpecifierList1,Allocator1>& x, - const multi_index_container<Value2,IndexSpecifierList2,Allocator2>& y); - -template<typename Value,typename IndexSpecifierList,typename Allocator> -void swap( - multi_index_container<Value,IndexSpecifierList,Allocator>& x, - multi_index_container<Value,IndexSpecifierList,Allocator>& y); - -} /* namespace multi_index */ - -/* multi_index_container, being the main type of this library, is promoted to - * namespace boost. - */ - -using multi_index::multi_index_container; - -} /* namespace boost */ - -#endif diff --git a/3rdParty/Boost/src/boost/optional/optional.hpp b/3rdParty/Boost/src/boost/optional/optional.hpp index 88041d1..ec9006e 100644 --- a/3rdParty/Boost/src/boost/optional/optional.hpp +++ b/3rdParty/Boost/src/boost/optional/optional.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2003, Fernando Luis Cacciola Carballal. +// Copyright (C) 2003, 2008 Fernando Luis Cacciola Carballal. // // Use, modification, and distribution is subject to the Boost Software // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at @@ -9,27 +9,34 @@ // You are welcome to contact the author at: // fernando_cacciola@hotmail.com // +// Revisions: +// 27 Apr 2008 (improved swap) Fernando Cacciola, Niels Dekker, Thorsten Ottosen +// #ifndef BOOST_OPTIONAL_OPTIONAL_FLC_19NOV2002_HPP #define BOOST_OPTIONAL_OPTIONAL_FLC_19NOV2002_HPP -#include<new> -#include<algorithm> - -#include "boost/config.hpp" -#include "boost/assert.hpp" -#include "boost/type.hpp" -#include "boost/type_traits/alignment_of.hpp" -#include "boost/type_traits/type_with_alignment.hpp" -#include "boost/type_traits/remove_reference.hpp" -#include "boost/type_traits/is_reference.hpp" -#include "boost/mpl/if.hpp" -#include "boost/mpl/bool.hpp" -#include "boost/mpl/not.hpp" -#include "boost/detail/reference_content.hpp" -#include "boost/none.hpp" -#include "boost/utility/compare_pointees.hpp" - -#include "boost/optional/optional_fwd.hpp" +#include <new> +#include <algorithm> + +#include <boost/config.hpp> +#include <boost/assert.hpp> +#include <boost/type.hpp> +#include <boost/type_traits/alignment_of.hpp> +#include <boost/type_traits/has_nothrow_constructor.hpp> +#include <boost/type_traits/type_with_alignment.hpp> +#include <boost/type_traits/remove_reference.hpp> +#include <boost/type_traits/is_reference.hpp> +#include <boost/mpl/if.hpp> +#include <boost/mpl/bool.hpp> +#include <boost/mpl/not.hpp> +#include <boost/detail/reference_content.hpp> +#include <boost/none.hpp> +#include <boost/utility/swap.hpp> +#include <boost/utility/addressof.hpp> +#include <boost/utility/compare_pointees.hpp> +#include <boost/utility/in_place_factory.hpp> + +#include <boost/optional/optional_fwd.hpp> #if BOOST_WORKAROUND(BOOST_MSVC, == 1200) // VC6.0 has the following bug: @@ -76,6 +83,15 @@ #define BOOST_OPTIONAL_WEAK_OVERLOAD_RESOLUTION #endif +#if defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__) > 302 \ + && !defined(__INTEL_COMPILER) +// GCC since 3.3 has may_alias attribute that helps to alleviate optimizer issues with +// regard to violation of the strict aliasing rules. The optional< T > storage type is marked +// with this attribute in order to let the compiler know that it will alias objects of type T +// and silence compilation warnings. +#define BOOST_OPTIONAL_DETAIL_USE_ATTRIBUTE_MAY_ALIAS +#endif + // Daniel Wallin discovered that bind/apply.hpp badly interacts with the apply<> // member template of a factory as used in the optional<> implementation. // He proposed this simple fix which is to move the call to apply<> outside @@ -83,7 +99,7 @@ namespace boost_optional_detail { template <class T, class Factory> - void construct(Factory const& factory, void* address) + inline void construct(Factory const& factory, void* address) { factory.BOOST_NESTED_TEMPLATE apply<T>(address); } @@ -95,6 +111,9 @@ namespace boost { class in_place_factory_base ; class typed_in_place_factory_base ; +// This forward is needed to refer to namespace scope swap from the member swap +template<class T> void swap ( optional<T>& x, optional<T>& y ); + namespace optional_detail { // This local class is used instead of that in "aligned_storage.hpp" @@ -105,7 +124,12 @@ template <class T> class aligned_storage { // Borland ICEs if unnamed unions are used for this! - union dummy_u + union + // This works around GCC warnings about breaking strict aliasing rules when casting storage address to T* +#if defined(BOOST_OPTIONAL_DETAIL_USE_ATTRIBUTE_MAY_ALIAS) + __attribute__((may_alias)) +#endif + dummy_u { char data[ sizeof(T) ]; BOOST_DEDUCED_TYPENAME type_with_alignment< @@ -114,8 +138,13 @@ class aligned_storage public: - void const* address() const { return &dummy_.data[0]; } - void * address() { return &dummy_.data[0]; } +#if defined(BOOST_OPTIONAL_DETAIL_USE_ATTRIBUTE_MAY_ALIAS) + void const* address() const { return &dummy_; } + void * address() { return &dummy_; } +#else + void const* address() const { return dummy_.data; } + void * address() { return dummy_.data; } +#endif } ; template<class T> @@ -149,7 +178,7 @@ class optional_base : public optional_tag typedef #if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) BOOST_DEDUCED_TYPENAME -#endif +#endif ::boost::detail::make_reference_content<T>::type internal_type ; typedef aligned_storage<internal_type> storage_type ; @@ -200,7 +229,7 @@ class optional_base : public optional_tag { construct(val); } - + // Creates an optional<T> initialized with 'val' IFF cond is true, otherwise creates an uninitialzed optional<T>. // Can throw if T::T(T const&) does optional_base ( bool cond, argument_type val ) @@ -421,8 +450,22 @@ class optional_base : public optional_tag private : // internal_type can be either T or reference_content<T> +#if defined(BOOST_OPTIONAL_DETAIL_USE_ATTRIBUTE_MAY_ALIAS) + // This workaround is supposed to silence GCC warnings about broken strict aliasing rules + internal_type const* get_object() const + { + union { void const* ap_pvoid; internal_type const* as_ptype; } caster = { m_storage.address() }; + return caster.as_ptype; + } + internal_type * get_object() + { + union { void* ap_pvoid; internal_type* as_ptype; } caster = { m_storage.address() }; + return caster.as_ptype; + } +#else internal_type const* get_object() const { return static_cast<internal_type const*>(m_storage.address()); } internal_type * get_object() { return static_cast<internal_type *> (m_storage.address()); } +#endif // reference_content<T> lacks an implicit conversion to T&, so the following is needed to obtain a proper reference. reference_const_type dereference( internal_type const* p, is_not_reference_tag ) const { return *p ; } @@ -513,12 +556,12 @@ class optional : public optional_detail::optional_base<T> // Depending on the above some T ctor is called. // Can throw is the resolved T ctor throws. template<class Expr> - explicit optional ( Expr const& expr ) : base(expr,&expr) {} + explicit optional ( Expr const& expr ) : base(expr,boost::addressof(expr)) {} #endif // Creates a deep copy of another optional<T> // Can throw if T::T(T const&) does - optional ( optional const& rhs ) : base(rhs) {} + optional ( optional const& rhs ) : base( static_cast<base const&>(rhs) ) {} // No-throw (assuming T::~T() doesn't) ~optional() {} @@ -527,9 +570,9 @@ class optional : public optional_detail::optional_base<T> // Assigns from an expression. See corresponding constructor. // Basic Guarantee: If the resolved T ctor throws, this is left UNINITIALIZED template<class Expr> - optional& operator= ( Expr expr ) + optional& operator= ( Expr const& expr ) { - this->assign_expr(expr,&expr); + this->assign_expr(expr,boost::addressof(expr)); return *this ; } #endif @@ -552,7 +595,7 @@ class optional : public optional_detail::optional_base<T> // (NOTE: On BCB, this operator is not actually called and left is left UNMODIFIED in case of a throw) optional& operator= ( optional const& rhs ) { - this->assign( rhs ) ; + this->assign( static_cast<base const&>(rhs) ) ; return *this ; } @@ -573,6 +616,14 @@ class optional : public optional_detail::optional_base<T> return *this ; } + void swap( optional & arg ) + { + // allow for Koenig lookup + using boost::swap; + swap(*this, arg); + } + + // Returns a reference to the value if this is initialized, otherwise, // the behaviour is UNDEFINED // No-throw @@ -582,7 +633,7 @@ class optional : public optional_detail::optional_base<T> // Returns a copy of the value if this is initialized, 'v' otherwise reference_const_type get_value_or ( reference_const_type v ) const { return this->is_initialized() ? get() : v ; } reference_type get_value_or ( reference_type v ) { return this->is_initialized() ? get() : v ; } - + // Returns a pointer to the value if this is initialized, otherwise, // the behaviour is UNDEFINED // No-throw @@ -599,22 +650,22 @@ class optional : public optional_detail::optional_base<T> // No-throw operator unspecified_bool_type() const { return this->safe_bool() ; } - // This is provided for those compilers which don't like the conversion to bool - // on some contexts. - bool operator!() const { return !this->is_initialized() ; } + // This is provided for those compilers which don't like the conversion to bool + // on some contexts. + bool operator!() const { return !this->is_initialized() ; } } ; // Returns optional<T>(v) -template<class T> -inline +template<class T> +inline optional<T> make_optional ( T const& v ) { return optional<T>(v); } // Returns optional<T>(cond,v) -template<class T> -inline +template<class T> +inline optional<T> make_optional ( bool cond, T const& v ) { return optional<T>(cond,v); @@ -867,58 +918,74 @@ inline bool operator >= ( none_t x, optional<T> const& y ) { return !( x < y ) ; } -// -// The following swap implementation follows the GCC workaround as found in -// "boost/detail/compressed_pair.hpp" -// namespace optional_detail { -// GCC < 3.2 gets the using declaration at namespace scope (FLC, DWA) -#if BOOST_WORKAROUND(__GNUC__, < 3) \ - || BOOST_WORKAROUND(__GNUC__, == 3) && __GNUC_MINOR__ <= 2 - using std::swap; -#define BOOST_OPTIONAL_STD_SWAP_INTRODUCED_AT_NS_SCOPE -#endif +template<bool use_default_constructor> struct swap_selector; -// optional's swap: -// If both are initialized, calls swap(T&, T&). If this swap throws, both will remain initialized but their values are now unspecified. -// If only one is initialized, calls U.reset(*I), THEN I.reset(). -// If U.reset(*I) throws, both are left UNCHANGED (U is kept uinitialized and I is never reset) -// If both are uninitialized, do nothing (no-throw) -template<class T> -inline -void optional_swap ( optional<T>& x, optional<T>& y ) +template<> +struct swap_selector<true> { - if ( !x && !!y ) - { - x.reset(*y); - y.reset(); - } - else if ( !!x && !y ) - { - y.reset(*x); - x.reset(); - } - else if ( !!x && !!y ) - { -// GCC > 3.2 and all other compilers have the using declaration at function scope (FLC) -#ifndef BOOST_OPTIONAL_STD_SWAP_INTRODUCED_AT_NS_SCOPE - // allow for Koenig lookup - using std::swap ; -#endif - swap(*x,*y); - } -} + template<class T> + static void optional_swap ( optional<T>& x, optional<T>& y ) + { + const bool hasX = !!x; + const bool hasY = !!y; + + if ( !hasX && !hasY ) + return; + + if( !hasX ) + x = boost::in_place(); + else if ( !hasY ) + y = boost::in_place(); + + // Boost.Utility.Swap will take care of ADL and workarounds for broken compilers + boost::swap(x.get(),y.get()); + + if( !hasX ) + y = boost::none ; + else if( !hasY ) + x = boost::none ; + } +}; + +template<> +struct swap_selector<false> +{ + template<class T> + static void optional_swap ( optional<T>& x, optional<T>& y ) + { + const bool hasX = !!x; + const bool hasY = !!y; + + if ( !hasX && hasY ) + { + x = y.get(); + y = boost::none ; + } + else if ( hasX && !hasY ) + { + y = x.get(); + x = boost::none ; + } + else if ( hasX && hasY ) + { + // Boost.Utility.Swap will take care of ADL and workarounds for broken compilers + boost::swap(x.get(),y.get()); + } + } +}; } // namespace optional_detail +template<class T> +struct optional_swap_should_use_default_constructor : has_nothrow_default_constructor<T> {} ; + template<class T> inline void swap ( optional<T>& x, optional<T>& y ) { - optional_detail::optional_swap(x,y); + optional_detail::swap_selector<optional_swap_should_use_default_constructor<T>::value>::optional_swap(x, y); } - } // namespace boost #endif - diff --git a/3rdParty/Boost/src/boost/optional/optional_io.hpp b/3rdParty/Boost/src/boost/optional/optional_io.hpp deleted file mode 100644 index 85a1857..0000000 --- a/3rdParty/Boost/src/boost/optional/optional_io.hpp +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright (C) 2005, Fernando Luis Cacciola Carballal. -// -// 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) -// -// See http://www.boost.org/libs/optional for documentation. -// -// You are welcome to contact the author at: -// fernando_cacciola@hotmail.com -// -#ifndef BOOST_OPTIONAL_OPTIONAL_IO_FLC_19NOV2002_HPP -#define BOOST_OPTIONAL_OPTIONAL_IO_FLC_19NOV2002_HPP - -#if defined __GNUC__ -# if (__GNUC__ == 2 && __GNUC_MINOR__ <= 97) -# define BOOST_OPTIONAL_NO_TEMPLATED_STREAMS -# endif -#endif // __GNUC__ - -#if defined BOOST_OPTIONAL_NO_TEMPLATED_STREAMS -# include <iostream> -#else -# include <istream> -# include <ostream> -#endif - - -#include "boost/optional/optional.hpp" -#include "boost/utility/value_init.hpp" - -namespace boost -{ - -#if defined (BOOST_NO_TEMPLATED_STREAMS) -template<class T> -inline std::ostream& operator<<(std::ostream& out, optional<T> const& v) -#else -template<class CharType, class CharTrait, class T> -inline -std::basic_ostream<CharType, CharTrait>& -operator<<(std::basic_ostream<CharType, CharTrait>& out, optional<T> const& v) -#endif -{ - if ( out.good() ) - { - if ( !v ) - out << "--" ; - else out << ' ' << *v ; - } - - return out; -} - -#if defined (BOOST_NO_TEMPLATED_STREAMS) -template<class T> -inline std::istream& operator>>(std::istream& in, optional<T>& v) -#else -template<class CharType, class CharTrait, class T> -inline -std::basic_istream<CharType, CharTrait>& -operator>>(std::basic_istream<CharType, CharTrait>& in, optional<T>& v) -#endif -{ - if ( in.good() ) - { - int d = in.get(); - if ( d == ' ' ) - { - T x ; - in >> x; - v = x ; - } - else - v = optional<T>() ; - } - - return in; -} - -} // namespace boost - -#endif - diff --git a/3rdParty/Boost/src/boost/preprocessor/punctuation/paren.hpp b/3rdParty/Boost/src/boost/preprocessor/punctuation/paren.hpp new file mode 100644 index 0000000..28c18cb --- /dev/null +++ b/3rdParty/Boost/src/boost/preprocessor/punctuation/paren.hpp @@ -0,0 +1,23 @@ +# /* ************************************************************************** +# * * +# * (C) Copyright Paul Mensonides 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) +# * * +# ************************************************************************** */ +# +# /* See http://www.boost.org for most recent version. */ +# +# ifndef BOOST_PREPROCESSOR_PUNCTUATION_PAREN_HPP +# define BOOST_PREPROCESSOR_PUNCTUATION_PAREN_HPP +# +# /* BOOST_PP_LPAREN */ +# +# define BOOST_PP_LPAREN() ( +# +# /* BOOST_PP_RPAREN */ +# +# define BOOST_PP_RPAREN() ) +# +# endif diff --git a/3rdParty/Boost/src/boost/program_options/detail/parsers.hpp b/3rdParty/Boost/src/boost/program_options/detail/parsers.hpp index 506cb35..a1124b2 100644 --- a/3rdParty/Boost/src/boost/program_options/detail/parsers.hpp +++ b/3rdParty/Boost/src/boost/program_options/detail/parsers.hpp @@ -36,11 +36,11 @@ namespace boost { namespace program_options { template<class charT> basic_command_line_parser<charT>:: - basic_command_line_parser(int argc, charT* argv[]) + basic_command_line_parser(int argc, const charT* const argv[]) : detail::cmdline( // Explicit template arguments are required by gcc 3.3.1 // (at least mingw version), and do no harm on other compilers. - to_internal(detail::make_vector<charT, charT**>(argv+1, argv+argc+!argc))) + to_internal(detail::make_vector<charT, const charT* const*>(argv+1, argv+argc+!argc))) {} @@ -111,7 +111,7 @@ namespace boost { namespace program_options { template<class charT> basic_parsed_options<charT> - parse_command_line(int argc, charT* argv[], + parse_command_line(int argc, const charT* const argv[], const options_description& desc, int style, function1<std::pair<std::string, std::string>, diff --git a/3rdParty/Boost/src/boost/program_options/parsers.hpp b/3rdParty/Boost/src/boost/program_options/parsers.hpp index 49fb19c..c57b971 100644 --- a/3rdParty/Boost/src/boost/program_options/parsers.hpp +++ b/3rdParty/Boost/src/boost/program_options/parsers.hpp @@ -100,7 +100,7 @@ namespace boost { namespace program_options { /** Creates a command line parser for the specified arguments list. The parameters should be the same as passed to 'main'. */ - basic_command_line_parser(int argc, charT* argv[]); + basic_command_line_parser(int argc, const charT* const argv[]); /** Sets options descriptions to use. */ basic_command_line_parser& options(const options_description& desc); @@ -144,7 +144,7 @@ namespace boost { namespace program_options { */ template<class charT> basic_parsed_options<charT> - parse_command_line(int argc, charT* argv[], + parse_command_line(int argc, const charT* const argv[], const options_description&, int style = 0, function1<std::pair<std::string, std::string>, diff --git a/3rdParty/Boost/src/boost/property_tree/detail/exception_implementation.hpp b/3rdParty/Boost/src/boost/property_tree/detail/exception_implementation.hpp deleted file mode 100644 index 551e10c..0000000 --- a/3rdParty/Boost/src/boost/property_tree/detail/exception_implementation.hpp +++ /dev/null @@ -1,83 +0,0 @@ -// ---------------------------------------------------------------------------- -// Copyright (C) 2002-2006 Marcin Kalicinski -// Copyright (C) 2009 Sebastian Redl -// -// 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) -// -// For more information, see www.boost.org -// ---------------------------------------------------------------------------- -#ifndef BOOST_PROPERTY_TREE_DETAIL_EXCEPTIONS_IMPLEMENTATION_HPP_INCLUDED -#define BOOST_PROPERTY_TREE_DETAIL_EXCEPTIONS_IMPLEMENTATION_HPP_INCLUDED - -namespace boost { namespace property_tree -{ - - namespace detail - { - - // Helper for preparing what string in ptree_bad_path exception - template<class P> inline - std::string prepare_bad_path_what(const std::string &what, - const P &path) - { - return what + " (" + path.dump() + ")"; - } - - } - - /////////////////////////////////////////////////////////////////////////// - // ptree_error - - inline ptree_error::ptree_error(const std::string &w): - std::runtime_error(w) - { - } - - inline ptree_error::~ptree_error() throw() - { - } - - /////////////////////////////////////////////////////////////////////////// - // ptree_bad_data - - template<class D> inline - ptree_bad_data::ptree_bad_data(const std::string &w, const D &d): - ptree_error(w), m_data(d) - { - } - - inline ptree_bad_data::~ptree_bad_data() throw() - { - } - - template<class D> inline - D ptree_bad_data::data() - { - return boost::any_cast<D>(m_data); - } - - /////////////////////////////////////////////////////////////////////////// - // ptree_bad_path - - template<class P> inline - ptree_bad_path::ptree_bad_path(const std::string &w, const P &p): - ptree_error(detail::prepare_bad_path_what(w, p)), m_path(p) - { - - } - - inline ptree_bad_path::~ptree_bad_path() throw() - { - } - - template<class P> inline - P ptree_bad_path::path() - { - return boost::any_cast<P>(m_path); - } - -}} - -#endif diff --git a/3rdParty/Boost/src/boost/property_tree/detail/file_parser_error.hpp b/3rdParty/Boost/src/boost/property_tree/detail/file_parser_error.hpp deleted file mode 100644 index ff90583..0000000 --- a/3rdParty/Boost/src/boost/property_tree/detail/file_parser_error.hpp +++ /dev/null @@ -1,88 +0,0 @@ -// ---------------------------------------------------------------------------- -// Copyright (C) 2002-2006 Marcin Kalicinski -// -// 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) -// -// For more information, see www.boost.org -// ---------------------------------------------------------------------------- -#ifndef BOOST_PROPERTY_TREE_DETAIL_FILE_PARSER_ERROR_HPP_INCLUDED -#define BOOST_PROPERTY_TREE_DETAIL_FILE_PARSER_ERROR_HPP_INCLUDED - -#include <boost/property_tree/ptree.hpp> -#include <string> - -namespace boost { namespace property_tree -{ - - //! File parse error - class file_parser_error: public ptree_error - { - - public: - - /////////////////////////////////////////////////////////////////////// - // Construction & destruction - - // Construct error - file_parser_error(const std::string &msg, - const std::string &file, - unsigned long l) : - ptree_error(format_what(msg, file, l)), - m_message(msg), m_filename(file), m_line(l) - { - } - - ~file_parser_error() throw() - // gcc 3.4.2 complains about lack of throw specifier on compiler - // generated dtor - { - } - - /////////////////////////////////////////////////////////////////////// - // Data access - - // Get error message (without line and file - use what() to get - // full message) - std::string message() const - { - return m_message; - } - - // Get error filename - std::string filename() const - { - return m_filename; - } - - // Get error line number - unsigned long line() const - { - return m_line; - } - - private: - - std::string m_message; - std::string m_filename; - unsigned long m_line; - - // Format error message to be returned by std::runtime_error::what() - static std::string format_what(const std::string &msg, - const std::string &file, - unsigned long l) - { - std::stringstream stream; - stream << (file.empty() ? "<unspecified file>" : file.c_str()); - if (l > 0) - stream << '(' << l << ')'; - stream << ": " << msg; - return stream.str(); - } - - }; - -} } - -#endif diff --git a/3rdParty/Boost/src/boost/property_tree/detail/ptree_implementation.hpp b/3rdParty/Boost/src/boost/property_tree/detail/ptree_implementation.hpp deleted file mode 100644 index 4220002..0000000 --- a/3rdParty/Boost/src/boost/property_tree/detail/ptree_implementation.hpp +++ /dev/null @@ -1,905 +0,0 @@ -// ---------------------------------------------------------------------------- -// Copyright (C) 2002-2006 Marcin Kalicinski -// Copyright (C) 2009 Sebastian Redl -// -// 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) -// -// For more information, see www.boost.org -// ---------------------------------------------------------------------------- -#ifndef BOOST_PROPERTY_TREE_DETAIL_PTREE_IMPLEMENTATION_HPP_INCLUDED -#define BOOST_PROPERTY_TREE_DETAIL_PTREE_IMPLEMENTATION_HPP_INCLUDED - -#include <boost/iterator/iterator_adaptor.hpp> -#include <boost/iterator/reverse_iterator.hpp> -#include <memory> -#include <cassert> - -#if defined(BOOST_MSVC) && \ - (_MSC_FULL_VER >= 160000000 && _MSC_FULL_VER < 170000000) -#define BOOST_PROPERTY_TREE_PAIR_BUG -#endif - -namespace boost { namespace property_tree -{ - template <class K, class D, class C> - struct basic_ptree<K, D, C>::subs - { - struct by_name {}; - // The actual child container. -#if defined(BOOST_PROPERTY_TREE_PAIR_BUG) - // MSVC 10 has moved std::pair's members to a base - // class. Unfortunately this does break the interface. - BOOST_STATIC_CONSTANT(unsigned, - first_offset = offsetof(value_type, first)); - typedef multi_index_container<value_type, - multi_index::indexed_by< - multi_index::sequenced<>, - multi_index::ordered_non_unique<multi_index::tag<by_name>, - multi_index::member_offset<value_type, const key_type, - first_offset>, - key_compare - > - > - > base_container; -#else - typedef multi_index_container<value_type, - multi_index::indexed_by< - multi_index::sequenced<>, - multi_index::ordered_non_unique<multi_index::tag<by_name>, - multi_index::member<value_type, const key_type, - &value_type::first>, - key_compare - > - > - > base_container; -#endif - // The by-name lookup index. - typedef typename base_container::template index<by_name>::type - by_name_index; - - // Access functions for getting to the children of a tree. - static base_container& ch(self_type *s) { - return *static_cast<base_container*>(s->m_children); - } - static const base_container& ch(const self_type *s) { - return *static_cast<const base_container*>(s->m_children); - } - static by_name_index& assoc(self_type *s) { - return ch(s).BOOST_NESTED_TEMPLATE get<by_name>(); - } - static const by_name_index& assoc(const self_type *s) { - return ch(s).BOOST_NESTED_TEMPLATE get<by_name>(); - } - }; - template <class K, class D, class C> - class basic_ptree<K, D, C>::iterator : public boost::iterator_adaptor< - iterator, typename subs::base_container::iterator, value_type> - { - friend class boost::iterator_core_access; - typedef boost::iterator_adaptor< - iterator, typename subs::base_container::iterator, value_type> - baset; - public: - typedef typename baset::reference reference; - iterator() {} - explicit iterator(typename iterator::base_type b) - : iterator::iterator_adaptor_(b) - {} - reference dereference() const - { - // multi_index doesn't allow modification of its values, because - // indexes could sort by anything, and modification screws that up. - // However, we only sort by the key, and it's protected against - // modification in the value_type, so this const_cast is safe. - return const_cast<reference>(*this->base_reference()); - } - }; - template <class K, class D, class C> - class basic_ptree<K, D, C>::const_iterator : public boost::iterator_adaptor< - const_iterator, typename subs::base_container::const_iterator> - { - public: - const_iterator() {} - explicit const_iterator(typename const_iterator::base_type b) - : const_iterator::iterator_adaptor_(b) - {} - const_iterator(iterator b) - : const_iterator::iterator_adaptor_(b.base()) - {} - }; - template <class K, class D, class C> - class basic_ptree<K, D, C>::reverse_iterator - : public boost::reverse_iterator<iterator> - { - public: - reverse_iterator() {} - explicit reverse_iterator(iterator b) - : boost::reverse_iterator<iterator>(b) - {} - }; - template <class K, class D, class C> - class basic_ptree<K, D, C>::const_reverse_iterator - : public boost::reverse_iterator<const_iterator> - { - public: - const_reverse_iterator() {} - explicit const_reverse_iterator(const_iterator b) - : boost::reverse_iterator<const_iterator>(b) - {} - const_reverse_iterator( - typename basic_ptree<K, D, C>::reverse_iterator b) - : boost::reverse_iterator<const_iterator>(b) - {} - }; - template <class K, class D, class C> - class basic_ptree<K, D, C>::assoc_iterator - : public boost::iterator_adaptor<assoc_iterator, - typename subs::by_name_index::iterator, - value_type> - { - friend class boost::iterator_core_access; - typedef boost::iterator_adaptor<assoc_iterator, - typename subs::by_name_index::iterator, - value_type> - baset; - public: - typedef typename baset::reference reference; - assoc_iterator() {} - explicit assoc_iterator(typename assoc_iterator::base_type b) - : assoc_iterator::iterator_adaptor_(b) - {} - reference dereference() const - { - return const_cast<reference>(*this->base_reference()); - } - }; - template <class K, class D, class C> - class basic_ptree<K, D, C>::const_assoc_iterator - : public boost::iterator_adaptor<const_assoc_iterator, - typename subs::by_name_index::const_iterator> - { - public: - const_assoc_iterator() {} - explicit const_assoc_iterator( - typename const_assoc_iterator::base_type b) - : const_assoc_iterator::iterator_adaptor_(b) - {} - const_assoc_iterator(assoc_iterator b) - : const_assoc_iterator::iterator_adaptor_(b.base()) - {} - }; - - - // Big five - - // Perhaps the children collection could be created on-demand only, to - // reduce heap traffic. But that's a lot more work to implement. - - template<class K, class D, class C> inline - basic_ptree<K, D, C>::basic_ptree() - : m_children(new typename subs::base_container) - { - } - - template<class K, class D, class C> inline - basic_ptree<K, D, C>::basic_ptree(const data_type &d) - : m_data(d), m_children(new typename subs::base_container) - { - } - - template<class K, class D, class C> inline - basic_ptree<K, D, C>::basic_ptree(const basic_ptree<K, D, C> &rhs) - : m_data(rhs.m_data), - m_children(new typename subs::base_container(subs::ch(&rhs))) - { - } - - template<class K, class D, class C> - basic_ptree<K, D, C> & - basic_ptree<K, D, C>::operator =(const basic_ptree<K, D, C> &rhs) - { - self_type(rhs).swap(*this); - return *this; - } - - template<class K, class D, class C> - basic_ptree<K, D, C>::~basic_ptree() - { - delete &subs::ch(this); - } - - template<class K, class D, class C> inline - void basic_ptree<K, D, C>::swap(basic_ptree<K, D, C> &rhs) - { - m_data.swap(rhs.m_data); - // Void pointers, no ADL necessary - std::swap(m_children, rhs.m_children); - } - - // Container view - - template<class K, class D, class C> inline - typename basic_ptree<K, D, C>::size_type - basic_ptree<K, D, C>::size() const - { - return subs::ch(this).size(); - } - - template<class K, class D, class C> inline - typename basic_ptree<K, D, C>::size_type - basic_ptree<K, D, C>::max_size() const - { - return subs::ch(this).max_size(); - } - - template<class K, class D, class C> inline - bool basic_ptree<K, D, C>::empty() const - { - return subs::ch(this).empty(); - } - - template<class K, class D, class C> inline - typename basic_ptree<K, D, C>::iterator - basic_ptree<K, D, C>::begin() - { - return iterator(subs::ch(this).begin()); - } - - template<class K, class D, class C> inline - typename basic_ptree<K, D, C>::const_iterator - basic_ptree<K, D, C>::begin() const - { - return const_iterator(subs::ch(this).begin()); - } - - template<class K, class D, class C> inline - typename basic_ptree<K, D, C>::iterator - basic_ptree<K, D, C>::end() - { - return iterator(subs::ch(this).end()); - } - - template<class K, class D, class C> inline - typename basic_ptree<K, D, C>::const_iterator - basic_ptree<K, D, C>::end() const - { - return const_iterator(subs::ch(this).end()); - } - - template<class K, class D, class C> inline - typename basic_ptree<K, D, C>::reverse_iterator - basic_ptree<K, D, C>::rbegin() - { - return reverse_iterator(this->end()); - } - - template<class K, class D, class C> inline - typename basic_ptree<K, D, C>::const_reverse_iterator - basic_ptree<K, D, C>::rbegin() const - { - return const_reverse_iterator(this->end()); - } - - template<class K, class D, class C> inline - typename basic_ptree<K, D, C>::reverse_iterator - basic_ptree<K, D, C>::rend() - { - return reverse_iterator(this->begin()); - } - - template<class K, class D, class C> inline - typename basic_ptree<K, D, C>::const_reverse_iterator - basic_ptree<K, D, C>::rend() const - { - return const_reverse_iterator(this->begin()); - } - - template<class K, class D, class C> inline - typename basic_ptree<K, D, C>::value_type & - basic_ptree<K, D, C>::front() - { - return const_cast<value_type&>(subs::ch(this).front()); - } - - template<class K, class D, class C> inline - const typename basic_ptree<K, D, C>::value_type & - basic_ptree<K, D, C>::front() const - { - return subs::ch(this).front(); - } - - template<class K, class D, class C> inline - typename basic_ptree<K, D, C>::value_type & - basic_ptree<K, D, C>::back() - { - return const_cast<value_type&>(subs::ch(this).back()); - } - - template<class K, class D, class C> inline - const typename basic_ptree<K, D, C>::value_type & - basic_ptree<K, D, C>::back() const - { - return subs::ch(this).back(); - } - - template<class K, class D, class C> inline - typename basic_ptree<K, D, C>::iterator - basic_ptree<K, D, C>::insert(iterator where, const value_type &value) - { - return iterator(subs::ch(this).insert(where.base(), value).first); - } - - template<class K, class D, class C> - template<class It> inline - void basic_ptree<K, D, C>::insert(iterator where, It first, It last) - { - subs::ch(this).insert(where.base(), first, last); - } - - template<class K, class D, class C> inline - typename basic_ptree<K, D, C>::iterator - basic_ptree<K, D, C>::erase(iterator where) - { - return iterator(subs::ch(this).erase(where.base())); - } - - template<class K, class D, class C> inline - typename basic_ptree<K, D, C>::iterator - basic_ptree<K, D, C>::erase(iterator first, iterator last) - { - return iterator(subs::ch(this).erase(first.base(), last.base())); - } - - template<class K, class D, class C> inline - typename basic_ptree<K, D, C>::iterator - basic_ptree<K, D, C>::push_front(const value_type &value) - { - return iterator(subs::ch(this).push_front(value).first); - } - - template<class K, class D, class C> inline - typename basic_ptree<K, D, C>::iterator - basic_ptree<K, D, C>::push_back(const value_type &value) - { - return iterator(subs::ch(this).push_back(value).first); - } - - template<class K, class D, class C> inline - void basic_ptree<K, D, C>::pop_front() - { - subs::ch(this).pop_front(); - } - - template<class K, class D, class C> inline - void basic_ptree<K, D, C>::pop_back() - { - subs::ch(this).pop_back(); - } - - template<class K, class D, class C> inline - void basic_ptree<K, D, C>::reverse() - { - subs::ch(this).reverse(); - } - - template<class K, class D, class C> inline - void basic_ptree<K, D, C>::sort() - { - subs::ch(this).sort(); - } - - template<class K, class D, class C> - template<class Compare> inline - void basic_ptree<K, D, C>::sort(Compare comp) - { - subs::ch(this).sort(comp); - } - - // Equality - - template<class K, class D, class C> inline - bool basic_ptree<K, D, C>::operator ==( - const basic_ptree<K, D, C> &rhs) const - { - // The size test is cheap, so add it as an optimization - return size() == rhs.size() && data() == rhs.data() && - subs::ch(this) == subs::ch(&rhs); - } - - template<class K, class D, class C> inline - bool basic_ptree<K, D, C>::operator !=( - const basic_ptree<K, D, C> &rhs) const - { - return !(*this == rhs); - } - - // Associative view - - template<class K, class D, class C> inline - typename basic_ptree<K, D, C>::assoc_iterator - basic_ptree<K, D, C>::ordered_begin() - { - return assoc_iterator(subs::assoc(this).begin()); - } - - template<class K, class D, class C> inline - typename basic_ptree<K, D, C>::const_assoc_iterator - basic_ptree<K, D, C>::ordered_begin() const - { - return const_assoc_iterator(subs::assoc(this).begin()); - } - - template<class K, class D, class C> inline - typename basic_ptree<K, D, C>::assoc_iterator - basic_ptree<K, D, C>::not_found() - { - return assoc_iterator(subs::assoc(this).end()); - } - - template<class K, class D, class C> inline - typename basic_ptree<K, D, C>::const_assoc_iterator - basic_ptree<K, D, C>::not_found() const - { - return const_assoc_iterator(subs::assoc(this).end()); - } - - template<class K, class D, class C> inline - typename basic_ptree<K, D, C>::assoc_iterator - basic_ptree<K, D, C>::find(const key_type &key) - { - return assoc_iterator(subs::assoc(this).find(key)); - } - - template<class K, class D, class C> inline - typename basic_ptree<K, D, C>::const_assoc_iterator - basic_ptree<K, D, C>::find(const key_type &key) const - { - return const_assoc_iterator(subs::assoc(this).find(key)); - } - - template<class K, class D, class C> inline - std::pair< - typename basic_ptree<K, D, C>::assoc_iterator, - typename basic_ptree<K, D, C>::assoc_iterator - > basic_ptree<K, D, C>::equal_range(const key_type &key) - { - std::pair<typename subs::by_name_index::iterator, - typename subs::by_name_index::iterator> r( - subs::assoc(this).equal_range(key)); - return std::pair<assoc_iterator, assoc_iterator>( - assoc_iterator(r.first), assoc_iterator(r.second)); - } - - template<class K, class D, class C> inline - std::pair< - typename basic_ptree<K, D, C>::const_assoc_iterator, - typename basic_ptree<K, D, C>::const_assoc_iterator - > basic_ptree<K, D, C>::equal_range(const key_type &key) const - { - std::pair<typename subs::by_name_index::const_iterator, - typename subs::by_name_index::const_iterator> r( - subs::assoc(this).equal_range(key)); - return std::pair<const_assoc_iterator, const_assoc_iterator>( - const_assoc_iterator(r.first), const_assoc_iterator(r.second)); - } - - template<class K, class D, class C> inline - typename basic_ptree<K, D, C>::size_type - basic_ptree<K, D, C>::count(const key_type &key) const - { - return subs::assoc(this).count(key); - } - - template<class K, class D, class C> inline - typename basic_ptree<K, D, C>::size_type - basic_ptree<K, D, C>::erase(const key_type &key) - { - return subs::assoc(this).erase(key); - } - - template<class K, class D, class C> inline - typename basic_ptree<K, D, C>::iterator - basic_ptree<K, D, C>::to_iterator(assoc_iterator ai) - { - return iterator(subs::ch(this). - BOOST_NESTED_TEMPLATE project<0>(ai.base())); - } - - template<class K, class D, class C> inline - typename basic_ptree<K, D, C>::const_iterator - basic_ptree<K, D, C>::to_iterator(const_assoc_iterator ai) const - { - return const_iterator(subs::ch(this). - BOOST_NESTED_TEMPLATE project<0>(ai.base())); - } - - // Property tree view - - template<class K, class D, class C> inline - typename basic_ptree<K, D, C>::data_type & - basic_ptree<K, D, C>::data() - { - return m_data; - } - - template<class K, class D, class C> inline - const typename basic_ptree<K, D, C>::data_type & - basic_ptree<K, D, C>::data() const - { - return m_data; - } - - template<class K, class D, class C> inline - void basic_ptree<K, D, C>::clear() - { - m_data = data_type(); - subs::ch(this).clear(); - } - - template<class K, class D, class C> - basic_ptree<K, D, C> & - basic_ptree<K, D, C>::get_child(const path_type &path) - { - path_type p(path); - self_type *n = walk_path(p); - if (!n) { - BOOST_PROPERTY_TREE_THROW(ptree_bad_path("No such node", path)); - } - return *n; - } - - template<class K, class D, class C> inline - const basic_ptree<K, D, C> & - basic_ptree<K, D, C>::get_child(const path_type &path) const - { - return const_cast<self_type*>(this)->get_child(path); - } - - template<class K, class D, class C> inline - basic_ptree<K, D, C> & - basic_ptree<K, D, C>::get_child(const path_type &path, - self_type &default_value) - { - path_type p(path); - self_type *n = walk_path(p); - return n ? *n : default_value; - } - - template<class K, class D, class C> inline - const basic_ptree<K, D, C> & - basic_ptree<K, D, C>::get_child(const path_type &path, - const self_type &default_value) const - { - return const_cast<self_type*>(this)->get_child(path, - const_cast<self_type&>(default_value)); - } - - - template<class K, class D, class C> - optional<basic_ptree<K, D, C> &> - basic_ptree<K, D, C>::get_child_optional(const path_type &path) - { - path_type p(path); - self_type *n = walk_path(p); - if (!n) { - return optional<self_type&>(); - } - return *n; - } - - template<class K, class D, class C> - optional<const basic_ptree<K, D, C> &> - basic_ptree<K, D, C>::get_child_optional(const path_type &path) const - { - path_type p(path); - self_type *n = walk_path(p); - if (!n) { - return optional<const self_type&>(); - } - return *n; - } - - template<class K, class D, class C> - basic_ptree<K, D, C> & - basic_ptree<K, D, C>::put_child(const path_type &path, - const self_type &value) - { - path_type p(path); - self_type &parent = force_path(p); - // Got the parent. Now get the correct child. - key_type fragment = p.reduce(); - assoc_iterator el = parent.find(fragment); - // If the new child exists, replace it. - if(el != parent.not_found()) { - return el->second = value; - } else { - return parent.push_back(value_type(fragment, value))->second; - } - } - - template<class K, class D, class C> - basic_ptree<K, D, C> & - basic_ptree<K, D, C>::add_child(const path_type &path, - const self_type &value) - { - path_type p(path); - self_type &parent = force_path(p); - // Got the parent. - key_type fragment = p.reduce(); - return parent.push_back(value_type(fragment, value))->second; - } - - template<class K, class D, class C> - template<class Type, class Translator> - typename boost::enable_if<detail::is_translator<Translator>, Type>::type - basic_ptree<K, D, C>::get_value(Translator tr) const - { - if(boost::optional<Type> o = get_value_optional<Type>(tr)) { - return *o; - } - BOOST_PROPERTY_TREE_THROW(ptree_bad_data( - std::string("conversion of data to type \"") + - typeid(Type).name() + "\" failed", data())); - } - - template<class K, class D, class C> - template<class Type> inline - Type basic_ptree<K, D, C>::get_value() const - { - return get_value<Type>( - typename translator_between<data_type, Type>::type()); - } - - template<class K, class D, class C> - template<class Type, class Translator> inline - Type basic_ptree<K, D, C>::get_value(const Type &default_value, - Translator tr) const - { - return get_value_optional<Type>(tr).get_value_or(default_value); - } - - template<class K, class D, class C> - template <class Ch, class Translator> - typename boost::enable_if< - detail::is_character<Ch>, - std::basic_string<Ch> - >::type - basic_ptree<K, D, C>::get_value(const Ch *default_value, Translator tr)const - { - return get_value<std::basic_string<Ch>, Translator>(default_value, tr); - } - - template<class K, class D, class C> - template<class Type> inline - typename boost::disable_if<detail::is_translator<Type>, Type>::type - basic_ptree<K, D, C>::get_value(const Type &default_value) const - { - return get_value(default_value, - typename translator_between<data_type, Type>::type()); - } - - template<class K, class D, class C> - template <class Ch> - typename boost::enable_if< - detail::is_character<Ch>, - std::basic_string<Ch> - >::type - basic_ptree<K, D, C>::get_value(const Ch *default_value) const - { - return get_value< std::basic_string<Ch> >(default_value); - } - - template<class K, class D, class C> - template<class Type, class Translator> inline - optional<Type> basic_ptree<K, D, C>::get_value_optional( - Translator tr) const - { - return tr.get_value(data()); - } - - template<class K, class D, class C> - template<class Type> inline - optional<Type> basic_ptree<K, D, C>::get_value_optional() const - { - return get_value_optional<Type>( - typename translator_between<data_type, Type>::type()); - } - - template<class K, class D, class C> - template<class Type, class Translator> inline - typename boost::enable_if<detail::is_translator<Translator>, Type>::type - basic_ptree<K, D, C>::get(const path_type &path, - Translator tr) const - { - return get_child(path).BOOST_NESTED_TEMPLATE get_value<Type>(tr); - } - - template<class K, class D, class C> - template<class Type> inline - Type basic_ptree<K, D, C>::get(const path_type &path) const - { - return get_child(path).BOOST_NESTED_TEMPLATE get_value<Type>(); - } - - template<class K, class D, class C> - template<class Type, class Translator> inline - Type basic_ptree<K, D, C>::get(const path_type &path, - const Type &default_value, - Translator tr) const - { - return get_optional<Type>(path, tr).get_value_or(default_value); - } - - template<class K, class D, class C> - template <class Ch, class Translator> - typename boost::enable_if< - detail::is_character<Ch>, - std::basic_string<Ch> - >::type - basic_ptree<K, D, C>::get( - const path_type &path, const Ch *default_value, Translator tr) const - { - return get<std::basic_string<Ch>, Translator>(path, default_value, tr); - } - - template<class K, class D, class C> - template<class Type> inline - typename boost::disable_if<detail::is_translator<Type>, Type>::type - basic_ptree<K, D, C>::get(const path_type &path, - const Type &default_value) const - { - return get_optional<Type>(path).get_value_or(default_value); - } - - template<class K, class D, class C> - template <class Ch> - typename boost::enable_if< - detail::is_character<Ch>, - std::basic_string<Ch> - >::type - basic_ptree<K, D, C>::get( - const path_type &path, const Ch *default_value) const - { - return get< std::basic_string<Ch> >(path, default_value); - } - - template<class K, class D, class C> - template<class Type, class Translator> - optional<Type> basic_ptree<K, D, C>::get_optional(const path_type &path, - Translator tr) const - { - if (optional<const self_type&> child = get_child_optional(path)) - return child.get(). - BOOST_NESTED_TEMPLATE get_value_optional<Type>(tr); - else - return optional<Type>(); - } - - template<class K, class D, class C> - template<class Type> - optional<Type> basic_ptree<K, D, C>::get_optional( - const path_type &path) const - { - if (optional<const self_type&> child = get_child_optional(path)) - return child.get().BOOST_NESTED_TEMPLATE get_value_optional<Type>(); - else - return optional<Type>(); - } - - template<class K, class D, class C> - template<class Type, class Translator> - void basic_ptree<K, D, C>::put_value(const Type &value, Translator tr) - { - if(optional<data_type> o = tr.put_value(value)) { - data() = *o; - } else { - BOOST_PROPERTY_TREE_THROW(ptree_bad_data( - std::string("conversion of type \"") + typeid(Type).name() + - "\" to data failed", boost::any())); - } - } - - template<class K, class D, class C> - template<class Type> inline - void basic_ptree<K, D, C>::put_value(const Type &value) - { - put_value(value, typename translator_between<data_type, Type>::type()); - } - - template<class K, class D, class C> - template<class Type, typename Translator> - basic_ptree<K, D, C> & basic_ptree<K, D, C>::put( - const path_type &path, const Type &value, Translator tr) - { - if(optional<self_type &> child = get_child_optional(path)) { - child.get().put_value(value, tr); - return *child; - } else { - self_type &child2 = put_child(path, self_type()); - child2.put_value(value, tr); - return child2; - } - } - - template<class K, class D, class C> - template<class Type> inline - basic_ptree<K, D, C> & basic_ptree<K, D, C>::put( - const path_type &path, const Type &value) - { - return put(path, value, - typename translator_between<data_type, Type>::type()); - } - - template<class K, class D, class C> - template<class Type, typename Translator> inline - basic_ptree<K, D, C> & basic_ptree<K, D, C>::add( - const path_type &path, const Type &value, Translator tr) - { - self_type &child = add_child(path, self_type()); - child.put_value(value, tr); - return child; - } - - template<class K, class D, class C> - template<class Type> inline - basic_ptree<K, D, C> & basic_ptree<K, D, C>::add( - const path_type &path, const Type &value) - { - return add(path, value, - typename translator_between<data_type, Type>::type()); - } - - - template<class K, class D, class C> - basic_ptree<K, D, C> * - basic_ptree<K, D, C>::walk_path(path_type &p) const - { - if(p.empty()) { - // I'm the child we're looking for. - return const_cast<basic_ptree*>(this); - } - // Recurse down the tree to find the path. - key_type fragment = p.reduce(); - const_assoc_iterator el = find(fragment); - if(el == not_found()) { - // No such child. - return 0; - } - // Not done yet, recurse. - return el->second.walk_path(p); - } - - template<class K, class D, class C> - basic_ptree<K, D, C> & basic_ptree<K, D, C>::force_path(path_type &p) - { - assert(!p.empty() && "Empty path not allowed for put_child."); - if(p.single()) { - // I'm the parent we're looking for. - return *this; - } - key_type fragment = p.reduce(); - assoc_iterator el = find(fragment); - // If we've found an existing child, go down that path. Else - // create a new one. - self_type& child = el == not_found() ? - push_back(value_type(fragment, self_type()))->second : el->second; - return child.force_path(p); - } - - // Free functions - - template<class K, class D, class C> - inline void swap(basic_ptree<K, D, C> &pt1, basic_ptree<K, D, C> &pt2) - { - pt1.swap(pt2); - } - -} } - -#if defined(BOOST_PROPERTY_TREE_PAIR_BUG) -#undef BOOST_PROPERTY_TREE_PAIR_BUG -#endif - -#endif diff --git a/3rdParty/Boost/src/boost/property_tree/detail/ptree_utils.hpp b/3rdParty/Boost/src/boost/property_tree/detail/ptree_utils.hpp deleted file mode 100644 index 7e56c8f..0000000 --- a/3rdParty/Boost/src/boost/property_tree/detail/ptree_utils.hpp +++ /dev/null @@ -1,106 +0,0 @@ -// ---------------------------------------------------------------------------- -// Copyright (C) 2002-2006 Marcin Kalicinski -// -// 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) -// -// For more information, see www.boost.org -// ---------------------------------------------------------------------------- -#ifndef BOOST_PROPERTY_TREE_DETAIL_PTREE_UTILS_HPP_INCLUDED -#define BOOST_PROPERTY_TREE_DETAIL_PTREE_UTILS_HPP_INCLUDED - -#include <boost/limits.hpp> -#include <boost/type_traits/integral_constant.hpp> -#include <boost/mpl/has_xxx.hpp> -#include <boost/mpl/and.hpp> -#include <string> -#include <algorithm> -#include <locale> - -namespace boost { namespace property_tree { namespace detail -{ - - template<class T> - struct less_nocase - { - typedef typename T::value_type Ch; - std::locale m_locale; - inline bool operator()(Ch c1, Ch c2) const - { - return std::toupper(c1, m_locale) < std::toupper(c2, m_locale); - } - inline bool operator()(const T &t1, const T &t2) const - { - return std::lexicographical_compare(t1.begin(), t1.end(), - t2.begin(), t2.end(), *this); - } - }; - - template <typename Ch> - struct is_character : public boost::false_type {}; - template <> - struct is_character<char> : public boost::true_type {}; - template <> - struct is_character<wchar_t> : public boost::true_type {}; - - - BOOST_MPL_HAS_XXX_TRAIT_DEF(internal_type) - BOOST_MPL_HAS_XXX_TRAIT_DEF(external_type) - template <typename T> - struct is_translator : public boost::mpl::and_< - has_internal_type<T>, has_external_type<T> > {}; - - - - // Naively convert narrow string to another character type - template<class Ch> - std::basic_string<Ch> widen(const char *text) - { - std::basic_string<Ch> result; - while (*text) - { - result += Ch(*text); - ++text; - } - return result; - } - - // Naively convert string to narrow character type - template<class Ch> - std::string narrow(const Ch *text) - { - std::string result; - while (*text) - { - if (*text < 0 || *text > (std::numeric_limits<char>::max)()) - result += '*'; - else - result += char(*text); - ++text; - } - return result; - } - - // Remove trailing and leading spaces - template<class Ch> - std::basic_string<Ch> trim(const std::basic_string<Ch> &s, - const std::locale &loc = std::locale()) - { - typename std::basic_string<Ch>::const_iterator first = s.begin(); - typename std::basic_string<Ch>::const_iterator end = s.end(); - while (first != end && std::isspace(*first, loc)) - ++first; - if (first == end) - return std::basic_string<Ch>(); - typename std::basic_string<Ch>::const_iterator last = end; - do --last; while (std::isspace(*last, loc)); - if (first != s.begin() || last + 1 != end) - return std::basic_string<Ch>(first, last + 1); - else - return s; - } - -} } } - -#endif diff --git a/3rdParty/Boost/src/boost/property_tree/detail/rapidxml.hpp b/3rdParty/Boost/src/boost/property_tree/detail/rapidxml.hpp deleted file mode 100644 index 712bf3f..0000000 --- a/3rdParty/Boost/src/boost/property_tree/detail/rapidxml.hpp +++ /dev/null @@ -1,2582 +0,0 @@ -// ---------------------------------------------------------------------------- -// Copyright (C) 2006, 2009 Marcin Kalicinski -// -// 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) -// -// For more information, see www.boost.org -// ---------------------------------------------------------------------------- -#ifndef BOOST_PROPERTY_TREE_RAPIDXML_HPP_INCLUDED -#define BOOST_PROPERTY_TREE_RAPIDXML_HPP_INCLUDED - -//! \file rapidxml.hpp This file contains rapidxml parser and DOM implementation - -#include <cstdlib> // For std::size_t -#include <cassert> // For assert -#include <new> // For placement new - -// On MSVC, disable "conditional expression is constant" warning (level 4). -// This warning is almost impossible to avoid with certain types of templated code -#ifdef _MSC_VER - #pragma warning(push) - #pragma warning(disable:4127) // Conditional expression is constant -#endif - -/////////////////////////////////////////////////////////////////////////// -// BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR - -#include <exception> // For std::exception - -#define BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR(what, where) throw parse_error(what, where) - -namespace boost { namespace property_tree { namespace detail {namespace rapidxml -{ - - //! Parse error exception. - //! This exception is thrown by the parser when an error occurs. - //! Use what() function to get human-readable error message. - //! Use where() function to get a pointer to position within source text where error was detected. - //! <br><br> - //! If throwing exceptions by the parser is undesirable, - //! it can be disabled by defining RAPIDXML_NO_EXCEPTIONS macro before rapidxml.hpp is included. - //! This will cause the parser to call rapidxml::parse_error_handler() function instead of throwing an exception. - //! This function must be defined by the user. - //! <br><br> - //! This class derives from <code>std::exception</code> class. - class parse_error: public std::exception - { - - public: - - //! Constructs parse error - parse_error(const char *wa, void *we) - : m_what(wa) - , m_where(we) - { - } - - //! Gets human readable description of error. - //! \return Pointer to null terminated description of the error. - virtual const char *what() const throw() - { - return m_what; - } - - //! Gets pointer to character data where error happened. - //! Ch should be the same as char type of xml_document that produced the error. - //! \return Pointer to location within the parsed string where error occured. - template<class Ch> - Ch *where() const - { - return reinterpret_cast<Ch *>(m_where); - } - - private: - - const char *m_what; - void *m_where; - - }; -}}}} - -/////////////////////////////////////////////////////////////////////////// -// Pool sizes - -#ifndef BOOST_PROPERTY_TREE_RAPIDXML_STATIC_POOL_SIZE - // Size of static memory block of memory_pool. - // Define BOOST_PROPERTY_TREE_RAPIDXML_STATIC_POOL_SIZE before including rapidxml.hpp if you want to override the default value. - // No dynamic memory allocations are performed by memory_pool until static memory is exhausted. - #define BOOST_PROPERTY_TREE_RAPIDXML_STATIC_POOL_SIZE (64 * 1024) -#endif - -#ifndef BOOST_PROPERTY_TREE_RAPIDXML_DYNAMIC_POOL_SIZE - // Size of dynamic memory block of memory_pool. - // Define BOOST_PROPERTY_TREE_RAPIDXML_DYNAMIC_POOL_SIZE before including rapidxml.hpp if you want to override the default value. - // After the static block is exhausted, dynamic blocks with approximately this size are allocated by memory_pool. - #define BOOST_PROPERTY_TREE_RAPIDXML_DYNAMIC_POOL_SIZE (64 * 1024) -#endif - -#ifndef BOOST_PROPERTY_TREE_RAPIDXML_ALIGNMENT - // Memory allocation alignment. - // Define BOOST_PROPERTY_TREE_RAPIDXML_ALIGNMENT before including rapidxml.hpp if you want to override the default value, which is the size of pointer. - // All memory allocations for nodes, attributes and strings will be aligned to this value. - // This must be a power of 2 and at least 1, otherwise memory_pool will not work. - #define BOOST_PROPERTY_TREE_RAPIDXML_ALIGNMENT sizeof(void *) -#endif - -namespace boost { namespace property_tree { namespace detail {namespace rapidxml -{ - // Forward declarations - template<class Ch> class xml_node; - template<class Ch> class xml_attribute; - template<class Ch> class xml_document; - - //! Enumeration listing all node types produced by the parser. - //! Use xml_node::type() function to query node type. - enum node_type - { - node_document, //!< A document node. Name and value are empty. - node_element, //!< An element node. Name contains element name. Value contains text of first data node. - node_data, //!< A data node. Name is empty. Value contains data text. - node_cdata, //!< A CDATA node. Name is empty. Value contains data text. - node_comment, //!< A comment node. Name is empty. Value contains comment text. - node_declaration, //!< A declaration node. Name and value are empty. Declaration parameters (version, encoding and standalone) are in node attributes. - node_doctype, //!< A DOCTYPE node. Name is empty. Value contains DOCTYPE text. - node_pi //!< A PI node. Name contains target. Value contains instructions. - }; - - /////////////////////////////////////////////////////////////////////// - // Parsing flags - - //! Parse flag instructing the parser to not create data nodes. - //! Text of first data node will still be placed in value of parent element, unless rapidxml::parse_no_element_values flag is also specified. - //! Can be combined with other flags by use of | operator. - //! <br><br> - //! See xml_document::parse() function. - const int parse_no_data_nodes = 0x1; - - //! Parse flag instructing the parser to not use text of first data node as a value of parent element. - //! Can be combined with other flags by use of | operator. - //! Note that child data nodes of element node take precendence over its value when printing. - //! That is, if element has one or more child data nodes <em>and</em> a value, the value will be ignored. - //! Use rapidxml::parse_no_data_nodes flag to prevent creation of data nodes if you want to manipulate data using values of elements. - //! <br><br> - //! See xml_document::parse() function. - const int parse_no_element_values = 0x2; - - //! Parse flag instructing the parser to not place zero terminators after strings in the source text. - //! By default zero terminators are placed, modifying source text. - //! Can be combined with other flags by use of | operator. - //! <br><br> - //! See xml_document::parse() function. - const int parse_no_string_terminators = 0x4; - - //! Parse flag instructing the parser to not translate entities in the source text. - //! By default entities are translated, modifying source text. - //! Can be combined with other flags by use of | operator. - //! <br><br> - //! See xml_document::parse() function. - const int parse_no_entity_translation = 0x8; - - //! Parse flag instructing the parser to disable UTF-8 handling and assume plain 8 bit characters. - //! By default, UTF-8 handling is enabled. - //! Can be combined with other flags by use of | operator. - //! <br><br> - //! See xml_document::parse() function. - const int parse_no_utf8 = 0x10; - - //! Parse flag instructing the parser to create XML declaration node. - //! By default, declaration node is not created. - //! Can be combined with other flags by use of | operator. - //! <br><br> - //! See xml_document::parse() function. - const int parse_declaration_node = 0x20; - - //! Parse flag instructing the parser to create comments nodes. - //! By default, comment nodes are not created. - //! Can be combined with other flags by use of | operator. - //! <br><br> - //! See xml_document::parse() function. - const int parse_comment_nodes = 0x40; - - //! Parse flag instructing the parser to create DOCTYPE node. - //! By default, doctype node is not created. - //! Although W3C specification allows at most one DOCTYPE node, RapidXml will silently accept documents with more than one. - //! Can be combined with other flags by use of | operator. - //! <br><br> - //! See xml_document::parse() function. - const int parse_doctype_node = 0x80; - - //! Parse flag instructing the parser to create PI nodes. - //! By default, PI nodes are not created. - //! Can be combined with other flags by use of | operator. - //! <br><br> - //! See xml_document::parse() function. - const int parse_pi_nodes = 0x100; - - //! Parse flag instructing the parser to validate closing tag names. - //! If not set, name inside closing tag is irrelevant to the parser. - //! By default, closing tags are not validated. - //! Can be combined with other flags by use of | operator. - //! <br><br> - //! See xml_document::parse() function. - const int parse_validate_closing_tags = 0x200; - - //! Parse flag instructing the parser to trim all leading and trailing whitespace of data nodes. - //! By default, whitespace is not trimmed. - //! This flag does not cause the parser to modify source text. - //! Can be combined with other flags by use of | operator. - //! <br><br> - //! See xml_document::parse() function. - const int parse_trim_whitespace = 0x400; - - //! Parse flag instructing the parser to condense all whitespace runs of data nodes to a single space character. - //! Trimming of leading and trailing whitespace of data is controlled by rapidxml::parse_trim_whitespace flag. - //! By default, whitespace is not normalized. - //! If this flag is specified, source text will be modified. - //! Can be combined with other flags by use of | operator. - //! <br><br> - //! See xml_document::parse() function. - const int parse_normalize_whitespace = 0x800; - - // Compound flags - - //! Parse flags which represent default behaviour of the parser. - //! This is always equal to 0, so that all other flags can be simply ored together. - //! Normally there is no need to inconveniently disable flags by anding with their negated (~) values. - //! This also means that meaning of each flag is a <i>negation</i> of the default setting. - //! For example, if flag name is rapidxml::parse_no_utf8, it means that utf-8 is <i>enabled</i> by default, - //! and using the flag will disable it. - //! <br><br> - //! See xml_document::parse() function. - const int parse_default = 0; - - //! A combination of parse flags that forbids any modifications of the source text. - //! This also results in faster parsing. However, note that the following will occur: - //! <ul> - //! <li>names and values of nodes will not be zero terminated, you have to use xml_base::name_size() and xml_base::value_size() functions to determine where name and value ends</li> - //! <li>entities will not be translated</li> - //! <li>whitespace will not be normalized</li> - //! </ul> - //! See xml_document::parse() function. - const int parse_non_destructive = parse_no_string_terminators | parse_no_entity_translation; - - //! A combination of parse flags resulting in fastest possible parsing, without sacrificing important data. - //! <br><br> - //! See xml_document::parse() function. - const int parse_fastest = parse_non_destructive | parse_no_data_nodes; - - //! A combination of parse flags resulting in largest amount of data being extracted. - //! This usually results in slowest parsing. - //! <br><br> - //! See xml_document::parse() function. - const int parse_full = parse_declaration_node | parse_comment_nodes | parse_doctype_node | parse_pi_nodes | parse_validate_closing_tags; - - /////////////////////////////////////////////////////////////////////// - // Internals - - //! \cond internal - namespace internal - { - - // Struct that contains lookup tables for the parser - // It must be a template to allow correct linking (because it has static data members, which are defined in a header file). - template<int Dummy> - struct lookup_tables - { - static const unsigned char lookup_whitespace[256]; // Whitespace table - static const unsigned char lookup_node_name[256]; // Node name table - static const unsigned char lookup_text[256]; // Text table - static const unsigned char lookup_text_pure_no_ws[256]; // Text table - static const unsigned char lookup_text_pure_with_ws[256]; // Text table - static const unsigned char lookup_attribute_name[256]; // Attribute name table - static const unsigned char lookup_attribute_data_1[256]; // Attribute data table with single quote - static const unsigned char lookup_attribute_data_1_pure[256]; // Attribute data table with single quote - static const unsigned char lookup_attribute_data_2[256]; // Attribute data table with double quotes - static const unsigned char lookup_attribute_data_2_pure[256]; // Attribute data table with double quotes - static const unsigned char lookup_digits[256]; // Digits - static const unsigned char lookup_upcase[256]; // To uppercase conversion table for ASCII characters - }; - - // Find length of the string - template<class Ch> - inline std::size_t measure(const Ch *p) - { - const Ch *tmp = p; - while (*tmp) - ++tmp; - return tmp - p; - } - - // Compare strings for equality - template<class Ch> - inline bool compare(const Ch *p1, std::size_t size1, const Ch *p2, std::size_t size2, bool case_sensitive) - { - if (size1 != size2) - return false; - if (case_sensitive) - { - for (const Ch *end = p1 + size1; p1 < end; ++p1, ++p2) - if (*p1 != *p2) - return false; - } - else - { - for (const Ch *end = p1 + size1; p1 < end; ++p1, ++p2) - if (lookup_tables<0>::lookup_upcase[static_cast<unsigned char>(*p1)] != lookup_tables<0>::lookup_upcase[static_cast<unsigned char>(*p2)]) - return false; - } - return true; - } - - template<class Ch> - inline size_t get_index(const Ch c) - { - // If not ASCII char, its sematic is same as plain 'z' - if (c > 255) - { - return 'z'; - } - return c; - } - } - //! \endcond - - /////////////////////////////////////////////////////////////////////// - // Memory pool - - //! This class is used by the parser to create new nodes and attributes, without overheads of dynamic memory allocation. - //! In most cases, you will not need to use this class directly. - //! However, if you need to create nodes manually or modify names/values of nodes, - //! you are encouraged to use memory_pool of relevant xml_document to allocate the memory. - //! Not only is this faster than allocating them by using <code>new</code> operator, - //! but also their lifetime will be tied to the lifetime of document, - //! possibly simplyfing memory management. - //! <br><br> - //! Call allocate_node() or allocate_attribute() functions to obtain new nodes or attributes from the pool. - //! You can also call allocate_string() function to allocate strings. - //! Such strings can then be used as names or values of nodes without worrying about their lifetime. - //! Note that there is no <code>free()</code> function -- all allocations are freed at once when clear() function is called, - //! or when the pool is destroyed. - //! <br><br> - //! It is also possible to create a standalone memory_pool, and use it - //! to allocate nodes, whose lifetime will not be tied to any document. - //! <br><br> - //! Pool maintains <code>BOOST_PROPERTY_TREE_RAPIDXML_STATIC_POOL_SIZE</code> bytes of statically allocated memory. - //! Until static memory is exhausted, no dynamic memory allocations are done. - //! When static memory is exhausted, pool allocates additional blocks of memory of size <code>BOOST_PROPERTY_TREE_RAPIDXML_DYNAMIC_POOL_SIZE</code> each, - //! by using global <code>new[]</code> and <code>delete[]</code> operators. - //! This behaviour can be changed by setting custom allocation routines. - //! Use set_allocator() function to set them. - //! <br><br> - //! Allocations for nodes, attributes and strings are aligned at <code>BOOST_PROPERTY_TREE_RAPIDXML_ALIGNMENT</code> bytes. - //! This value defaults to the size of pointer on target architecture. - //! <br><br> - //! To obtain absolutely top performance from the parser, - //! it is important that all nodes are allocated from a single, contiguous block of memory. - //! Otherwise, cache misses when jumping between two (or more) disjoint blocks of memory can slow down parsing quite considerably. - //! If required, you can tweak <code>BOOST_PROPERTY_TREE_RAPIDXML_STATIC_POOL_SIZE</code>, <code>BOOST_PROPERTY_TREE_RAPIDXML_DYNAMIC_POOL_SIZE</code> and <code>BOOST_PROPERTY_TREE_RAPIDXML_ALIGNMENT</code> - //! to obtain best wasted memory to performance compromise. - //! To do it, define their values before rapidxml.hpp file is included. - //! \param Ch Character type of created nodes. - template<class Ch = char> - class memory_pool - { - - public: - - //! \cond internal - typedef void *(alloc_func)(std::size_t); // Type of user-defined function used to allocate memory - typedef void (free_func)(void *); // Type of user-defined function used to free memory - //! \endcond - - //! Constructs empty pool with default allocator functions. - memory_pool() - : m_alloc_func(0) - , m_free_func(0) - { - init(); - } - - //! Destroys pool and frees all the memory. - //! This causes memory occupied by nodes allocated by the pool to be freed. - //! Nodes allocated from the pool are no longer valid. - ~memory_pool() - { - clear(); - } - - //! Allocates a new node from the pool, and optionally assigns name and value to it. - //! If the allocation request cannot be accomodated, this function will throw <code>std::bad_alloc</code>. - //! If exceptions are disabled by defining RAPIDXML_NO_EXCEPTIONS, this function - //! will call rapidxml::parse_error_handler() function. - //! \param type Type of node to create. - //! \param name Name to assign to the node, or 0 to assign no name. - //! \param value Value to assign to the node, or 0 to assign no value. - //! \param name_size Size of name to assign, or 0 to automatically calculate size from name string. - //! \param value_size Size of value to assign, or 0 to automatically calculate size from value string. - //! \return Pointer to allocated node. This pointer will never be NULL. - xml_node<Ch> *allocate_node(node_type type, - const Ch *name = 0, const Ch *value = 0, - std::size_t name_size = 0, std::size_t value_size = 0) - { - void *memory = allocate_aligned(sizeof(xml_node<Ch>)); - xml_node<Ch> *node = new(memory) xml_node<Ch>(type); - if (name) - { - if (name_size > 0) - node->name(name, name_size); - else - node->name(name); - } - if (value) - { - if (value_size > 0) - node->value(value, value_size); - else - node->value(value); - } - return node; - } - - //! Allocates a new attribute from the pool, and optionally assigns name and value to it. - //! If the allocation request cannot be accomodated, this function will throw <code>std::bad_alloc</code>. - //! If exceptions are disabled by defining RAPIDXML_NO_EXCEPTIONS, this function - //! will call rapidxml::parse_error_handler() function. - //! \param name Name to assign to the attribute, or 0 to assign no name. - //! \param value Value to assign to the attribute, or 0 to assign no value. - //! \param name_size Size of name to assign, or 0 to automatically calculate size from name string. - //! \param value_size Size of value to assign, or 0 to automatically calculate size from value string. - //! \return Pointer to allocated attribute. This pointer will never be NULL. - xml_attribute<Ch> *allocate_attribute(const Ch *name = 0, const Ch *value = 0, - std::size_t name_size = 0, std::size_t value_size = 0) - { - void *memory = allocate_aligned(sizeof(xml_attribute<Ch>)); - xml_attribute<Ch> *attribute = new(memory) xml_attribute<Ch>; - if (name) - { - if (name_size > 0) - attribute->name(name, name_size); - else - attribute->name(name); - } - if (value) - { - if (value_size > 0) - attribute->value(value, value_size); - else - attribute->value(value); - } - return attribute; - } - - //! Allocates a char array of given size from the pool, and optionally copies a given string to it. - //! If the allocation request cannot be accomodated, this function will throw <code>std::bad_alloc</code>. - //! If exceptions are disabled by defining RAPIDXML_NO_EXCEPTIONS, this function - //! will call rapidxml::parse_error_handler() function. - //! \param source String to initialize the allocated memory with, or 0 to not initialize it. - //! \param size Number of characters to allocate, or zero to calculate it automatically from source string length; if size is 0, source string must be specified and null terminated. - //! \return Pointer to allocated char array. This pointer will never be NULL. - Ch *allocate_string(const Ch *source = 0, std::size_t size = 0) - { - assert(source || size); // Either source or size (or both) must be specified - if (size == 0) - size = internal::measure(source) + 1; - Ch *result = static_cast<Ch *>(allocate_aligned(size * sizeof(Ch))); - if (source) - for (std::size_t i = 0; i < size; ++i) - result[i] = source[i]; - return result; - } - - //! Clones an xml_node and its hierarchy of child nodes and attributes. - //! Nodes and attributes are allocated from this memory pool. - //! Names and values are not cloned, they are shared between the clone and the source. - //! Result node can be optionally specified as a second parameter, - //! in which case its contents will be replaced with cloned source node. - //! This is useful when you want to clone entire document. - //! \param source Node to clone. - //! \param result Node to put results in, or 0 to automatically allocate result node - //! \return Pointer to cloned node. This pointer will never be NULL. - xml_node<Ch> *clone_node(const xml_node<Ch> *source, xml_node<Ch> *result = 0) - { - // Prepare result node - if (result) - { - result->remove_all_attributes(); - result->remove_all_nodes(); - result->type(source->type()); - } - else - result = allocate_node(source->type()); - - // Clone name and value - result->name(source->name(), source->name_size()); - result->value(source->value(), source->value_size()); - - // Clone child nodes and attributes - for (xml_node<Ch> *child = source->first_node(); child; child = child->next_sibling()) - result->append_node(clone_node(child)); - for (xml_attribute<Ch> *attr = source->first_attribute(); attr; attr = attr->next_attribute()) - result->append_attribute(allocate_attribute(attr->name(), attr->value(), attr->name_size(), attr->value_size())); - - return result; - } - - //! Clears the pool. - //! This causes memory occupied by nodes allocated by the pool to be freed. - //! Any nodes or strings allocated from the pool will no longer be valid. - void clear() - { - while (m_begin != m_static_memory) - { - char *previous_begin = reinterpret_cast<header *>(align(m_begin))->previous_begin; - if (m_free_func) - m_free_func(m_begin); - else - delete[] m_begin; - m_begin = previous_begin; - } - init(); - } - - //! Sets or resets the user-defined memory allocation functions for the pool. - //! This can only be called when no memory is allocated from the pool yet, otherwise results are undefined. - //! Allocation function must not return invalid pointer on failure. It should either throw, - //! stop the program, or use <code>longjmp()</code> function to pass control to other place of program. - //! If it returns invalid pointer, results are undefined. - //! <br><br> - //! User defined allocation functions must have the following forms: - //! <br><code> - //! <br>void *allocate(std::size_t size); - //! <br>void free(void *pointer); - //! </code><br> - //! \param af Allocation function, or 0 to restore default function - //! \param ff Free function, or 0 to restore default function - void set_allocator(alloc_func *af, free_func *ff) - { - assert(m_begin == m_static_memory && m_ptr == align(m_begin)); // Verify that no memory is allocated yet - m_alloc_func = af; - m_free_func = ff; - } - - private: - - struct header - { - char *previous_begin; - }; - - void init() - { - m_begin = m_static_memory; - m_ptr = align(m_begin); - m_end = m_static_memory + sizeof(m_static_memory); - } - - char *align(char *ptr) - { - std::size_t alignment = ((BOOST_PROPERTY_TREE_RAPIDXML_ALIGNMENT - (std::size_t(ptr) & (BOOST_PROPERTY_TREE_RAPIDXML_ALIGNMENT - 1))) & (BOOST_PROPERTY_TREE_RAPIDXML_ALIGNMENT - 1)); - return ptr + alignment; - } - - char *allocate_raw(std::size_t size) - { - // Allocate - void *memory; - if (m_alloc_func) // Allocate memory using either user-specified allocation function or global operator new[] - { - memory = m_alloc_func(size); - assert(memory); // Allocator is not allowed to return 0, on failure it must either throw, stop the program or use longjmp - } - else - { - memory = new char[size]; - } - return static_cast<char *>(memory); - } - - void *allocate_aligned(std::size_t size) - { - // Calculate aligned pointer - char *result = align(m_ptr); - - // If not enough memory left in current pool, allocate a new pool - if (result + size > m_end) - { - // Calculate required pool size (may be bigger than BOOST_PROPERTY_TREE_RAPIDXML_DYNAMIC_POOL_SIZE) - std::size_t pool_size = BOOST_PROPERTY_TREE_RAPIDXML_DYNAMIC_POOL_SIZE; - if (pool_size < size) - pool_size = size; - - // Allocate - std::size_t alloc_size = sizeof(header) + (2 * BOOST_PROPERTY_TREE_RAPIDXML_ALIGNMENT - 2) + pool_size; // 2 alignments required in worst case: one for header, one for actual allocation - char *raw_memory = allocate_raw(alloc_size); - - // Setup new pool in allocated memory - char *pool = align(raw_memory); - header *new_header = reinterpret_cast<header *>(pool); - new_header->previous_begin = m_begin; - m_begin = raw_memory; - m_ptr = pool + sizeof(header); - m_end = raw_memory + alloc_size; - - // Calculate aligned pointer again using new pool - result = align(m_ptr); - } - - // Update pool and return aligned pointer - m_ptr = result + size; - return result; - } - - char *m_begin; // Start of raw memory making up current pool - char *m_ptr; // First free byte in current pool - char *m_end; // One past last available byte in current pool - char m_static_memory[BOOST_PROPERTY_TREE_RAPIDXML_STATIC_POOL_SIZE]; // Static raw memory - alloc_func *m_alloc_func; // Allocator function, or 0 if default is to be used - free_func *m_free_func; // Free function, or 0 if default is to be used - }; - - /////////////////////////////////////////////////////////////////////////// - // XML base - - //! Base class for xml_node and xml_attribute implementing common functions: - //! name(), name_size(), value(), value_size() and parent(). - //! \param Ch Character type to use - template<class Ch = char> - class xml_base - { - - public: - - /////////////////////////////////////////////////////////////////////////// - // Construction & destruction - - // Construct a base with empty name, value and parent - xml_base() - : m_name(0) - , m_value(0) - , m_parent(0) - { - } - - /////////////////////////////////////////////////////////////////////////// - // Node data access - - //! Gets name of the node. - //! Interpretation of name depends on type of node. - //! Note that name will not be zero-terminated if rapidxml::parse_no_string_terminators option was selected during parse. - //! <br><br> - //! Use name_size() function to determine length of the name. - //! \return Name of node, or empty string if node has no name. - Ch *name() const - { - return m_name ? m_name : nullstr(); - } - - //! Gets size of node name, not including terminator character. - //! This function works correctly irrespective of whether name is or is not zero terminated. - //! \return Size of node name, in characters. - std::size_t name_size() const - { - return m_name ? m_name_size : 0; - } - - //! Gets value of node. - //! Interpretation of value depends on type of node. - //! Note that value will not be zero-terminated if rapidxml::parse_no_string_terminators option was selected during parse. - //! <br><br> - //! Use value_size() function to determine length of the value. - //! \return Value of node, or empty string if node has no value. - Ch *value() const - { - return m_value ? m_value : nullstr(); - } - - //! Gets size of node value, not including terminator character. - //! This function works correctly irrespective of whether value is or is not zero terminated. - //! \return Size of node value, in characters. - std::size_t value_size() const - { - return m_value ? m_value_size : 0; - } - - /////////////////////////////////////////////////////////////////////////// - // Node modification - - //! Sets name of node to a non zero-terminated string. - //! See \ref ownership_of_strings. - //! <br><br> - //! Note that node does not own its name or value, it only stores a pointer to it. - //! It will not delete or otherwise free the pointer on destruction. - //! It is reponsibility of the user to properly manage lifetime of the string. - //! The easiest way to achieve it is to use memory_pool of the document to allocate the string - - //! on destruction of the document the string will be automatically freed. - //! <br><br> - //! Size of name must be specified separately, because name does not have to be zero terminated. - //! Use name(const Ch *) function to have the length automatically calculated (string must be zero terminated). - //! \param n Name of node to set. Does not have to be zero terminated. - //! \param size Size of name, in characters. This does not include zero terminator, if one is present. - void name(const Ch *n, std::size_t size) - { - m_name = const_cast<Ch *>(n); - m_name_size = size; - } - - //! Sets name of node to a zero-terminated string. - //! See also \ref ownership_of_strings and xml_node::name(const Ch *, std::size_t). - //! \param n Name of node to set. Must be zero terminated. - void name(const Ch *n) - { - name(n, internal::measure(n)); - } - - //! Sets value of node to a non zero-terminated string. - //! See \ref ownership_of_strings. - //! <br><br> - //! Note that node does not own its name or value, it only stores a pointer to it. - //! It will not delete or otherwise free the pointer on destruction. - //! It is reponsibility of the user to properly manage lifetime of the string. - //! The easiest way to achieve it is to use memory_pool of the document to allocate the string - - //! on destruction of the document the string will be automatically freed. - //! <br><br> - //! Size of value must be specified separately, because it does not have to be zero terminated. - //! Use value(const Ch *) function to have the length automatically calculated (string must be zero terminated). - //! <br><br> - //! If an element has a child node of type node_data, it will take precedence over element value when printing. - //! If you want to manipulate data of elements using values, use parser flag rapidxml::parse_no_data_nodes to prevent creation of data nodes by the parser. - //! \param val value of node to set. Does not have to be zero terminated. - //! \param size Size of value, in characters. This does not include zero terminator, if one is present. - void value(const Ch *val, std::size_t size) - { - m_value = const_cast<Ch *>(val); - m_value_size = size; - } - - //! Sets value of node to a zero-terminated string. - //! See also \ref ownership_of_strings and xml_node::value(const Ch *, std::size_t). - //! \param val Vame of node to set. Must be zero terminated. - void value(const Ch *val) - { - this->value(val, internal::measure(val)); - } - - /////////////////////////////////////////////////////////////////////////// - // Related nodes access - - //! Gets node parent. - //! \return Pointer to parent node, or 0 if there is no parent. - xml_node<Ch> *parent() const - { - return m_parent; - } - - protected: - - // Return empty string - static Ch *nullstr() - { - static Ch zero = Ch('\0'); - return &zero; - } - - Ch *m_name; // Name of node, or 0 if no name - Ch *m_value; // Value of node, or 0 if no value - std::size_t m_name_size; // Length of node name, or undefined of no name - std::size_t m_value_size; // Length of node value, or undefined if no value - xml_node<Ch> *m_parent; // Pointer to parent node, or 0 if none - - }; - - //! Class representing attribute node of XML document. - //! Each attribute has name and value strings, which are available through name() and value() functions (inherited from xml_base). - //! Note that after parse, both name and value of attribute will point to interior of source text used for parsing. - //! Thus, this text must persist in memory for the lifetime of attribute. - //! \param Ch Character type to use. - template<class Ch = char> - class xml_attribute: public xml_base<Ch> - { - - friend class xml_node<Ch>; - - public: - - /////////////////////////////////////////////////////////////////////////// - // Construction & destruction - - //! Constructs an empty attribute with the specified type. - //! Consider using memory_pool of appropriate xml_document if allocating attributes manually. - xml_attribute() - { - } - - /////////////////////////////////////////////////////////////////////////// - // Related nodes access - - //! Gets document of which attribute is a child. - //! \return Pointer to document that contains this attribute, or 0 if there is no parent document. - xml_document<Ch> *document() const - { - if (xml_node<Ch> *node = this->parent()) - { - while (node->parent()) - node = node->parent(); - return node->type() == node_document ? static_cast<xml_document<Ch> *>(node) : 0; - } - else - return 0; - } - - //! Gets previous attribute, optionally matching attribute name. - //! \param n Name of attribute to find, or 0 to return previous attribute regardless of its name; this string doesn't have to be zero-terminated if nsize is non-zero - //! \param nsize Size of name, in characters, or 0 to have size calculated automatically from string - //! \param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters - //! \return Pointer to found attribute, or 0 if not found. - xml_attribute<Ch> *previous_attribute(const Ch *n = 0, std::size_t nsize = 0, bool case_sensitive = true) const - { - if (n) - { - if (nsize == 0) - nsize = internal::measure(n); - for (xml_attribute<Ch> *attribute = m_prev_attribute; attribute; attribute = attribute->m_prev_attribute) - if (internal::compare(attribute->name(), attribute->name_size(), n, nsize, case_sensitive)) - return attribute; - return 0; - } - else - return this->m_parent ? m_prev_attribute : 0; - } - - //! Gets next attribute, optionally matching attribute name. - //! \param n Name of attribute to find, or 0 to return next attribute regardless of its name; this string doesn't have to be zero-terminated if nsize is non-zero - //! \param nsize Size of name, in characters, or 0 to have size calculated automatically from string - //! \param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters - //! \return Pointer to found attribute, or 0 if not found. - xml_attribute<Ch> *next_attribute(const Ch *n = 0, std::size_t nsize = 0, bool case_sensitive = true) const - { - if (n) - { - if (nsize == 0) - nsize = internal::measure(n); - for (xml_attribute<Ch> *attribute = m_next_attribute; attribute; attribute = attribute->m_next_attribute) - if (internal::compare(attribute->name(), attribute->name_size(), n, nsize, case_sensitive)) - return attribute; - return 0; - } - else - return this->m_parent ? m_next_attribute : 0; - } - - private: - - xml_attribute<Ch> *m_prev_attribute; // Pointer to previous sibling of attribute, or 0 if none; only valid if parent is non-zero - xml_attribute<Ch> *m_next_attribute; // Pointer to next sibling of attribute, or 0 if none; only valid if parent is non-zero - - }; - - /////////////////////////////////////////////////////////////////////////// - // XML node - - //! Class representing a node of XML document. - //! Each node may have associated name and value strings, which are available through name() and value() functions. - //! Interpretation of name and value depends on type of the node. - //! Type of node can be determined by using type() function. - //! <br><br> - //! Note that after parse, both name and value of node, if any, will point interior of source text used for parsing. - //! Thus, this text must persist in the memory for the lifetime of node. - //! \param Ch Character type to use. - template<class Ch = char> - class xml_node: public xml_base<Ch> - { - - public: - - /////////////////////////////////////////////////////////////////////////// - // Construction & destruction - - //! Constructs an empty node with the specified type. - //! Consider using memory_pool of appropriate document to allocate nodes manually. - //! \param t Type of node to construct. - xml_node(node_type t) - : m_type(t) - , m_first_node(0) - , m_first_attribute(0) - { - } - - /////////////////////////////////////////////////////////////////////////// - // Node data access - - //! Gets type of node. - //! \return Type of node. - node_type type() const - { - return m_type; - } - - /////////////////////////////////////////////////////////////////////////// - // Related nodes access - - //! Gets document of which node is a child. - //! \return Pointer to document that contains this node, or 0 if there is no parent document. - xml_document<Ch> *document() const - { - xml_node<Ch> *node = const_cast<xml_node<Ch> *>(this); - while (node->parent()) - node = node->parent(); - return node->type() == node_document ? static_cast<xml_document<Ch> *>(node) : 0; - } - - //! Gets first child node, optionally matching node name. - //! \param n Name of child to find, or 0 to return first child regardless of its name; this string doesn't have to be zero-terminated if nsize is non-zero - //! \param nsize Size of name, in characters, or 0 to have size calculated automatically from string - //! \param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters - //! \return Pointer to found child, or 0 if not found. - xml_node<Ch> *first_node(const Ch *n = 0, std::size_t nsize = 0, bool case_sensitive = true) const - { - if (n) - { - if (nsize == 0) - nsize = internal::measure(n); - for (xml_node<Ch> *child = m_first_node; child; child = child->next_sibling()) - if (internal::compare(child->name(), child->name_size(), n, nsize, case_sensitive)) - return child; - return 0; - } - else - return m_first_node; - } - - //! Gets last child node, optionally matching node name. - //! Behaviour is undefined if node has no children. - //! Use first_node() to test if node has children. - //! \param n Name of child to find, or 0 to return last child regardless of its name; this string doesn't have to be zero-terminated if nsize is non-zero - //! \param nsize Size of name, in characters, or 0 to have size calculated automatically from string - //! \param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters - //! \return Pointer to found child, or 0 if not found. - xml_node<Ch> *last_node(const Ch *n = 0, std::size_t nsize = 0, bool case_sensitive = true) const - { - assert(m_first_node); // Cannot query for last child if node has no children - if (n) - { - if (nsize == 0) - nsize = internal::measure(n); - for (xml_node<Ch> *child = m_last_node; child; child = child->previous_sibling()) - if (internal::compare(child->name(), child->name_size(), n, nsize, case_sensitive)) - return child; - return 0; - } - else - return m_last_node; - } - - //! Gets previous sibling node, optionally matching node name. - //! Behaviour is undefined if node has no parent. - //! Use parent() to test if node has a parent. - //! \param n Name of sibling to find, or 0 to return previous sibling regardless of its name; this string doesn't have to be zero-terminated if nsize is non-zero - //! \param nsize Size of name, in characters, or 0 to have size calculated automatically from string - //! \param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters - //! \return Pointer to found sibling, or 0 if not found. - xml_node<Ch> *previous_sibling(const Ch *n = 0, std::size_t nsize = 0, bool case_sensitive = true) const - { - assert(this->m_parent); // Cannot query for siblings if node has no parent - if (n) - { - if (nsize == 0) - nsize = internal::measure(n); - for (xml_node<Ch> *sibling = m_prev_sibling; sibling; sibling = sibling->m_prev_sibling) - if (internal::compare(sibling->name(), sibling->name_size(), n, nsize, case_sensitive)) - return sibling; - return 0; - } - else - return m_prev_sibling; - } - - //! Gets next sibling node, optionally matching node name. - //! Behaviour is undefined if node has no parent. - //! Use parent() to test if node has a parent. - //! \param n Name of sibling to find, or 0 to return next sibling regardless of its name; this string doesn't have to be zero-terminated if nsize is non-zero - //! \param nsize Size of name, in characters, or 0 to have size calculated automatically from string - //! \param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters - //! \return Pointer to found sibling, or 0 if not found. - xml_node<Ch> *next_sibling(const Ch *n = 0, std::size_t nsize = 0, bool case_sensitive = true) const - { - assert(this->m_parent); // Cannot query for siblings if node has no parent - if (n) - { - if (nsize == 0) - nsize = internal::measure(n); - for (xml_node<Ch> *sibling = m_next_sibling; sibling; sibling = sibling->m_next_sibling) - if (internal::compare(sibling->name(), sibling->name_size(), n, nsize, case_sensitive)) - return sibling; - return 0; - } - else - return m_next_sibling; - } - - //! Gets first attribute of node, optionally matching attribute name. - //! \param n Name of attribute to find, or 0 to return first attribute regardless of its name; this string doesn't have to be zero-terminated if nsize is non-zero - //! \param nsize Size of name, in characters, or 0 to have size calculated automatically from string - //! \param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters - //! \return Pointer to found attribute, or 0 if not found. - xml_attribute<Ch> *first_attribute(const Ch *n = 0, std::size_t nsize = 0, bool case_sensitive = true) const - { - if (n) - { - if (nsize == 0) - nsize = internal::measure(n); - for (xml_attribute<Ch> *attribute = m_first_attribute; attribute; attribute = attribute->m_next_attribute) - if (internal::compare(attribute->name(), attribute->name_size(), n, nsize, case_sensitive)) - return attribute; - return 0; - } - else - return m_first_attribute; - } - - //! Gets last attribute of node, optionally matching attribute name. - //! \param n Name of attribute to find, or 0 to return last attribute regardless of its name; this string doesn't have to be zero-terminated if nsize is non-zero - //! \param nsize Size of name, in characters, or 0 to have size calculated automatically from string - //! \param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters - //! \return Pointer to found attribute, or 0 if not found. - xml_attribute<Ch> *last_attribute(const Ch *n = 0, std::size_t nsize = 0, bool case_sensitive = true) const - { - if (n) - { - if (nsize == 0) - nsize = internal::measure(n); - for (xml_attribute<Ch> *attribute = m_last_attribute; attribute; attribute = attribute->m_prev_attribute) - if (internal::compare(attribute->name(), attribute->name_size(), n, nsize, case_sensitive)) - return attribute; - return 0; - } - else - return m_first_attribute ? m_last_attribute : 0; - } - - /////////////////////////////////////////////////////////////////////////// - // Node modification - - //! Sets type of node. - //! \param t Type of node to set. - void type(node_type t) - { - m_type = t; - } - - /////////////////////////////////////////////////////////////////////////// - // Node manipulation - - //! Prepends a new child node. - //! The prepended child becomes the first child, and all existing children are moved one position back. - //! \param child Node to prepend. - void prepend_node(xml_node<Ch> *child) - { - assert(child && !child->parent() && child->type() != node_document); - if (first_node()) - { - child->m_next_sibling = m_first_node; - m_first_node->m_prev_sibling = child; - } - else - { - child->m_next_sibling = 0; - m_last_node = child; - } - m_first_node = child; - child->m_parent = this; - child->m_prev_sibling = 0; - } - - //! Appends a new child node. - //! The appended child becomes the last child. - //! \param child Node to append. - void append_node(xml_node<Ch> *child) - { - assert(child && !child->parent() && child->type() != node_document); - if (first_node()) - { - child->m_prev_sibling = m_last_node; - m_last_node->m_next_sibling = child; - } - else - { - child->m_prev_sibling = 0; - m_first_node = child; - } - m_last_node = child; - child->m_parent = this; - child->m_next_sibling = 0; - } - - //! Inserts a new child node at specified place inside the node. - //! All children after and including the specified node are moved one position back. - //! \param where Place where to insert the child, or 0 to insert at the back. - //! \param child Node to insert. - void insert_node(xml_node<Ch> *where, xml_node<Ch> *child) - { - assert(!where || where->parent() == this); - assert(child && !child->parent() && child->type() != node_document); - if (where == m_first_node) - prepend_node(child); - else if (where == 0) - append_node(child); - else - { - child->m_prev_sibling = where->m_prev_sibling; - child->m_next_sibling = where; - where->m_prev_sibling->m_next_sibling = child; - where->m_prev_sibling = child; - child->m_parent = this; - } - } - - //! Removes first child node. - //! If node has no children, behaviour is undefined. - //! Use first_node() to test if node has children. - void remove_first_node() - { - assert(first_node()); - xml_node<Ch> *child = m_first_node; - m_first_node = child->m_next_sibling; - if (child->m_next_sibling) - child->m_next_sibling->m_prev_sibling = 0; - else - m_last_node = 0; - child->m_parent = 0; - } - - //! Removes last child of the node. - //! If node has no children, behaviour is undefined. - //! Use first_node() to test if node has children. - void remove_last_node() - { - assert(first_node()); - xml_node<Ch> *child = m_last_node; - if (child->m_prev_sibling) - { - m_last_node = child->m_prev_sibling; - child->m_prev_sibling->m_next_sibling = 0; - } - else - m_first_node = 0; - child->m_parent = 0; - } - - //! Removes specified child from the node - // \param where Pointer to child to be removed. - void remove_node(xml_node<Ch> *where) - { - assert(where && where->parent() == this); - assert(first_node()); - if (where == m_first_node) - remove_first_node(); - else if (where == m_last_node) - remove_last_node(); - else - { - where->m_prev_sibling->m_next_sibling = where->m_next_sibling; - where->m_next_sibling->m_prev_sibling = where->m_prev_sibling; - where->m_parent = 0; - } - } - - //! Removes all child nodes (but not attributes). - void remove_all_nodes() - { - for (xml_node<Ch> *node = first_node(); node; node = node->m_next_sibling) - node->m_parent = 0; - m_first_node = 0; - } - - //! Prepends a new attribute to the node. - //! \param attribute Attribute to prepend. - void prepend_attribute(xml_attribute<Ch> *attribute) - { - assert(attribute && !attribute->parent()); - if (first_attribute()) - { - attribute->m_next_attribute = m_first_attribute; - m_first_attribute->m_prev_attribute = attribute; - } - else - { - attribute->m_next_attribute = 0; - m_last_attribute = attribute; - } - m_first_attribute = attribute; - attribute->m_parent = this; - attribute->m_prev_attribute = 0; - } - - //! Appends a new attribute to the node. - //! \param attribute Attribute to append. - void append_attribute(xml_attribute<Ch> *attribute) - { - assert(attribute && !attribute->parent()); - if (first_attribute()) - { - attribute->m_prev_attribute = m_last_attribute; - m_last_attribute->m_next_attribute = attribute; - } - else - { - attribute->m_prev_attribute = 0; - m_first_attribute = attribute; - } - m_last_attribute = attribute; - attribute->m_parent = this; - attribute->m_next_attribute = 0; - } - - //! Inserts a new attribute at specified place inside the node. - //! All attributes after and including the specified attribute are moved one position back. - //! \param where Place where to insert the attribute, or 0 to insert at the back. - //! \param attribute Attribute to insert. - void insert_attribute(xml_attribute<Ch> *where, xml_attribute<Ch> *attribute) - { - assert(!where || where->parent() == this); - assert(attribute && !attribute->parent()); - if (where == m_first_attribute) - prepend_attribute(attribute); - else if (where == 0) - append_attribute(attribute); - else - { - attribute->m_prev_attribute = where->m_prev_attribute; - attribute->m_next_attribute = where; - where->m_prev_attribute->m_next_attribute = attribute; - where->m_prev_attribute = attribute; - attribute->m_parent = this; - } - } - - //! Removes first attribute of the node. - //! If node has no attributes, behaviour is undefined. - //! Use first_attribute() to test if node has attributes. - void remove_first_attribute() - { - assert(first_attribute()); - xml_attribute<Ch> *attribute = m_first_attribute; - if (attribute->m_next_attribute) - { - attribute->m_next_attribute->m_prev_attribute = 0; - } - else - m_last_attribute = 0; - attribute->m_parent = 0; - m_first_attribute = attribute->m_next_attribute; - } - - //! Removes last attribute of the node. - //! If node has no attributes, behaviour is undefined. - //! Use first_attribute() to test if node has attributes. - void remove_last_attribute() - { - assert(first_attribute()); - xml_attribute<Ch> *attribute = m_last_attribute; - if (attribute->m_prev_attribute) - { - attribute->m_prev_attribute->m_next_attribute = 0; - m_last_attribute = attribute->m_prev_attribute; - } - else - m_first_attribute = 0; - attribute->m_parent = 0; - } - - //! Removes specified attribute from node. - //! \param where Pointer to attribute to be removed. - void remove_attribute(xml_attribute<Ch> *where) - { - assert(first_attribute() && where->parent() == this); - if (where == m_first_attribute) - remove_first_attribute(); - else if (where == m_last_attribute) - remove_last_attribute(); - else - { - where->m_prev_attribute->m_next_attribute = where->m_next_attribute; - where->m_next_attribute->m_prev_attribute = where->m_prev_attribute; - where->m_parent = 0; - } - } - - //! Removes all attributes of node. - void remove_all_attributes() - { - for (xml_attribute<Ch> *attribute = first_attribute(); attribute; attribute = attribute->m_next_attribute) - attribute->m_parent = 0; - m_first_attribute = 0; - } - - private: - - /////////////////////////////////////////////////////////////////////////// - // Restrictions - - // No copying - xml_node(const xml_node &); - void operator =(const xml_node &); - - /////////////////////////////////////////////////////////////////////////// - // Data members - - // Note that some of the pointers below have UNDEFINED values if certain other pointers are 0. - // This is required for maximum performance, as it allows the parser to omit initialization of - // unneded/redundant values. - // - // The rules are as follows: - // 1. first_node and first_attribute contain valid pointers, or 0 if node has no children/attributes respectively - // 2. last_node and last_attribute are valid only if node has at least one child/attribute respectively, otherwise they contain garbage - // 3. prev_sibling and next_sibling are valid only if node has a parent, otherwise they contain garbage - - node_type m_type; // Type of node; always valid - xml_node<Ch> *m_first_node; // Pointer to first child node, or 0 if none; always valid - xml_node<Ch> *m_last_node; // Pointer to last child node, or 0 if none; this value is only valid if m_first_node is non-zero - xml_attribute<Ch> *m_first_attribute; // Pointer to first attribute of node, or 0 if none; always valid - xml_attribute<Ch> *m_last_attribute; // Pointer to last attribute of node, or 0 if none; this value is only valid if m_first_attribute is non-zero - xml_node<Ch> *m_prev_sibling; // Pointer to previous sibling of node, or 0 if none; this value is only valid if m_parent is non-zero - xml_node<Ch> *m_next_sibling; // Pointer to next sibling of node, or 0 if none; this value is only valid if m_parent is non-zero - - }; - - /////////////////////////////////////////////////////////////////////////// - // XML document - - //! This class represents root of the DOM hierarchy. - //! It is also an xml_node and a memory_pool through public inheritance. - //! Use parse() function to build a DOM tree from a zero-terminated XML text string. - //! parse() function allocates memory for nodes and attributes by using functions of xml_document, - //! which are inherited from memory_pool. - //! To access root node of the document, use the document itself, as if it was an xml_node. - //! \param Ch Character type to use. - template<class Ch = char> - class xml_document: public xml_node<Ch>, public memory_pool<Ch> - { - - public: - - //! Constructs empty XML document - xml_document() - : xml_node<Ch>(node_document) - { - } - - //! Parses zero-terminated XML string according to given flags. - //! Passed string will be modified by the parser, unless rapidxml::parse_non_destructive flag is used. - //! The string must persist for the lifetime of the document. - //! In case of error, rapidxml::parse_error exception will be thrown. - //! <br><br> - //! If you want to parse contents of a file, you must first load the file into the memory, and pass pointer to its beginning. - //! Make sure that data is zero-terminated. - //! <br><br> - //! Document can be parsed into multiple times. - //! Each new call to parse removes previous nodes and attributes (if any), but does not clear memory pool. - //! \param text XML data to parse; pointer is non-const to denote fact that this data may be modified by the parser. - template<int Flags> - void parse(Ch *text) - { - assert(text); - - // Remove current contents - this->remove_all_nodes(); - this->remove_all_attributes(); - - // Parse BOM, if any - parse_bom<Flags>(text); - - // Parse children - while (1) - { - // Skip whitespace before node - skip<whitespace_pred, Flags>(text); - if (*text == 0) - break; - - // Parse and append new child - if (*text == Ch('<')) - { - ++text; // Skip '<' - if (xml_node<Ch> *node = parse_node<Flags>(text)) - this->append_node(node); - } - else - BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("expected <", text); - } - - } - - //! Clears the document by deleting all nodes and clearing the memory pool. - //! All nodes owned by document pool are destroyed. - void clear() - { - this->remove_all_nodes(); - this->remove_all_attributes(); - memory_pool<Ch>::clear(); - } - - private: - - /////////////////////////////////////////////////////////////////////// - // Internal character utility functions - - // Detect whitespace character - struct whitespace_pred - { - static unsigned char test(Ch ch) - { - return internal::lookup_tables<0>::lookup_whitespace[internal::get_index(ch)]; - } - }; - - // Detect node name character - struct node_name_pred - { - static unsigned char test(Ch ch) - { - return internal::lookup_tables<0>::lookup_node_name[internal::get_index(ch)]; - } - }; - - // Detect attribute name character - struct attribute_name_pred - { - static unsigned char test(Ch ch) - { - return internal::lookup_tables<0>::lookup_attribute_name[internal::get_index(ch)]; - } - }; - - // Detect text character (PCDATA) - struct text_pred - { - static unsigned char test(Ch ch) - { - return internal::lookup_tables<0>::lookup_text[internal::get_index(ch)]; - } - }; - - // Detect text character (PCDATA) that does not require processing - struct text_pure_no_ws_pred - { - static unsigned char test(Ch ch) - { - return internal::lookup_tables<0>::lookup_text_pure_no_ws[internal::get_index(ch)]; - } - }; - - // Detect text character (PCDATA) that does not require processing - struct text_pure_with_ws_pred - { - static unsigned char test(Ch ch) - { - return internal::lookup_tables<0>::lookup_text_pure_with_ws[internal::get_index(ch)]; - } - }; - - // Detect attribute value character - template<Ch Quote> - struct attribute_value_pred - { - static unsigned char test(Ch ch) - { - if (Quote == Ch('\'')) - return internal::lookup_tables<0>::lookup_attribute_data_1[internal::get_index(ch)]; - if (Quote == Ch('\"')) - return internal::lookup_tables<0>::lookup_attribute_data_2[internal::get_index(ch)]; - return 0; // Should never be executed, to avoid warnings on Comeau - } - }; - - // Detect attribute value character - template<Ch Quote> - struct attribute_value_pure_pred - { - static unsigned char test(Ch ch) - { - if (Quote == Ch('\'')) - return internal::lookup_tables<0>::lookup_attribute_data_1_pure[internal::get_index(ch)]; - if (Quote == Ch('\"')) - return internal::lookup_tables<0>::lookup_attribute_data_2_pure[internal::get_index(ch)]; - return 0; // Should never be executed, to avoid warnings on Comeau - } - }; - - // Insert coded character, using UTF8 or 8-bit ASCII - template<int Flags> - static void insert_coded_character(Ch *&text, unsigned long code) - { - if (Flags & parse_no_utf8) - { - // Insert 8-bit ASCII character - // Todo: possibly verify that code is less than 256 and use replacement char otherwise? - text[0] = static_cast<unsigned char>(code); - text += 1; - } - else - { - // Insert UTF8 sequence - if (code < 0x80) // 1 byte sequence - { - text[0] = static_cast<unsigned char>(code); - text += 1; - } - else if (code < 0x800) // 2 byte sequence - { - text[1] = static_cast<unsigned char>((code | 0x80) & 0xBF); code >>= 6; - text[0] = static_cast<unsigned char>(code | 0xC0); - text += 2; - } - else if (code < 0x10000) // 3 byte sequence - { - text[2] = static_cast<unsigned char>((code | 0x80) & 0xBF); code >>= 6; - text[1] = static_cast<unsigned char>((code | 0x80) & 0xBF); code >>= 6; - text[0] = static_cast<unsigned char>(code | 0xE0); - text += 3; - } - else if (code < 0x110000) // 4 byte sequence - { - text[3] = static_cast<unsigned char>((code | 0x80) & 0xBF); code >>= 6; - text[2] = static_cast<unsigned char>((code | 0x80) & 0xBF); code >>= 6; - text[1] = static_cast<unsigned char>((code | 0x80) & 0xBF); code >>= 6; - text[0] = static_cast<unsigned char>(code | 0xF0); - text += 4; - } - else // Invalid, only codes up to 0x10FFFF are allowed in Unicode - { - BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("invalid numeric character entity", text); - } - } - } - - // Skip characters until predicate evaluates to true - template<class StopPred, int Flags> - static void skip(Ch *&text) - { - Ch *tmp = text; - while (StopPred::test(*tmp)) - ++tmp; - text = tmp; - } - - // Skip characters until predicate evaluates to true while doing the following: - // - replacing XML character entity references with proper characters (' & " < > &#...;) - // - condensing whitespace sequences to single space character - template<class StopPred, class StopPredPure, int Flags> - static Ch *skip_and_expand_character_refs(Ch *&text) - { - // If entity translation, whitespace condense and whitespace trimming is disabled, use plain skip - if (Flags & parse_no_entity_translation && - !(Flags & parse_normalize_whitespace) && - !(Flags & parse_trim_whitespace)) - { - skip<StopPred, Flags>(text); - return text; - } - - // Use simple skip until first modification is detected - skip<StopPredPure, Flags>(text); - - // Use translation skip - Ch *src = text; - Ch *dest = src; - while (StopPred::test(*src)) - { - // If entity translation is enabled - if (!(Flags & parse_no_entity_translation)) - { - // Test if replacement is needed - if (src[0] == Ch('&')) - { - switch (src[1]) - { - - // & ' - case Ch('a'): - if (src[2] == Ch('m') && src[3] == Ch('p') && src[4] == Ch(';')) - { - *dest = Ch('&'); - ++dest; - src += 5; - continue; - } - if (src[2] == Ch('p') && src[3] == Ch('o') && src[4] == Ch('s') && src[5] == Ch(';')) - { - *dest = Ch('\''); - ++dest; - src += 6; - continue; - } - break; - - // " - case Ch('q'): - if (src[2] == Ch('u') && src[3] == Ch('o') && src[4] == Ch('t') && src[5] == Ch(';')) - { - *dest = Ch('"'); - ++dest; - src += 6; - continue; - } - break; - - // > - case Ch('g'): - if (src[2] == Ch('t') && src[3] == Ch(';')) - { - *dest = Ch('>'); - ++dest; - src += 4; - continue; - } - break; - - // < - case Ch('l'): - if (src[2] == Ch('t') && src[3] == Ch(';')) - { - *dest = Ch('<'); - ++dest; - src += 4; - continue; - } - break; - - // &#...; - assumes ASCII - case Ch('#'): - if (src[2] == Ch('x')) - { - unsigned long code = 0; - src += 3; // Skip &#x - while (1) - { - unsigned char digit = internal::lookup_tables<0>::lookup_digits[static_cast<unsigned char>(*src)]; - if (digit == 0xFF) - break; - code = code * 16 + digit; - ++src; - } - insert_coded_character<Flags>(dest, code); // Put character in output - } - else - { - unsigned long code = 0; - src += 2; // Skip &# - while (1) - { - unsigned char digit = internal::lookup_tables<0>::lookup_digits[static_cast<unsigned char>(*src)]; - if (digit == 0xFF) - break; - code = code * 10 + digit; - ++src; - } - insert_coded_character<Flags>(dest, code); // Put character in output - } - if (*src == Ch(';')) - ++src; - else - BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("expected ;", src); - continue; - - // Something else - default: - // Ignore, just copy '&' verbatim - break; - - } - } - } - - // If whitespace condensing is enabled - if (Flags & parse_normalize_whitespace) - { - // Test if condensing is needed - if (whitespace_pred::test(*src)) - { - *dest = Ch(' '); ++dest; // Put single space in dest - ++src; // Skip first whitespace char - // Skip remaining whitespace chars - while (whitespace_pred::test(*src)) - ++src; - continue; - } - } - - // No replacement, only copy character - *dest++ = *src++; - - } - - // Return new end - text = src; - return dest; - - } - - /////////////////////////////////////////////////////////////////////// - // Internal parsing functions - - // Parse BOM, if any - template<int Flags> - void parse_bom(Ch *&text) - { - // UTF-8? - if (static_cast<unsigned char>(text[0]) == 0xEF && - static_cast<unsigned char>(text[1]) == 0xBB && - static_cast<unsigned char>(text[2]) == 0xBF) - { - text += 3; // Skip utf-8 bom - } - } - - // Parse XML declaration (<?xml...) - template<int Flags> - xml_node<Ch> *parse_xml_declaration(Ch *&text) - { - // If parsing of declaration is disabled - if (!(Flags & parse_declaration_node)) - { - // Skip until end of declaration - while (text[0] != Ch('?') || text[1] != Ch('>')) - { - if (!text[0]) - BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("unexpected end of data", text); - ++text; - } - text += 2; // Skip '?>' - return 0; - } - - // Create declaration - xml_node<Ch> *declaration = this->allocate_node(node_declaration); - - // Skip whitespace before attributes or ?> - skip<whitespace_pred, Flags>(text); - - // Parse declaration attributes - parse_node_attributes<Flags>(text, declaration); - - // Skip ?> - if (text[0] != Ch('?') || text[1] != Ch('>')) - BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("expected ?>", text); - text += 2; - - return declaration; - } - - // Parse XML comment (<!--...) - template<int Flags> - xml_node<Ch> *parse_comment(Ch *&text) - { - // If parsing of comments is disabled - if (!(Flags & parse_comment_nodes)) - { - // Skip until end of comment - while (text[0] != Ch('-') || text[1] != Ch('-') || text[2] != Ch('>')) - { - if (!text[0]) - BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("unexpected end of data", text); - ++text; - } - text += 3; // Skip '-->' - return 0; // Do not produce comment node - } - - // Remember value start - Ch *val = text; - - // Skip until end of comment - while (text[0] != Ch('-') || text[1] != Ch('-') || text[2] != Ch('>')) - { - if (!text[0]) - BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("unexpected end of data", text); - ++text; - } - - // Create comment node - xml_node<Ch> *comment = this->allocate_node(node_comment); - comment->value(val, text - val); - - // Place zero terminator after comment value - if (!(Flags & parse_no_string_terminators)) - *text = Ch('\0'); - - text += 3; // Skip '-->' - return comment; - } - - // Parse DOCTYPE - template<int Flags> - xml_node<Ch> *parse_doctype(Ch *&text) - { - // Remember value start - Ch *val = text; - - // Skip to > - while (*text != Ch('>')) - { - // Determine character type - switch (*text) - { - - // If '[' encountered, scan for matching ending ']' using naive algorithm with depth - // This works for all W3C test files except for 2 most wicked - case Ch('['): - { - ++text; // Skip '[' - int depth = 1; - while (depth > 0) - { - switch (*text) - { - case Ch('['): ++depth; break; - case Ch(']'): --depth; break; - case 0: BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("unexpected end of data", text); - default: break; - } - ++text; - } - break; - } - - // Error on end of text - case Ch('\0'): - BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("unexpected end of data", text); - - // Other character, skip it - default: - ++text; - - } - } - - // If DOCTYPE nodes enabled - if (Flags & parse_doctype_node) - { - // Create a new doctype node - xml_node<Ch> *doctype = this->allocate_node(node_doctype); - doctype->value(val, text - val); - - // Place zero terminator after value - if (!(Flags & parse_no_string_terminators)) - *text = Ch('\0'); - - text += 1; // skip '>' - return doctype; - } - else - { - text += 1; // skip '>' - return 0; - } - - } - - // Parse PI - template<int Flags> - xml_node<Ch> *parse_pi(Ch *&text) - { - // If creation of PI nodes is enabled - if (Flags & parse_pi_nodes) - { - // Create pi node - xml_node<Ch> *pi = this->allocate_node(node_pi); - - // Extract PI target name - Ch *n = text; - skip<node_name_pred, Flags>(text); - if (text == n) - BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("expected PI target", text); - pi->name(n, text - n); - - // Skip whitespace between pi target and pi - skip<whitespace_pred, Flags>(text); - - // Remember start of pi - Ch *val = text; - - // Skip to '?>' - while (text[0] != Ch('?') || text[1] != Ch('>')) - { - if (*text == Ch('\0')) - BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("unexpected end of data", text); - ++text; - } - - // Set pi value (verbatim, no entity expansion or whitespace normalization) - pi->value(val, text - val); - - // Place zero terminator after name and value - if (!(Flags & parse_no_string_terminators)) - { - pi->name()[pi->name_size()] = Ch('\0'); - pi->value()[pi->value_size()] = Ch('\0'); - } - - text += 2; // Skip '?>' - return pi; - } - else - { - // Skip to '?>' - while (text[0] != Ch('?') || text[1] != Ch('>')) - { - if (*text == Ch('\0')) - BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("unexpected end of data", text); - ++text; - } - text += 2; // Skip '?>' - return 0; - } - } - - // Parse and append data - // Return character that ends data. - // This is necessary because this character might have been overwritten by a terminating 0 - template<int Flags> - Ch parse_and_append_data(xml_node<Ch> *node, Ch *&text, Ch *contents_start) - { - // Backup to contents start if whitespace trimming is disabled - if (!(Flags & parse_trim_whitespace)) - text = contents_start; - - // Skip until end of data - Ch *val = text, *end; - if (Flags & parse_normalize_whitespace) - end = skip_and_expand_character_refs<text_pred, text_pure_with_ws_pred, Flags>(text); - else - end = skip_and_expand_character_refs<text_pred, text_pure_no_ws_pred, Flags>(text); - - // Trim trailing whitespace if flag is set; leading was already trimmed by whitespace skip after > - if (Flags & parse_trim_whitespace) - { - if (Flags & parse_normalize_whitespace) - { - // Whitespace is already condensed to single space characters by skipping function, so just trim 1 char off the end - if (*(end - 1) == Ch(' ')) - --end; - } - else - { - // Backup until non-whitespace character is found - while (whitespace_pred::test(*(end - 1))) - --end; - } - } - - // If characters are still left between end and value (this test is only necessary if normalization is enabled) - // Create new data node - if (!(Flags & parse_no_data_nodes)) - { - xml_node<Ch> *data = this->allocate_node(node_data); - data->value(val, end - val); - node->append_node(data); - } - - // Add data to parent node if no data exists yet - if (!(Flags & parse_no_element_values)) - if (*node->value() == Ch('\0')) - node->value(val, end - val); - - // Place zero terminator after value - if (!(Flags & parse_no_string_terminators)) - { - Ch ch = *text; - *end = Ch('\0'); - return ch; // Return character that ends data; this is required because zero terminator overwritten it - } - - // Return character that ends data - return *text; - } - - // Parse CDATA - template<int Flags> - xml_node<Ch> *parse_cdata(Ch *&text) - { - // If CDATA is disabled - if (Flags & parse_no_data_nodes) - { - // Skip until end of cdata - while (text[0] != Ch(']') || text[1] != Ch(']') || text[2] != Ch('>')) - { - if (!text[0]) - BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("unexpected end of data", text); - ++text; - } - text += 3; // Skip ]]> - return 0; // Do not produce CDATA node - } - - // Skip until end of cdata - Ch *val = text; - while (text[0] != Ch(']') || text[1] != Ch(']') || text[2] != Ch('>')) - { - if (!text[0]) - BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("unexpected end of data", text); - ++text; - } - - // Create new cdata node - xml_node<Ch> *cdata = this->allocate_node(node_cdata); - cdata->value(val, text - val); - - // Place zero terminator after value - if (!(Flags & parse_no_string_terminators)) - *text = Ch('\0'); - - text += 3; // Skip ]]> - return cdata; - } - - // Parse element node - template<int Flags> - xml_node<Ch> *parse_element(Ch *&text) - { - // Create element node - xml_node<Ch> *element = this->allocate_node(node_element); - - // Extract element name - Ch *n = text; - skip<node_name_pred, Flags>(text); - if (text == n) - BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("expected element name", text); - element->name(n, text - n); - - // Skip whitespace between element name and attributes or > - skip<whitespace_pred, Flags>(text); - - // Parse attributes, if any - parse_node_attributes<Flags>(text, element); - - // Determine ending type - if (*text == Ch('>')) - { - ++text; - parse_node_contents<Flags>(text, element); - } - else if (*text == Ch('/')) - { - ++text; - if (*text != Ch('>')) - BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("expected >", text); - ++text; - } - else - BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("expected >", text); - - // Place zero terminator after name - if (!(Flags & parse_no_string_terminators)) - element->name()[element->name_size()] = Ch('\0'); - - // Return parsed element - return element; - } - - // Determine node type, and parse it - template<int Flags> - xml_node<Ch> *parse_node(Ch *&text) - { - // Parse proper node type - switch (text[0]) - { - - // <... - default: - // Parse and append element node - return parse_element<Flags>(text); - - // <?... - case Ch('?'): - ++text; // Skip ? - if ((text[0] == Ch('x') || text[0] == Ch('X')) && - (text[1] == Ch('m') || text[1] == Ch('M')) && - (text[2] == Ch('l') || text[2] == Ch('L')) && - whitespace_pred::test(text[3])) - { - // '<?xml ' - xml declaration - text += 4; // Skip 'xml ' - return parse_xml_declaration<Flags>(text); - } - else - { - // Parse PI - return parse_pi<Flags>(text); - } - - // <!... - case Ch('!'): - - // Parse proper subset of <! node - switch (text[1]) - { - - // <!- - case Ch('-'): - if (text[2] == Ch('-')) - { - // '<!--' - xml comment - text += 3; // Skip '!--' - return parse_comment<Flags>(text); - } - break; - - // <![ - case Ch('['): - if (text[2] == Ch('C') && text[3] == Ch('D') && text[4] == Ch('A') && - text[5] == Ch('T') && text[6] == Ch('A') && text[7] == Ch('[')) - { - // '<![CDATA[' - cdata - text += 8; // Skip '![CDATA[' - return parse_cdata<Flags>(text); - } - break; - - // <!D - case Ch('D'): - if (text[2] == Ch('O') && text[3] == Ch('C') && text[4] == Ch('T') && - text[5] == Ch('Y') && text[6] == Ch('P') && text[7] == Ch('E') && - whitespace_pred::test(text[8])) - { - // '<!DOCTYPE ' - doctype - text += 9; // skip '!DOCTYPE ' - return parse_doctype<Flags>(text); - } - break; - - default: break; - - } // switch - - // Attempt to skip other, unrecognized node types starting with <! - ++text; // Skip ! - while (*text != Ch('>')) - { - if (*text == 0) - BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("unexpected end of data", text); - ++text; - } - ++text; // Skip '>' - return 0; // No node recognized - - } - } - - // Parse contents of the node - children, data etc. - template<int Flags> - void parse_node_contents(Ch *&text, xml_node<Ch> *node) - { - // For all children and text - while (1) - { - // Skip whitespace between > and node contents - Ch *contents_start = text; // Store start of node contents before whitespace is skipped - if (Flags & parse_trim_whitespace) - skip<whitespace_pred, Flags>(text); - Ch next_char = *text; - - // After data nodes, instead of continuing the loop, control jumps here. - // This is because zero termination inside parse_and_append_data() function - // would wreak havoc with the above code. - // Also, skipping whitespace after data nodes is unnecessary. - after_data_node: - - // Determine what comes next: node closing, child node, data node, or 0? - switch (next_char) - { - - // Node closing or child node - case Ch('<'): - if (text[1] == Ch('/')) - { - // Node closing - text += 2; // Skip '</' - if (Flags & parse_validate_closing_tags) - { - // Skip and validate closing tag name - Ch *closing_name = text; - skip<node_name_pred, Flags>(text); - if (!internal::compare(node->name(), node->name_size(), closing_name, text - closing_name, true)) - BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("invalid closing tag name", text); - } - else - { - // No validation, just skip name - skip<node_name_pred, Flags>(text); - } - // Skip remaining whitespace after node name - skip<whitespace_pred, Flags>(text); - if (*text != Ch('>')) - BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("expected >", text); - ++text; // Skip '>' - return; // Node closed, finished parsing contents - } - else - { - // Child node - ++text; // Skip '<' - if (xml_node<Ch> *child = parse_node<Flags>(text)) - node->append_node(child); - } - break; - - // End of data - error - case Ch('\0'): - BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("unexpected end of data", text); - - // Data node - default: - next_char = parse_and_append_data<Flags>(node, text, contents_start); - goto after_data_node; // Bypass regular processing after data nodes - - } - } - } - - // Parse XML attributes of the node - template<int Flags> - void parse_node_attributes(Ch *&text, xml_node<Ch> *node) - { - // For all attributes - while (attribute_name_pred::test(*text)) - { - // Extract attribute name - Ch *n = text; - ++text; // Skip first character of attribute name - skip<attribute_name_pred, Flags>(text); - if (text == n) - BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("expected attribute name", n); - - // Create new attribute - xml_attribute<Ch> *attribute = this->allocate_attribute(); - attribute->name(n, text - n); - node->append_attribute(attribute); - - // Skip whitespace after attribute name - skip<whitespace_pred, Flags>(text); - - // Skip = - if (*text != Ch('=')) - BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("expected =", text); - ++text; - - // Add terminating zero after name - if (!(Flags & parse_no_string_terminators)) - attribute->name()[attribute->name_size()] = 0; - - // Skip whitespace after = - skip<whitespace_pred, Flags>(text); - - // Skip quote and remember if it was ' or " - Ch quote = *text; - if (quote != Ch('\'') && quote != Ch('"')) - BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("expected ' or \"", text); - ++text; - - // Extract attribute value and expand char refs in it - Ch *val = text, *end; - const int AttFlags = Flags & ~parse_normalize_whitespace; // No whitespace normalization in attributes - if (quote == Ch('\'')) - end = skip_and_expand_character_refs<attribute_value_pred<Ch('\'')>, attribute_value_pure_pred<Ch('\'')>, AttFlags>(text); - else - end = skip_and_expand_character_refs<attribute_value_pred<Ch('"')>, attribute_value_pure_pred<Ch('"')>, AttFlags>(text); - - // Set attribute value - attribute->value(val, end - val); - - // Make sure that end quote is present - if (*text != quote) - BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("expected ' or \"", text); - ++text; // Skip quote - - // Add terminating zero after value - if (!(Flags & parse_no_string_terminators)) - attribute->value()[attribute->value_size()] = 0; - - // Skip whitespace after attribute value - skip<whitespace_pred, Flags>(text); - } - } - - }; - - //! \cond internal - namespace internal - { - - // Whitespace (space \n \r \t) - template<int Dummy> - const unsigned char lookup_tables<Dummy>::lookup_whitespace[256] = - { - // 0 1 2 3 4 5 6 7 8 9 A B C D E F - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, // 0 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 1 - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 2 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 3 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 4 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 5 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 6 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 7 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 8 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 9 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // A - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // B - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // C - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // D - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // E - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 // F - }; - - // Node name (anything but space \n \r \t / > ? \0) - template<int Dummy> - const unsigned char lookup_tables<Dummy>::lookup_node_name[256] = - { - // 0 1 2 3 4 5 6 7 8 9 A B C D E F - 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, // 0 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1 - 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, // 2 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, // 3 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 8 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 9 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // A - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // B - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // C - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // D - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // E - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // F - }; - - // Text (i.e. PCDATA) (anything but < \0) - template<int Dummy> - const unsigned char lookup_tables<Dummy>::lookup_text[256] = - { - // 0 1 2 3 4 5 6 7 8 9 A B C D E F - 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 2 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, // 3 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 8 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 9 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // A - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // B - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // C - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // D - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // E - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // F - }; - - // Text (i.e. PCDATA) that does not require processing when ws normalization is disabled - // (anything but < \0 &) - template<int Dummy> - const unsigned char lookup_tables<Dummy>::lookup_text_pure_no_ws[256] = - { - // 0 1 2 3 4 5 6 7 8 9 A B C D E F - 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1 - 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 2 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, // 3 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 8 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 9 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // A - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // B - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // C - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // D - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // E - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // F - }; - - // Text (i.e. PCDATA) that does not require processing when ws normalizationis is enabled - // (anything but < \0 & space \n \r \t) - template<int Dummy> - const unsigned char lookup_tables<Dummy>::lookup_text_pure_with_ws[256] = - { - // 0 1 2 3 4 5 6 7 8 9 A B C D E F - 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, // 0 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1 - 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 2 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, // 3 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 8 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 9 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // A - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // B - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // C - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // D - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // E - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // F - }; - - // Attribute name (anything but space \n \r \t / < > = ? ! \0) - template<int Dummy> - const unsigned char lookup_tables<Dummy>::lookup_attribute_name[256] = - { - // 0 1 2 3 4 5 6 7 8 9 A B C D E F - 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, // 0 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1 - 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, // 2 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, // 3 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 8 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 9 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // A - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // B - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // C - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // D - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // E - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // F - }; - - // Attribute data with single quote (anything but ' \0) - template<int Dummy> - const unsigned char lookup_tables<Dummy>::lookup_attribute_data_1[256] = - { - // 0 1 2 3 4 5 6 7 8 9 A B C D E F - 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1 - 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, // 2 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 3 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 8 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 9 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // A - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // B - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // C - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // D - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // E - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // F - }; - - // Attribute data with single quote that does not require processing (anything but ' \0 &) - template<int Dummy> - const unsigned char lookup_tables<Dummy>::lookup_attribute_data_1_pure[256] = - { - // 0 1 2 3 4 5 6 7 8 9 A B C D E F - 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1 - 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, // 2 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 3 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 8 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 9 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // A - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // B - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // C - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // D - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // E - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // F - }; - - // Attribute data with double quote (anything but " \0) - template<int Dummy> - const unsigned char lookup_tables<Dummy>::lookup_attribute_data_2[256] = - { - // 0 1 2 3 4 5 6 7 8 9 A B C D E F - 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1 - 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 2 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 3 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 8 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 9 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // A - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // B - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // C - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // D - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // E - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // F - }; - - // Attribute data with double quote that does not require processing (anything but " \0 &) - template<int Dummy> - const unsigned char lookup_tables<Dummy>::lookup_attribute_data_2_pure[256] = - { - // 0 1 2 3 4 5 6 7 8 9 A B C D E F - 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1 - 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 2 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 3 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 8 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 9 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // A - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // B - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // C - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // D - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // E - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // F - }; - - // Digits (dec and hex, 255 denotes end of numeric character reference) - template<int Dummy> - const unsigned char lookup_tables<Dummy>::lookup_digits[256] = - { - // 0 1 2 3 4 5 6 7 8 9 A B C D E F - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // 0 - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // 1 - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // 2 - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,255,255,255,255,255,255, // 3 - 255, 10, 11, 12, 13, 14, 15,255,255,255,255,255,255,255,255,255, // 4 - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // 5 - 255, 10, 11, 12, 13, 14, 15,255,255,255,255,255,255,255,255,255, // 6 - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // 7 - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // 8 - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // 9 - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // A - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // B - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // C - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // D - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // E - 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255 // F - }; - - // Upper case conversion - template<int Dummy> - const unsigned char lookup_tables<Dummy>::lookup_upcase[256] = - { - // 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A B C D E F - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, // 0 - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, // 1 - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, // 2 - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, // 3 - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, // 4 - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, // 5 - 96, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, // 6 - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 123,124,125,126,127, // 7 - 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, // 8 - 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159, // 9 - 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175, // A - 176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191, // B - 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207, // C - 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223, // D - 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239, // E - 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255 // F - }; - } - //! \endcond - -}}}} - -// Undefine internal macros -#undef BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR - -// On MSVC, restore warnings state -#ifdef _MSC_VER - #pragma warning(pop) -#endif - -#endif diff --git a/3rdParty/Boost/src/boost/property_tree/detail/xml_parser_error.hpp b/3rdParty/Boost/src/boost/property_tree/detail/xml_parser_error.hpp deleted file mode 100644 index c79835c..0000000 --- a/3rdParty/Boost/src/boost/property_tree/detail/xml_parser_error.hpp +++ /dev/null @@ -1,33 +0,0 @@ -// ---------------------------------------------------------------------------- -// Copyright (C) 2002-2006 Marcin Kalicinski -// -// 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) -// -// For more information, see www.boost.org -// ---------------------------------------------------------------------------- -#ifndef BOOST_PROPERTY_TREE_DETAIL_XML_PARSER_ERROR_HPP_INCLUDED -#define BOOST_PROPERTY_TREE_DETAIL_XML_PARSER_ERROR_HPP_INCLUDED - -#include <boost/property_tree/detail/file_parser_error.hpp> -#include <string> - -namespace boost { namespace property_tree { namespace xml_parser -{ - - //! Xml parser error - class xml_parser_error: public file_parser_error - { - public: - xml_parser_error(const std::string &msg, - const std::string &file, - unsigned long l): - file_parser_error(msg, file, l) - { - } - }; - -} } } - -#endif diff --git a/3rdParty/Boost/src/boost/property_tree/detail/xml_parser_flags.hpp b/3rdParty/Boost/src/boost/property_tree/detail/xml_parser_flags.hpp deleted file mode 100644 index 9340fe2..0000000 --- a/3rdParty/Boost/src/boost/property_tree/detail/xml_parser_flags.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// ---------------------------------------------------------------------------- -// Copyright (C) 2002-2006 Marcin Kalicinski -// -// 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) -// -// For more information, see www.boost.org -// ---------------------------------------------------------------------------- -#ifndef BOOST_PROPERTY_TREE_DETAIL_XML_PARSER_FLAGS_HPP_INCLUDED -#define BOOST_PROPERTY_TREE_DETAIL_XML_PARSER_FLAGS_HPP_INCLUDED - -namespace boost { namespace property_tree { namespace xml_parser -{ - - /// Text elements should be put in separate keys, - /// not concatenated in parent data. - static const int no_concat_text = 0x1; - /// Comments should be omitted. - static const int no_comments = 0x2; - /// Whitespace should be collapsed and trimmed. - static const int trim_whitespace = 0x4; - - inline bool validate_flags(int flags) - { - return (flags & ~(no_concat_text | no_comments | trim_whitespace)) == 0; - } - -} } } - -#endif diff --git a/3rdParty/Boost/src/boost/property_tree/detail/xml_parser_read_rapidxml.hpp b/3rdParty/Boost/src/boost/property_tree/detail/xml_parser_read_rapidxml.hpp deleted file mode 100644 index acec34d9..0000000 --- a/3rdParty/Boost/src/boost/property_tree/detail/xml_parser_read_rapidxml.hpp +++ /dev/null @@ -1,144 +0,0 @@ -// ---------------------------------------------------------------------------- -// Copyright (C) 2007 Marcin Kalicinski -// -// 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) -// -// For more information, see www.boost.org -// ---------------------------------------------------------------------------- -#ifndef BOOST_PROPERTY_TREE_DETAIL_XML_PARSER_READ_RAPIDXML_HPP_INCLUDED -#define BOOST_PROPERTY_TREE_DETAIL_XML_PARSER_READ_RAPIDXML_HPP_INCLUDED - -#include <boost/property_tree/ptree.hpp> -#include <boost/property_tree/detail/xml_parser_error.hpp> -#include <boost/property_tree/detail/xml_parser_flags.hpp> -#include <boost/property_tree/detail/xml_parser_utils.hpp> -#include <boost/property_tree/detail/rapidxml.hpp> -#include <vector> - -namespace boost { namespace property_tree { namespace xml_parser -{ - - template<class Ptree, class Ch> - void read_xml_node(detail::rapidxml::xml_node<Ch> *node, - Ptree &pt, int flags) - { - using namespace detail::rapidxml; - switch (node->type()) - { - // Element nodes - case node_element: - { - // Create node - Ptree &pt_node = pt.push_back(std::make_pair(node->name(), - Ptree()))->second; - - // Copy attributes - if (node->first_attribute()) - { - Ptree &pt_attr_root = pt_node.push_back( - std::make_pair(xmlattr<Ch>(), Ptree()))->second; - for (xml_attribute<Ch> *attr = node->first_attribute(); - attr; attr = attr->next_attribute()) - { - Ptree &pt_attr = pt_attr_root.push_back( - std::make_pair(attr->name(), Ptree()))->second; - pt_attr.data() = attr->value(); - } - } - - // Copy children - for (xml_node<Ch> *child = node->first_node(); - child; child = child->next_sibling()) - read_xml_node(child, pt_node, flags); - } - break; - - // Data nodes - case node_data: - case node_cdata: - { - if (flags & no_concat_text) - pt.push_back(std::make_pair(xmltext<Ch>(), - Ptree(node->value()))); - else - pt.data() += node->value(); - } - break; - - // Comment nodes - case node_comment: - { - if (!(flags & no_comments)) - pt.push_back(std::make_pair(xmlcomment<Ch>(), - Ptree(node->value()))); - } - break; - - default: - // Skip other node types - break; - } - } - - template<class Ptree> - void read_xml_internal(std::basic_istream< - typename Ptree::key_type::value_type> &stream, - Ptree &pt, - int flags, - const std::string &filename) - { - typedef typename Ptree::key_type::value_type Ch; - using namespace detail::rapidxml; - - // Load data into vector - stream.unsetf(std::ios::skipws); - std::vector<Ch> v(std::istreambuf_iterator<Ch>(stream.rdbuf()), - std::istreambuf_iterator<Ch>()); - if (!stream.good()) - BOOST_PROPERTY_TREE_THROW( - xml_parser_error("read error", filename, 0)); - v.push_back(0); // zero-terminate - - try { - // Parse using appropriate flags - const int f_tws = parse_normalize_whitespace - | parse_trim_whitespace; - const int f_c = parse_comment_nodes; - // Some compilers don't like the bitwise or in the template arg. - const int f_tws_c = parse_normalize_whitespace - | parse_trim_whitespace - | parse_comment_nodes; - xml_document<Ch> doc; - if (flags & no_comments) { - if (flags & trim_whitespace) - doc.BOOST_NESTED_TEMPLATE parse<f_tws>(&v.front()); - else - doc.BOOST_NESTED_TEMPLATE parse<0>(&v.front()); - } else { - if (flags & trim_whitespace) - doc.BOOST_NESTED_TEMPLATE parse<f_tws_c>(&v.front()); - else - doc.BOOST_NESTED_TEMPLATE parse<f_c>(&v.front()); - } - - // Create ptree from nodes - Ptree local; - for (xml_node<Ch> *child = doc.first_node(); - child; child = child->next_sibling()) - read_xml_node(child, local, flags); - - // Swap local and result ptrees - pt.swap(local); - } catch (parse_error &e) { - long line = static_cast<long>( - std::count(&v.front(), e.where<Ch>(), Ch('\n')) + 1); - BOOST_PROPERTY_TREE_THROW( - xml_parser_error(e.what(), filename, line)); - } - } - -} } } - -#endif diff --git a/3rdParty/Boost/src/boost/property_tree/detail/xml_parser_utils.hpp b/3rdParty/Boost/src/boost/property_tree/detail/xml_parser_utils.hpp deleted file mode 100644 index 7c8a6e1..0000000 --- a/3rdParty/Boost/src/boost/property_tree/detail/xml_parser_utils.hpp +++ /dev/null @@ -1,136 +0,0 @@ -// ---------------------------------------------------------------------------- -// Copyright (C) 2002-2006 Marcin Kalicinski -// -// 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) -// -// For more information, see www.boost.org -// ---------------------------------------------------------------------------- -#ifndef BOOST_PROPERTY_TREE_DETAIL_XML_PARSER_UTILS_HPP_INCLUDED -#define BOOST_PROPERTY_TREE_DETAIL_XML_PARSER_UTILS_HPP_INCLUDED - -#include <boost/property_tree/detail/ptree_utils.hpp> -#include <boost/property_tree/detail/xml_parser_error.hpp> -#include <boost/property_tree/detail/xml_parser_writer_settings.hpp> -#include <string> -#include <algorithm> -#include <locale> - -namespace boost { namespace property_tree { namespace xml_parser -{ - - template<class Ch> - std::basic_string<Ch> condense(const std::basic_string<Ch> &s) - { - std::basic_string<Ch> r; - std::locale loc; - bool space = false; - typename std::basic_string<Ch>::const_iterator end = s.end(); - for (typename std::basic_string<Ch>::const_iterator it = s.begin(); - it != end; ++it) - { - if (isspace(*it, loc) || *it == Ch('\n')) - { - if (!space) - r += Ch(' '), space = true; - } - else - r += *it, space = false; - } - return r; - } - - template<class Ch> - std::basic_string<Ch> encode_char_entities(const std::basic_string<Ch> &s) - { - // Don't do anything for empty strings. - if(s.empty()) return s; - - typedef typename std::basic_string<Ch> Str; - Str r; - // To properly round-trip spaces and not uglify the XML beyond - // recognition, we have to encode them IF the text contains only spaces. - Str sp(1, Ch(' ')); - if(s.find_first_not_of(sp) == Str::npos) { - // The first will suffice. - r = detail::widen<Ch>(" "); - r += Str(s.size() - 1, Ch(' ')); - } else { - typename Str::const_iterator end = s.end(); - for (typename Str::const_iterator it = s.begin(); it != end; ++it) - { - switch (*it) - { - case Ch('<'): r += detail::widen<Ch>("<"); break; - case Ch('>'): r += detail::widen<Ch>(">"); break; - case Ch('&'): r += detail::widen<Ch>("&"); break; - case Ch('"'): r += detail::widen<Ch>("""); break; - case Ch('\''): r += detail::widen<Ch>("'"); break; - default: r += *it; break; - } - } - } - return r; - } - - template<class Ch> - std::basic_string<Ch> decode_char_entities(const std::basic_string<Ch> &s) - { - typedef typename std::basic_string<Ch> Str; - Str r; - typename Str::const_iterator end = s.end(); - for (typename Str::const_iterator it = s.begin(); it != end; ++it) - { - if (*it == Ch('&')) - { - typename Str::const_iterator semicolon = std::find(it + 1, end, Ch(';')); - if (semicolon == end) - BOOST_PROPERTY_TREE_THROW(xml_parser_error("invalid character entity", "", 0)); - Str ent(it + 1, semicolon); - if (ent == detail::widen<Ch>("lt")) r += Ch('<'); - else if (ent == detail::widen<Ch>("gt")) r += Ch('>'); - else if (ent == detail::widen<Ch>("amp")) r += Ch('&'); - else if (ent == detail::widen<Ch>("quot")) r += Ch('"'); - else if (ent == detail::widen<Ch>("apos")) r += Ch('\''); - else - BOOST_PROPERTY_TREE_THROW(xml_parser_error("invalid character entity", "", 0)); - it = semicolon; - } - else - r += *it; - } - return r; - } - - template<class Ch> - const std::basic_string<Ch> &xmldecl() - { - static std::basic_string<Ch> s = detail::widen<Ch>("<?xml>"); - return s; - } - - template<class Ch> - const std::basic_string<Ch> &xmlattr() - { - static std::basic_string<Ch> s = detail::widen<Ch>("<xmlattr>"); - return s; - } - - template<class Ch> - const std::basic_string<Ch> &xmlcomment() - { - static std::basic_string<Ch> s = detail::widen<Ch>("<xmlcomment>"); - return s; - } - - template<class Ch> - const std::basic_string<Ch> &xmltext() - { - static std::basic_string<Ch> s = detail::widen<Ch>("<xmltext>"); - return s; - } - -} } } - -#endif diff --git a/3rdParty/Boost/src/boost/property_tree/detail/xml_parser_write.hpp b/3rdParty/Boost/src/boost/property_tree/detail/xml_parser_write.hpp deleted file mode 100644 index 614854e..0000000 --- a/3rdParty/Boost/src/boost/property_tree/detail/xml_parser_write.hpp +++ /dev/null @@ -1,194 +0,0 @@ -// ---------------------------------------------------------------------------- -// Copyright (C) 2002-2006 Marcin Kalicinski -// -// 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) -// -// For more information, see www.boost.org -// ---------------------------------------------------------------------------- -#ifndef BOOST_PROPERTY_TREE_DETAIL_XML_PARSER_WRITE_HPP_INCLUDED -#define BOOST_PROPERTY_TREE_DETAIL_XML_PARSER_WRITE_HPP_INCLUDED - -#include <boost/property_tree/ptree.hpp> -#include <boost/property_tree/detail/xml_parser_utils.hpp> -#include <string> -#include <ostream> -#include <iomanip> - -namespace boost { namespace property_tree { namespace xml_parser -{ - template<class Ch> - void write_xml_indent(std::basic_ostream<Ch> &stream, - int indent, - const xml_writer_settings<Ch> & settings - ) - { - stream << std::basic_string<Ch>(indent * settings.indent_count, settings.indent_char); - } - - template<class Ch> - void write_xml_comment(std::basic_ostream<Ch> &stream, - const std::basic_string<Ch> &s, - int indent, - bool separate_line, - const xml_writer_settings<Ch> & settings - ) - { - typedef typename std::basic_string<Ch> Str; - if (separate_line) - write_xml_indent(stream,indent,settings); - stream << Ch('<') << Ch('!') << Ch('-') << Ch('-'); - stream << s; - stream << Ch('-') << Ch('-') << Ch('>'); - if (separate_line) - stream << Ch('\n'); - } - - template<class Ch> - void write_xml_text(std::basic_ostream<Ch> &stream, - const std::basic_string<Ch> &s, - int indent, - bool separate_line, - const xml_writer_settings<Ch> & settings - ) - { - if (separate_line) - write_xml_indent(stream,indent,settings); - stream << encode_char_entities(s); - if (separate_line) - stream << Ch('\n'); - } - - template<class Ptree> - void write_xml_element(std::basic_ostream<typename Ptree::key_type::value_type> &stream, - const std::basic_string<typename Ptree::key_type::value_type> &key, - const Ptree &pt, - int indent, - const xml_writer_settings<typename Ptree::key_type::value_type> & settings) - { - - typedef typename Ptree::key_type::value_type Ch; - typedef typename std::basic_string<Ch> Str; - typedef typename Ptree::const_iterator It; - - bool want_pretty = settings.indent_count > 0; - // Find if elements present - bool has_elements = false; - bool has_attrs_only = pt.data().empty(); - for (It it = pt.begin(), end = pt.end(); it != end; ++it) - { - if (it->first != xmlattr<Ch>() ) - { - has_attrs_only = false; - if (it->first != xmltext<Ch>()) - { - has_elements = true; - break; - } - } - } - - // Write element - if (pt.data().empty() && pt.empty()) // Empty key - { - if (indent >= 0) - { - write_xml_indent(stream,indent,settings); - stream << Ch('<') << key << - Ch('/') << Ch('>'); - if (want_pretty) - stream << Ch('\n'); - } - } - else // Nonempty key - { - - // Write opening tag, attributes and data - if (indent >= 0) - { - - // Write opening brace and key - write_xml_indent(stream,indent,settings); - stream << Ch('<') << key; - - // Write attributes - if (optional<const Ptree &> attribs = pt.get_child_optional(xmlattr<Ch>())) - for (It it = attribs.get().begin(); it != attribs.get().end(); ++it) - stream << Ch(' ') << it->first << Ch('=') << - Ch('"') << it->second.template get_value<std::basic_string<Ch> >() << Ch('"'); - - if ( has_attrs_only ) - { - // Write closing brace - stream << Ch('/') << Ch('>'); - if (want_pretty) - stream << Ch('\n'); - } - else - { - // Write closing brace - stream << Ch('>'); - - // Break line if needed and if we want pretty-printing - if (has_elements && want_pretty) - stream << Ch('\n'); - } - } - - // Write data text, if present - if (!pt.data().empty()) - write_xml_text(stream, - pt.template get_value<std::basic_string<Ch> >(), - indent + 1, has_elements && want_pretty, settings); - - // Write elements, comments and texts - for (It it = pt.begin(); it != pt.end(); ++it) - { - if (it->first == xmlattr<Ch>()) - continue; - else if (it->first == xmlcomment<Ch>()) - write_xml_comment(stream, - it->second.template get_value<std::basic_string<Ch> >(), - indent + 1, want_pretty, settings); - else if (it->first == xmltext<Ch>()) - write_xml_text(stream, - it->second.template get_value<std::basic_string<Ch> >(), - indent + 1, has_elements && want_pretty, settings); - else - write_xml_element(stream, it->first, it->second, - indent + 1, settings); - } - - // Write closing tag - if (indent >= 0 && !has_attrs_only) - { - if (has_elements) - write_xml_indent(stream,indent,settings); - stream << Ch('<') << Ch('/') << key << Ch('>'); - if (want_pretty) - stream << Ch('\n'); - } - - } - } - - template<class Ptree> - void write_xml_internal(std::basic_ostream<typename Ptree::key_type::value_type> &stream, - const Ptree &pt, - const std::string &filename, - const xml_writer_settings<typename Ptree::key_type::value_type> & settings) - { - typedef typename Ptree::key_type::value_type Ch; - typedef typename std::basic_string<Ch> Str; - stream << detail::widen<Ch>("<?xml version=\"1.0\" encoding=\"") - << settings.encoding - << detail::widen<Ch>("\"?>\n"); - write_xml_element(stream, Str(), pt, -1, settings); - if (!stream) - BOOST_PROPERTY_TREE_THROW(xml_parser_error("write error", filename, 0)); - } - -} } } - -#endif diff --git a/3rdParty/Boost/src/boost/property_tree/detail/xml_parser_writer_settings.hpp b/3rdParty/Boost/src/boost/property_tree/detail/xml_parser_writer_settings.hpp deleted file mode 100644 index f22d85e..0000000 --- a/3rdParty/Boost/src/boost/property_tree/detail/xml_parser_writer_settings.hpp +++ /dev/null @@ -1,62 +0,0 @@ -// ---------------------------------------------------------------------------- -// Copyright (C) 2002-2007 Marcin Kalicinski -// Copyright (C) 2007 Alexey Baskakov -// -// 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) -// -// For more information, see www.boost.org -// ---------------------------------------------------------------------------- -#ifndef BOOST_PROPERTY_TREE_DETAIL_XML_PARSER_WRITER_SETTINGS_HPP_INCLUDED -#define BOOST_PROPERTY_TREE_DETAIL_XML_PARSER_WRITER_SETTINGS_HPP_INCLUDED - -#include <string> -#include <boost/property_tree/detail/ptree_utils.hpp> - -namespace boost { namespace property_tree { namespace xml_parser -{ - - // Naively convert narrow string to another character type - template<class Ch> - std::basic_string<Ch> widen(const char *text) - { - std::basic_string<Ch> result; - while (*text) - { - result += Ch(*text); - ++text; - } - return result; - } - - //! Xml writer settings. The default settings lead to no pretty printing. - template<class Ch> - class xml_writer_settings - { - public: - xml_writer_settings(Ch inchar = Ch(' '), - typename std::basic_string<Ch>::size_type incount = 0, - const std::basic_string<Ch> &enc = widen<Ch>("utf-8")) - : indent_char(inchar) - , indent_count(incount) - , encoding(enc) - { - } - - Ch indent_char; - typename std::basic_string<Ch>::size_type indent_count; - std::basic_string<Ch> encoding; - }; - - template <class Ch> - xml_writer_settings<Ch> xml_writer_make_settings(Ch indent_char = Ch(' '), - typename std::basic_string<Ch>::size_type indent_count = 0, - const std::basic_string<Ch> &encoding = widen<Ch>("utf-8")) - { - return xml_writer_settings<Ch>(indent_char, indent_count, encoding); - } - -} } } - -#endif diff --git a/3rdParty/Boost/src/boost/property_tree/exceptions.hpp b/3rdParty/Boost/src/boost/property_tree/exceptions.hpp deleted file mode 100644 index 42e2cbd..0000000 --- a/3rdParty/Boost/src/boost/property_tree/exceptions.hpp +++ /dev/null @@ -1,84 +0,0 @@ -// ---------------------------------------------------------------------------- -// Copyright (C) 2002-2006 Marcin Kalicinski -// Copyright (C) 2009 Sebastian Redl -// -// 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) -// -// For more information, see www.boost.org -// ---------------------------------------------------------------------------- - -#ifndef BOOST_PROPERTY_TREE_EXCEPTIONS_HPP_INCLUDED -#define BOOST_PROPERTY_TREE_EXCEPTIONS_HPP_INCLUDED - -#include <boost/property_tree/ptree_fwd.hpp> - -#include <boost/any.hpp> -#include <string> -#include <stdexcept> - -namespace boost { namespace property_tree -{ - - /// Base class for all property tree errors. Derives from - /// @c std::runtime_error. Call member function @c what to get human - /// readable message associated with the error. - class ptree_error : public std::runtime_error - { - public: - /// Instantiate a ptree_error instance with the given message. - /// @param what The message to associate with this error. - ptree_error(const std::string &what); - - ~ptree_error() throw(); - }; - - - /// Error indicating that translation from given value to the property tree - /// data_type (or vice versa) failed. Derives from ptree_error. - class ptree_bad_data : public ptree_error - { - public: - /// Instantiate a ptree_bad_data instance with the given message and - /// data. - /// @param what The message to associate with this error. - /// @param data The value associated with this error that was the source - /// of the translation failure. - template<class T> ptree_bad_data(const std::string &what, - const T &data); - - ~ptree_bad_data() throw(); - - /// Retrieve the data associated with this error. This is the source - /// value that failed to be translated. - template<class T> T data(); - private: - boost::any m_data; - }; - - - /// Error indicating that specified path does not exist. Derives from - /// ptree_error. - class ptree_bad_path : public ptree_error - { - public: - /// Instantiate a ptree_bad_path with the given message and path data. - /// @param what The message to associate with this error. - /// @param path The path that could not be found in the property_tree. - template<class T> ptree_bad_path(const std::string &what, - const T &path); - - ~ptree_bad_path() throw(); - - /// Retrieve the invalid path. - template<class T> T path(); - private: - boost::any m_path; - }; - -}} - -#include <boost/property_tree/detail/exception_implementation.hpp> - -#endif diff --git a/3rdParty/Boost/src/boost/property_tree/id_translator.hpp b/3rdParty/Boost/src/boost/property_tree/id_translator.hpp deleted file mode 100644 index 02fdf44..0000000 --- a/3rdParty/Boost/src/boost/property_tree/id_translator.hpp +++ /dev/null @@ -1,51 +0,0 @@ -// ---------------------------------------------------------------------------- -// Copyright (C) 2009 Sebastian Redl -// -// 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) -// -// For more information, see www.boost.org -// ---------------------------------------------------------------------------- - -#ifndef BOOST_PROPERTY_TREE_ID_TRANSLATOR_HPP_INCLUDED -#define BOOST_PROPERTY_TREE_ID_TRANSLATOR_HPP_INCLUDED - -#include <boost/property_tree/ptree_fwd.hpp> - -#include <boost/optional.hpp> -#include <string> - -namespace boost { namespace property_tree -{ - - /// Simple implementation of the Translator concept. It does no translation. - template <typename T> - struct id_translator - { - typedef T internal_type; - typedef T external_type; - - boost::optional<T> get_value(const T &v) { return v; } - boost::optional<T> put_value(const T &v) { return v; } - }; - - // This is the default translator whenever you get two equal types. - template <typename T> - struct translator_between<T, T> - { - typedef id_translator<T> type; - }; - - // A more specific specialization for std::basic_string. Otherwise, - // stream_translator's specialization wins. - template <typename Ch, typename Traits, typename Alloc> - struct translator_between< std::basic_string<Ch, Traits, Alloc>, - std::basic_string<Ch, Traits, Alloc> > - { - typedef id_translator< std::basic_string<Ch, Traits, Alloc> > type; - }; - -}} - -#endif diff --git a/3rdParty/Boost/src/boost/property_tree/ptree.hpp b/3rdParty/Boost/src/boost/property_tree/ptree.hpp deleted file mode 100644 index 243a9b6..0000000 --- a/3rdParty/Boost/src/boost/property_tree/ptree.hpp +++ /dev/null @@ -1,517 +0,0 @@ -// ---------------------------------------------------------------------------- -// Copyright (C) 2002-2006 Marcin Kalicinski -// Copyright (C) 2009 Sebastian Redl -// -// 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) -// -// For more information, see www.boost.org -// ---------------------------------------------------------------------------- - -#ifndef BOOST_PROPERTY_TREE_PTREE_HPP_INCLUDED -#define BOOST_PROPERTY_TREE_PTREE_HPP_INCLUDED - -#include <boost/property_tree/ptree_fwd.hpp> -#include <boost/property_tree/string_path.hpp> -#include <boost/property_tree/stream_translator.hpp> -#include <boost/property_tree/exceptions.hpp> -#include <boost/property_tree/detail/ptree_utils.hpp> - -#include <boost/multi_index_container.hpp> -#include <boost/multi_index/indexed_by.hpp> -#include <boost/multi_index/sequenced_index.hpp> -#include <boost/multi_index/ordered_index.hpp> -#include <boost/multi_index/member.hpp> -#include <boost/utility/enable_if.hpp> -#include <boost/throw_exception.hpp> -#include <boost/optional.hpp> -#include <utility> // for std::pair - -namespace boost { namespace property_tree -{ - - /** - * Property tree main structure. A property tree is a hierarchical data - * structure which has one element of type @p Data in each node, as well - * as an ordered sequence of sub-nodes, which are additionally identified - * by a non-unique key of type @p Key. - * - * Key equivalency is defined by @p KeyCompare, a predicate defining a - * strict weak ordering. - * - * Property tree defines a Container-like interface to the (key-node) pairs - * of its direct sub-nodes. The iterators are bidirectional. The sequence - * of nodes is held in insertion order, not key order. - */ - template<class Key, class Data, class KeyCompare> - class basic_ptree - { -#if defined(BOOST_PROPERTY_TREE_DOXYGEN_INVOKED) - public: -#endif - // Internal types - /** - * Simpler way to refer to this basic_ptree\<C,K,P,A\> type. - * Note that this is private, and made public only for doxygen. - */ - typedef basic_ptree<Key, Data, KeyCompare> self_type; - - public: - // Basic types - typedef Key key_type; - typedef Data data_type; - typedef KeyCompare key_compare; - - // Container view types - typedef std::pair<const Key, self_type> value_type; - typedef std::size_t size_type; - - // The problem with the iterators is that I can't make them complete - // until the container is complete. Sucks. Especially for the reverses. - class iterator; - class const_iterator; - class reverse_iterator; - class const_reverse_iterator; - - // Associative view types - class assoc_iterator; - class const_assoc_iterator; - - // Property tree view types - typedef typename path_of<Key>::type path_type; - - - // The big five - - /** Creates a node with no children and default-constructed data. */ - basic_ptree(); - /** Creates a node with no children and a copy of the given data. */ - explicit basic_ptree(const data_type &data); - basic_ptree(const self_type &rhs); - ~basic_ptree(); - /** Basic guarantee only. */ - self_type &operator =(const self_type &rhs); - - /** Swap with other tree. Only constant-time and nothrow if the - * data type's swap is. - */ - void swap(self_type &rhs); - - // Container view functions - - /** The number of direct children of this node. */ - size_type size() const; - size_type max_size() const; - /** Whether there are any direct children. */ - bool empty() const; - - iterator begin(); - const_iterator begin() const; - iterator end(); - const_iterator end() const; - reverse_iterator rbegin(); - const_reverse_iterator rbegin() const; - reverse_iterator rend(); - const_reverse_iterator rend() const; - - value_type &front(); - const value_type &front() const; - value_type &back(); - const value_type &back() const; - - /** Insert a copy of the given tree with its key just before the given - * position in this node. This operation invalidates no iterators. - * @return An iterator to the newly created child. - */ - iterator insert(iterator where, const value_type &value); - - /** Range insert. Equivalent to: - * @code - * for(; first != last; ++first) insert(where, *first); - * @endcode - */ - template<class It> void insert(iterator where, It first, It last); - - /** Erase the child pointed at by the iterator. This operation - * invalidates the given iterator, as well as its equivalent - * assoc_iterator. - * @return A valid iterator pointing to the element after the erased. - */ - iterator erase(iterator where); - - /** Range erase. Equivalent to: - * @code - * while(first != last;) first = erase(first); - * @endcode - */ - iterator erase(iterator first, iterator last); - - /** Equivalent to insert(begin(), value). */ - iterator push_front(const value_type &value); - - /** Equivalent to insert(end(), value). */ - iterator push_back(const value_type &value); - - /** Equivalent to erase(begin()). */ - void pop_front(); - - /** Equivalent to erase(boost::prior(end())). */ - void pop_back(); - - /** Reverses the order of direct children in the property tree. */ - void reverse(); - - /** Sorts the direct children of this node according to the predicate. - * The predicate is passed the whole pair of key and child. - */ - template<class Compare> void sort(Compare comp); - - /** Sorts the direct children of this node according to key order. */ - void sort(); - - // Equality - - /** Two property trees are the same if they have the same data, the keys - * and order of their children are the same, and the children compare - * equal, recursively. - */ - bool operator ==(const self_type &rhs) const; - bool operator !=(const self_type &rhs) const; - - // Associative view - - /** Returns an iterator to the first child, in order. */ - assoc_iterator ordered_begin(); - /** Returns an iterator to the first child, in order. */ - const_assoc_iterator ordered_begin() const; - - /** Returns the not-found iterator. Equivalent to end() in a real - * associative container. - */ - assoc_iterator not_found(); - /** Returns the not-found iterator. Equivalent to end() in a real - * associative container. - */ - const_assoc_iterator not_found() const; - - /** Find a child with the given key, or not_found() if there is none. - * There is no guarantee about which child is returned if multiple have - * the same key. - */ - assoc_iterator find(const key_type &key); - - /** Find a child with the given key, or not_found() if there is none. - * There is no guarantee about which child is returned if multiple have - * the same key. - */ - const_assoc_iterator find(const key_type &key) const; - - /** Find the range of children that have the given key. */ - std::pair<assoc_iterator, assoc_iterator> - equal_range(const key_type &key); - - /** Find the range of children that have the given key. */ - std::pair<const_assoc_iterator, const_assoc_iterator> - equal_range(const key_type &key) const; - - /** Count the number of direct children with the given key. */ - size_type count(const key_type &key) const; - - /** Erase all direct children with the given key and return the count. - */ - size_type erase(const key_type &key); - - /** Get the iterator that points to the same element as the argument. - * @note A valid assoc_iterator range (a, b) does not imply that - * (to_iterator(a), to_iterator(b)) is a valid range. - */ - iterator to_iterator(assoc_iterator it); - - /** Get the iterator that points to the same element as the argument. - * @note A valid const_assoc_iterator range (a, b) does not imply that - * (to_iterator(a), to_iterator(b)) is a valid range. - */ - const_iterator to_iterator(const_assoc_iterator it) const; - - // Property tree view - - /** Reference to the actual data in this node. */ - data_type &data(); - - /** Reference to the actual data in this node. */ - const data_type &data() const; - - /** Clear this tree completely, of both data and children. */ - void clear(); - - /** Get the child at the given path, or throw @c ptree_bad_path. - * @note Depending on the path, the result at each level may not be - * completely determinate, i.e. if the same key appears multiple - * times, which child is chosen is not specified. This can lead - * to the path not being resolved even though there is a - * descendant with this path. Example: - * @code - * a -> b -> c - * -> b - * @endcode - * The path "a.b.c" will succeed if the resolution of "b" chooses - * the first such node, but fail if it chooses the second. - */ - self_type &get_child(const path_type &path); - - /** Get the child at the given path, or throw @c ptree_bad_path. */ - const self_type &get_child(const path_type &path) const; - - /** Get the child at the given path, or return @p default_value. */ - self_type &get_child(const path_type &path, self_type &default_value); - - /** Get the child at the given path, or return @p default_value. */ - const self_type &get_child(const path_type &path, - const self_type &default_value) const; - - /** Get the child at the given path, or return boost::null. */ - optional<self_type &> get_child_optional(const path_type &path); - - /** Get the child at the given path, or return boost::null. */ - optional<const self_type &> - get_child_optional(const path_type &path) const; - - /** Set the node at the given path to the given value. Create any - * missing parents. If the node at the path already exists, replace it. - * @return A reference to the inserted subtree. - * @note Because of the way paths work, it is not generally guaranteed - * that a node newly created can be accessed using the same path. - * @note If the path could refer to multiple nodes, it is unspecified - * which one gets replaced. - */ - self_type &put_child(const path_type &path, const self_type &value); - - /** Add the node at the given path. Create any missing parents. If there - * already is a node at the path, add another one with the same key. - * @param path Path to the child. The last fragment must not have an - * index. - * @return A reference to the inserted subtree. - * @note Because of the way paths work, it is not generally guaranteed - * that a node newly created can be accessed using the same path. - */ - self_type &add_child(const path_type &path, const self_type &value); - - /** Take the value of this node and attempt to translate it to a - * @c Type object using the supplied translator. - * @throw ptree_bad_data if the conversion fails. - */ - template<class Type, class Translator> - typename boost::enable_if<detail::is_translator<Translator>, Type>::type - get_value(Translator tr) const; - - /** Take the value of this node and attempt to translate it to a - * @c Type object using the default translator. - * @throw ptree_bad_data if the conversion fails. - */ - template<class Type> - Type get_value() const; - - /** Take the value of this node and attempt to translate it to a - * @c Type object using the supplied translator. Return @p default_value - * if this fails. - */ - template<class Type, class Translator> - Type get_value(const Type &default_value, Translator tr) const; - - /** Make get_value do the right thing for string literals. */ - template <class Ch, class Translator> - typename boost::enable_if< - detail::is_character<Ch>, - std::basic_string<Ch> - >::type - get_value(const Ch *default_value, Translator tr) const; - - /** Take the value of this node and attempt to translate it to a - * @c Type object using the default translator. Return @p default_value - * if this fails. - */ - template<class Type> - typename boost::disable_if<detail::is_translator<Type>, Type>::type - get_value(const Type &default_value) const; - - /** Make get_value do the right thing for string literals. */ - template <class Ch> - typename boost::enable_if< - detail::is_character<Ch>, - std::basic_string<Ch> - >::type - get_value(const Ch *default_value) const; - - /** Take the value of this node and attempt to translate it to a - * @c Type object using the supplied translator. Return boost::null if - * this fails. - */ - template<class Type, class Translator> - optional<Type> get_value_optional(Translator tr) const; - - /** Take the value of this node and attempt to translate it to a - * @c Type object using the default translator. Return boost::null if - * this fails. - */ - template<class Type> - optional<Type> get_value_optional() const; - - /** Replace the value at this node with the given value, translated - * to the tree's data type using the supplied translator. - * @throw ptree_bad_data if the conversion fails. - */ - template<class Type, class Translator> - void put_value(const Type &value, Translator tr); - - /** Replace the value at this node with the given value, translated - * to the tree's data type using the default translator. - * @throw ptree_bad_data if the conversion fails. - */ - template<class Type> - void put_value(const Type &value); - - /** Shorthand for get_child(path).get_value(tr). */ - template<class Type, class Translator> - typename boost::enable_if<detail::is_translator<Translator>, Type>::type - get(const path_type &path, Translator tr) const; - - /** Shorthand for get_child(path).get_value\<Type\>(). */ - template<class Type> - Type get(const path_type &path) const; - - /** Shorthand for get_child(path, empty_ptree()) - * .get_value(default_value, tr). - * That is, return the translated value if possible, and the default - * value if the node doesn't exist or conversion fails. - */ - template<class Type, class Translator> - Type get(const path_type &path, - const Type &default_value, - Translator tr) const; - - /** Make get do the right thing for string literals. */ - template <class Ch, class Translator> - typename boost::enable_if< - detail::is_character<Ch>, - std::basic_string<Ch> - >::type - get(const path_type &path, const Ch *default_value, Translator tr)const; - - /** Shorthand for get_child(path, empty_ptree()) - * .get_value(default_value). - * That is, return the translated value if possible, and the default - * value if the node doesn't exist or conversion fails. - */ - template<class Type> - typename boost::disable_if<detail::is_translator<Type>, Type>::type - get(const path_type &path, const Type &default_value) const; - - /** Make get do the right thing for string literals. */ - template <class Ch> - typename boost::enable_if< - detail::is_character<Ch>, - std::basic_string<Ch> - >::type - get(const path_type &path, const Ch *default_value) const; - - /** Shorthand for: - * @code - * if(optional\<self_type&\> node = get_child_optional(path)) - * return node->get_value_optional(tr); - * return boost::null; - * @endcode - * That is, return the value if it exists and can be converted, or nil. - */ - template<class Type, class Translator> - optional<Type> get_optional(const path_type &path, Translator tr) const; - - /** Shorthand for: - * @code - * if(optional\<const self_type&\> node = get_child_optional(path)) - * return node->get_value_optional(); - * return boost::null; - * @endcode - */ - template<class Type> - optional<Type> get_optional(const path_type &path) const; - - /** Set the value of the node at the given path to the supplied value, - * translated to the tree's data type. If the node doesn't exist, it is - * created, including all its missing parents. - * @return The node that had its value changed. - * @throw ptree_bad_data if the conversion fails. - */ - template<class Type, class Translator> - self_type &put(const path_type &path, const Type &value, Translator tr); - - /** Set the value of the node at the given path to the supplied value, - * translated to the tree's data type. If the node doesn't exist, it is - * created, including all its missing parents. - * @return The node that had its value changed. - * @throw ptree_bad_data if the conversion fails. - */ - template<class Type> - self_type &put(const path_type &path, const Type &value); - - /** If the node identified by the path does not exist, create it, - * including all its missing parents. - * If the node already exists, add a sibling with the same key. - * Set the newly created node's value to the given paremeter, - * translated with the supplied translator. - * @param path Path to the child. The last fragment must not have an - * index. - * @param value The value to add. - * @param tr The translator to use. - * @return The node that was added. - * @throw ptree_bad_data if the conversion fails. - */ - template<class Type, class Translator> - self_type &add(const path_type &path, - const Type &value, - Translator tr); - - /** If the node identified by the path does not exist, create it, - * including all its missing parents. - * If the node already exists, add a sibling with the same key. - * Set the newly created node's value to the given paremeter, - * translated with the supplied translator. - * @param path Path to the child. The last fragment must not have an - * index. - * @param value The value to add. - * @return The node that was added. - * @throw ptree_bad_data if the conversion fails. - */ - template<class Type> - self_type &add(const path_type &path, const Type &value); - - private: - // Hold the data of this node - data_type m_data; - // Hold the children - this is a void* because we can't complete the - // container type within the class. - void* m_children; - - // Getter tree-walk. Not const-safe! Gets the node the path refers to, - // or null. Destroys p's value. - self_type* walk_path(path_type& p) const; - - // Modifer tree-walk. Gets the parent of the node referred to by the - // path, creating nodes as necessary. p is the path to the remaining - // child. - self_type& force_path(path_type& p); - - // This struct contains typedefs for the concrete types. - struct subs; - friend struct subs; - friend class iterator; - friend class const_iterator; - friend class reverse_iterator; - friend class const_reverse_iterator; - }; - -}} - -#include <boost/property_tree/detail/ptree_implementation.hpp> - -#endif diff --git a/3rdParty/Boost/src/boost/property_tree/ptree_fwd.hpp b/3rdParty/Boost/src/boost/property_tree/ptree_fwd.hpp deleted file mode 100644 index fe36741..0000000 --- a/3rdParty/Boost/src/boost/property_tree/ptree_fwd.hpp +++ /dev/null @@ -1,143 +0,0 @@ -// ---------------------------------------------------------------------------- -// Copyright (C) 2002-2006 Marcin Kalicinski -// Copyright (C) 2009 Sebastian Redl -// -// 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) -// -// For more information, see www.boost.org -// ---------------------------------------------------------------------------- -#ifndef BOOST_PROPERTY_TREE_PTREE_FWD_HPP_INCLUDED -#define BOOST_PROPERTY_TREE_PTREE_FWD_HPP_INCLUDED - -#include <boost/config.hpp> -#include <boost/optional/optional_fwd.hpp> -#include <boost/throw_exception.hpp> -#include <functional> // for std::less -#include <memory> // for std::allocator -#include <string> - -namespace boost { namespace property_tree -{ - namespace detail { - template <typename T> struct less_nocase; - } - - // Classes - - template < class Key, class Data, class KeyCompare = std::less<Key> > - class basic_ptree; - - template <typename T> - struct id_translator; - - template <typename String, typename Translator> - class string_path; - - // Texas-style concepts for documentation only. -#if 0 - concept PropertyTreePath<class Path> { - // The key type for which this path works. - typename key_type; - // Return the key that the first segment of the path names. - // Split the head off the state. - key_type Path::reduce(); - - // Return true if the path is empty. - bool Path::empty() const; - - // Return true if the path contains a single element. - bool Path::single() const; - - // Dump as a std::string, for exception messages. - std::string Path::dump() const; - } - concept PropertyTreeKey<class Key> { - PropertyTreePath path; - requires SameType<Key, PropertyTreePath<path>::key_type>; - } - concept PropertyTreeTranslator<class Tr> { - typename internal_type; - typename external_type; - - boost::optional<external_type> Tr::get_value(internal_type); - boost::optional<internal_type> Tr::put_value(external_type); - } -#endif - /// If you want to use a custom key type, specialize this struct for it - /// and give it a 'type' typedef that specifies your path type. The path - /// type must conform to the Path concept described in the documentation. - /// This is already specialized for std::basic_string. - template <typename Key> - struct path_of; - - /// Specialize this struct to specify a default translator between the data - /// in a tree whose data_type is Internal, and the external data_type - /// specified in a get_value, get, put_value or put operation. - /// This is already specialized for Internal being std::basic_string. - template <typename Internal, typename External> - struct translator_between; - - class ptree_error; - class ptree_bad_data; - class ptree_bad_path; - - // Typedefs - - /** Implements a path using a std::string as the key. */ - typedef string_path<std::string, id_translator<std::string> > path; - - /** - * A property tree with std::string for key and data, and default - * comparison. - */ - typedef basic_ptree<std::string, std::string> ptree; - - /** - * A property tree with std::string for key and data, and case-insensitive - * comparison. - */ - typedef basic_ptree<std::string, std::string, - detail::less_nocase<std::string> > - iptree; - -#ifndef BOOST_NO_STD_WSTRING - /** Implements a path using a std::wstring as the key. */ - typedef string_path<std::wstring, id_translator<std::wstring> > wpath; - - /** - * A property tree with std::wstring for key and data, and default - * comparison. - * @note The type only exists if the platform supports @c wchar_t. - */ - typedef basic_ptree<std::wstring, std::wstring> wptree; - - /** - * A property tree with std::wstring for key and data, and case-insensitive - * comparison. - * @note The type only exists if the platform supports @c wchar_t. - */ - typedef basic_ptree<std::wstring, std::wstring, - detail::less_nocase<std::wstring> > - wiptree; -#endif - - // Free functions - - /** - * Swap two property tree instances. - */ - template<class K, class D, class C> - void swap(basic_ptree<K, D, C> &pt1, - basic_ptree<K, D, C> &pt2); - -} } - - -#if !defined(BOOST_PROPERTY_TREE_DOXYGEN_INVOKED) - // Throwing macro to avoid no return warnings portably -# define BOOST_PROPERTY_TREE_THROW(e) BOOST_THROW_EXCEPTION(e) -#endif - -#endif diff --git a/3rdParty/Boost/src/boost/property_tree/stream_translator.hpp b/3rdParty/Boost/src/boost/property_tree/stream_translator.hpp deleted file mode 100644 index c7fabfa..0000000 --- a/3rdParty/Boost/src/boost/property_tree/stream_translator.hpp +++ /dev/null @@ -1,221 +0,0 @@ -// ---------------------------------------------------------------------------- -// Copyright (C) 2009 Sebastian Redl -// -// 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) -// -// For more information, see www.boost.org -// ---------------------------------------------------------------------------- - -#ifndef BOOST_PROPERTY_TREE_STREAM_TRANSLATOR_HPP_INCLUDED -#define BOOST_PROPERTY_TREE_STREAM_TRANSLATOR_HPP_INCLUDED - -#include <boost/property_tree/ptree_fwd.hpp> - -#include <boost/optional.hpp> -#include <boost/optional/optional_io.hpp> -#include <boost/utility/enable_if.hpp> -#include <boost/type_traits/decay.hpp> -#include <boost/type_traits/integral_constant.hpp> -#include <sstream> -#include <string> -#include <locale> -#include <limits> - -namespace boost { namespace property_tree -{ - - template <typename Ch, typename Traits, typename E, typename Enabler = void> - struct customize_stream - { - static void insert(std::basic_ostream<Ch, Traits>& s, const E& e) { - s << e; - } - static void extract(std::basic_istream<Ch, Traits>& s, E& e) { - s >> e; - if(!s.eof()) { - s >> std::ws; - } - } - }; - - // No whitespace skipping for single characters. - template <typename Ch, typename Traits> - struct customize_stream<Ch, Traits, Ch, void> - { - static void insert(std::basic_ostream<Ch, Traits>& s, Ch e) { - s << e; - } - static void extract(std::basic_istream<Ch, Traits>& s, Ch& e) { - s.unsetf(std::ios_base::skipws); - s >> e; - } - }; - - // Ugly workaround for numeric_traits that don't have members when not - // specialized, e.g. MSVC. - namespace detail - { - template <bool is_specialized> - struct is_inexact_impl - { - template <typename T> - struct test - { - typedef boost::false_type type; - }; - }; - template <> - struct is_inexact_impl<true> - { - template <typename T> - struct test - { - typedef boost::integral_constant<bool, - !std::numeric_limits<T>::is_exact> type; - }; - }; - - template <typename F> - struct is_inexact - { - typedef typename boost::decay<F>::type decayed; - typedef typename is_inexact_impl< - std::numeric_limits<decayed>::is_specialized - >::BOOST_NESTED_TEMPLATE test<decayed>::type type; - static const bool value = type::value; - }; - } - - template <typename Ch, typename Traits, typename F> - struct customize_stream<Ch, Traits, F, - typename boost::enable_if< detail::is_inexact<F> >::type - > - { - static void insert(std::basic_ostream<Ch, Traits>& s, const F& e) { - s.precision(std::numeric_limits<F>::digits10 + 1); - s << e; - } - static void extract(std::basic_istream<Ch, Traits>& s, F& e) { - s >> e; - if(!s.eof()) { - s >> std::ws; - } - } - }; - - template <typename Ch, typename Traits> - struct customize_stream<Ch, Traits, bool, void> - { - static void insert(std::basic_ostream<Ch, Traits>& s, bool e) { - s.setf(std::ios_base::boolalpha); - s << e; - } - static void extract(std::basic_istream<Ch, Traits>& s, bool& e) { - s >> e; - if(s.fail()) { - // Try again in word form. - s.clear(); - s.setf(std::ios_base::boolalpha); - s >> e; - } - if(!s.eof()) { - s >> std::ws; - } - } - }; - - template <typename Ch, typename Traits> - struct customize_stream<Ch, Traits, signed char, void> - { - static void insert(std::basic_ostream<Ch, Traits>& s, signed char e) { - s << (int)e; - } - static void extract(std::basic_istream<Ch, Traits>& s, signed char& e) { - int i; - s >> i; - // out of range? - if(i > (std::numeric_limits<signed char>::max)() || - i < (std::numeric_limits<signed char>::min)()) - { - s.clear(); // guarantees eof to be unset - return; - } - e = (signed char)i; - if(!s.eof()) { - s >> std::ws; - } - } - }; - - template <typename Ch, typename Traits> - struct customize_stream<Ch, Traits, unsigned char, void> - { - static void insert(std::basic_ostream<Ch, Traits>& s, unsigned char e) { - s << (unsigned)e; - } - static void extract(std::basic_istream<Ch,Traits>& s, unsigned char& e){ - unsigned i; - s >> i; - // out of range? - if(i > (std::numeric_limits<unsigned char>::max)()) { - s.clear(); // guarantees eof to be unset - return; - } - e = (unsigned char)i; - if(!s.eof()) { - s >> std::ws; - } - } - }; - - /// Implementation of Translator that uses the stream overloads. - template <typename Ch, typename Traits, typename Alloc, typename E> - class stream_translator - { - typedef customize_stream<Ch, Traits, E> customized; - public: - typedef std::basic_string<Ch, Traits, Alloc> internal_type; - typedef E external_type; - - explicit stream_translator(std::locale loc = std::locale()) - : m_loc(loc) - {} - - boost::optional<E> get_value(const internal_type &v) { - std::basic_istringstream<Ch, Traits, Alloc> iss(v); - iss.imbue(m_loc); - E e; - customized::extract(iss, e); - if(iss.fail() || iss.bad() || iss.get() != Traits::eof()) { - return boost::optional<E>(); - } - return e; - } - boost::optional<internal_type> put_value(const E &v) { - std::basic_ostringstream<Ch, Traits, Alloc> oss; - oss.imbue(m_loc); - customized::insert(oss, v); - if(oss) { - return oss.str(); - } - return boost::optional<internal_type>(); - } - - private: - std::locale m_loc; - }; - - // This is the default translator when basic_string is the internal type. - // Unless the external type is also basic_string, in which case - // id_translator takes over. - template <typename Ch, typename Traits, typename Alloc, typename E> - struct translator_between<std::basic_string<Ch, Traits, Alloc>, E> - { - typedef stream_translator<Ch, Traits, Alloc, E> type; - }; - -}} - -#endif diff --git a/3rdParty/Boost/src/boost/property_tree/string_path.hpp b/3rdParty/Boost/src/boost/property_tree/string_path.hpp deleted file mode 100644 index 07ec6b0..0000000 --- a/3rdParty/Boost/src/boost/property_tree/string_path.hpp +++ /dev/null @@ -1,273 +0,0 @@ -// ---------------------------------------------------------------------------- -// Copyright (C) 2009 Sebastian Redl -// -// 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) -// -// For more information, see www.boost.org -// ---------------------------------------------------------------------------- - -#ifndef BOOST_PROPERTY_TREE_STRING_PATH_HPP_INCLUDED -#define BOOST_PROPERTY_TREE_STRING_PATH_HPP_INCLUDED - -#include <boost/property_tree/ptree_fwd.hpp> -#include <boost/property_tree/id_translator.hpp> -#include <boost/property_tree/exceptions.hpp> -#include <boost/property_tree/detail/ptree_utils.hpp> - -#include <boost/static_assert.hpp> -#include <boost/type_traits/is_same.hpp> -#include <boost/optional.hpp> -#include <boost/throw_exception.hpp> -#include <algorithm> -#include <string> -#include <iterator> -#include <cassert> - -namespace boost { namespace property_tree -{ - namespace detail - { - template <typename Sequence, typename Iterator> - void append_and_preserve_iter(Sequence &s, const Sequence &r, - Iterator &, std::forward_iterator_tag) - { - // Here we boldly assume that anything that is not random-access - // preserves validity. This is valid for the STL sequences. - s.insert(s.end(), r.begin(), r.end()); - } - template <typename Sequence, typename Iterator> - void append_and_preserve_iter(Sequence &s, const Sequence &r, - Iterator &it, - std::random_access_iterator_tag) - { - // Convert the iterator to an index, and later back. - typename std::iterator_traits<Iterator>::difference_type idx = - it - s.begin(); - s.insert(s.end(), r.begin(), r.end()); - it = s.begin() + idx; - } - - template <typename Sequence> - inline std::string dump_sequence(const Sequence &) - { - return "<undumpable sequence>"; - } - inline std::string dump_sequence(const std::string &s) - { - return s; - } -#ifndef BOOST_NO_STD_WSTRING - inline std::string dump_sequence(const std::wstring &s) - { - return narrow(s.c_str()); - } -#endif - } - - /// Default path class. A path is a sequence of values. Groups of values - /// are separated by the separator value, which defaults to '.' cast to - /// the sequence's value type. The group of values is then passed to the - /// translator to get a key. - /// - /// If instantiated with std::string and id_translator\<std::string\>, - /// it accepts paths of the form "one.two.three.four". - /// - /// @tparam String Any Sequence. If the sequence does not support random- - /// access iteration, concatenation of paths assumes that - /// insertions at the end preserve iterator validity. - /// @tparam Translator A translator with internal_type == String. - template <typename String, typename Translator> - class string_path - { - BOOST_STATIC_ASSERT((is_same<String, - typename Translator::internal_type>::value)); - public: - typedef typename Translator::external_type key_type; - typedef typename String::value_type char_type; - - /// Create an empty path. - explicit string_path(char_type separator = char_type('.')); - /// Create a path by parsing the given string. - /// @param value A sequence, possibly with separators, that describes - /// the path, e.g. "one.two.three". - /// @param separator The separator used in parsing. Defaults to '.'. - /// @param tr The translator used by this path to convert the individual - /// parts to keys. - string_path(const String &value, char_type separator = char_type('.'), - Translator tr = Translator()); - /// Create a path by parsing the given string. - /// @param value A zero-terminated array of values. Only use if zero- - /// termination makes sense for your type, and your - /// sequence supports construction from it. Intended for - /// string literals. - /// @param separator The separator used in parsing. Defaults to '.'. - /// @param tr The translator used by this path to convert the individual - /// parts to keys. - string_path(const char_type *value, - char_type separator = char_type('.'), - Translator tr = Translator()); - - // Default copying doesn't do the right thing with the iterator - string_path(const string_path &o); - string_path& operator =(const string_path &o); - - /// Take a single element off the path at the front and return it. - key_type reduce(); - - /// Test if the path is empty. - bool empty() const; - - /// Test if the path contains a single element, i.e. no separators. - bool single() const; - - std::string dump() const { - return detail::dump_sequence(m_value); - } - - /// Append a second path to this one. - /// @pre o's separator is the same as this one's, or o has no separators - string_path& operator /=(const string_path &o) { - // If it's single, there's no separator. This allows to do - // p /= "piece"; - // even for non-default separators. - assert((m_separator == o.m_separator || o.empty() || o.single()) - && "Incompatible paths."); - if(!o.empty()) { - String sub; - if(!this->empty()) { - sub.push_back(m_separator); - } - sub.insert(sub.end(), o.cstart(), o.m_value.end()); - detail::append_and_preserve_iter(m_value, sub, m_start, - typename std::iterator_traits<s_iter>::iterator_category()); - } - return *this; - } - - private: - typedef typename String::iterator s_iter; - typedef typename String::const_iterator s_c_iter; - String m_value; - char_type m_separator; - Translator m_tr; - s_iter m_start; - s_c_iter cstart() const { return m_start; } - }; - - template <typename String, typename Translator> inline - string_path<String, Translator>::string_path(char_type separator) - : m_separator(separator), m_start(m_value.begin()) - {} - - template <typename String, typename Translator> inline - string_path<String, Translator>::string_path(const String &value, - char_type separator, - Translator tr) - : m_value(value), m_separator(separator), - m_tr(tr), m_start(m_value.begin()) - {} - - template <typename String, typename Translator> inline - string_path<String, Translator>::string_path(const char_type *value, - char_type separator, - Translator tr) - : m_value(value), m_separator(separator), - m_tr(tr), m_start(m_value.begin()) - {} - - template <typename String, typename Translator> inline - string_path<String, Translator>::string_path(const string_path &o) - : m_value(o.m_value), m_separator(o.m_separator), - m_tr(o.m_tr), m_start(m_value.begin()) - { - std::advance(m_start, std::distance(o.m_value.begin(), o.cstart())); - } - - template <typename String, typename Translator> inline - string_path<String, Translator>& - string_path<String, Translator>::operator =(const string_path &o) - { - m_value = o.m_value; - m_separator = o.m_separator; - m_tr = o.m_tr; - m_start = m_value.begin(); - std::advance(m_start, std::distance(o.m_value.begin(), o.cstart())); - return *this; - } - - template <typename String, typename Translator> - typename Translator::external_type string_path<String, Translator>::reduce() - { - assert(!empty() && "Reducing empty path"); - - s_iter next_sep = std::find(m_start, m_value.end(), m_separator); - String part(m_start, next_sep); - m_start = next_sep; - if(!empty()) { - // Unless we're at the end, skip the separator we found. - ++m_start; - } - - if(optional<key_type> key = m_tr.get_value(part)) { - return *key; - } - BOOST_PROPERTY_TREE_THROW(ptree_bad_path("Path syntax error", *this)); - } - - template <typename String, typename Translator> inline - bool string_path<String, Translator>::empty() const - { - return m_start == m_value.end(); - } - - template <typename String, typename Translator> inline - bool string_path<String, Translator>::single() const - { - return std::find(static_cast<s_c_iter>(m_start), - m_value.end(), m_separator) - == m_value.end(); - } - - // By default, this is the path for strings. You can override this by - // specializing path_of for a more specific form of std::basic_string. - template <typename Ch, typename Traits, typename Alloc> - struct path_of< std::basic_string<Ch, Traits, Alloc> > - { - typedef std::basic_string<Ch, Traits, Alloc> _string; - typedef string_path< _string, id_translator<_string> > type; - }; - - template <typename String, typename Translator> inline - string_path<String, Translator> operator /( - string_path<String, Translator> p1, - const string_path<String, Translator> &p2) - { - p1 /= p2; - return p1; - } - - // These shouldn't be necessary, but GCC won't find the one above. - template <typename String, typename Translator> inline - string_path<String, Translator> operator /( - string_path<String, Translator> p1, - const typename String::value_type *p2) - { - p1 /= p2; - return p1; - } - - template <typename String, typename Translator> inline - string_path<String, Translator> operator /( - const typename String::value_type *p1, - const string_path<String, Translator> &p2) - { - string_path<String, Translator> t(p1); - t /= p2; - return t; - } - -}} - -#endif diff --git a/3rdParty/Boost/src/boost/property_tree/xml_parser.hpp b/3rdParty/Boost/src/boost/property_tree/xml_parser.hpp deleted file mode 100644 index 4f36e9a..0000000 --- a/3rdParty/Boost/src/boost/property_tree/xml_parser.hpp +++ /dev/null @@ -1,153 +0,0 @@ -// ---------------------------------------------------------------------------- -// Copyright (C) 2002-2006 Marcin Kalicinski -// Copyright (C) 2009 Sebastian Redl -// -// 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) -// -// For more information, see www.boost.org -// ---------------------------------------------------------------------------- -#ifndef BOOST_PROPERTY_TREE_XML_PARSER_HPP_INCLUDED -#define BOOST_PROPERTY_TREE_XML_PARSER_HPP_INCLUDED - -#include <boost/property_tree/ptree.hpp> -#include <boost/property_tree/detail/xml_parser_write.hpp> -#include <boost/property_tree/detail/xml_parser_error.hpp> -#include <boost/property_tree/detail/xml_parser_writer_settings.hpp> -#include <boost/property_tree/detail/xml_parser_flags.hpp> -#include <boost/property_tree/detail/xml_parser_read_rapidxml.hpp> - -#include <fstream> -#include <string> -#include <locale> - -namespace boost { namespace property_tree { namespace xml_parser -{ - - /** - * Reads XML from an input stream and translates it to property tree. - * @note Clears existing contents of property tree. In case of error the - * property tree unmodified. - * @note XML attributes are placed under keys named @c \<xmlattr\>. - * @throw xml_parser_error In case of error deserializing the property tree. - * @param stream Stream from which to read in the property tree. - * @param[out] pt The property tree to populate. - * @param flags Flags controlling the behaviour of the parser. - * The following flags are supported: - * @li @c no_concat_text -- Prevents concatenation of text nodes into - * datastring of property tree. Puts them in - * separate @c \<xmltext\> strings instead. - * @li @c no_comments -- Skip XML comments. - * @li @c trim_whitespace -- Trim leading and trailing whitespace from text, - * and collapse sequences of whitespace. - */ - template<class Ptree> - void read_xml(std::basic_istream< - typename Ptree::key_type::value_type - > &stream, - Ptree &pt, - int flags = 0) - { - read_xml_internal(stream, pt, flags, std::string()); - } - - /** - * Reads XML from a file using the given locale and translates it to - * property tree. - * @note Clears existing contents of property tree. In case of error the - * property tree unmodified. - * @note XML attributes are placed under keys named @c \<xmlattr\>. - * @throw xml_parser_error In case of error deserializing the property tree. - * @param filename The file from which to read in the property tree. - * @param[out] pt The property tree to populate. - * @param flags Flags controlling the bahviour of the parser. - * The following flags are supported: - * @li @c no_concat_text -- Prevents concatenation of text nodes into - * datastring of property tree. Puts them in - * separate @c \<xmltext\> strings instead. - * @li @c no_comments -- Skip XML comments. - * @param loc The locale to use when reading in the file contents. - */ - template<class Ptree> - void read_xml(const std::string &filename, - Ptree &pt, - int flags = 0, - const std::locale &loc = std::locale()) - { - BOOST_ASSERT(validate_flags(flags)); - std::basic_ifstream<typename Ptree::key_type::value_type> - stream(filename.c_str()); - if (!stream) - BOOST_PROPERTY_TREE_THROW(xml_parser_error( - "cannot open file", filename, 0)); - stream.imbue(loc); - read_xml_internal(stream, pt, flags, filename); - } - - /** - * Translates the property tree to XML and writes it the given output - * stream. - * @throw xml_parser_error In case of error translating the property tree to - * XML or writing to the output stream. - * @param stream The stream to which to write the XML representation of the - * property tree. - * @param pt The property tree to tranlsate to XML and output. - * @param settings The settings to use when writing out the property tree as - * XML. - */ - template<class Ptree> - void write_xml(std::basic_ostream< - typename Ptree::key_type::value_type - > &stream, - const Ptree &pt, - const xml_writer_settings< - typename Ptree::key_type::value_type - > & settings = xml_writer_settings< - typename Ptree::key_type::value_type>() ) - { - write_xml_internal(stream, pt, std::string(), settings); - } - - /** - * Translates the property tree to XML and writes it the given file. - * @throw xml_parser_error In case of error translating the property tree to - * XML or writing to the output stream. - * @param filename The file to which to write the XML representation of the - * property tree. - * @param pt The property tree to tranlsate to XML and output. - * @param loc The locale to use when writing the output to file. - * @param settings The settings to use when writing out the property tree as - * XML. - */ - template<class Ptree> - void write_xml(const std::string &filename, - const Ptree &pt, - const std::locale &loc = std::locale(), - const xml_writer_settings< - typename Ptree::key_type::value_type - > & settings = xml_writer_settings< - typename Ptree::key_type::value_type>()) - { - std::basic_ofstream<typename Ptree::key_type::value_type> - stream(filename.c_str()); - if (!stream) - BOOST_PROPERTY_TREE_THROW(xml_parser_error( - "cannot open file", filename, 0)); - stream.imbue(loc); - write_xml_internal(stream, pt, filename, settings); - } - -} } } - -namespace boost { namespace property_tree -{ - using xml_parser::read_xml; - using xml_parser::write_xml; - using xml_parser::xml_parser_error; - - using xml_parser::xml_writer_settings; - using xml_parser::xml_writer_make_settings; -} } - -#endif diff --git a/3rdParty/Boost/src/boost/range/begin.hpp b/3rdParty/Boost/src/boost/range/begin.hpp index a4a5e10..c668488 100644 --- a/3rdParty/Boost/src/boost/range/begin.hpp +++ b/3rdParty/Boost/src/boost/range/begin.hpp @@ -91,6 +91,11 @@ namespace range_detail } // namespace 'range_detail' #endif +// Use a ADL namespace barrier to avoid ambiguity with other unqualified +// calls. This is particularly important with C++0x encouraging +// unqualified calls to begin/end. +namespace range_adl_barrier +{ template< class T > inline BOOST_DEDUCED_TYPENAME range_iterator<T>::type begin( T& r ) @@ -114,19 +119,25 @@ inline BOOST_DEDUCED_TYPENAME range_iterator<const T>::type begin( const T& r ) return range_begin( r ); } + } // namespace range_adl_barrier } // namespace boost #endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING namespace boost { - template< class T > - inline BOOST_DEDUCED_TYPENAME range_iterator<const T>::type - const_begin( const T& r ) + namespace range_adl_barrier { - return boost::begin( r ); - } -} + template< class T > + inline BOOST_DEDUCED_TYPENAME range_iterator<const T>::type + const_begin( const T& r ) + { + return boost::range_adl_barrier::begin( r ); + } + } // namespace range_adl_barrier + + using namespace range_adl_barrier; +} // namespace boost #endif diff --git a/3rdParty/Boost/src/boost/range/concepts.hpp b/3rdParty/Boost/src/boost/range/concepts.hpp index 8e4d2cf..5965293 100644 --- a/3rdParty/Boost/src/boost/range/concepts.hpp +++ b/3rdParty/Boost/src/boost/range/concepts.hpp @@ -98,8 +98,9 @@ namespace boost { // classes: // // The Range algorithms often do not require that the iterators are - // Assignable, but the correct standard conformant iterators - // do require the iterators to be a model of the Assignable concept. + // Assignable or default constructable, but the correct standard + // conformant iterators do require the iterators to be a model of the + // Assignable concept. // Iterators that contains a functor that is not assignable therefore // are not correct models of the standard iterator concepts, // despite being adequate for most algorithms. An example of this @@ -141,6 +142,26 @@ namespace boost { BOOST_DEDUCED_TYPENAME SinglePassIteratorConcept::traversal_category, single_pass_traversal_tag >)); + + BOOST_CONCEPT_USAGE(SinglePassIteratorConcept) + { + Iterator i2(++i); + boost::ignore_unused_variable_warning(i2); + + // deliberately we are loose with the postfix version for the single pass + // iterator due to the commonly poor adherence to the specification means that + // many algorithms would be unusable, whereas actually without the check they + // work + (void)(i++); + + BOOST_DEDUCED_TYPENAME boost::detail::iterator_traits<Iterator>::reference r1(*i); + boost::ignore_unused_variable_warning(r1); + + BOOST_DEDUCED_TYPENAME boost::detail::iterator_traits<Iterator>::reference r2(*(++i)); + boost::ignore_unused_variable_warning(r2); + } + private: + Iterator i; #endif }; @@ -160,6 +181,20 @@ namespace boost { BOOST_DEDUCED_TYPENAME ForwardIteratorConcept::traversal_category, forward_traversal_tag >)); + + BOOST_CONCEPT_USAGE(ForwardIteratorConcept) + { + // See the above note in the SinglePassIteratorConcept about the handling of the + // postfix increment. Since with forward and better iterators there is no need + // for a proxy, we can sensibly require that the dereference result + // is convertible to reference. + Iterator i2(i++); + boost::ignore_unused_variable_warning(i2); + BOOST_DEDUCED_TYPENAME boost::detail::iterator_traits<Iterator>::reference r(*(i++)); + boost::ignore_unused_variable_warning(r); + } + private: + Iterator i; #endif }; diff --git a/3rdParty/Boost/src/boost/range/detail/begin.hpp b/3rdParty/Boost/src/boost/range/detail/begin.hpp index 06c2561..f3da732 100644 --- a/3rdParty/Boost/src/boost/range/detail/begin.hpp +++ b/3rdParty/Boost/src/boost/range/detail/begin.hpp @@ -19,9 +19,9 @@ # include <boost/range/value_type.hpp> #endif -namespace boost +namespace boost { - + namespace range_detail { template< typename T > @@ -30,7 +30,7 @@ namespace boost ////////////////////////////////////////////////////////////////////// // default ////////////////////////////////////////////////////////////////////// - + template<> struct range_begin<std_container_> { @@ -40,11 +40,11 @@ namespace boost return c.begin(); }; }; - + ////////////////////////////////////////////////////////////////////// // pair ////////////////////////////////////////////////////////////////////// - + template<> struct range_begin<std_pair_> { @@ -54,11 +54,11 @@ namespace boost return p.first; } }; - + ////////////////////////////////////////////////////////////////////// // array ////////////////////////////////////////////////////////////////////// - + template<> struct range_begin<array_> { @@ -78,14 +78,16 @@ namespace boost }; } // namespace 'range_detail' - - template< typename C > - inline BOOST_RANGE_DEDUCED_TYPENAME range_iterator<C>::type - begin( C& c ) + + namespace range_adl_barrier { - return range_detail::range_begin< BOOST_RANGE_DEDUCED_TYPENAME range_detail::range<C>::type >::fun( c ); + template< typename C > + inline BOOST_RANGE_DEDUCED_TYPENAME range_iterator<C>::type + begin( C& c ) + { + return range_detail::range_begin< BOOST_RANGE_DEDUCED_TYPENAME range_detail::range<C>::type >::fun( c ); + } } - } // namespace 'boost' diff --git a/3rdParty/Boost/src/boost/range/detail/end.hpp b/3rdParty/Boost/src/boost/range/detail/end.hpp index d6a7368..8b5f35d 100644 --- a/3rdParty/Boost/src/boost/range/detail/end.hpp +++ b/3rdParty/Boost/src/boost/range/detail/end.hpp @@ -24,7 +24,7 @@ # include <boost/range/detail/remove_extent.hpp> # endif -namespace boost +namespace boost { namespace range_detail { @@ -34,39 +34,39 @@ namespace boost ////////////////////////////////////////////////////////////////////// // default ////////////////////////////////////////////////////////////////////// - + template<> struct range_end<std_container_> { template< typename C > - static BOOST_RANGE_DEDUCED_TYPENAME range_iterator<C>::type + static BOOST_RANGE_DEDUCED_TYPENAME range_iterator<C>::type fun( C& c ) { return c.end(); }; }; - + ////////////////////////////////////////////////////////////////////// // pair ////////////////////////////////////////////////////////////////////// - + template<> struct range_end<std_pair_> { template< typename P > - static BOOST_RANGE_DEDUCED_TYPENAME range_iterator<P>::type + static BOOST_RANGE_DEDUCED_TYPENAME range_iterator<P>::type fun( const P& p ) { return p.second; } }; - + ////////////////////////////////////////////////////////////////////// // array ////////////////////////////////////////////////////////////////////// - + template<> - struct range_end<array_> + struct range_end<array_> { #if !BOOST_WORKAROUND(BOOST_MSVC, < 1310) template< typename T, std::size_t sz > @@ -82,16 +82,19 @@ namespace boost } #endif }; - + } // namespace 'range_detail' - - template< typename C > - inline BOOST_RANGE_DEDUCED_TYPENAME range_iterator<C>::type - end( C& c ) + + namespace range_adl_barrier { - return range_detail::range_end< BOOST_RANGE_DEDUCED_TYPENAME range_detail::range<C>::type >::fun( c ); - } - + template< typename C > + inline BOOST_RANGE_DEDUCED_TYPENAME range_iterator<C>::type + end( C& c ) + { + return range_detail::range_end< BOOST_RANGE_DEDUCED_TYPENAME range_detail::range<C>::type >::fun( c ); + } + } // namespace range_adl_barrier + } // namespace 'boost' # endif // VC6 diff --git a/3rdParty/Boost/src/boost/range/detail/safe_bool.hpp b/3rdParty/Boost/src/boost/range/detail/safe_bool.hpp new file mode 100644 index 0000000..182e510 --- /dev/null +++ b/3rdParty/Boost/src/boost/range/detail/safe_bool.hpp @@ -0,0 +1,72 @@ +// This header intentionally has no include guards. +// +// Copyright (c) 2010 Neil Groves +// 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 +// +// This code utilises the experience gained during the evolution of +// <boost/smart_ptr/operator_bool.hpp> +#ifndef BOOST_RANGE_SAFE_BOOL_INCLUDED_HPP +#define BOOST_RANGE_SAFE_BOOL_INCLUDED_HPP + +#include <boost/config.hpp> +#include <boost/range/config.hpp> + +namespace boost +{ + namespace range_detail + { + +template<class DataMemberPtr> +class safe_bool +{ +public: + typedef safe_bool this_type; + +#if (defined(__SUNPRO_CC) && BOOST_WORKAROUND(__SUNPRO_CC, < 0x570)) || defined(__CINT_) + typedef bool unspecified_bool_type; + static unspecified_bool_type to_unspecified_bool(const bool x, DataMemberPtr) + { + return x; + } +#elif defined(_MANAGED) + static void unspecified_bool(this_type***) + { + } + typedef void(*unspecified_bool_type)(this_type***); + static unspecified_bool_type to_unspecified_bool(const bool x, DataMemberPtr) + { + return x ? unspecified_bool : 0; + } +#elif \ + ( defined(__MWERKS__) && BOOST_WORKAROUND(__MWERKS__, < 0x3200) ) || \ + ( defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ < 304) ) || \ + ( defined(__SUNPRO_CC) && BOOST_WORKAROUND(__SUNPRO_CC, <= 0x590) ) + + typedef bool (this_type::*unspecified_bool_type)() const; + + static unspecified_bool_type to_unspecified_bool(const bool x, DataMemberPtr) + { + return x ? &this_type::detail_safe_bool_member_fn : 0; + } +private: + bool detail_safe_bool_member_fn() const { return false; } +#else + typedef DataMemberPtr unspecified_bool_type; + static unspecified_bool_type to_unspecified_bool(const bool x, DataMemberPtr p) + { + return x ? p : 0; + } +#endif +private: + safe_bool(); + safe_bool(const safe_bool&); + void operator=(const safe_bool&); + ~safe_bool(); +}; + + } // namespace range_detail +} // namespace boost + +#endif // include guard diff --git a/3rdParty/Boost/src/boost/range/end.hpp b/3rdParty/Boost/src/boost/range/end.hpp index 3063c02..d5e6526 100644 --- a/3rdParty/Boost/src/boost/range/end.hpp +++ b/3rdParty/Boost/src/boost/range/end.hpp @@ -88,6 +88,9 @@ namespace range_detail } // namespace 'range_detail' #endif +namespace range_adl_barrier +{ + template< class T > inline BOOST_DEDUCED_TYPENAME range_iterator<T>::type end( T& r ) { @@ -110,22 +113,24 @@ inline BOOST_DEDUCED_TYPENAME range_iterator<const T>::type end( const T& r ) return range_end( r ); } + } // namespace range_adl_barrier } // namespace 'boost' - - #endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING - namespace boost { - template< class T > - inline BOOST_DEDUCED_TYPENAME range_iterator<const T>::type - const_end( const T& r ) + namespace range_adl_barrier { - return boost::end( r ); - } -} + template< class T > + inline BOOST_DEDUCED_TYPENAME range_iterator<const T>::type + const_end( const T& r ) + { + return boost::range_adl_barrier::end( r ); + } + } // namespace range_adl_barrier + using namespace range_adl_barrier; +} // namespace boost #endif diff --git a/3rdParty/Boost/src/boost/range/iterator_range_core.hpp b/3rdParty/Boost/src/boost/range/iterator_range_core.hpp index 497b1e3..7ef7523 100755 --- a/3rdParty/Boost/src/boost/range/iterator_range_core.hpp +++ b/3rdParty/Boost/src/boost/range/iterator_range_core.hpp @@ -27,6 +27,7 @@ #include <boost/range/iterator.hpp> #include <boost/range/difference_type.hpp> #include <boost/range/algorithm/equal.hpp> +#include <boost/range/detail/safe_bool.hpp> #include <boost/utility/enable_if.hpp> #include <iterator> #include <algorithm> @@ -81,7 +82,6 @@ namespace boost struct range_tag { }; struct const_range_tag { }; - } // iterator range template class -----------------------------------------// @@ -106,13 +106,14 @@ namespace boost template<class IteratorT> class iterator_range { + typedef range_detail::safe_bool< IteratorT iterator_range<IteratorT>::* > safe_bool_t; protected: // Used by sub_range //! implementation class typedef iterator_range_detail::iterator_range_impl<IteratorT> impl; public: - //! this type typedef iterator_range<IteratorT> type; + typedef BOOST_DEDUCED_TYPENAME safe_bool_t::unspecified_bool_type unspecified_bool_type; //BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(value_type); //! Encapsulated value type @@ -230,7 +231,7 @@ namespace boost difference_type size() const { - return m_End - m_Begin; + return m_End - m_Begin; } bool empty() const @@ -238,18 +239,15 @@ namespace boost return m_Begin == m_End; } -#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) - operator bool() const + operator unspecified_bool_type() const { - return !empty(); + return safe_bool_t::to_unspecified_bool(m_Begin != m_End, &iterator_range::m_Begin); } -#else - typedef iterator (iterator_range::*unspecified_bool_type) () const; - operator unspecified_bool_type() const + + bool operator!() const { - return empty() ? 0: &iterator_range::end; + return empty(); } -#endif bool equal( const iterator_range& r ) const { @@ -290,6 +288,20 @@ namespace boost return *--last; } + // pop_front() - added to model the SinglePassRangePrimitiveConcept + void pop_front() + { + BOOST_ASSERT( !empty() ); + ++m_Begin; + } + + // pop_back() - added to model the BidirectionalRangePrimitiveConcept + void pop_back() + { + BOOST_ASSERT( !empty() ); + --m_End; + } + reference operator[]( difference_type at ) const { BOOST_ASSERT( at >= 0 && at < size() ); diff --git a/3rdParty/Boost/src/boost/range/size.hpp b/3rdParty/Boost/src/boost/range/size.hpp index 2b572d4..4b4eebe 100644 --- a/3rdParty/Boost/src/boost/range/size.hpp +++ b/3rdParty/Boost/src/boost/range/size.hpp @@ -15,6 +15,7 @@ # pragma once #endif +#include <boost/range/config.hpp> #include <boost/range/begin.hpp> #include <boost/range/end.hpp> #include <boost/range/difference_type.hpp> @@ -22,13 +23,28 @@ namespace boost { + namespace range_detail + { + template<class SinglePassRange> + inline BOOST_DEDUCED_TYPENAME range_difference<SinglePassRange>::type + range_calculate_size(const SinglePassRange& rng) + { + BOOST_ASSERT( (boost::end(rng) - boost::begin(rng)) >= 0 && + "reachability invariant broken!" ); + return boost::end(rng) - boost::begin(rng); + } + } - template< class T > - inline BOOST_DEDUCED_TYPENAME range_difference<T>::type size( const T& r ) + template<class SinglePassRange> + inline BOOST_DEDUCED_TYPENAME range_difference<SinglePassRange>::type + size(const SinglePassRange& rng) { - BOOST_ASSERT( (boost::end( r ) - boost::begin( r )) >= 0 && - "reachability invariant broken!" ); - return boost::end( r ) - boost::begin( r ); +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) && \ + !BOOST_WORKAROUND(__GNUC__, < 3) \ + /**/ + using namespace range_detail; +#endif + return range_calculate_size(rng); } } // namespace 'boost' diff --git a/3rdParty/Boost/src/boost/serialization/access.hpp b/3rdParty/Boost/src/boost/serialization/access.hpp deleted file mode 100644 index 40256d6..0000000 --- a/3rdParty/Boost/src/boost/serialization/access.hpp +++ /dev/null @@ -1,147 +0,0 @@ -#ifndef BOOST_SERIALIZATION_ACCESS_HPP -#define BOOST_SERIALIZATION_ACCESS_HPP - -// MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 -// access.hpp: interface for serialization system. - -// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . -// 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) - -// See http://www.boost.org for updates, documentation, and revision history. - -#include <boost/config.hpp> - -#include <boost/serialization/pfto.hpp> - -namespace boost { - -namespace archive { -namespace detail { - template<class Archive, class T> - class iserializer; - template<class Archive, class T> - class oserializer; -} // namespace detail -} // namespace archive - -namespace serialization { - -// forward declarations -template<class Archive, class T> -inline void serialize_adl(Archive &, T &, const unsigned int); -namespace detail { - template<class Archive, class T> - struct member_saver; - template<class Archive, class T> - struct member_loader; -} // namespace detail - -// use an "accessor class so that we can use: -// "friend class boost::serialization::access;" -// in any serialized class to permit clean, safe access to private class members -// by the serialization system - -class access { -public: - // grant access to "real" serialization defaults -#ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS -public: -#else - template<class Archive, class T> - friend struct detail::member_saver; - template<class Archive, class T> - friend struct detail::member_loader; - template<class Archive, class T> - friend class archive::detail::iserializer; - template<class Archive, class T> - friend class archive::detail::oserializer; - template<class Archive, class T> - friend inline void serialize( - Archive & ar, - T & t, - const BOOST_PFTO unsigned int file_version - ); - template<class Archive, class T> - friend inline void save_construct_data( - Archive & ar, - const T * t, - const BOOST_PFTO unsigned int file_version - ); - template<class Archive, class T> - friend inline void load_construct_data( - Archive & ar, - T * t, - const BOOST_PFTO unsigned int file_version - ); -#endif - - // pass calls to users's class implementation - template<class Archive, class T> - static void member_save( - Archive & ar, - //const T & t, - T & t, - const unsigned int file_version - ){ - t.save(ar, file_version); - } - template<class Archive, class T> - static void member_load( - Archive & ar, - T & t, - const unsigned int file_version - ){ - t.load(ar, file_version); - } - template<class Archive, class T> - static void serialize( - Archive & ar, - T & t, - const unsigned int file_version - ){ - // note: if you get a compile time error here with a - // message something like: - // cannot convert parameter 1 from <file type 1> to <file type 2 &> - // a likely possible cause is that the class T contains a - // serialize function - but that serialize function isn't - // a template and corresponds to a file type different than - // the class Archive. To resolve this, don't include an - // archive type other than that for which the serialization - // function is defined!!! - t.serialize(ar, file_version); - } - template<class T> - static void destroy( const T * t) // const appropriate here? - { - // the const business is an MSVC 6.0 hack that should be - // benign on everything else - delete const_cast<T *>(t); - } - template<class T> - static void construct(T * t){ - // default is inplace invocation of default constructor - // Note the :: before the placement new. Required if the - // class doesn't have a class-specific placement new defined. - ::new(t)T; - } - template<class T, class U> - static T & cast_reference(U & u){ - return static_cast<T &>(u); - } - template<class T, class U> - static T * cast_pointer(U * u){ - return static_cast<T *>(u); - } -}; - -} // namespace serialization -} // namespace boost - -#endif // BOOST_SERIALIZATION_ACCESS_HPP diff --git a/3rdParty/Boost/src/boost/serialization/base_object.hpp b/3rdParty/Boost/src/boost/serialization/base_object.hpp deleted file mode 100644 index b840d25..0000000 --- a/3rdParty/Boost/src/boost/serialization/base_object.hpp +++ /dev/null @@ -1,112 +0,0 @@ -#ifndef BOOST_SERIALIZATION_BASE_OBJECT_HPP -#define BOOST_SERIALIZATION_BASE_OBJECT_HPP - -// MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 -// base_object.hpp: - -// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . -// 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) - -// See http://www.boost.org for updates, documentation, and revision history. - -// if no archive headers have been included this is a no op -// this is to permit BOOST_EXPORT etc to be included in a -// file declaration header - -#include <boost/config.hpp> -#include <boost/detail/workaround.hpp> - -#include <boost/mpl/eval_if.hpp> -#include <boost/mpl/int.hpp> -#include <boost/mpl/bool.hpp> -#include <boost/mpl/identity.hpp> - -#include <boost/type_traits/is_base_and_derived.hpp> -#include <boost/type_traits/is_pointer.hpp> -#include <boost/type_traits/is_const.hpp> -#include <boost/type_traits/is_polymorphic.hpp> - -#include <boost/static_assert.hpp> -#include <boost/serialization/access.hpp> -#include <boost/serialization/force_include.hpp> -#include <boost/serialization/void_cast_fwd.hpp> - -namespace boost { -namespace serialization { - -namespace detail -{ - // get the base type for a given derived type - // preserving the const-ness - template<class B, class D> - struct base_cast - { - typedef BOOST_DEDUCED_TYPENAME - mpl::if_< - is_const<D>, - const B, - B - >::type type; - BOOST_STATIC_ASSERT(is_const<type>::value == is_const<D>::value); - }; - - // only register void casts if the types are polymorphic - template<class Base, class Derived> - struct base_register - { - struct polymorphic { - static void const * invoke(){ - Base const * const b = 0; - Derived const * const d = 0; - return & void_cast_register(d, b); - } - }; - struct non_polymorphic { - static void const * invoke(){ - return 0; - } - }; - static void const * invoke(){ - typedef BOOST_DEDUCED_TYPENAME mpl::eval_if< - is_polymorphic<Base>, - mpl::identity<polymorphic>, - mpl::identity<non_polymorphic> - >::type type; - return type::invoke(); - } - }; - -} // namespace detail -#if defined(__BORLANDC__) && __BORLANDC__ < 0x610 -template<class Base, class Derived> -const Base & -base_object(const Derived & d) -{ - BOOST_STATIC_ASSERT(! is_pointer<Derived>::value); - detail::base_register<Base, Derived>::invoke(); - return access::cast_reference<const Base, Derived>(d); -} -#else -template<class Base, class Derived> -BOOST_DEDUCED_TYPENAME detail::base_cast<Base, Derived>::type & -base_object(Derived &d) -{ - BOOST_STATIC_ASSERT(( is_base_and_derived<Base,Derived>::value)); - BOOST_STATIC_ASSERT(! is_pointer<Derived>::value); - typedef BOOST_DEDUCED_TYPENAME detail::base_cast<Base, Derived>::type type; - detail::base_register<type, Derived>::invoke(); - return access::cast_reference<type, Derived>(d); -} -#endif - -} // namespace serialization -} // namespace boost - -#endif // BOOST_SERIALIZATION_BASE_OBJECT_HPP diff --git a/3rdParty/Boost/src/boost/serialization/collection_size_type.hpp b/3rdParty/Boost/src/boost/serialization/collection_size_type.hpp deleted file mode 100644 index 2dd8fa7..0000000 --- a/3rdParty/Boost/src/boost/serialization/collection_size_type.hpp +++ /dev/null @@ -1,62 +0,0 @@ -#ifndef BOOST_SERIALIZATION_COLLECTION_SIZE_TYPE_HPP -#define BOOST_SERIALIZATION_COLLECTION_SIZE_TYPE_HPP - -// (C) Copyright 2005 Matthias Troyer -// 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) - -#include <cstddef> // size_t -#include <boost/serialization/strong_typedef.hpp> -#include <boost/serialization/level.hpp> -#include <boost/serialization/split_free.hpp> -#include <boost/serialization/is_bitwise_serializable.hpp> - -namespace boost { -namespace serialization { - -//BOOST_STRONG_TYPEDEF(std::size_t, collection_size_type) - -class collection_size_type { -private: - typedef std::size_t base_type; - base_type t; -public: - collection_size_type(): t(0) {}; - explicit collection_size_type(const std::size_t & t_) : - t(t_) - {} - collection_size_type(const collection_size_type & t_) : - t(t_.t) - {} - collection_size_type & operator=(const collection_size_type & rhs){ - t = rhs.t; - return *this; - } - collection_size_type & operator=(const unsigned int & rhs){ - t = rhs; - return *this; - } - // used for text output - operator base_type () const { - return t; - } - // used for text input - operator base_type & () { - return t; - } - bool operator==(const collection_size_type & rhs) const { - return t == rhs.t; - } - bool operator<(const collection_size_type & rhs) const { - return t < rhs.t; - } -}; - - -} } // end namespace boost::serialization - -BOOST_CLASS_IMPLEMENTATION(collection_size_type, primitive_type) -BOOST_IS_BITWISE_SERIALIZABLE(collection_size_type) - -#endif //BOOST_SERIALIZATION_COLLECTION_SIZE_TYPE_HPP diff --git a/3rdParty/Boost/src/boost/serialization/force_include.hpp b/3rdParty/Boost/src/boost/serialization/force_include.hpp deleted file mode 100644 index a18a8a1..0000000 --- a/3rdParty/Boost/src/boost/serialization/force_include.hpp +++ /dev/null @@ -1,59 +0,0 @@ -#ifndef BOOST_SERIALIZATION_FORCE_INCLUDE_HPP -#define BOOST_SERIALIZATION_FORCE_INCLUDE_HPP - -// MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 -// force_include.hpp: - -// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . -// 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) - -// See http://www.boost.org for updates, documentation, and revision history. - -#include <boost/config.hpp> - -// the following help macro is to guarentee that certain coded -// is not removed by over-eager linker optimiser. In certain cases -// we create static objects must be created but are actually never -// referenced - creation has a side-effect such as global registration -// which is important to us. We make an effort to refer these objects -// so that a smart linker won't remove them as being unreferenced. -// In microsoft compilers, inlining the code that does the referring -// means the code gets lost and the static object is not included -// in the library and hence never registered. This manifests itself -// in an ungraceful crash at runtime when (and only when) built in -// release mode. - -#if defined(BOOST_HAS_DECLSPEC) && !defined(__COMO__) -# if defined(__BORLANDC__) -# define BOOST_DLLEXPORT __export -# else -# define BOOST_DLLEXPORT __declspec(dllexport) -# endif -#elif ! defined(_WIN32) && ! defined(_WIN64) -# if defined(__MWERKS__) -# define BOOST_DLLEXPORT __declspec(dllexport) -# elif defined(__GNUC__) && (__GNUC__ >= 3) -# define BOOST_USED __attribute__ ((used)) -# elif defined(__IBMCPP__) && (__IBMCPP__ >= 1110) -# define BOOST_USED __attribute__ ((used)) -# elif defined(__INTEL_COMPILER) && (BOOST_INTEL_CXX_VERSION >= 800) -# define BOOST_USED __attribute__ ((used)) -# endif -#endif - -#ifndef BOOST_USED -# define BOOST_USED -#endif - -#ifndef BOOST_DLLEXPORT -# define BOOST_DLLEXPORT -#endif - -#endif // BOOST_SERIALIZATION_FORCE_INCLUDE_HPP diff --git a/3rdParty/Boost/src/boost/serialization/is_bitwise_serializable.hpp b/3rdParty/Boost/src/boost/serialization/is_bitwise_serializable.hpp deleted file mode 100644 index 34eec40..0000000 --- a/3rdParty/Boost/src/boost/serialization/is_bitwise_serializable.hpp +++ /dev/null @@ -1,46 +0,0 @@ -// (C) Copyright 2007 Matthias Troyer - -// 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) - -// Authors: Matthias Troyer - -/** @file is_bitwise_serializable.hpp - * - * This header provides a traits class for determining whether a class - * can be serialized (in a non-portable way) just by copying the bits. - */ - - -#ifndef BOOST_SERIALIZATION_IS_BITWISE_SERIALIZABLE_HPP -#define BOOST_SERIALIZATION_IS_BITWISE_SERIALIZABLE_HPP - -// MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include <boost/mpl/bool.hpp> -#include <boost/type_traits/is_arithmetic.hpp> - -namespace boost { -namespace serialization { - template<class T> - struct is_bitwise_serializable - : public is_arithmetic< T > - {}; -} // namespace serialization -} // namespace boost - - -// define a macro to make explicit designation of this more transparent -#define BOOST_IS_BITWISE_SERIALIZABLE(T) \ -namespace boost { \ -namespace serialization { \ -template<> \ -struct is_bitwise_serializable< T > : mpl::true_ {}; \ -}} \ -/**/ - -#endif //BOOST_SERIALIZATION_IS_BITWISE_SERIALIZABLE_HPP diff --git a/3rdParty/Boost/src/boost/serialization/level.hpp b/3rdParty/Boost/src/boost/serialization/level.hpp deleted file mode 100644 index ce507b2..0000000 --- a/3rdParty/Boost/src/boost/serialization/level.hpp +++ /dev/null @@ -1,125 +0,0 @@ -#ifndef BOOST_SERIALIZATION_LEVEL_HPP -#define BOOST_SERIALIZATION_LEVEL_HPP - -// MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 -// level.hpp: - -// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . -// 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) - -// See http://www.boost.org for updates, documentation, and revision history. - -#include <boost/config.hpp> -#include <boost/detail/workaround.hpp> - -#include <boost/type_traits/is_fundamental.hpp> -#include <boost/type_traits/is_enum.hpp> -#include <boost/type_traits/is_array.hpp> -#include <boost/type_traits/is_class.hpp> -#include <boost/type_traits/is_base_and_derived.hpp> - -#include <boost/mpl/eval_if.hpp> -#include <boost/mpl/int.hpp> -#include <boost/mpl/integral_c.hpp> -#include <boost/mpl/integral_c_tag.hpp> -#include <boost/mpl/aux_/nttp_decl.hpp> - -#include <boost/serialization/level_enum.hpp> - -namespace boost { -namespace serialization { - -struct basic_traits; - -// default serialization implementation level -template<class T> -struct implementation_level_impl { - template<class U> - struct traits_class_level { - typedef BOOST_DEDUCED_TYPENAME U::level type; - }; - - typedef mpl::integral_c_tag tag; - // note: at least one compiler complained w/o the full qualification - // on basic traits below - typedef - BOOST_DEDUCED_TYPENAME mpl::eval_if< - is_base_and_derived<boost::serialization::basic_traits, T>, - traits_class_level< T >, - //else - BOOST_DEDUCED_TYPENAME mpl::eval_if< - is_fundamental< T >, - mpl::int_<primitive_type>, - //else - BOOST_DEDUCED_TYPENAME mpl::eval_if< - is_class< T >, - mpl::int_<object_class_info>, - //else - BOOST_DEDUCED_TYPENAME mpl::eval_if< - is_array< T >, - #if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x560)) - mpl::int_<not_serializable>, - #else - mpl::int_<object_serializable>, - #endif - //else - BOOST_DEDUCED_TYPENAME mpl::eval_if< - is_enum< T >, - //#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x560)) - // mpl::int_<not_serializable>, - //#else - mpl::int_<primitive_type>, - //#endif - //else - mpl::int_<not_serializable> - > - > - > - > - >::type type; - // vc 7.1 doesn't like enums here - BOOST_STATIC_CONSTANT(int, value = type::value); -}; - -template<class T> -struct implementation_level : - public implementation_level_impl<const T> -{ -}; - -template<class T, BOOST_MPL_AUX_NTTP_DECL(int, L) > -inline bool operator>=(implementation_level< T > t, enum level_type l) -{ - return t.value >= (int)l; -} - -} // namespace serialization -} // namespace boost - -// specify the level of serialization implementation for the class -// require that class info saved when versioning is used -#define BOOST_CLASS_IMPLEMENTATION(T, E) \ - namespace boost { \ - namespace serialization { \ - template <> \ - struct implementation_level_impl< const T > \ - { \ - typedef mpl::integral_c_tag tag; \ - typedef mpl::int_< E > type; \ - BOOST_STATIC_CONSTANT( \ - int, \ - value = implementation_level_impl::type::value \ - ); \ - }; \ - } \ - } - /**/ - -#endif // BOOST_SERIALIZATION_LEVEL_HPP diff --git a/3rdParty/Boost/src/boost/serialization/level_enum.hpp b/3rdParty/Boost/src/boost/serialization/level_enum.hpp deleted file mode 100644 index 11bd17f..0000000 --- a/3rdParty/Boost/src/boost/serialization/level_enum.hpp +++ /dev/null @@ -1,55 +0,0 @@ -#ifndef BOOST_SERIALIZATION_LEVEL_ENUM_HPP -#define BOOST_SERIALIZATION_LEVEL_ENUM_HPP - -// MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 -// level_enum.hpp: - -// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . -// 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) - -// See http://www.boost.org for updates, documentation, and revision history. - -namespace boost { -namespace serialization { - -// for each class used in the program, specify which level -// of serialization should be implemented - -// names for each level -enum level_type -{ - // Don't serialize this type. An attempt to do so should - // invoke a compile time assertion. - not_serializable = 0, - // write/read this type directly to the archive. In this case - // serialization code won't be called. This is the default - // case for fundamental types. It presumes a member function or - // template in the archive class that can handle this type. - // there is no runtime overhead associated reading/writing - // instances of this level - primitive_type = 1, - // Serialize the objects of this type using the objects "serialize" - // function or template. This permits values to be written/read - // to/from archives but includes no class or version information. - object_serializable = 2, - /////////////////////////////////////////////////////////////////// - // once an object is serialized at one of the above levels, the - // corresponding archives cannot be read if the implementation level - // for the archive object is changed. - /////////////////////////////////////////////////////////////////// - // Add class information to the archive. Class information includes - // implementation level, class version and class name if available - object_class_info = 3 -}; - -} // namespace serialization -} // namespace boost - -#endif // BOOST_SERIALIZATION_LEVEL_ENUM_HPP diff --git a/3rdParty/Boost/src/boost/serialization/nvp.hpp b/3rdParty/Boost/src/boost/serialization/nvp.hpp deleted file mode 100644 index 2d7f4ed..0000000 --- a/3rdParty/Boost/src/boost/serialization/nvp.hpp +++ /dev/null @@ -1,144 +0,0 @@ -#ifndef BOOST_SERIALIZATION_NVP_HPP -#define BOOST_SERIALIZATION_NVP_HPP - -// MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 -// nvp.hpp: interface for serialization system. - -// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . -// 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) - -// See http://www.boost.org for updates, documentation, and revision history. - -#include <utility> - -#include <boost/config.hpp> -#include <boost/detail/workaround.hpp> -// supress noise -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1200) -# pragma warning (disable : 4786) // too long name, harmless warning -#endif - -#include <boost/mpl/integral_c.hpp> -#include <boost/mpl/integral_c_tag.hpp> - -#include <boost/serialization/level.hpp> -#include <boost/serialization/tracking.hpp> -#include <boost/serialization/split_member.hpp> -#include <boost/serialization/base_object.hpp> -#include <boost/serialization/traits.hpp> -#include <boost/serialization/wrapper.hpp> - -namespace boost { -namespace serialization { - -template<class T> -struct nvp : - public std::pair<const char *, T *>, - public wrapper_traits<const nvp< T > > -{ - explicit nvp(const char * name_, T & t) : - // note: redundant cast works around borland issue - // note: added _ to suppress useless gcc warning - std::pair<const char *, T *>(name_, (T*)(& t)) - {} - nvp(const nvp & rhs) : - // note: redundant cast works around borland issue - std::pair<const char *, T *>(rhs.first, (T*)rhs.second) - {} - - const char * name() const { - return this->first; - } - T & value() const { - return *(this->second); - } - - const T & const_value() const { - return *(this->second); - } - - // True64 compiler complains with a warning about the use of - // the name "Archive" hiding some higher level usage. I'm sure this - // is an error but I want to accomodated as it generates a long warning - // listing and might be related to a lot of test failures. - // default treatment for name-value pairs. The name is - // just discarded and only the value is serialized. - template<class Archivex> - void save( - Archivex & ar, - const unsigned int /* file_version */ - ) const { - // CodeWarrior 8.x can't seem to resolve the << op for a rhs of "const T *" - ar.operator<<(const_value()); - } - template<class Archivex> - void load( - Archivex & ar, - const unsigned int /* file_version */ - ){ - // CodeWarrior 8.x can't seem to resolve the >> op for a rhs of "const T *" - ar.operator>>(value()); - } - BOOST_SERIALIZATION_SPLIT_MEMBER() -}; - -template<class T> -inline -#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING -const -#endif -nvp< T > make_nvp(const char * name, T & t){ - return nvp< T >(name, t); -} - -// to maintain efficiency and portability, we want to assign -// specific serialization traits to all instances of this wrappers. -// we can't strait forward method below as it depends upon -// Partial Template Specialization and doing so would mean that wrappers -// wouldn't be treated the same on different platforms. This would -// break archive portability. Leave this here as reminder not to use it !!! -#if 0 // #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - -template <class T> -struct implementation_level<nvp< T > > -{ - typedef mpl::integral_c_tag tag; - typedef mpl::int_<object_serializable> type; - BOOST_STATIC_CONSTANT(int, value = implementation_level::type::value); -}; - -// nvp objects are generally created on the stack and are never tracked -template<class T> -struct tracking_level<nvp< T > > -{ - typedef mpl::integral_c_tag tag; - typedef mpl::int_<track_never> type; - BOOST_STATIC_CONSTANT(int, value = tracking_level::type::value); -}; - -#endif - -} // seralization -} // boost - -#include <boost/preprocessor/stringize.hpp> - -#define BOOST_SERIALIZATION_NVP(name) \ - boost::serialization::make_nvp(BOOST_PP_STRINGIZE(name), name) -/**/ - -#define BOOST_SERIALIZATION_BASE_OBJECT_NVP(name) \ - boost::serialization::make_nvp( \ - BOOST_PP_STRINGIZE(name), \ - boost::serialization::base_object<name >(*this) \ - ) -/**/ - -#endif // BOOST_SERIALIZATION_NVP_HPP diff --git a/3rdParty/Boost/src/boost/serialization/pfto.hpp b/3rdParty/Boost/src/boost/serialization/pfto.hpp deleted file mode 100644 index 8d98463..0000000 --- a/3rdParty/Boost/src/boost/serialization/pfto.hpp +++ /dev/null @@ -1,78 +0,0 @@ -#ifndef BOOST_SERIALIZATION_PFTO_HPP -#define BOOST_SERIALIZATION_PFTO_HPP - -// MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 -// pfto.hpp: workarounds for compilers which have problems supporting -// Partial Function Template Ordering (PFTO). - -// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . -// 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) - -// See http://www.boost.org/libs/serialization for updates, documentation, and revision history. -// PFTO version is used to specify the last argument of certain functions -// Function it is used to support compilers that fail to support correct Partial -// Template Ordering -#include <boost/config.hpp> - -// some compilers can use an exta argument and use function overloading -// to choose desired function. This extra argument is long in the default -// function implementation and int for the rest. The function is called -// with an int argument. This first attempts to match functions with an -// int argument before the default one (with a long argument). This is -// known to function with VC 6.0. On other compilers this fails (Borland) -// or causes other problems (GCC). note: this - -#if defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) - #define BOOST_PFTO long -#else - #define BOOST_PFTO -#endif - -// here's another approach. Rather than use a default function - make sure -// there is no default at all by requiring that all function invocations -// have a "wrapped" argument type. This solves a problem with VC 6.0 -// (and perhaps others) while implementing templated constructors. - -namespace boost { -namespace serialization { - -template<class T> -struct pfto_wrapper { - const T & t; - operator const T & (){ - return t; - } - pfto_wrapper (const T & rhs) : t(rhs) {} -}; - -template<class T> -pfto_wrapper< T > make_pfto_wrapper(const T & t, BOOST_PFTO int){ - return pfto_wrapper< T >(t); -} - -template<class T> -pfto_wrapper< T > make_pfto_wrapper(const pfto_wrapper< T > & t, int){ - return t; -} - -} // namespace serialization -} // namespace boost - -#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING - #define BOOST_PFTO_WRAPPER(T) \ - boost::serialization::pfto_wrapper< T > - #define BOOST_MAKE_PFTO_WRAPPER(t) \ - boost::serialization::make_pfto_wrapper(t, 0) -#else - #define BOOST_PFTO_WRAPPER(T) T - #define BOOST_MAKE_PFTO_WRAPPER(t) t -#endif - -#endif // BOOST_SERIALIZATION_PFTO_HPP diff --git a/3rdParty/Boost/src/boost/serialization/serialization.hpp b/3rdParty/Boost/src/boost/serialization/serialization.hpp deleted file mode 100644 index f17e8dd..0000000 --- a/3rdParty/Boost/src/boost/serialization/serialization.hpp +++ /dev/null @@ -1,167 +0,0 @@ -#ifndef BOOST_SERIALIZATION_SERIALIZATION_HPP -#define BOOST_SERIALIZATION_SERIALIZATION_HPP - -// MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#if defined(_MSC_VER) && (_MSC_VER >= 1310) -# pragma warning (disable : 4675) // suppress ADL warning -#endif - -#include <boost/config.hpp> -#include <boost/serialization/strong_typedef.hpp> -#include <boost/serialization/pfto.hpp> - -/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 -// serialization.hpp: interface for serialization system. - -// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . -// 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) - -// See http://www.boost.org for updates, documentation, and revision history. - -////////////////////////////////////////////////////////////////////// -// public interface to serialization. - -///////////////////////////////////////////////////////////////////////////// -// layer 0 - intrusive verison -// declared and implemented for each user defined class to be serialized -// -// template<Archive> -// serialize(Archive &ar, const unsigned int file_version){ -// ar & base_object<base>(*this) & member1 & member2 ... ; -// } - -///////////////////////////////////////////////////////////////////////////// -// layer 1 - layer that routes member access through the access class. -// this is what permits us to grant access to private class member functions -// by specifying friend class boost::serialization::access - -#include <boost/serialization/access.hpp> - -///////////////////////////////////////////////////////////////////////////// -// layer 2 - default implementation of non-intrusive serialization. -// -// note the usage of function overloading to compensate that C++ does not -// currently support Partial Template Specialization for function templates -// We have declared the version number as "const unsigned long". -// Overriding templates for specific data types should declare the version -// number as "const unsigned int". Template matching will first be applied -// to functions with the same version types - that is the overloads. -// If there is no declared function prototype that matches, the second argument -// will be converted to "const unsigned long" and a match will be made with -// one of the default template functions below. - -namespace boost { -namespace serialization { - -BOOST_STRONG_TYPEDEF(unsigned int, version_type) - -// default implementation - call the member function "serialize" -template<class Archive, class T> -inline void serialize( - Archive & ar, T & t, const BOOST_PFTO unsigned int file_version -){ - access::serialize(ar, t, static_cast<unsigned int>(file_version)); -} - -// save data required for construction -template<class Archive, class T> -inline void save_construct_data( - Archive & /*ar*/, - const T * /*t*/, - const BOOST_PFTO unsigned int /*file_version */ -){ - // default is to save no data because default constructor - // requires no arguments. -} - -// load data required for construction and invoke constructor in place -template<class Archive, class T> -inline void load_construct_data( - Archive & /*ar*/, - T * t, - const BOOST_PFTO unsigned int /*file_version*/ -){ - // default just uses the default constructor. going - // through access permits usage of otherwise private default - // constructor - access::construct(t); -} - -///////////////////////////////////////////////////////////////////////////// -// layer 3 - move call into serialization namespace so that ADL will function -// in the manner we desire. -// -// on compilers which don't implement ADL. only the current namespace -// i.e. boost::serialization will be searched. -// -// on compilers which DO implement ADL -// serialize overrides can be in any of the following -// -// 1) same namepace as Archive -// 2) same namespace as T -// 3) boost::serialization -// -// Due to Martin Ecker - -template<class Archive, class T> -inline void serialize_adl( - Archive & ar, - T & t, - const unsigned int file_version -){ - // note usage of function overloading to delay final resolution - // until the point of instantiation. This works around the two-phase - // lookup "feature" which inhibits redefintion of a default function - // template implementation. Due to Robert Ramey - // - // Note that this trick generates problems for compiles which don't support - // PFTO, suppress it here. As far as we know, there are no compilers - // which fail to support PFTO while supporting two-phase lookup. - #if ! defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) - const version_type v(file_version); - serialize(ar, t, v); - #else - serialize(ar, t, file_version); - #endif -} - -template<class Archive, class T> -inline void save_construct_data_adl( - Archive & ar, - const T * t, - const unsigned int file_version -){ - // see above - #if ! defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) - const version_type v(file_version); - save_construct_data(ar, t, v); - #else - save_construct_data(ar, t, file_version); - #endif -} - -template<class Archive, class T> -inline void load_construct_data_adl( - Archive & ar, - T * t, - const unsigned int file_version -){ - // see above comment - #if ! defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) - const version_type v(file_version); - load_construct_data(ar, t, v); - #else - load_construct_data(ar, t, file_version); - #endif -} - -} // namespace serialization -} // namespace boost - -#endif //BOOST_SERIALIZATION_SERIALIZATION_HPP diff --git a/3rdParty/Boost/src/boost/serialization/split_free.hpp b/3rdParty/Boost/src/boost/serialization/split_free.hpp deleted file mode 100644 index 9dbcd2f..0000000 --- a/3rdParty/Boost/src/boost/serialization/split_free.hpp +++ /dev/null @@ -1,93 +0,0 @@ -#ifndef BOOST_SERIALIZATION_SPLIT_FREE_HPP -#define BOOST_SERIALIZATION_SPLIT_FREE_HPP - -// MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 -// split_free.hpp: - -// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . -// 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) - -// See http://www.boost.org for updates, documentation, and revision history. - -#include <boost/config.hpp> -#include <boost/mpl/eval_if.hpp> -#include <boost/mpl/identity.hpp> -#include <boost/serialization/serialization.hpp> - -namespace boost { -namespace archive { - namespace detail { - template<class Archive> class interface_oarchive; - template<class Archive> class interface_iarchive; - } // namespace detail -} // namespace archive - -namespace serialization { - -//namespace detail { -template<class Archive, class T> -struct free_saver { - static void invoke( - Archive & ar, - const T & t, - const unsigned int file_version - ){ - // use function overload (version_type) to workaround - // two-phase lookup issue - const version_type v(file_version); - save(ar, t, v); - } -}; -template<class Archive, class T> -struct free_loader { - static void invoke( - Archive & ar, - T & t, - const unsigned int file_version - ){ - // use function overload (version_type) to workaround - // two-phase lookup issue - const version_type v(file_version); - load(ar, t, v); - } -}; -//} // namespace detail - -template<class Archive, class T> -inline void split_free( - Archive & ar, - T & t, - const unsigned int file_version -){ - typedef BOOST_DEDUCED_TYPENAME mpl::eval_if< - BOOST_DEDUCED_TYPENAME Archive::is_saving, - mpl::identity</* detail:: */ free_saver<Archive, T> >, - mpl::identity</* detail:: */ free_loader<Archive, T> > - >::type typex; - typex::invoke(ar, t, file_version); -} - -} // namespace serialization -} // namespace boost - -#define BOOST_SERIALIZATION_SPLIT_FREE(T) \ -namespace boost { namespace serialization { \ -template<class Archive> \ -inline void serialize( \ - Archive & ar, \ - T & t, \ - const unsigned int file_version \ -){ \ - split_free(ar, t, file_version); \ -} \ -}} -/**/ - -#endif // BOOST_SERIALIZATION_SPLIT_FREE_HPP diff --git a/3rdParty/Boost/src/boost/serialization/split_member.hpp b/3rdParty/Boost/src/boost/serialization/split_member.hpp deleted file mode 100644 index 6987945..0000000 --- a/3rdParty/Boost/src/boost/serialization/split_member.hpp +++ /dev/null @@ -1,86 +0,0 @@ -#ifndef BOOST_SERIALIZATION_SPLIT_MEMBER_HPP -#define BOOST_SERIALIZATION_SPLIT_MEMBER_HPP - -// MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 -// split_member.hpp: - -// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . -// 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) - -// See http://www.boost.org for updates, documentation, and revision history. - -#include <boost/config.hpp> -#include <boost/mpl/eval_if.hpp> -#include <boost/mpl/identity.hpp> - -#include <boost/serialization/access.hpp> - -namespace boost { -namespace archive { - namespace detail { - template<class Archive> class interface_oarchive; - template<class Archive> class interface_iarchive; - } // namespace detail -} // namespace archive - -namespace serialization { -namespace detail { - - template<class Archive, class T> - struct member_saver { - static void invoke( - Archive & ar, - const T & t, - const unsigned int file_version - ){ - access::member_save(ar, t, file_version); - } - }; - - template<class Archive, class T> - struct member_loader { - static void invoke( - Archive & ar, - T & t, - const unsigned int file_version - ){ - access::member_load(ar, t, file_version); - } - }; - -} // detail - -template<class Archive, class T> -inline void split_member( - Archive & ar, T & t, const unsigned int file_version -){ - typedef BOOST_DEDUCED_TYPENAME mpl::eval_if< - BOOST_DEDUCED_TYPENAME Archive::is_saving, - mpl::identity<detail::member_saver<Archive, T> >, - mpl::identity<detail::member_loader<Archive, T> > - >::type typex; - typex::invoke(ar, t, file_version); -} - -} // namespace serialization -} // namespace boost - -// split member function serialize funcition into save/load -#define BOOST_SERIALIZATION_SPLIT_MEMBER() \ -template<class Archive> \ -void serialize( \ - Archive &ar, \ - const unsigned int file_version \ -){ \ - boost::serialization::split_member(ar, *this, file_version); \ -} \ -/**/ - -#endif // BOOST_SERIALIZATION_SPLIT_MEMBER_HPP diff --git a/3rdParty/Boost/src/boost/serialization/strong_typedef.hpp b/3rdParty/Boost/src/boost/serialization/strong_typedef.hpp deleted file mode 100644 index 647c302..0000000 --- a/3rdParty/Boost/src/boost/serialization/strong_typedef.hpp +++ /dev/null @@ -1,66 +0,0 @@ -#ifndef BOOST_SERIALIZATION_STRONG_TYPEDEF_HPP -#define BOOST_SERIALIZATION_STRONG_TYPEDEF_HPP - -// MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 -// strong_typedef.hpp: - -// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . -// 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) - -// See http://www.boost.org/libs/serialization for updates, documentation, and revision history. - -// macro used to implement a strong typedef. strong typedef -// guarentees that two types are distinguised even though the -// share the same underlying implementation. typedef does not create -// a new type. BOOST_STRONG_TYPEDEF(T, D) creates a new type named D -// that operates as a type T. - -#include <boost/config.hpp> -#include <boost/operators.hpp> - -#if !defined(__BORLANDC__) || __BORLANDC__ >= 0x590 - #define BOOST_STRONG_TYPEDEF(T, D) \ - struct D \ - : boost::totally_ordered1< D \ - , boost::totally_ordered2< D, T \ - > > \ - { \ - T t; \ - explicit D(const T t_) : t(t_) {}; \ - D(){}; \ - D(const D & t_) : t(t_.t){} \ - D & operator=(const D & rhs) { t = rhs.t; return *this;} \ - D & operator=(const T & rhs) { t = rhs; return *this;} \ - operator const T & () const {return t; } \ - operator T & () { return t; } \ - bool operator==(const D & rhs) const { return t == rhs.t; } \ - bool operator<(const D & rhs) const { return t < rhs.t; } \ - }; -#else - #define BOOST_STRONG_TYPEDEF(T, D) \ - struct D \ - : boost::totally_ordered1< D \ - , boost::totally_ordered2< D, T \ - > > \ - { \ - T t; \ - explicit D(const T t_) : t(t_) {}; \ - D(){}; \ - D(const D & t_) : t(t_.t){} \ - D & operator=(const D & rhs) { t = rhs.t; return *this;} \ - D & operator=(const T & rhs) { t = rhs; return *this;} \ - /*operator const T & () const {return t; }*/ \ - operator T & () { return t; } \ - bool operator==(const D & rhs) const { return t == rhs.t; } \ - bool operator<(const D & rhs) const { return t < rhs.t; } \ - }; -#endif // !defined(__BORLANDC) || __BORLANDC__ >= 0x590 - -#endif // BOOST_SERIALIZATION_STRONG_TYPEDEF_HPP diff --git a/3rdParty/Boost/src/boost/serialization/tracking.hpp b/3rdParty/Boost/src/boost/serialization/tracking.hpp deleted file mode 100644 index fadcbd0..0000000 --- a/3rdParty/Boost/src/boost/serialization/tracking.hpp +++ /dev/null @@ -1,118 +0,0 @@ -#ifndef BOOST_SERIALIZATION_TRACKING_HPP -#define BOOST_SERIALIZATION_TRACKING_HPP - -// MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 -// tracking.hpp: - -// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . -// 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) - -// See http://www.boost.org for updates, documentation, and revision history. - -#include <boost/config.hpp> -#include <boost/static_assert.hpp> -#include <boost/mpl/eval_if.hpp> -#include <boost/mpl/identity.hpp> -#include <boost/mpl/int.hpp> -#include <boost/mpl/equal_to.hpp> -#include <boost/mpl/greater.hpp> -#include <boost/mpl/integral_c_tag.hpp> - -#include <boost/type_traits/is_base_and_derived.hpp> -#include <boost/type_traits/is_pointer.hpp> -#include <boost/serialization/level.hpp> -#include <boost/serialization/tracking_enum.hpp> -#include <boost/serialization/type_info_implementation.hpp> - -namespace boost { -namespace serialization { - -struct basic_traits; - -// default tracking level -template<class T> -struct tracking_level_impl { - template<class U> - struct traits_class_tracking { - typedef BOOST_DEDUCED_TYPENAME U::tracking type; - }; - typedef mpl::integral_c_tag tag; - // note: at least one compiler complained w/o the full qualification - // on basic traits below - typedef - BOOST_DEDUCED_TYPENAME mpl::eval_if< - is_base_and_derived<boost::serialization::basic_traits, T>, - traits_class_tracking< T >, - //else - BOOST_DEDUCED_TYPENAME mpl::eval_if< - is_pointer< T >, - // pointers are not tracked by default - mpl::int_<track_never>, - //else - BOOST_DEDUCED_TYPENAME mpl::eval_if< - // for primitives - BOOST_DEDUCED_TYPENAME mpl::equal_to< - implementation_level< T >, - mpl::int_<primitive_type> - >, - // is never - mpl::int_<track_never>, - // otherwise its selective - mpl::int_<track_selectively> - > > >::type type; - BOOST_STATIC_CONSTANT(int, value = type::value); -}; - -template<class T> -struct tracking_level : - public tracking_level_impl<const T> -{ -}; - -template<class T, enum tracking_type L> -inline bool operator>=(tracking_level< T > t, enum tracking_type l) -{ - return t.value >= (int)l; -} - -} // namespace serialization -} // namespace boost - - -// The STATIC_ASSERT is prevents one from setting tracking for a primitive type. -// This almost HAS to be an error. Doing this will effect serialization of all -// char's in your program which is almost certainly what you don't want to do. -// If you want to track all instances of a given primitive type, You'll have to -// wrap it in your own type so its not a primitive anymore. Then it will compile -// without problem. -#define BOOST_CLASS_TRACKING(T, E) \ -namespace boost { \ -namespace serialization { \ -template<> \ -struct tracking_level< T > \ -{ \ - typedef mpl::integral_c_tag tag; \ - typedef mpl::int_< E> type; \ - BOOST_STATIC_CONSTANT( \ - int, \ - value = tracking_level::type::value \ - ); \ - /* tracking for a class */ \ - BOOST_STATIC_ASSERT(( \ - mpl::greater< \ - /* that is a prmitive */ \ - implementation_level< T >, \ - mpl::int_<primitive_type> \ - >::value \ - )); \ -}; \ -}} - -#endif // BOOST_SERIALIZATION_TRACKING_HPP diff --git a/3rdParty/Boost/src/boost/serialization/tracking_enum.hpp b/3rdParty/Boost/src/boost/serialization/tracking_enum.hpp deleted file mode 100644 index e4e4e21..0000000 --- a/3rdParty/Boost/src/boost/serialization/tracking_enum.hpp +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef BOOST_SERIALIZATION_TRACKING_ENUM_HPP -#define BOOST_SERIALIZATION_TRACKING_ENUM_HPP - -// MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 -// tracking_enum.hpp: - -// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . -// 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) - -// See http://www.boost.org for updates, documentation, and revision history. - -namespace boost { -namespace serialization { - -// addresses of serialized objects may be tracked to avoid saving/loading -// redundant copies. This header defines a class trait that can be used -// to specify when objects should be tracked - -// names for each tracking level -enum tracking_type -{ - // never track this type - track_never = 0, - // track objects of this type if the object is serialized through a - // pointer. - track_selectively = 1, - // always track this type - track_always = 2 -}; - -} // namespace serialization -} // namespace boost - -#endif // BOOST_SERIALIZATION_TRACKING_ENUM_HPP diff --git a/3rdParty/Boost/src/boost/serialization/traits.hpp b/3rdParty/Boost/src/boost/serialization/traits.hpp deleted file mode 100644 index da80009..0000000 --- a/3rdParty/Boost/src/boost/serialization/traits.hpp +++ /dev/null @@ -1,65 +0,0 @@ -#ifndef BOOST_SERIALIZATION_TRAITS_HPP -#define BOOST_SERIALIZATION_TRAITS_HPP - -// MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 -// traits.hpp: - -// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . -// 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) - -// See http://www.boost.org for updates, documentation, and revision history. - -// This header is used to apply serialization traits to templates. The -// standard system can't be used for platforms which don't support -// Partial Templlate Specialization. - -// The motivation for this is the Name-Value Pair (NVP) template. -// it has to work the same on all platforms in order for archives -// to be portable accross platforms. - -#include <boost/config.hpp> -#include <boost/static_assert.hpp> - -#include <boost/mpl/int.hpp> -#include <boost/mpl/bool.hpp> -#include <boost/serialization/level_enum.hpp> -#include <boost/serialization/tracking_enum.hpp> - -namespace boost { -namespace serialization { - -// common base class used to detect appended traits class -struct basic_traits {}; - -template <class T> -struct extended_type_info_impl; - -template< - class T, - int Level, - int Tracking, - unsigned int Version = 0, - class ETII = extended_type_info_impl< T >, - class Wrapper = mpl::false_ -> -struct traits : public basic_traits { - BOOST_STATIC_ASSERT(Version == 0 || Level >= object_class_info); - BOOST_STATIC_ASSERT(Tracking == track_never || Level >= object_serializable); - typedef BOOST_DEDUCED_TYPENAME mpl::int_<Level> level; - typedef BOOST_DEDUCED_TYPENAME mpl::int_<Tracking> tracking; - typedef BOOST_DEDUCED_TYPENAME mpl::int_<Version> version; - typedef ETII type_info_implementation; - typedef Wrapper is_wrapper; -}; - -} // namespace serialization -} // namespace boost - -#endif // BOOST_SERIALIZATION_TRAITS_HPP diff --git a/3rdParty/Boost/src/boost/serialization/type_info_implementation.hpp b/3rdParty/Boost/src/boost/serialization/type_info_implementation.hpp deleted file mode 100644 index 00eb152..0000000 --- a/3rdParty/Boost/src/boost/serialization/type_info_implementation.hpp +++ /dev/null @@ -1,86 +0,0 @@ -#ifndef BOOST_SERIALIZATION_TYPE_INFO_IMPLEMENTATION_HPP -#define BOOST_SERIALIZATION_TYPE_INFO_IMPLEMENTATION_HPP - -// MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 -// type_info_implementation.hpp: interface for portable version of type_info - -// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . -// 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) - -// See http://www.boost.org for updates, documentation, and revision history. - - -#include <boost/config.hpp> -#include <boost/detail/workaround.hpp> - -#include <boost/static_assert.hpp> -#include <boost/mpl/eval_if.hpp> -#include <boost/mpl/identity.hpp> -#include <boost/type_traits/is_base_and_derived.hpp> -#include <boost/serialization/traits.hpp> - -namespace boost { -namespace serialization { - -// note that T and const T are folded into const T so that -// there is only one table entry per type -template<class T> -struct type_info_implementation { - template<class U> - struct traits_class_typeinfo_implementation { - typedef BOOST_DEDUCED_TYPENAME U::type_info_implementation::type type; - }; - // note: at least one compiler complained w/o the full qualification - // on basic traits below - typedef - BOOST_DEDUCED_TYPENAME mpl::eval_if< - is_base_and_derived<boost::serialization::basic_traits, T>, - traits_class_typeinfo_implementation< T >, - //else - mpl::identity< - BOOST_DEDUCED_TYPENAME extended_type_info_impl< T >::type - > - >::type type; -}; - -} // namespace serialization -} // namespace boost - -// define a macro to assign a particular derivation of extended_type_info -// to a specified a class. -#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x560)) -#define BOOST_CLASS_TYPE_INFO(T, ETI) \ -namespace boost { \ -namespace serialization { \ -template<> \ -struct type_info_implementation< T > { \ - typedef const ETI type; \ -}; \ -} \ -} \ -/**/ -#else -#define BOOST_CLASS_TYPE_INFO(T, ETI) \ -namespace boost { \ -namespace serialization { \ -template<> \ -struct type_info_implementation< T > { \ - typedef ETI type; \ -}; \ -template<> \ -struct type_info_implementation< const T > { \ - typedef ETI type; \ -}; \ -} \ -} \ -/**/ -#endif - -#endif /// BOOST_SERIALIZATION_TYPE_INFO_IMPLEMENTATION_HPP diff --git a/3rdParty/Boost/src/boost/serialization/version.hpp b/3rdParty/Boost/src/boost/serialization/version.hpp deleted file mode 100644 index 72862fa..0000000 --- a/3rdParty/Boost/src/boost/serialization/version.hpp +++ /dev/null @@ -1,102 +0,0 @@ -#ifndef BOOST_SERIALIZATION_VERSION_HPP -#define BOOST_SERIALIZATION_VERSION_HPP - -// MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 -// version.hpp: - -// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . -// 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) - -// See http://www.boost.org for updates, documentation, and revision history. - -#include <boost/config.hpp> -#include <boost/mpl/assert.hpp> -#include <boost/mpl/int.hpp> -#include <boost/mpl/eval_if.hpp> -#include <boost/mpl/identity.hpp> -#include <boost/mpl/integral_c_tag.hpp> - -#include <boost/type_traits/is_base_and_derived.hpp> - -namespace boost { -namespace serialization { - -struct basic_traits; - -// default version number is 0. Override with higher version -// when class definition changes. -template<class T> -struct version -{ - template<class U> - struct traits_class_version { - typedef BOOST_DEDUCED_TYPENAME U::version type; - }; - - typedef mpl::integral_c_tag tag; - // note: at least one compiler complained w/o the full qualification - // on basic traits below - typedef - BOOST_DEDUCED_TYPENAME mpl::eval_if< - is_base_and_derived<boost::serialization::basic_traits,T>, - traits_class_version< T >, - mpl::int_<0> - >::type type; - BOOST_STATIC_CONSTANT(int, value = version::type::value); -}; - -} // namespace serialization -} // namespace boost - -/* note: at first it seemed that this would be a good place to trap - * as an error an attempt to set a version # for a class which doesn't - * save its class information (including version #) in the archive. - * However, this imposes a requirement that the version be set after - * the implemention level which would be pretty confusing. If this - * is to be done, do this check in the input or output operators when - * ALL the serialization traits are available. Included the implementation - * here with this comment as a reminder not to do this! - */ -//#include <boost/serialization/level.hpp> -//#include <boost/mpl/equal_to.hpp> - -#include <boost/mpl/less.hpp> -#include <boost/mpl/comparison.hpp> - -// specify the current version number for the class -// version numbers limited to 8 bits !!! -#define BOOST_CLASS_VERSION(T, N) \ -namespace boost { \ -namespace serialization { \ -template<> \ -struct version<T > \ -{ \ - typedef mpl::int_<N> type; \ - typedef mpl::integral_c_tag tag; \ - BOOST_STATIC_CONSTANT(int, value = version::type::value); \ - BOOST_MPL_ASSERT(( \ - boost::mpl::less< \ - boost::mpl::int_<N>, \ - boost::mpl::int_<256> \ - > \ - )); \ - /* \ - BOOST_MPL_ASSERT(( \ - mpl::equal_to< \ - :implementation_level<T >, \ - mpl::int_<object_class_info> \ - >::value \ - )); \ - */ \ -}; \ -} \ -} - -#endif // BOOST_SERIALIZATION_VERSION_HPP diff --git a/3rdParty/Boost/src/boost/serialization/void_cast_fwd.hpp b/3rdParty/Boost/src/boost/serialization/void_cast_fwd.hpp deleted file mode 100644 index c94adb2..0000000 --- a/3rdParty/Boost/src/boost/serialization/void_cast_fwd.hpp +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef BOOST_SERIALIZATION_VOID_CAST_FWD_HPP -#define BOOST_SERIALIZATION_VOID_CAST_FWD_HPP - -// MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 -// void_cast_fwd.hpp: interface for run-time casting of void pointers. - -// (C) Copyright 2005 Robert Ramey - http://www.rrsd.com . -// 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) -// gennadiy.rozental@tfn.com - -// See http://www.boost.org for updates, documentation, and revision history. - -#include <cstddef> // NULL -#include <boost/serialization/force_include.hpp> - -namespace boost { -namespace serialization { -namespace void_cast_detail{ -class void_caster; -} // namespace void_cast_detail -template<class Derived, class Base> -BOOST_DLLEXPORT -inline const void_cast_detail::void_caster & void_cast_register( - const Derived * dnull = NULL, - const Base * bnull = NULL -) BOOST_USED; -} // namespace serialization -} // namespace boost - -#endif // BOOST_SERIALIZATION_VOID_CAST_HPP diff --git a/3rdParty/Boost/src/boost/serialization/wrapper.hpp b/3rdParty/Boost/src/boost/serialization/wrapper.hpp deleted file mode 100644 index eeb4333..0000000 --- a/3rdParty/Boost/src/boost/serialization/wrapper.hpp +++ /dev/null @@ -1,60 +0,0 @@ -#ifndef BOOST_SERIALIZATION_WRAPPER_HPP -#define BOOST_SERIALIZATION_WRAPPER_HPP - -// (C) Copyright 2005-2006 Matthias Troyer -// 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) - -#include <boost/serialization/traits.hpp> -#include <boost/type_traits/is_base_and_derived.hpp> -#include <boost/mpl/eval_if.hpp> -#include <boost/mpl/bool.hpp> - -namespace boost { namespace serialization { - -/// the base class for serialization wrappers -/// -/// wrappers need to be treated differently at various places in the serialization library, -/// e.g. saving of non-const wrappers has to be possible. Since partial specialization -// is not supported by all compilers, we derive all wrappers from wrapper_traits. - -template< - class T, - int Level = object_serializable, - int Tracking = track_never, - unsigned int Version = 0, - class ETII = extended_type_info_impl< T > -> -struct wrapper_traits : - public traits<T,Level,Tracking,Version,ETII,mpl::true_> -{}; - -template<class T> -struct is_wrapper_impl : - boost::mpl::eval_if< - boost::is_base_and_derived<basic_traits,T>, - boost::mpl::true_, - boost::mpl::false_ - >::type -{}; - -template<class T> -struct is_wrapper { - typedef BOOST_DEDUCED_TYPENAME is_wrapper_impl<const T>::type type; -}; - -} // serialization -} // boost - -// A macro to define that a class is a wrapper -#define BOOST_CLASS_IS_WRAPPER(T) \ -namespace boost { \ -namespace serialization { \ -template<> \ -struct is_wrapper_impl<const T> : boost::mpl::true_ {}; \ -} \ -} \ -/**/ - -#endif //BOOST_SERIALIZATION_WRAPPER_HPP diff --git a/3rdParty/Boost/src/boost/signals/detail/named_slot_map.hpp b/3rdParty/Boost/src/boost/signals/detail/named_slot_map.hpp index 0528c61..763013f 100644 --- a/3rdParty/Boost/src/boost/signals/detail/named_slot_map.hpp +++ b/3rdParty/Boost/src/boost/signals/detail/named_slot_map.hpp @@ -32,10 +32,10 @@ class stored_group public: enum storage_kind { sk_empty, sk_front, sk_back, sk_group }; - stored_group(storage_kind kind = sk_empty) : kind(kind), group() { } + stored_group(storage_kind p_kind = sk_empty) : kind(p_kind), group() { } template<typename T> - stored_group(const T& group) : kind(sk_group), group(new T(group)) { } + stored_group(const T& p_group) : kind(sk_group), group(new T(p_group)) { } bool is_front() const { return kind == sk_front; } bool is_back() const { return kind == sk_back; } @@ -133,12 +133,12 @@ public: #endif private: - named_slot_map_iterator(group_iterator group, group_iterator last) : - group(group), last_group(last), slot_assigned(false) + named_slot_map_iterator(group_iterator giter, group_iterator last) : + group(giter), last_group(last), slot_assigned(false) { init_next_group(); } - named_slot_map_iterator(group_iterator group, group_iterator last, + named_slot_map_iterator(group_iterator giter, group_iterator last, slot_pair_iterator slot) : - group(group), last_group(last), slot_(slot), slot_assigned(true) + group(giter), last_group(last), slot_(slot), slot_assigned(true) { } void init_next_group() diff --git a/3rdParty/Boost/src/boost/signals/detail/slot_call_iterator.hpp b/3rdParty/Boost/src/boost/signals/detail/slot_call_iterator.hpp index c6706be..0d6afd9 100644 --- a/3rdParty/Boost/src/boost/signals/detail/slot_call_iterator.hpp +++ b/3rdParty/Boost/src/boost/signals/detail/slot_call_iterator.hpp @@ -47,9 +47,9 @@ namespace boost { friend class iterator_core_access; public: - slot_call_iterator(Iterator iter_in, Iterator end_in, Function f, + slot_call_iterator(Iterator iter_in, Iterator end_in, Function func, optional<result_type> &c) - : iter(iter_in), end(end_in), f(f), cache(&c) + : iter(iter_in), end(end_in), f(func), cache(&c) { iter = std::find_if(iter, end, is_callable()); } diff --git a/3rdParty/Boost/src/boost/signals/signal_template.hpp b/3rdParty/Boost/src/boost/signals/signal_template.hpp index a8420b6..6b0b91a 100644 --- a/3rdParty/Boost/src/boost/signals/signal_template.hpp +++ b/3rdParty/Boost/src/boost/signals/signal_template.hpp @@ -345,8 +345,8 @@ namespace boost { #endif // BOOST_SIGNALS_NUM_ARGS > 0 call_bound_slot f(&args); - typedef typename call_bound_slot::result_type result_type; - optional<result_type> cache; + typedef typename call_bound_slot::result_type call_result_type; + optional<call_result_type> cache; // Let the combiner call the slots via a pair of input iterators return combiner()(slot_call_iterator(notification.impl->slots_.begin(), impl->slots_.end(), f, cache), @@ -386,8 +386,8 @@ namespace boost { call_bound_slot f(&args); - typedef typename call_bound_slot::result_type result_type; - optional<result_type> cache; + typedef typename call_bound_slot::result_type call_result_type; + optional<call_result_type> cache; // Let the combiner call the slots via a pair of input iterators return combiner()(slot_call_iterator(notification.impl->slots_.begin(), diff --git a/3rdParty/Boost/src/boost/static_assert.hpp b/3rdParty/Boost/src/boost/static_assert.hpp index 5bded5e..9fe9bc0 100644 --- a/3rdParty/Boost/src/boost/static_assert.hpp +++ b/3rdParty/Boost/src/boost/static_assert.hpp @@ -17,6 +17,12 @@ #include <boost/config.hpp> #include <boost/detail/workaround.hpp> +#ifndef BOOST_NO_STATIC_ASSERT +# define BOOST_STATIC_ASSERT_MSG( B, Msg ) static_assert(B, Msg) +#else +# define BOOST_STATIC_ASSERT_MSG( B, Msg ) BOOST_STATIC_ASSERT( B ) +#endif + #ifdef __BORLANDC__ // // workaround for buggy integral-constant expression support: @@ -38,7 +44,7 @@ # define BOOST_STATIC_ASSERT_BOOL_CAST(x) (bool)(x) #endif -#ifdef BOOST_HAS_STATIC_ASSERT +#ifndef BOOST_NO_STATIC_ASSERT # define BOOST_STATIC_ASSERT( B ) static_assert(B, #B) #else @@ -125,7 +131,7 @@ template<int x> struct static_assert_test{}; enum { BOOST_JOIN(boost_static_assert_enum_, __LINE__) \ = sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)( B ) >) } #endif -#endif // ndef BOOST_HAS_STATIC_ASSERT +#endif // defined(BOOST_NO_STATIC_ASSERT) #endif // BOOST_STATIC_ASSERT_HPP diff --git a/3rdParty/Boost/src/boost/thread/win32/thread_heap_alloc.hpp b/3rdParty/Boost/src/boost/thread/win32/thread_heap_alloc.hpp index b70623a..c210a91 100644 --- a/3rdParty/Boost/src/boost/thread/win32/thread_heap_alloc.hpp +++ b/3rdParty/Boost/src/boost/thread/win32/thread_heap_alloc.hpp @@ -56,7 +56,7 @@ namespace boost { namespace detail { - inline BOOST_THREAD_DECL void* allocate_raw_heap_memory(unsigned size) + inline /*BOOST_THREAD_DECL*/ void* allocate_raw_heap_memory(unsigned size) { void* const heap_memory=detail::win32::HeapAlloc(detail::win32::GetProcessHeap(),0,size); if(!heap_memory) @@ -66,7 +66,7 @@ namespace boost return heap_memory; } - inline BOOST_THREAD_DECL void free_raw_heap_memory(void* heap_memory) + inline /*BOOST_THREAD_DECL*/ void free_raw_heap_memory(void* heap_memory) { BOOST_VERIFY(detail::win32::HeapFree(detail::win32::GetProcessHeap(),0,heap_memory)!=0); } diff --git a/3rdParty/Boost/src/boost/throw_exception.hpp b/3rdParty/Boost/src/boost/throw_exception.hpp index a384054..a73acb6 100644 --- a/3rdParty/Boost/src/boost/throw_exception.hpp +++ b/3rdParty/Boost/src/boost/throw_exception.hpp @@ -79,7 +79,7 @@ template<class E> BOOST_ATTRIBUTE_NORETURN inline void throw_exception( E const set_info( set_info( set_info( - enable_error_info(x), + boost::enable_error_info(x), throw_function(current_function)), throw_file(file)), throw_line(line))); diff --git a/3rdParty/Boost/src/boost/token_functions.hpp b/3rdParty/Boost/src/boost/token_functions.hpp index 4e2d745..50f8330 100644 --- a/3rdParty/Boost/src/boost/token_functions.hpp +++ b/3rdParty/Boost/src/boost/token_functions.hpp @@ -218,9 +218,9 @@ namespace boost{ { #if !defined(BOOST_NO_CWCTYPE) if (sizeof(char_type) == 1) - return std::isspace(c) != 0; + return std::isspace(static_cast<int>(c)) != 0; else - return std::iswspace(c) != 0; + return std::iswspace(static_cast<std::wint_t>(c)) != 0; #else return static_cast< unsigned >(c) <= 255 && std::isspace(c) != 0; #endif @@ -230,9 +230,9 @@ namespace boost{ { #if !defined(BOOST_NO_CWCTYPE) if (sizeof(char_type) == 1) - return std::ispunct(c) != 0; + return std::ispunct(static_cast<int>(c)) != 0; else - return std::iswpunct(c) != 0; + return std::iswpunct(static_cast<std::wint_t>(c)) != 0; #else return static_cast< unsigned >(c) <= 255 && std::ispunct(c) != 0; #endif diff --git a/3rdParty/Boost/src/boost/tuple/detail/tuple_basic.hpp b/3rdParty/Boost/src/boost/tuple/detail/tuple_basic.hpp index 348fd80..88f0d90 100644 --- a/3rdParty/Boost/src/boost/tuple/detail/tuple_basic.hpp +++ b/3rdParty/Boost/src/boost/tuple/detail/tuple_basic.hpp @@ -37,6 +37,7 @@ #include "boost/type_traits/cv_traits.hpp" #include "boost/type_traits/function_traits.hpp" +#include "boost/utility/swap.hpp" #include "boost/detail/workaround.hpp" // needed for BOOST_WORKAROUND @@ -86,45 +87,28 @@ namespace detail { template<class T> class generate_error; -// - cons getters -------------------------------------------------------- -// called: get_class<N>::get<RETURN_TYPE>(aTuple) - -template< int N > -struct get_class { - template<class RET, class HT, class TT > - inline static RET get(const cons<HT, TT>& t) - { -#if BOOST_WORKAROUND(__IBMCPP__,==600) - // vacpp 6.0 is not very consistent regarding the member template keyword - // Here it generates an error when the template keyword is used. - return get_class<N-1>::get<RET>(t.tail); -#else - return get_class<N-1>::BOOST_NESTED_TEMPLATE get<RET>(t.tail); -#endif - } - template<class RET, class HT, class TT > - inline static RET get(cons<HT, TT>& t) - { -#if BOOST_WORKAROUND(__IBMCPP__,==600) - return get_class<N-1>::get<RET>(t.tail); -#else - return get_class<N-1>::BOOST_NESTED_TEMPLATE get<RET>(t.tail); -#endif - } +template<int N> +struct drop_front { + template<class Tuple> + struct apply { + typedef BOOST_DEDUCED_TYPENAME drop_front<N-1>::BOOST_NESTED_TEMPLATE + apply<Tuple> next; + typedef BOOST_DEDUCED_TYPENAME next::type::tail_type type; + static const type& call(const Tuple& tup) { + return next::call(tup).tail; + } + }; }; template<> -struct get_class<0> { - template<class RET, class HT, class TT> - inline static RET get(const cons<HT, TT>& t) - { - return t.head; - } - template<class RET, class HT, class TT> - inline static RET get(cons<HT, TT>& t) - { - return t.head; - } +struct drop_front<0> { + template<class Tuple> + struct apply { + typedef Tuple type; + static const type& call(const Tuple& tup) { + return tup; + } + }; }; } // end of namespace detail @@ -140,41 +124,23 @@ struct get_class<0> { template<int N, class T> struct element { -private: - typedef typename T::tail_type Next; -public: - typedef typename element<N-1, Next>::type type; -}; -template<class T> -struct element<0,T> -{ - typedef typename T::head_type type; + typedef BOOST_DEDUCED_TYPENAME detail::drop_front<N>::BOOST_NESTED_TEMPLATE + apply<T>::type::head_type type; }; template<int N, class T> struct element<N, const T> { private: - typedef typename T::tail_type Next; - typedef typename element<N-1, Next>::type unqualified_type; + typedef BOOST_DEDUCED_TYPENAME detail::drop_front<N>::BOOST_NESTED_TEMPLATE + apply<T>::type::head_type unqualified_type; public: #if BOOST_WORKAROUND(__BORLANDC__,<0x600) typedef const unqualified_type type; #else - typedef typename boost::add_const<unqualified_type>::type type; -#endif - -}; -template<class T> -struct element<0,const T> -{ -#if BOOST_WORKAROUND(__BORLANDC__,<0x600) - typedef const typename T::head_type type; -#else - typedef typename boost::add_const<typename T::head_type>::type type; + typedef BOOST_DEDUCED_TYPENAME boost::add_const<unqualified_type>::type type; #endif }; - #else // def BOOST_NO_CV_SPECIALIZATIONS namespace detail { @@ -182,31 +148,16 @@ namespace detail { template<int N, class T, bool IsConst> struct element_impl { -private: - typedef typename T::tail_type Next; -public: - typedef typename element_impl<N-1, Next, IsConst>::type type; + typedef BOOST_DEDUCED_TYPENAME detail::drop_front<N>::BOOST_NESTED_TEMPLATE + apply<T>::type::head_type type; }; template<int N, class T> struct element_impl<N, T, true /* IsConst */> { -private: - typedef typename T::tail_type Next; -public: - typedef const typename element_impl<N-1, Next, true>::type type; -}; - -template<class T> -struct element_impl<0, T, false /* IsConst */> -{ - typedef typename T::head_type type; -}; - -template<class T> -struct element_impl<0, T, true /* IsConst */> -{ - typedef const typename T::head_type type; + typedef BOOST_DEDUCED_TYPENAME detail::drop_front<N>::BOOST_NESTED_TEMPLATE + apply<T>::type::head_type unqualified_type; + typedef const unqualified_type type; }; } // end of namespace detail @@ -258,17 +209,10 @@ inline typename access_traits< typename element<N, cons<HT, TT> >::type >::non_const_type get(cons<HT, TT>& c BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(int, N)) { -#if BOOST_WORKAROUND(__IBMCPP__,==600 ) - return detail::get_class<N>:: -#else - return detail::get_class<N>::BOOST_NESTED_TEMPLATE -#endif - get< - typename access_traits< - typename element<N, cons<HT, TT> >::type - >::non_const_type, - HT,TT - >(c); + typedef BOOST_DEDUCED_TYPENAME detail::drop_front<N>::BOOST_NESTED_TEMPLATE + apply<cons<HT, TT> > impl; + typedef BOOST_DEDUCED_TYPENAME impl::type cons_element; + return const_cast<cons_element&>(impl::call(c)).head; } // get function for const cons-lists, returns a const reference to @@ -279,17 +223,10 @@ inline typename access_traits< typename element<N, cons<HT, TT> >::type >::const_type get(const cons<HT, TT>& c BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(int, N)) { -#if BOOST_WORKAROUND(__IBMCPP__,==600) - return detail::get_class<N>:: -#else - return detail::get_class<N>::BOOST_NESTED_TEMPLATE -#endif - get< - typename access_traits< - typename element<N, cons<HT, TT> >::type - >::const_type, - HT,TT - >(c); + typedef BOOST_DEDUCED_TYPENAME detail::drop_front<N>::BOOST_NESTED_TEMPLATE + apply<cons<HT, TT> > impl; + typedef BOOST_DEDUCED_TYPENAME impl::type cons_element; + return impl::call(c).head; } // -- the cons template -------------------------------------------------- @@ -663,18 +600,21 @@ public: // Swallows any assignment (by Doug Gregor) namespace detail { +struct swallow_assign; +typedef void (detail::swallow_assign::*ignore_t)(); struct swallow_assign { - + swallow_assign(ignore_t(*)(ignore_t)) {} template<typename T> swallow_assign const& operator=(const T&) const { return *this; } }; + } // namespace detail // "ignore" allows tuple positions to be ignored when using "tie". -detail::swallow_assign const ignore = detail::swallow_assign(); +inline detail::ignore_t ignore(detail::ignore_t) { return 0; } // --------------------------------------------------------------------------- // The call_traits for make_tuple @@ -756,6 +696,10 @@ struct make_tuple_traits<const reference_wrapper<T> >{ typedef T& type; }; +template<> +struct make_tuple_traits<detail::ignore_t(detail::ignore_t)> { + typedef detail::swallow_assign type; +}; @@ -877,71 +821,154 @@ make_tuple(const T0& t0, const T1& t1, const T2& t2, const T3& t3, return t(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9); } +namespace detail { +template<class T> +struct tie_traits { + typedef T& type; +}; + +template<> +struct tie_traits<ignore_t(ignore_t)> { + typedef swallow_assign type; +}; + +template<> +struct tie_traits<void> { + typedef null_type type; +}; + +template < + class T0 = void, class T1 = void, class T2 = void, + class T3 = void, class T4 = void, class T5 = void, + class T6 = void, class T7 = void, class T8 = void, + class T9 = void +> +struct tie_mapper { + typedef + tuple<typename tie_traits<T0>::type, + typename tie_traits<T1>::type, + typename tie_traits<T2>::type, + typename tie_traits<T3>::type, + typename tie_traits<T4>::type, + typename tie_traits<T5>::type, + typename tie_traits<T6>::type, + typename tie_traits<T7>::type, + typename tie_traits<T8>::type, + typename tie_traits<T9>::type> type; +}; + +} // Tie function templates ------------------------------------------------- -template<class T1> -inline tuple<T1&> tie(T1& t1) { - return tuple<T1&> (t1); +template<class T0> +inline typename detail::tie_mapper<T0>::type +tie(T0& t0) { + typedef typename detail::tie_mapper<T0>::type t; + return t(t0); } -template<class T1, class T2> -inline tuple<T1&, T2&> tie(T1& t1, T2& t2) { - return tuple<T1&, T2&> (t1, t2); +template<class T0, class T1> +inline typename detail::tie_mapper<T0, T1>::type +tie(T0& t0, T1& t1) { + typedef typename detail::tie_mapper<T0, T1>::type t; + return t(t0, t1); } -template<class T1, class T2, class T3> -inline tuple<T1&, T2&, T3&> tie(T1& t1, T2& t2, T3& t3) { - return tuple<T1&, T2&, T3&> (t1, t2, t3); +template<class T0, class T1, class T2> +inline typename detail::tie_mapper<T0, T1, T2>::type +tie(T0& t0, T1& t1, T2& t2) { + typedef typename detail::tie_mapper<T0, T1, T2>::type t; + return t(t0, t1, t2); } -template<class T1, class T2, class T3, class T4> -inline tuple<T1&, T2&, T3&, T4&> tie(T1& t1, T2& t2, T3& t3, T4& t4) { - return tuple<T1&, T2&, T3&, T4&> (t1, t2, t3, t4); +template<class T0, class T1, class T2, class T3> +inline typename detail::tie_mapper<T0, T1, T2, T3>::type +tie(T0& t0, T1& t1, T2& t2, T3& t3) { + typedef typename detail::tie_mapper<T0, T1, T2, T3>::type t; + return t(t0, t1, t2, t3); } -template<class T1, class T2, class T3, class T4, class T5> -inline tuple<T1&, T2&, T3&, T4&, T5&> -tie(T1& t1, T2& t2, T3& t3, T4& t4, T5& t5) { - return tuple<T1&, T2&, T3&, T4&, T5&> (t1, t2, t3, t4, t5); +template<class T0, class T1, class T2, class T3, class T4> +inline typename detail::tie_mapper<T0, T1, T2, T3, T4>::type +tie(T0& t0, T1& t1, T2& t2, T3& t3, + T4& t4) { + typedef typename detail::tie_mapper<T0, T1, T2, T3, T4>::type t; + return t(t0, t1, t2, t3, t4); } -template<class T1, class T2, class T3, class T4, class T5, class T6> -inline tuple<T1&, T2&, T3&, T4&, T5&, T6&> -tie(T1& t1, T2& t2, T3& t3, T4& t4, T5& t5, T6& t6) { - return tuple<T1&, T2&, T3&, T4&, T5&, T6&> (t1, t2, t3, t4, t5, t6); +template<class T0, class T1, class T2, class T3, class T4, class T5> +inline typename detail::tie_mapper<T0, T1, T2, T3, T4, T5>::type +tie(T0& t0, T1& t1, T2& t2, T3& t3, + T4& t4, T5& t5) { + typedef typename detail::tie_mapper<T0, T1, T2, T3, T4, T5>::type t; + return t(t0, t1, t2, t3, t4, t5); } -template<class T1, class T2, class T3, class T4, class T5, class T6, class T7> -inline tuple<T1&, T2&, T3&, T4&, T5&, T6&, T7&> -tie(T1& t1, T2& t2, T3& t3, T4& t4, T5& t5, T6& t6, T7& t7) { - return tuple<T1&, T2&, T3&, T4&, T5&, T6&, T7&> (t1, t2, t3, t4, t5, t6, t7); +template<class T0, class T1, class T2, class T3, class T4, class T5, class T6> +inline typename detail::tie_mapper<T0, T1, T2, T3, T4, T5, T6>::type +tie(T0& t0, T1& t1, T2& t2, T3& t3, + T4& t4, T5& t5, T6& t6) { + typedef typename detail::tie_mapper + <T0, T1, T2, T3, T4, T5, T6>::type t; + return t(t0, t1, t2, t3, t4, t5, t6); +} + +template<class T0, class T1, class T2, class T3, class T4, class T5, class T6, + class T7> +inline typename detail::tie_mapper<T0, T1, T2, T3, T4, T5, T6, T7>::type +tie(T0& t0, T1& t1, T2& t2, T3& t3, + T4& t4, T5& t5, T6& t6, T7& t7) { + typedef typename detail::tie_mapper + <T0, T1, T2, T3, T4, T5, T6, T7>::type t; + return t(t0, t1, t2, t3, t4, t5, t6, t7); } -template<class T1, class T2, class T3, class T4, class T5, class T6, class T7, - class T8> -inline tuple<T1&, T2&, T3&, T4&, T5&, T6&, T7&, T8&> -tie(T1& t1, T2& t2, T3& t3, T4& t4, T5& t5, T6& t6, T7& t7, T8& t8) { - return tuple<T1&, T2&, T3&, T4&, T5&, T6&, T7&, T8&> - (t1, t2, t3, t4, t5, t6, t7, t8); +template<class T0, class T1, class T2, class T3, class T4, class T5, class T6, + class T7, class T8> +inline typename detail::tie_mapper + <T0, T1, T2, T3, T4, T5, T6, T7, T8>::type +tie(T0& t0, T1& t1, T2& t2, T3& t3, + T4& t4, T5& t5, T6& t6, T7& t7, + T8& t8) { + typedef typename detail::tie_mapper + <T0, T1, T2, T3, T4, T5, T6, T7, T8>::type t; + return t(t0, t1, t2, t3, t4, t5, t6, t7, t8); } -template<class T1, class T2, class T3, class T4, class T5, class T6, class T7, - class T8, class T9> -inline tuple<T1&, T2&, T3&, T4&, T5&, T6&, T7&, T8&, T9&> -tie(T1& t1, T2& t2, T3& t3, T4& t4, T5& t5, T6& t6, T7& t7, T8& t8, - T9& t9) { - return tuple<T1&, T2&, T3&, T4&, T5&, T6&, T7&, T8&, T9&> - (t1, t2, t3, t4, t5, t6, t7, t8, t9); +template<class T0, class T1, class T2, class T3, class T4, class T5, class T6, + class T7, class T8, class T9> +inline typename detail::tie_mapper + <T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>::type +tie(T0& t0, T1& t1, T2& t2, T3& t3, + T4& t4, T5& t5, T6& t6, T7& t7, + T8& t8, T9& t9) { + typedef typename detail::tie_mapper + <T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>::type t; + return t(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9); } -template<class T1, class T2, class T3, class T4, class T5, class T6, class T7, - class T8, class T9, class T10> -inline tuple<T1&, T2&, T3&, T4&, T5&, T6&, T7&, T8&, T9&, T10&> -tie(T1& t1, T2& t2, T3& t3, T4& t4, T5& t5, T6& t6, T7& t7, T8& t8, - T9& t9, T10& t10) { - return tuple<T1&, T2&, T3&, T4&, T5&, T6&, T7&, T8&, T9&, T10&> - (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10); +template <class T0, class T1, class T2, class T3, class T4, + class T5, class T6, class T7, class T8, class T9> +void swap(tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>& lhs, + tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>& rhs); +inline void swap(null_type&, null_type&) {} +template<class HH> +inline void swap(cons<HH, null_type>& lhs, cons<HH, null_type>& rhs) { + ::boost::swap(lhs.head, rhs.head); +} +template<class HH, class TT> +inline void swap(cons<HH, TT>& lhs, cons<HH, TT>& rhs) { + ::boost::swap(lhs.head, rhs.head); + ::boost::tuples::swap(lhs.tail, rhs.tail); +} +template <class T0, class T1, class T2, class T3, class T4, + class T5, class T6, class T7, class T8, class T9> +inline void swap(tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>& lhs, + tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>& rhs) { + typedef tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> tuple_type; + typedef typename tuple_type::inherited base; + ::boost::tuples::swap(static_cast<base&>(lhs), static_cast<base&>(rhs)); } } // end of namespace tuples diff --git a/3rdParty/Boost/src/boost/tuple/detail/tuple_basic_no_partial_spec.hpp b/3rdParty/Boost/src/boost/tuple/detail/tuple_basic_no_partial_spec.hpp index bb38662..7379bf8 100644 --- a/3rdParty/Boost/src/boost/tuple/detail/tuple_basic_no_partial_spec.hpp +++ b/3rdParty/Boost/src/boost/tuple/detail/tuple_basic_no_partial_spec.hpp @@ -27,6 +27,7 @@ #define BOOST_TUPLE_BASIC_NO_PARTIAL_SPEC_HPP #include "boost/type_traits.hpp" +#include "boost/utility/swap.hpp" #include <utility> #if defined BOOST_MSVC @@ -836,6 +837,29 @@ namespace tuples { detail::swallow_assign const ignore = detail::swallow_assign(); +template <class T0, class T1, class T2, class T3, class T4, + class T5, class T6, class T7, class T8, class T9> +void swap(tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>& lhs, + tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>& rhs); +inline void swap(null_type&, null_type&) {} +template<class HH> +inline void swap(cons<HH, null_type>& lhs, cons<HH, null_type>& rhs) { + ::boost::swap(lhs.head, rhs.head); +} +template<class HH, class TT> +inline void swap(cons<HH, TT>& lhs, cons<HH, TT>& rhs) { + ::boost::swap(lhs.head, rhs.head); + ::boost::tuples::swap(lhs.tail, rhs.tail); +} +template <class T0, class T1, class T2, class T3, class T4, + class T5, class T6, class T7, class T8, class T9> +inline void swap(tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>& lhs, + tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>& rhs) { + typedef tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> tuple_type; + typedef typename tuple_type::inherited base; + ::boost::tuples::swap(static_cast<base&>(lhs), static_cast<base&>(rhs)); +} + } // namespace tuples } // namespace boost #endif // BOOST_TUPLE_BASIC_NO_PARTIAL_SPEC_HPP diff --git a/3rdParty/Boost/src/boost/type_traits/common_type.hpp b/3rdParty/Boost/src/boost/type_traits/common_type.hpp index 58525fd..74b0363 100644 --- a/3rdParty/Boost/src/boost/type_traits/common_type.hpp +++ b/3rdParty/Boost/src/boost/type_traits/common_type.hpp @@ -120,6 +120,11 @@ namespace type_traits_detail { public: typedef BOOST_TYPEOF_TPL(declval_b() ? declval_T() : declval_U()) type; #endif + +#if defined(__GNUC__) && __GNUC__ == 3 && (__GNUC_MINOR__ == 2 || __GNUC_MINOR__ == 3) + public: + void public_dummy_function_just_to_silence_warning(); +#endif }; template <class T> diff --git a/3rdParty/Boost/src/boost/type_traits/function_traits.hpp b/3rdParty/Boost/src/boost/type_traits/function_traits.hpp index 6d708cd..d715345 100644 --- a/3rdParty/Boost/src/boost/type_traits/function_traits.hpp +++ b/3rdParty/Boost/src/boost/type_traits/function_traits.hpp @@ -166,7 +166,7 @@ struct function_traits_helper<R (*)(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)> template<typename Function> struct function_traits : - public boost::detail::function_traits_helper<typename boost::add_pointer<Function>::type> + public boost::detail::function_traits_helper<typename boost::add_pointer<Function>::type> { }; diff --git a/3rdParty/Boost/src/boost/type_traits/is_const.hpp b/3rdParty/Boost/src/boost/type_traits/is_const.hpp index 812ed15..99b0f36 100644 --- a/3rdParty/Boost/src/boost/type_traits/is_const.hpp +++ b/3rdParty/Boost/src/boost/type_traits/is_const.hpp @@ -59,16 +59,16 @@ template <class T> struct is_const_rvalue_filter { #if BOOST_WORKAROUND(BOOST_MSVC, < 1400) - BOOST_STATIC_CONSTANT(bool, value = ::boost::detail::cv_traits_imp<typename boost::remove_bounds<T>::type*>::is_const); + BOOST_STATIC_CONSTANT(bool, value = ::boost::detail::cv_traits_imp<typename boost::remove_bounds<T>::type*>::is_const); #else - BOOST_STATIC_CONSTANT(bool, value = ::boost::detail::cv_traits_imp<T*>::is_const); + BOOST_STATIC_CONSTANT(bool, value = ::boost::detail::cv_traits_imp<T*>::is_const); #endif }; #ifndef BOOST_NO_RVALUE_REFERENCES template <class T> struct is_const_rvalue_filter<T&&> { - BOOST_STATIC_CONSTANT(bool, value = false); + BOOST_STATIC_CONSTANT(bool, value = false); }; #endif } diff --git a/3rdParty/Boost/src/boost/type_traits/is_virtual_base_of.hpp b/3rdParty/Boost/src/boost/type_traits/is_virtual_base_of.hpp index 98ab159..8dcd988 100644 --- a/3rdParty/Boost/src/boost/type_traits/is_virtual_base_of.hpp +++ b/3rdParty/Boost/src/boost/type_traits/is_virtual_base_of.hpp @@ -22,7 +22,7 @@ namespace detail { #ifdef BOOST_MSVC #pragma warning( push ) -#pragma warning( disable : 4584 ) +#pragma warning( disable : 4584 4250) #elif defined __GNUC__ #pragma GCC system_header #endif diff --git a/3rdParty/Boost/src/boost/type_traits/is_volatile.hpp b/3rdParty/Boost/src/boost/type_traits/is_volatile.hpp index e531263..43c3a8b 100644 --- a/3rdParty/Boost/src/boost/type_traits/is_volatile.hpp +++ b/3rdParty/Boost/src/boost/type_traits/is_volatile.hpp @@ -46,9 +46,9 @@ template <class T> struct is_volatile_rval_filter { #if BOOST_WORKAROUND(BOOST_MSVC, < 1400) - BOOST_STATIC_CONSTANT(bool, value = ::boost::detail::cv_traits_imp<typename boost::remove_bounds<T>::type*>::is_volatile); + BOOST_STATIC_CONSTANT(bool, value = ::boost::detail::cv_traits_imp<typename boost::remove_bounds<T>::type*>::is_volatile); #else - BOOST_STATIC_CONSTANT(bool, value = ::boost::detail::cv_traits_imp<T*>::is_volatile); + BOOST_STATIC_CONSTANT(bool, value = ::boost::detail::cv_traits_imp<T*>::is_volatile); #endif }; #ifndef BOOST_NO_RVALUE_REFERENCES @@ -59,7 +59,7 @@ struct is_volatile_rval_filter template <class T> struct is_volatile_rval_filter<T&&> { - BOOST_STATIC_CONSTANT(bool, value = false); + BOOST_STATIC_CONSTANT(bool, value = false); }; #endif } diff --git a/3rdParty/Boost/src/boost/type_traits/remove_cv.hpp b/3rdParty/Boost/src/boost/type_traits/remove_cv.hpp index 668e755..4061fd2 100644 --- a/3rdParty/Boost/src/boost/type_traits/remove_cv.hpp +++ b/3rdParty/Boost/src/boost/type_traits/remove_cv.hpp @@ -32,7 +32,7 @@ namespace detail{ template <class T> struct rvalue_ref_filter_rem_cv { - typedef typename boost::detail::cv_traits_imp<T*>::unqualified_type type; + typedef typename boost::detail::cv_traits_imp<T*>::unqualified_type type; }; #ifndef BOOST_NO_RVALUE_REFERENCES @@ -43,7 +43,7 @@ struct rvalue_ref_filter_rem_cv template <class T> struct rvalue_ref_filter_rem_cv<T&&> { - typedef T&& type; + typedef T&& type; }; #endif diff --git a/3rdParty/Boost/src/boost/type_traits/remove_reference.hpp b/3rdParty/Boost/src/boost/type_traits/remove_reference.hpp index a87db33..f453086 100644 --- a/3rdParty/Boost/src/boost/type_traits/remove_reference.hpp +++ b/3rdParty/Boost/src/boost/type_traits/remove_reference.hpp @@ -32,13 +32,13 @@ namespace detail{ template <class T> struct remove_rvalue_ref { - typedef T type; + typedef T type; }; #ifndef BOOST_NO_RVALUE_REFERENCES template <class T> struct remove_rvalue_ref<T&&> { - typedef T type; + typedef T type; }; #endif diff --git a/3rdParty/Boost/src/boost/typeof/msvc/typeof_impl.hpp b/3rdParty/Boost/src/boost/typeof/msvc/typeof_impl.hpp index 2f58c18..74ebc70 100644 --- a/3rdParty/Boost/src/boost/typeof/msvc/typeof_impl.hpp +++ b/3rdParty/Boost/src/boost/typeof/msvc/typeof_impl.hpp @@ -153,7 +153,9 @@ namespace boost }; }; # endif -# if BOOST_WORKAROUND(BOOST_MSVC,==1310) +// EAN: preprocess this block out on advice of Peder Holt +// to eliminate errors in type_traits/common_type.hpp +# if 0 //BOOST_WORKAROUND(BOOST_MSVC,==1310) template<const std::type_info& ref_type_info> struct msvc_typeid_wrapper { typedef typename msvc_extract_type<msvc_typeid_wrapper>::id2type id2type; diff --git a/3rdParty/Boost/src/boost/unordered/detail/buckets.hpp b/3rdParty/Boost/src/boost/unordered/detail/buckets.hpp index b1dee5c..913dbcd 100644 --- a/3rdParty/Boost/src/boost/unordered/detail/buckets.hpp +++ b/3rdParty/Boost/src/boost/unordered/detail/buckets.hpp @@ -64,7 +64,7 @@ namespace boost { namespace unordered_detail { inline void hash_buckets<A, G>::delete_node(node_ptr b) { node* raw_ptr = static_cast<node*>(&*b); - boost::unordered_detail::destroy(&raw_ptr->value()); + boost::unordered_detail::destroy(raw_ptr->value_ptr()); real_node_ptr n(node_alloc().address(*raw_ptr)); node_alloc().destroy(n); node_alloc().deallocate(n, 1); diff --git a/3rdParty/Boost/src/boost/unordered/detail/fwd.hpp b/3rdParty/Boost/src/boost/unordered/detail/fwd.hpp index be4d5e1..471d1d2 100644 --- a/3rdParty/Boost/src/boost/unordered/detail/fwd.hpp +++ b/3rdParty/Boost/src/boost/unordered/detail/fwd.hpp @@ -21,14 +21,14 @@ // This header defines most of the classes used to implement the unordered // containers. It doesn't include the insert methods as they require a lot -// of preprocessor metaprogramming - they are in insert.hpp +// of preprocessor metaprogramming - they are in unique.hpp and equivalent.hpp. // Template parameters: // // H = Hash Function // P = Predicate // A = Value Allocator -// G = Grouped/Ungrouped +// G = Bucket group policy, 'grouped' or 'ungrouped' // E = Key Extractor #if !defined(BOOST_NO_RVALUE_REFERENCES) && !defined(BOOST_NO_VARIADIC_TEMPLATES) @@ -90,7 +90,37 @@ namespace boost { namespace unordered_detail { #pragma warning(pop) #endif + //////////////////////////////////////////////////////////////////////////// + // + // This section implements buckets and nodes. Here's a rough + // inheritance diagram, to show how they pull together. + // + // For unordered_set/unordered_map: + // + // hash_bucket<A> + // | + // ungrouped_node_base<A> value_base<A::value_type> + // | | + // +--------------+-------------+ + // | + // hash_node<A, ungrouped> + // + // For unordered_multiset/unordered_multimap: + // + // hash_bucket<A> + // | + // grouped_node_base<A> value_base<A::value_type> + // | | + // +--------------+-------------+ + // | + // hash_node<A, grouped> + // hash_bucket + // + // hash_bucket is used for both the buckets and as a base class for + // nodes. By using 'bucket_ptr' for 'node_ptr', 'next_' can point + // to either a bucket or a node. This is used later to implement a + // sentinel at the end of the bucket array. template <class A> class hash_bucket @@ -109,6 +139,16 @@ namespace boost { namespace unordered_detail { hash_bucket() : next_() {} }; + // In containers with equivalent keys (unordered_multimap and + // unordered_multiset) equivalent nodes are grouped together, in + // containers with unique keys (unordered_map and unordered_set) + // individual nodes are treated as groups of one. The following two + // classes implement the data structure. + + // This is used for containers with unique keys. There are no groups + // so it doesn't add any extra members, and just treats individual + // nodes as groups of one. + template <class A> struct ungrouped_node_base : hash_bucket<A> { typedef hash_bucket<A> bucket; @@ -125,6 +165,10 @@ namespace boost { namespace unordered_detail { static void unlink_nodes(bucket& b, node_ptr end); }; + // This is used for containers with equivalent keys. It implements a + // circular list running in the opposite direction to the linked + // list through the nodes. + template <class A> struct grouped_node_base : hash_bucket<A> { @@ -151,6 +195,10 @@ namespace boost { namespace unordered_detail { } }; + // These two classes implement an easy way to pass around the node + // group policy classes without the messy template parameters. + // Whenever you see the template parameter 'G' it's one of these. + struct ungrouped { template <class A> @@ -167,6 +215,8 @@ namespace boost { namespace unordered_detail { }; }; + // The space used to store values in a node. + template <class ValueType> struct value_base { @@ -181,6 +231,9 @@ namespace boost { namespace unordered_detail { value_type& value() { return *(ValueType*) this; } + value_type* value_ptr() { + return (ValueType*) this; + } private: value_base& operator=(value_base const&); }; @@ -199,11 +252,20 @@ namespace boost { namespace unordered_detail { static value_type& get_value(node_ptr p) { return static_cast<hash_node&>(*p).value(); } + static value_type* get_value_ptr(node_ptr p) { + return static_cast<hash_node&>(*p).value_ptr(); + } private: hash_node& operator=(hash_node const&); }; + //////////////////////////////////////////////////////////////////////////// + // // Iterator Base + // + // This is the iterator used internally, the external iterators are + // provided by lightweight wrappers (hash_iterator and + // hast_const_iterator) which provide the full iterator interface. template <class A, class G> class hash_iterator_base @@ -248,12 +310,24 @@ namespace boost { namespace unordered_detail { } }; + //////////////////////////////////////////////////////////////////////////// + // + // Now the main data structure: + // + // hash_buckets<A, G> hash_buffered_functions<H, P> + // | | + // +-------------+--------------+ + // | + // hash_table<T> + // + // T is a class which contains typedefs for all the types we need. + // hash_buckets // // This is responsible for allocating and deallocating buckets and nodes. // // Notes: - // 1. For the sake exception safety the allocators themselves don't allocate + // 1. For the sake exception safety the consturctors don't allocate // anything. // 2. It's the callers responsibility to allocate the buckets before calling // any of the methods (other than getters and setters). @@ -327,6 +401,17 @@ namespace boost { namespace unordered_detail { std::size_t delete_to_bucket_end(node_ptr begin); }; + // Assigning and swapping the equality and hash function objects + // needs strong exception safety. To implement that normally we'd + // require one of them to be known to not throw and the other to + // guarantee strong exception safety. Unfortunately they both only + // have basic exception safety. So to acheive strong exception + // safety we have storage space for two copies, and assign the new + // copies to the unused space. Then switch to using that to use + // them. This is implemented in 'set_hash_functions' which + // atomically assigns the new function objects in a strongly + // exception safe manner. + template <class H, class P> class set_hash_functions; template <class H, class P> @@ -429,6 +514,12 @@ namespace boost { namespace unordered_detail { } }; + // This implements almost all of the required functionality, apart + // from some things that are specific to containers with unique and + // equivalent keys which is implemented in hash_unique_table and + // hash_equivalent_table. See unique.hpp and equivalent.hpp for + // their declaration and implementation. + template <class T> class hash_table : public T::buckets, public T::buffered_functions { @@ -569,9 +660,13 @@ namespace boost { namespace unordered_detail { node_constructor&, std::size_t); }; - // Iterator Access + /////////////////////////////////////////////////////////////////// + // + // Iterators + + // iterator_access is used to access the internal iterator without + // making it publicly available. -#if !defined(__clang__) class iterator_access { public: @@ -582,30 +677,6 @@ namespace boost { namespace unordered_detail { return it.base_; } }; -#else - class iterator_access - { - public: - // Note: we access Iterator::base here, rather than in the function - // signature to work around a bug in the friend support of an - // early version of clang. - - template <class Iterator> - struct base - { - typedef BOOST_DEDUCED_TYPENAME Iterator::base type; - }; - - template <class Iterator> - static BOOST_DEDUCED_TYPENAME base<Iterator>::type const& - get(Iterator const& it) - { - return it.base_; - } - }; -#endif - - // Iterators template <class A, class G> class hash_iterator; template <class A, class G> class hash_const_iterator; @@ -644,7 +715,7 @@ namespace boost { namespace unordered_detail { return node::get_value(ptr_); } value_type* operator->() const { - return &node::get_value(ptr_); + return node::get_value_ptr(ptr_); } hash_local_iterator& operator++() { ptr_ = ptr_->next_; return *this; @@ -694,7 +765,7 @@ namespace boost { namespace unordered_detail { return node::get_value(ptr_); } value_type const* operator->() const { - return &node::get_value(ptr_); + return node::get_value_ptr(ptr_); } hash_const_local_iterator& operator++() { ptr_ = ptr_->next_; return *this; @@ -716,7 +787,7 @@ namespace boost { namespace unordered_detail { } }; - // iterators + // Iterators // // all no throw @@ -823,7 +894,12 @@ namespace boost { namespace unordered_detail { } }; + //////////////////////////////////////////////////////////////////////////// + // // types + // + // This is used to convieniently pass around a container's typedefs + // without having 7 template parameters. template <class K, class V, class H, class P, class A, class E, class G> struct types diff --git a/3rdParty/Boost/src/boost/unordered/detail/util.hpp b/3rdParty/Boost/src/boost/unordered/detail/util.hpp index 5540965..989883e 100644 --- a/3rdParty/Boost/src/boost/unordered/detail/util.hpp +++ b/3rdParty/Boost/src/boost/unordered/detail/util.hpp @@ -299,7 +299,7 @@ namespace boost { namespace unordered_detail { #if BOOST_WORKAROUND(__CODEGEARC__, BOOST_TESTED_AT(0x0613)) struct dummy { hash_node<Alloc, Grouped> x; }; #endif - boost::unordered_detail::destroy(&node_->value()); + boost::unordered_detail::destroy(node_->value_ptr()); } if (node_constructed_) @@ -322,7 +322,7 @@ namespace boost { namespace unordered_detail { } else { BOOST_ASSERT(node_constructed_ && value_constructed_); - boost::unordered_detail::destroy(&node_->value()); + boost::unordered_detail::destroy(node_->value_ptr()); value_constructed_ = false; } } diff --git a/3rdParty/Boost/src/boost/unordered/unordered_map.hpp b/3rdParty/Boost/src/boost/unordered/unordered_map.hpp index 5bad0eb..86a6fc6 100644 --- a/3rdParty/Boost/src/boost/unordered/unordered_map.hpp +++ b/3rdParty/Boost/src/boost/unordered/unordered_map.hpp @@ -160,6 +160,11 @@ namespace boost ~unordered_map() {} #if !defined(BOOST_NO_RVALUE_REFERENCES) + unordered_map(unordered_map const& other) + : table_(other.table_) + { + } + unordered_map(unordered_map&& other) : table_(other.table_, boost::unordered_detail::move_tag()) { @@ -170,6 +175,12 @@ namespace boost { } + unordered_map& operator=(unordered_map const& x) + { + table_ = x.table_; + return *this; + } + unordered_map& operator=(unordered_map&& x) { table_.move(x.table_); @@ -705,6 +716,11 @@ namespace boost ~unordered_multimap() {} #if !defined(BOOST_NO_RVALUE_REFERENCES) + unordered_multimap(unordered_multimap const& other) + : table_(other.table_) + { + } + unordered_multimap(unordered_multimap&& other) : table_(other.table_, boost::unordered_detail::move_tag()) { @@ -715,6 +731,12 @@ namespace boost { } + unordered_multimap& operator=(unordered_multimap const& x) + { + table_ = x.table_; + return *this; + } + unordered_multimap& operator=(unordered_multimap&& x) { table_.move(x.table_); diff --git a/3rdParty/Boost/src/boost/unordered/unordered_map_fwd.hpp b/3rdParty/Boost/src/boost/unordered/unordered_map_fwd.hpp index 5e9bb07..edecc5d 100644 --- a/3rdParty/Boost/src/boost/unordered/unordered_map_fwd.hpp +++ b/3rdParty/Boost/src/boost/unordered/unordered_map_fwd.hpp @@ -24,13 +24,13 @@ namespace boost class A = std::allocator<std::pair<const K, T> > > class unordered_map; template <class K, class T, class H, class P, class A> - bool operator==(unordered_map<K, T, H, P, A> const&, + inline bool operator==(unordered_map<K, T, H, P, A> const&, unordered_map<K, T, H, P, A> const&); template <class K, class T, class H, class P, class A> - bool operator!=(unordered_map<K, T, H, P, A> const&, + inline bool operator!=(unordered_map<K, T, H, P, A> const&, unordered_map<K, T, H, P, A> const&); template <class K, class T, class H, class P, class A> - void swap(unordered_map<K, T, H, P, A>&, + inline void swap(unordered_map<K, T, H, P, A>&, unordered_map<K, T, H, P, A>&); template <class K, @@ -40,13 +40,13 @@ namespace boost class A = std::allocator<std::pair<const K, T> > > class unordered_multimap; template <class K, class T, class H, class P, class A> - bool operator==(unordered_multimap<K, T, H, P, A> const&, + inline bool operator==(unordered_multimap<K, T, H, P, A> const&, unordered_multimap<K, T, H, P, A> const&); template <class K, class T, class H, class P, class A> - bool operator!=(unordered_multimap<K, T, H, P, A> const&, + inline bool operator!=(unordered_multimap<K, T, H, P, A> const&, unordered_multimap<K, T, H, P, A> const&); template <class K, class T, class H, class P, class A> - void swap(unordered_multimap<K, T, H, P, A>&, + inline void swap(unordered_multimap<K, T, H, P, A>&, unordered_multimap<K, T, H, P, A>&); } diff --git a/3rdParty/Boost/src/boost/utility/detail/in_place_factory_prefix.hpp b/3rdParty/Boost/src/boost/utility/detail/in_place_factory_prefix.hpp new file mode 100644 index 0000000..afd76b5 --- /dev/null +++ b/3rdParty/Boost/src/boost/utility/detail/in_place_factory_prefix.hpp @@ -0,0 +1,36 @@ +// Copyright (C) 2003, Fernando Luis Cacciola Carballal. +// Copyright (C) 2007, Tobias Schwinger. +// +// 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) +// +// See http://www.boost.org/libs/optional for documentation. +// +// You are welcome to contact the author at: +// fernando_cacciola@hotmail.com +// +#ifndef BOOST_UTILITY_DETAIL_INPLACE_FACTORY_PREFIX_04APR2007_HPP +#define BOOST_UTILITY_DETAIL_INPLACE_FACTORY_PREFIX_04APR2007_HPP + +#include <new> +#include <cstddef> +#include <boost/config.hpp> +#include <boost/preprocessor/cat.hpp> +#include <boost/preprocessor/punctuation/paren.hpp> +#include <boost/preprocessor/iteration/iterate.hpp> +#include <boost/preprocessor/repetition/repeat.hpp> +#include <boost/preprocessor/repetition/enum.hpp> +#include <boost/preprocessor/repetition/enum_params.hpp> +#include <boost/preprocessor/repetition/enum_binary_params.hpp> +#include <boost/preprocessor/repetition/enum_trailing_params.hpp> + +#define BOOST_DEFINE_INPLACE_FACTORY_CLASS_MEMBER_INIT(z,n,_) BOOST_PP_CAT(m_a,n) BOOST_PP_LPAREN() BOOST_PP_CAT(a,n) BOOST_PP_RPAREN() +#define BOOST_DEFINE_INPLACE_FACTORY_CLASS_MEMBER_DECL(z,n,_) BOOST_PP_CAT(A,n) const& BOOST_PP_CAT(m_a,n); + +#define BOOST_MAX_INPLACE_FACTORY_ARITY 10 + +#undef BOOST_UTILITY_DETAIL_INPLACE_FACTORY_SUFFIX_04APR2007_HPP + +#endif + diff --git a/3rdParty/Boost/src/boost/utility/detail/in_place_factory_suffix.hpp b/3rdParty/Boost/src/boost/utility/detail/in_place_factory_suffix.hpp new file mode 100644 index 0000000..58f48c7 --- /dev/null +++ b/3rdParty/Boost/src/boost/utility/detail/in_place_factory_suffix.hpp @@ -0,0 +1,23 @@ +// Copyright (C) 2003, Fernando Luis Cacciola Carballal. +// Copyright (C) 2007, Tobias Schwinger. +// +// 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) +// +// See http://www.boost.org/libs/optional for documentation. +// +// You are welcome to contact the author at: +// fernando_cacciola@hotmail.com +// +#ifndef BOOST_UTILITY_DETAIL_INPLACE_FACTORY_SUFFIX_04APR2007_HPP +#define BOOST_UTILITY_DETAIL_INPLACE_FACTORY_SUFFIX_04APR2007_HPP + +#undef BOOST_DEFINE_INPLACE_FACTORY_CLASS_MEMBER_INIT +#undef BOOST_DEFINE_INPLACE_FACTORY_CLASS_MEMBER_DECL +#undef BOOST_MAX_INPLACE_FACTORY_ARITY + +#undef BOOST_UTILITY_DETAIL_INPLACE_FACTORY_PREFIX_04APR2007_HPP + +#endif + diff --git a/3rdParty/Boost/src/boost/utility/in_place_factory.hpp b/3rdParty/Boost/src/boost/utility/in_place_factory.hpp new file mode 100644 index 0000000..f84b003 --- /dev/null +++ b/3rdParty/Boost/src/boost/utility/in_place_factory.hpp @@ -0,0 +1,88 @@ +// Copyright (C) 2003, Fernando Luis Cacciola Carballal. +// Copyright (C) 2007, Tobias Schwinger. +// +// 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) +// +// See http://www.boost.org/libs/optional for documentation. +// +// You are welcome to contact the author at: +// fernando_cacciola@hotmail.com +// +#ifndef BOOST_UTILITY_INPLACE_FACTORY_04APR2007_HPP +#ifndef BOOST_PP_IS_ITERATING + +#include <boost/utility/detail/in_place_factory_prefix.hpp> + +namespace boost { + +class in_place_factory_base {} ; + +#define BOOST_PP_ITERATION_LIMITS (0, BOOST_MAX_INPLACE_FACTORY_ARITY) +#define BOOST_PP_FILENAME_1 <boost/utility/in_place_factory.hpp> +#include BOOST_PP_ITERATE() + +} // namespace boost + +#include <boost/utility/detail/in_place_factory_suffix.hpp> + +#define BOOST_UTILITY_INPLACE_FACTORY_04APR2007_HPP +#else +#define N BOOST_PP_ITERATION() + +#if N +template< BOOST_PP_ENUM_PARAMS(N, class A) > +#endif +class BOOST_PP_CAT(in_place_factory,N) + : + public in_place_factory_base +{ +public: + + explicit BOOST_PP_CAT(in_place_factory,N) + ( BOOST_PP_ENUM_BINARY_PARAMS(N,A,const& a) ) +#if N > 0 + : BOOST_PP_ENUM(N, BOOST_DEFINE_INPLACE_FACTORY_CLASS_MEMBER_INIT, _) +#endif + {} + + template<class T> + void* apply(void* address + BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(T)) const + { + return new(address) T( BOOST_PP_ENUM_PARAMS(N, m_a) ); + } + + template<class T> + void* apply(void* address, std::size_t n + BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(T)) const + { + for(char* next = address = this->BOOST_NESTED_TEMPLATE apply<T>(address); + !! --n;) + this->BOOST_NESTED_TEMPLATE apply<T>(next = next+sizeof(T)); + return address; + } + + BOOST_PP_REPEAT(N, BOOST_DEFINE_INPLACE_FACTORY_CLASS_MEMBER_DECL, _) +}; + +#if N > 0 +template< BOOST_PP_ENUM_PARAMS(N, class A) > +inline BOOST_PP_CAT(in_place_factory,N)< BOOST_PP_ENUM_PARAMS(N, A) > +in_place( BOOST_PP_ENUM_BINARY_PARAMS(N, A, const& a) ) +{ + return BOOST_PP_CAT(in_place_factory,N)< BOOST_PP_ENUM_PARAMS(N, A) > + ( BOOST_PP_ENUM_PARAMS(N, a) ); +} +#else +inline in_place_factory0 in_place() +{ + return in_place_factory0(); +} +#endif + +#undef N +#endif +#endif + diff --git a/3rdParty/Boost/src/boost/utility/value_init.hpp b/3rdParty/Boost/src/boost/utility/value_init.hpp deleted file mode 100644 index 5de9585..0000000 --- a/3rdParty/Boost/src/boost/utility/value_init.hpp +++ /dev/null @@ -1,258 +0,0 @@ -// (C) Copyright 2002-2008, Fernando Luis Cacciola Carballal. -// -// 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) -// -// 21 Ago 2002 (Created) Fernando Cacciola -// 24 Dec 2007 (Refactored and worked around various compiler bugs) Fernando Cacciola, Niels Dekker -// 23 May 2008 (Fixed operator= const issue, added initialized_value) Niels Dekker, Fernando Cacciola -// 21 Ago 2008 (Added swap) Niels Dekker, Fernando Cacciola -// 20 Feb 2009 (Fixed logical const-ness issues) Niels Dekker, Fernando Cacciola -// 03 Apr 2010 (Added initialized<T>, suggested by Jeffrey Hellrung, fixing #3472) Niels Dekker -// 30 May 2010 (Made memset call conditional, fixing #3869) Niels Dekker -// -#ifndef BOOST_UTILITY_VALUE_INIT_21AGO2002_HPP -#define BOOST_UTILITY_VALUE_INIT_21AGO2002_HPP - -// Note: The implementation of boost::value_initialized had to deal with the -// fact that various compilers haven't fully implemented value-initialization. -// The constructor of boost::value_initialized<T> works around these compiler -// issues, by clearing the bytes of T, before constructing the T object it -// contains. More details on these issues are at libs/utility/value_init.htm - -#include <boost/aligned_storage.hpp> -#include <boost/config.hpp> // For BOOST_NO_COMPLETE_VALUE_INITIALIZATION. -#include <boost/detail/workaround.hpp> -#include <boost/static_assert.hpp> -#include <boost/type_traits/cv_traits.hpp> -#include <boost/type_traits/alignment_of.hpp> -#include <boost/swap.hpp> -#include <cstring> -#include <new> - -#ifdef BOOST_MSVC -#pragma warning(push) -#if _MSC_VER >= 1310 -// It is safe to ignore the following warning from MSVC 7.1 or higher: -// "warning C4351: new behavior: elements of array will be default initialized" -#pragma warning(disable: 4351) -// It is safe to ignore the following MSVC warning, which may pop up when T is -// a const type: "warning C4512: assignment operator could not be generated". -#pragma warning(disable: 4512) -#endif -#endif - -#ifdef BOOST_NO_COMPLETE_VALUE_INITIALIZATION - // Implementation detail: The macro BOOST_DETAIL_VALUE_INIT_WORKAROUND_SUGGESTED - // suggests that a workaround should be applied, because of compiler issues - // regarding value-initialization. - #define BOOST_DETAIL_VALUE_INIT_WORKAROUND_SUGGESTED -#endif - -// Implementation detail: The macro BOOST_DETAIL_VALUE_INIT_WORKAROUND -// switches the value-initialization workaround either on or off. -#ifndef BOOST_DETAIL_VALUE_INIT_WORKAROUND - #ifdef BOOST_DETAIL_VALUE_INIT_WORKAROUND_SUGGESTED - #define BOOST_DETAIL_VALUE_INIT_WORKAROUND 1 - #else - #define BOOST_DETAIL_VALUE_INIT_WORKAROUND 0 - #endif -#endif - -namespace boost { - -template<class T> -class initialized -{ - private : - struct wrapper - { -#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x592)) - typename -#endif - remove_const<T>::type data; - - wrapper() - : - data() - { - } - - wrapper(T const & arg) - : - data(arg) - { - } - }; - - mutable -#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x592)) - typename -#endif - aligned_storage<sizeof(wrapper), alignment_of<wrapper>::value>::type x; - - wrapper * wrapper_address() const - { - return static_cast<wrapper *>( static_cast<void*>(&x)); - } - - public : - - initialized() - { -#if BOOST_DETAIL_VALUE_INIT_WORKAROUND - std::memset(&x, 0, sizeof(x)); -#endif - new (wrapper_address()) wrapper(); - } - - initialized(initialized const & arg) - { - new (wrapper_address()) wrapper( static_cast<wrapper const &>(*(arg.wrapper_address()))); - } - - explicit initialized(T const & arg) - { - new (wrapper_address()) wrapper(arg); - } - - initialized & operator=(initialized const & arg) - { - // Assignment is only allowed when T is non-const. - BOOST_STATIC_ASSERT( ! is_const<T>::value ); - *wrapper_address() = static_cast<wrapper const &>(*(arg.wrapper_address())); - return *this; - } - - ~initialized() - { - wrapper_address()->wrapper::~wrapper(); - } - - T const & data() const - { - return wrapper_address()->data; - } - - T& data() - { - return wrapper_address()->data; - } - - void swap(initialized & arg) - { - ::boost::swap( this->data(), arg.data() ); - } - - operator T const &() const - { - return wrapper_address()->data; - } - - operator T&() - { - return wrapper_address()->data; - } - -} ; - -template<class T> -T const& get ( initialized<T> const& x ) -{ - return x.data() ; -} - -template<class T> -T& get ( initialized<T>& x ) -{ - return x.data() ; -} - -template<class T> -void swap ( initialized<T> & lhs, initialized<T> & rhs ) -{ - lhs.swap(rhs) ; -} - -template<class T> -class value_initialized -{ - private : - - // initialized<T> does value-initialization by default. - initialized<T> m_data; - - public : - - value_initialized() - : - m_data() - { } - - T const & data() const - { - return m_data.data(); - } - - T& data() - { - return m_data.data(); - } - - void swap(value_initialized & arg) - { - m_data.swap(arg.m_data); - } - - operator T const &() const - { - return m_data; - } - - operator T&() - { - return m_data; - } -} ; - - -template<class T> -T const& get ( value_initialized<T> const& x ) -{ - return x.data() ; -} - -template<class T> -T& get ( value_initialized<T>& x ) -{ - return x.data() ; -} - -template<class T> -void swap ( value_initialized<T> & lhs, value_initialized<T> & rhs ) -{ - lhs.swap(rhs) ; -} - - -class initialized_value_t -{ - public : - - template <class T> operator T() const - { - return initialized<T>().data(); - } -}; - -initialized_value_t const initialized_value = {} ; - - -} // namespace boost - -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#endif diff --git a/3rdParty/Boost/src/boost/version.hpp b/3rdParty/Boost/src/boost/version.hpp index bdb68d4..c80d428 100644 --- a/3rdParty/Boost/src/boost/version.hpp +++ b/3rdParty/Boost/src/boost/version.hpp @@ -19,7 +19,7 @@ // BOOST_VERSION / 100 % 1000 is the minor version // BOOST_VERSION / 100000 is the major version -#define BOOST_VERSION 104500 +#define BOOST_VERSION 104601 // // BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION @@ -27,7 +27,7 @@ // number, y is the minor version number, and z is the patch level if not 0. // This is used by <config/auto_link.hpp> to select which library version to link to. -#define BOOST_LIB_VERSION "1_45" +#define BOOST_LIB_VERSION "1_46_1" #endif diff --git a/3rdParty/Boost/src/libs/filesystem/v2/src/v2_operations.cpp b/3rdParty/Boost/src/libs/filesystem/v2/src/v2_operations.cpp index 10df199..f29153c 100644 --- a/3rdParty/Boost/src/libs/filesystem/v2/src/v2_operations.cpp +++ b/3rdParty/Boost/src/libs/filesystem/v2/src/v2_operations.cpp @@ -44,7 +44,7 @@ #include <boost/filesystem/v2/operations.hpp> #include <boost/scoped_array.hpp> -#include <boost/throw_exception.hpp> +#include <boost/assert.hpp> #include <boost/detail/workaround.hpp> #include <cstdlib> // for malloc, free @@ -93,7 +93,6 @@ using boost::system::system_category; #include <cstring> #include <cstdio> // for remove, rename #include <cerrno> -#include <cassert> // #include <iostream> // for debugging only; comment out when not in use #ifdef BOOST_NO_STDC_NAMESPACE @@ -294,7 +293,7 @@ namespace if ( p1.handle != INVALID_HANDLE_VALUE || p2.handle != INVALID_HANDLE_VALUE ) { return std::make_pair( ok, false ); } - assert( p1.handle == INVALID_HANDLE_VALUE + BOOST_ASSERT( p1.handle == INVALID_HANDLE_VALUE && p2.handle == INVALID_HANDLE_VALUE ); { return std::make_pair( error_code( error1, system_category()), false ); } } @@ -724,7 +723,7 @@ namespace boost || ((mode&~std::ios_base::binary) == (std::ios_base::in|std::ios_base::out|std::ios_base::trunc)) ) disposition = CREATE_ALWAYS; - else assert( 0 && "invalid mode argument" ); + else BOOST_ASSERT( 0 && "invalid mode argument" ); HANDLE handle ( ::CreateFileW( ph.c_str(), access, FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, 0, @@ -1215,8 +1214,9 @@ namespace boost if ( ::stat( from_file_ph.c_str(), &from_stat ) != 0 ) { return error_code( errno, system_category() ); } - int oflag = O_CREAT | O_WRONLY; - if ( fail_if_exists ) oflag |= O_EXCL; + int oflag = O_CREAT | O_WRONLY | O_TRUNC; + if ( fail_if_exists ) + oflag |= O_EXCL; if ( (outfile = ::open( to_file_ph.c_str(), oflag, from_stat.st_mode )) < 0 ) { int open_errno = errno; diff --git a/3rdParty/Boost/src/libs/filesystem/v2/src/v2_path.cpp b/3rdParty/Boost/src/libs/filesystem/v2/src/v2_path.cpp index 7adeaff..16f6583 100644 --- a/3rdParty/Boost/src/libs/filesystem/v2/src/v2_path.cpp +++ b/3rdParty/Boost/src/libs/filesystem/v2/src/v2_path.cpp @@ -86,7 +86,7 @@ namespace boost void wpath_traits::imbue( const std::locale & new_loc ) { - if ( locked ) boost::throw_exception( + if ( locked ) BOOST_FILESYSTEM_THROW( wfilesystem_error( "boost::filesystem::wpath_traits::imbue() after lockdown", make_error_code( system::errc::not_supported ) ) ); @@ -144,7 +144,7 @@ namespace boost if ( converter()->out( state, src.c_str(), src.c_str()+src.size(), from_next, work.get(), work.get()+work_size, to_next ) != std::codecvt_base::ok ) - boost::throw_exception( boost::filesystem::wfilesystem_error( + BOOST_FILESYSTEM_THROW( boost::filesystem::wfilesystem_error( "boost::filesystem::wpath::to_external conversion error", ph, system::error_code( system::errc::invalid_argument, system::system_category() ) ) ); *to_next = '\0'; @@ -163,7 +163,7 @@ namespace boost if ( converter()->in( state, src.c_str(), src.c_str()+src.size(), from_next, work.get(), work.get()+work_size, to_next ) != std::codecvt_base::ok ) - boost::throw_exception( boost::filesystem::wfilesystem_error( + BOOST_FILESYSTEM_THROW( boost::filesystem::wfilesystem_error( "boost::filesystem::wpath::to_internal conversion error", system::error_code( system::errc::invalid_argument, system::system_category() ) ) ); *to_next = L'\0'; diff --git a/3rdParty/Boost/src/libs/filesystem/v3/src/operations.cpp b/3rdParty/Boost/src/libs/filesystem/v3/src/operations.cpp index 04d9c17..2460c1d 100644 --- a/3rdParty/Boost/src/libs/filesystem/v3/src/operations.cpp +++ b/3rdParty/Boost/src/libs/filesystem/v3/src/operations.cpp @@ -34,6 +34,7 @@ !defined(_STATVFS_ACPP_PROBLEMS_FIXED)) #define _FILE_OFFSET_BITS 64 // at worst, these defines may have no effect, #endif +#if !defined(__PGI) #define __USE_FILE_OFFSET64 // but that is harmless on Windows and on POSIX // 64-bit systems or on 32-bit systems which don't have files larger // than can be represented by a traditional POSIX/UNIX off_t type. @@ -44,11 +45,15 @@ // ensure that they are available to all included headers. // That is required at least on Solaris, and possibly on other // systems as well. +#else +#define _FILE_OFFSET_BITS 64 +#endif #include <boost/filesystem/v3/operations.hpp> #include <boost/scoped_array.hpp> #include <boost/detail/workaround.hpp> #include <cstdlib> // for malloc, free +#include <vector> #ifdef BOOST_FILEYSTEM_INCLUDE_IOSTREAM # include <iostream> @@ -147,6 +152,9 @@ typedef struct _REPARSE_DATA_BUFFER { #define REPARSE_DATA_BUFFER_HEADER_SIZE \ FIELD_OFFSET(REPARSE_DATA_BUFFER, GenericReparseBuffer) +#endif + +#ifndef MAXIMUM_REPARSE_DATA_BUFFER_SIZE #define MAXIMUM_REPARSE_DATA_BUFFER_SIZE ( 16 * 1024 ) #endif @@ -426,8 +434,9 @@ namespace if (::stat(from_p.c_str(), &from_stat)!= 0) { return false; } - int oflag = O_CREAT | O_WRONLY; - if (fail_if_exists)oflag |= O_EXCL; + int oflag = O_CREAT | O_WRONLY | O_TRUNC; + if (fail_if_exists) + oflag |= O_EXCL; if ((outfile = ::open(to_p.c_str(), oflag, from_stat.st_mode))< 0) { int open_errno = errno; @@ -1443,6 +1452,9 @@ namespace detail { return process_status_failure(p, ec); } + + if (!is_reparse_point_a_symlink(p)) + return file_status(reparse_file); } if (ec != 0) ec->clear(); @@ -1512,6 +1524,55 @@ namespace detail # endif } + // contributed by Jeff Flinn + BOOST_FILESYSTEM_DECL + path temp_directory_path(system::error_code* ec) + { +# ifdef BOOST_POSIX_API + const char* val = 0; + + (val = std::getenv("TMPDIR" )) || + (val = std::getenv("TMP" )) || + (val = std::getenv("TEMP" )) || + (val = std::getenv("TEMPDIR")); + + path p((val!=0) ? val : "/tmp"); + + if (p.empty() || (ec&&!is_directory(p, *ec))||(!ec&&!is_directory(p))) + { + errno = ENOTDIR; + error(true, p, ec, "boost::filesystem::temp_directory_path"); + return p; + } + + return p; + +# else // Windows + + std::vector<path::value_type> buf(GetTempPathW(0, NULL)); + + if (buf.empty() || GetTempPathW(buf.size(), &buf[0])==0) + { + if(!buf.empty()) ::SetLastError(ENOTDIR); + error(true, ec, "boost::filesystem::temp_directory_path"); + return path(); + } + + buf.pop_back(); + + path p(buf.begin(), buf.end()); + + if ((ec&&!is_directory(p, *ec))||(!ec&&!is_directory(p))) + { + ::SetLastError(ENOTDIR); + error(true, p, ec, "boost::filesystem::temp_directory_path"); + return path(); + } + + return p; +# endif + } + BOOST_FILESYSTEM_DECL path system_complete(const path& p, system::error_code* ec) { @@ -1637,6 +1698,10 @@ namespace return ok; } +#if defined(__PGI) && defined(__USE_FILE_OFFSET64) +#define dirent dirent64 +#endif + error_code dir_itr_first(void *& handle, void *& buffer, const char* dir, string& target, fs::file_status &, fs::file_status &) @@ -1742,9 +1807,13 @@ namespace ? 0 : ::GetLastError(), system_category() ); } target = data.cFileName; - if (data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) - { sf.type(fs::directory_file); symlink_sf.type(fs::directory_file); } - else { sf.type(fs::regular_file); symlink_sf.type(fs::regular_file); } + if (data.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) + // reparse points are complex, so don't try to handle them here + { sf.type(fs::status_error); symlink_sf.type(fs::status_error); } + else if (data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) + { sf.type(fs::directory_file); symlink_sf.type(fs::directory_file); } + else + { sf.type(fs::regular_file); symlink_sf.type(fs::regular_file); } return error_code(); } @@ -1759,9 +1828,13 @@ namespace return error_code(error == ERROR_NO_MORE_FILES ? 0 : error, system_category()); } target = data.cFileName; - if (data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) + if (data.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) + // reparse points are complex, so don't try to handle them here + { sf.type(fs::status_error); symlink_sf.type(fs::status_error); } + else if (data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { sf.type(fs::directory_file); symlink_sf.type(fs::directory_file); } - else { sf.type(fs::regular_file); symlink_sf.type(fs::regular_file); } + else + { sf.type(fs::regular_file); symlink_sf.type(fs::regular_file); } return error_code(); } #endif @@ -1878,7 +1951,12 @@ namespace detail } else if (ec != 0) ec->clear(); - if (it.m_imp->handle == 0){ it.m_imp.reset(); return; } // eof, make end + if (it.m_imp->handle == 0) // eof, make end + { + it.m_imp.reset(); + return; + } + if (!(filename[0] == dot // !(dot or dot-dot) && (filename.size()== 1 || (filename[1] == dot diff --git a/3rdParty/Boost/src/libs/filesystem/v3/src/path.cpp b/3rdParty/Boost/src/libs/filesystem/v3/src/path.cpp index 53a4cc6..cc30570 100644 --- a/3rdParty/Boost/src/libs/filesystem/v3/src/path.cpp +++ b/3rdParty/Boost/src/libs/filesystem/v3/src/path.cpp @@ -27,6 +27,7 @@ #include <boost/scoped_array.hpp> #include <boost/system/error_code.hpp> #include <boost/assert.hpp> +#include <algorithm> #include <cstddef> #include <cstring> #include <cassert> @@ -155,27 +156,17 @@ namespace filesystem3 # ifdef BOOST_WINDOWS_API - void path::m_portable() - { - for (string_type::iterator it = m_pathname.begin(); - it != m_pathname.end(); ++it) - { - if (*it == L'\\') - *it = L'/'; - } - } - const std::string path::generic_string(const codecvt_type& cvt) const { path tmp(*this); - tmp.m_portable(); + tmp.make_preferred(); return tmp.string(cvt); } const std::wstring path::generic_wstring() const { path tmp(*this); - tmp.m_portable(); + tmp.make_preferred(); return tmp.wstring(); } @@ -216,12 +207,7 @@ namespace filesystem3 # ifdef BOOST_WINDOWS_API path & path::make_preferred() { - for (string_type::iterator it = m_pathname.begin(); - it != m_pathname.end(); ++it) - { - if (*it == L'/') - *it = L'\\'; - } + std::replace(m_pathname.begin(), m_pathname.end(), L'\\', L'/'); return *this; } # endif diff --git a/3rdParty/Boost/src/libs/filesystem/v3/src/windows_file_codecvt.cpp b/3rdParty/Boost/src/libs/filesystem/v3/src/windows_file_codecvt.cpp index dd89c02..ae9f9f2 100644 --- a/3rdParty/Boost/src/libs/filesystem/v3/src/windows_file_codecvt.cpp +++ b/3rdParty/Boost/src/libs/filesystem/v3/src/windows_file_codecvt.cpp @@ -31,7 +31,11 @@ #include "windows_file_codecvt.hpp" -#define WINVER 0x0500 // MinGW for GCC 4.4 requires this +// Versions of MinGW prior to GCC 4.6 requires this +#ifndef WINVER +# define WINVER 0x0500 +#endif + #include <windows.h> std::codecvt_base::result windows_file_codecvt::do_in( diff --git a/3rdParty/Boost/src/libs/regex/src/regex.cpp b/3rdParty/Boost/src/libs/regex/src/regex.cpp index 1f1caa6..27ac43c 100644 --- a/3rdParty/Boost/src/libs/regex/src/regex.cpp +++ b/3rdParty/Boost/src/libs/regex/src/regex.cpp @@ -224,19 +224,3 @@ int WINAPI DllEntryPoint(HINSTANCE , unsigned long , void*) } #endif -#if defined(__IBMCPP__) && defined(BOOST_REGEX_DYN_LINK) -// -// Is this correct - linker complains without it ? -// -int main() -{ - return 0; -} - -#endif - - - - - - diff --git a/3rdParty/Boost/src/libs/system/src/error_code.cpp b/3rdParty/Boost/src/libs/system/src/error_code.cpp index bd87403..bcdbea9 100644 --- a/3rdParty/Boost/src/libs/system/src/error_code.cpp +++ b/3rdParty/Boost/src/libs/system/src/error_code.cpp @@ -39,6 +39,9 @@ using namespace boost::system::errc; namespace { +#if defined(__PGI) + using boost::system::errc::invalid_argument; +#endif // standard error categories ---------------------------------------------// class generic_error_category : public error_category diff --git a/3rdParty/Boost/src/tools/bcp/add_path.cpp b/3rdParty/Boost/src/tools/bcp/add_path.cpp index e55e8e3..2ed4a94 100644 --- a/3rdParty/Boost/src/tools/bcp/add_path.cpp +++ b/3rdParty/Boost/src/tools/bcp/add_path.cpp @@ -68,7 +68,7 @@ void bcp_implementation::add_directory(const fs::path& p) // we need to convert *i back into // a relative path, what follows is a hack: // - std::string s(i->string()); + std::string s(i->path().string()); if(m_boost_path.string().size()) s.erase(0, m_boost_path.string().size() + 1); fs::path np = s; diff --git a/3rdParty/Boost/src/tools/bcp/bcp.hpp b/3rdParty/Boost/src/tools/bcp/bcp.hpp index ea2b4d0..bec6364 100644 --- a/3rdParty/Boost/src/tools/bcp/bcp.hpp +++ b/3rdParty/Boost/src/tools/bcp/bcp.hpp @@ -9,6 +9,12 @@ #include <boost/shared_ptr.hpp> +#if defined(BOOST_FILESYSTEM_VERSION) && (BOOST_FILESYSTEM_VERSION != 3) +# error "This library must be built with Boost.Filesystem version 3" +#else +#define BOOST_FILESYSTEM_VERSION 3 +#endif + class bcp_application; typedef boost::shared_ptr<bcp_application> pbcp_application; diff --git a/3rdParty/Boost/src/tools/bcp/bcp_imp.cpp b/3rdParty/Boost/src/tools/bcp/bcp_imp.cpp index c5d7fb4..5801735 100644 --- a/3rdParty/Boost/src/tools/bcp/bcp_imp.cpp +++ b/3rdParty/Boost/src/tools/bcp/bcp_imp.cpp @@ -81,7 +81,7 @@ void bcp_implementation::enable_unix_lines() void bcp_implementation::set_boost_path(const char* p) { // Hack to strip trailing slashes from the path - m_boost_path = (fs::path(p, fs::native) / "boost").parent_path(); + m_boost_path = (fs::path(p) / "boost").parent_path(); fs::path check = m_boost_path / "boost" / "version.hpp"; if(!fs::exists(check)) { @@ -94,7 +94,7 @@ void bcp_implementation::set_boost_path(const char* p) void bcp_implementation::set_destination(const char* p) { - m_dest_path = fs::path(p, fs::native); + m_dest_path = fs::path(p); } void bcp_implementation::add_module(const char* p) @@ -140,7 +140,7 @@ int bcp_implementation::run() if(!m_list_mode && !m_license_mode && !fs::exists(m_dest_path)) { std::string msg("Destination path does not exist: "); - msg.append(m_dest_path.native_file_string()); + msg.append(m_dest_path.string()); std::runtime_error e(msg); boost::throw_exception(e); } @@ -190,15 +190,8 @@ int bcp_implementation::run() // fs::path module; fs::path exmodule; - try{ - module = fs::path(*i); - exmodule = fs::path(*i + ".hpp"); - } - catch(...) - { - module = fs::path(*i, fs::native); - exmodule = fs::path(*i + ".hpp", fs::native); - } + module = fs::path(*i); + exmodule = fs::path(*i + ".hpp"); if(m_scan_mode) { diff --git a/3rdParty/Boost/src/tools/bcp/copy_path.cpp b/3rdParty/Boost/src/tools/bcp/copy_path.cpp index 496696a..85b5de1 100644 --- a/3rdParty/Boost/src/tools/bcp/copy_path.cpp +++ b/3rdParty/Boost/src/tools/bcp/copy_path.cpp @@ -63,7 +63,7 @@ void bcp_implementation::copy_path(const fs::path& p) static std::vector<char> v1, v2; v1.clear(); v2.clear(); - std::ifstream is((m_boost_path / p).native_file_string().c_str()); + std::ifstream is((m_boost_path / p).string().c_str()); std::copy(std::istreambuf_iterator<char>(is), std::istreambuf_iterator<char>(), std::back_inserter(v1)); static boost::regex libname_matcher; @@ -78,9 +78,9 @@ void bcp_implementation::copy_path(const fs::path& p) std::ofstream os; if(m_unix_lines) - os.open((m_dest_path / p).native_file_string().c_str(), std::ios_base::binary | std::ios_base::out); + os.open((m_dest_path / p).string().c_str(), std::ios_base::binary | std::ios_base::out); else - os.open((m_dest_path / p).native_file_string().c_str(), std::ios_base::out); + os.open((m_dest_path / p).string().c_str(), std::ios_base::out); os.write(&*v1.begin(), v1.size()); os.close(); } @@ -89,7 +89,7 @@ void bcp_implementation::copy_path(const fs::path& p) static std::vector<char> v1, v2; v1.clear(); v2.clear(); - std::ifstream is((m_boost_path / p).native_file_string().c_str()); + std::ifstream is((m_boost_path / p).string().c_str()); std::copy(std::istreambuf_iterator<char>(is), std::istreambuf_iterator<char>(), std::back_inserter(v1)); static boost::regex libname_matcher; @@ -111,9 +111,9 @@ void bcp_implementation::copy_path(const fs::path& p) std::ofstream os; if(m_unix_lines) - os.open((m_dest_path / p).native_file_string().c_str(), std::ios_base::binary | std::ios_base::out); + os.open((m_dest_path / p).string().c_str(), std::ios_base::binary | std::ios_base::out); else - os.open((m_dest_path / p).native_file_string().c_str(), std::ios_base::out); + os.open((m_dest_path / p).string().c_str(), std::ios_base::out); os.write(&*v1.begin(), v1.size()); os.close(); } @@ -127,7 +127,7 @@ void bcp_implementation::copy_path(const fs::path& p) static std::vector<char> v1, v2; v1.clear(); v2.clear(); - std::ifstream is((m_boost_path / p).native_file_string().c_str()); + std::ifstream is((m_boost_path / p).string().c_str()); std::copy(std::istreambuf_iterator<char>(is), std::istreambuf_iterator<char>(), std::back_inserter(v1)); static const boost::regex namespace_matcher( @@ -202,20 +202,20 @@ void bcp_implementation::copy_path(const fs::path& p) std::ofstream os; if(m_unix_lines) - os.open((m_dest_path / p).native_file_string().c_str(), std::ios_base::binary | std::ios_base::out); + os.open((m_dest_path / p).string().c_str(), std::ios_base::binary | std::ios_base::out); else - os.open((m_dest_path / p).native_file_string().c_str(), std::ios_base::out); + os.open((m_dest_path / p).string().c_str(), std::ios_base::out); if(v1.size()) os.write(&*v1.begin(), v1.size()); os.close(); } else if(m_unix_lines && !is_binary_file(p)) { - std::ifstream is((m_boost_path / p).native_file_string().c_str()); + std::ifstream is((m_boost_path / p).string().c_str()); std::istreambuf_iterator<char> isi(is); std::istreambuf_iterator<char> end; - std::ofstream os((m_dest_path / p).native_file_string().c_str(), std::ios_base::binary | std::ios_base::out); + std::ofstream os((m_dest_path / p).string().c_str(), std::ios_base::binary | std::ios_base::out); std::ostreambuf_iterator<char> osi(os); std::copy(isi, end, osi); diff --git a/3rdParty/Boost/src/tools/bcp/file_types.cpp b/3rdParty/Boost/src/tools/bcp/file_types.cpp index abc0149..7fc6850 100644 --- a/3rdParty/Boost/src/tools/bcp/file_types.cpp +++ b/3rdParty/Boost/src/tools/bcp/file_types.cpp @@ -23,7 +23,7 @@ bool bcp_implementation::is_source_file(const fs::path& p) ")", boost::regex::perl | boost::regex::icase ); - return boost::regex_match(p.filename(), e); + return boost::regex_match(p.filename().string(), e); } bool bcp_implementation::is_html_file(const fs::path& p) @@ -34,7 +34,7 @@ bool bcp_implementation::is_html_file(const fs::path& p) "html?|css" ")" ); - return boost::regex_match(p.filename(), e); + return boost::regex_match(p.filename().string(), e); } bool bcp_implementation::is_binary_file(const fs::path& p) @@ -52,7 +52,7 @@ bool bcp_implementation::is_binary_file(const fs::path& p) "|" "(Jamfile|makefile|configure)", boost::regex::perl | boost::regex::icase); - return !boost::regex_match(p.leaf(), e); + return !boost::regex_match(p.leaf().string(), e); } @@ -67,6 +67,6 @@ bool bcp_implementation::is_jam_file(const fs::path& p) "(Jamfile|Jamroot)\\.?", boost::regex::perl | boost::regex::icase ); - return boost::regex_match(p.filename(), e); + return boost::regex_match(p.filename().string(), e); } diff --git a/3rdParty/Boost/src/tools/bcp/fileview.cpp b/3rdParty/Boost/src/tools/bcp/fileview.cpp index 845582d..ec9e71a 100644 --- a/3rdParty/Boost/src/tools/bcp/fileview.cpp +++ b/3rdParty/Boost/src/tools/bcp/fileview.cpp @@ -57,11 +57,11 @@ void fileview::close() void fileview::open(const boost::filesystem::path& p) { cow(); - std::ifstream is(p.native_file_string().c_str()); + std::ifstream is(p.string().c_str()); if(!is) { std::string msg("Bad file name: "); - msg += p.native_file_string(); + msg += p.string(); std::runtime_error e(msg); boost::throw_exception(e); } diff --git a/3rdParty/Boost/src/tools/bcp/fileview.hpp b/3rdParty/Boost/src/tools/bcp/fileview.hpp index ede4232..fe76f84 100644 --- a/3rdParty/Boost/src/tools/bcp/fileview.hpp +++ b/3rdParty/Boost/src/tools/bcp/fileview.hpp @@ -7,6 +7,12 @@ * */ +#if defined(BOOST_FILESYSTEM_VERSION) && (BOOST_FILESYSTEM_VERSION != 3) +# error "This library must be built with Boost.Filesystem version 3" +#else +#define BOOST_FILESYSTEM_VERSION 3 +#endif + #include <boost/shared_ptr.hpp> #include <boost/filesystem/path.hpp> diff --git a/3rdParty/Boost/src/tools/bcp/main.cpp b/3rdParty/Boost/src/tools/bcp/main.cpp index a152138..28a5491 100644 --- a/3rdParty/Boost/src/tools/bcp/main.cpp +++ b/3rdParty/Boost/src/tools/bcp/main.cpp @@ -13,9 +13,9 @@ #include <cstring> #include <string> #include <list> +#include "bcp.hpp" #include <boost/filesystem/path.hpp> #include <boost/version.hpp> -#include "bcp.hpp" #ifdef BOOST_NO_STDC_NAMESPACE namespace std{ @@ -60,7 +60,7 @@ int cpp_main(int argc, char* argv[]) // with files that already exist, if they're not portable // names it's too late for us to do anything about it). // - boost::filesystem::path::default_name_check(filesystem_name_check); + /*boost::filesystem::path::default_name_check(filesystem_name_check);*/ // // without arguments just show help: // @@ -68,7 +68,7 @@ int cpp_main(int argc, char* argv[]) { std::cout << "Error: insufficient arguments, don't know what to do." << std::endl; show_usage(); - return 0; + return 1; } // // create the application object: diff --git a/3rdParty/Boost/src/tools/bcp/output_licence_info.cpp b/3rdParty/Boost/src/tools/bcp/output_licence_info.cpp index 26eae7b..2349acc 100644 --- a/3rdParty/Boost/src/tools/bcp/output_licence_info.cpp +++ b/3rdParty/Boost/src/tools/bcp/output_licence_info.cpp @@ -57,7 +57,7 @@ void bcp_implementation::output_license_info() i = m_license_data.begin(); j = m_license_data.end(); - std::ofstream os(m_dest_path.native_file_string().c_str()); + std::ofstream os(m_dest_path.string().c_str()); if(!os) { std::string msg("Error opening "); diff --git a/3rdParty/Boost/src/tools/bcp/scan_licence.cpp b/3rdParty/Boost/src/tools/bcp/scan_licence.cpp index 13a0286..d1bf0bb 100644 --- a/3rdParty/Boost/src/tools/bcp/scan_licence.cpp +++ b/3rdParty/Boost/src/tools/bcp/scan_licence.cpp @@ -239,10 +239,10 @@ void bcp_implementation::scan_license(const fs::path& p, const fileview& v) // Perform the actual conversion if (m_bsl_convert_mode) { try{ - std::ofstream out((m_boost_path / p).native_file_string().c_str()); + std::ofstream out((m_boost_path / p).string().c_str()); if (!out) { std::string msg("Cannot open file for license conversion: "); - msg += p.native_file_string(); + msg += p.string(); std::runtime_error e(msg); boost::throw_exception(e); } |