diff options
Diffstat (limited to '3rdParty')
-rw-r--r-- | 3rdParty/Boost/src/boost/range/adaptor/reversed.hpp | 103 | ||||
-rwxr-xr-x | 3rdParty/Boost/update.sh | 4 |
2 files changed, 104 insertions, 3 deletions
diff --git a/3rdParty/Boost/src/boost/range/adaptor/reversed.hpp b/3rdParty/Boost/src/boost/range/adaptor/reversed.hpp new file mode 100644 index 0000000..944fbff --- /dev/null +++ b/3rdParty/Boost/src/boost/range/adaptor/reversed.hpp @@ -0,0 +1,103 @@ +// Boost.Range library +// +// Copyright Thorsten Ottosen, Neil Groves 2006 - 2008. Use, modification and +// distribution is subject to the Boost Software License, Version +// 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// For more information, see http://www.boost.org/libs/range/ +// + +#ifndef BOOST_RANGE_ADAPTOR_REVERSED_HPP +#define BOOST_RANGE_ADAPTOR_REVERSED_HPP + +#include <boost/range/iterator_range.hpp> +#include <boost/range/concepts.hpp> +#include <boost/iterator/reverse_iterator.hpp> + +namespace boost +{ + namespace range_detail + { + template< class R > + struct reversed_range : + public boost::iterator_range< + boost::reverse_iterator< + BOOST_DEDUCED_TYPENAME range_iterator<R>::type + > + > + { + private: + typedef boost::iterator_range< + boost::reverse_iterator< + BOOST_DEDUCED_TYPENAME range_iterator<R>::type + > + > + base; + + public: + typedef boost::reverse_iterator<BOOST_DEDUCED_TYPENAME range_iterator<R>::type> iterator; + + explicit reversed_range( R& r ) + : base( iterator(boost::end(r)), iterator(boost::begin(r)) ) + { } + }; + + struct reverse_forwarder {}; + + template< class BidirectionalRange > + inline reversed_range<BidirectionalRange> + operator|( BidirectionalRange& r, reverse_forwarder ) + { + BOOST_RANGE_CONCEPT_ASSERT(( + BidirectionalRangeConcept<BidirectionalRange>)); + + return reversed_range<BidirectionalRange>( r ); + } + + template< class BidirectionalRange > + inline reversed_range<const BidirectionalRange> + operator|( const BidirectionalRange& r, reverse_forwarder ) + { + BOOST_RANGE_CONCEPT_ASSERT(( + BidirectionalRangeConcept<const BidirectionalRange>)); + + return reversed_range<const BidirectionalRange>( r ); + } + + } // 'range_detail' + + using range_detail::reversed_range; + + namespace adaptors + { + namespace + { + const range_detail::reverse_forwarder reversed = + range_detail::reverse_forwarder(); + } + + template<class BidirectionalRange> + inline reversed_range<BidirectionalRange> + reverse(BidirectionalRange& rng) + { + BOOST_RANGE_CONCEPT_ASSERT(( + BidirectionalRangeConcept<BidirectionalRange>)); + + return reversed_range<BidirectionalRange>(rng); + } + + template<class BidirectionalRange> + inline reversed_range<const BidirectionalRange> + reverse(const BidirectionalRange& rng) + { + BOOST_RANGE_CONCEPT_ASSERT(( + BidirectionalRangeConcept<const BidirectionalRange>)); + + return reversed_range<const BidirectionalRange>(rng); + } + } // 'adaptors' + +} // 'boost' + +#endif diff --git a/3rdParty/Boost/update.sh b/3rdParty/Boost/update.sh index 44114ed..afa7722 100755 --- a/3rdParty/Boost/update.sh +++ b/3rdParty/Boost/update.sh @@ -25,7 +25,6 @@ fi date_time/local_time/local_time.hpp \ date_time/c_local_time_adjustor.hpp \ date_time/gregorian/gregorian_types.hpp \ - foreach.hpp \ filesystem.hpp \ filesystem/fstream.hpp \ format.hpp \ @@ -41,8 +40,6 @@ fi random/uniform_int.hpp \ regex.hpp \ scope_exit.hpp \ - shared_ptr.hpp \ - smart_ptr/make_shared.hpp \ serialization/serialization.hpp \ serialization/vector.hpp \ serialization/list.hpp \ @@ -66,6 +63,7 @@ fi system/src/error_code.cpp \ phoenix/support/detail/iterate.hpp \ type_traits.hpp \ + range/adaptor/reversed.hpp \ $TARGET_DIR cp $1/LICENSE_1_0.txt $TARGET_DIR |