92 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			92 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								/////////////////////////////////////////////////////////////////////////////
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								// (C) Copyright Ion Gaztanaga  2014-2014
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								// Distributed under the 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/intrusive for documentation.
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								/////////////////////////////////////////////////////////////////////////////
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifndef BOOST_INTRUSIVE_DETAIL_SIZE_HOLDER_HPP
							 | 
						||
| 
								 | 
							
								#define BOOST_INTRUSIVE_DETAIL_SIZE_HOLDER_HPP
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifndef BOOST_CONFIG_HPP
							 | 
						||
| 
								 | 
							
								#  include <boost/config.hpp>
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#if defined(BOOST_HAS_PRAGMA_ONCE)
							 | 
						||
| 
								 | 
							
								#  pragma once
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <boost/intrusive/detail/workaround.hpp>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace boost {
							 | 
						||
| 
								 | 
							
								namespace intrusive {
							 | 
						||
| 
								 | 
							
								namespace detail {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								template<bool ConstantSize, class SizeType, class Tag = void>
							 | 
						||
| 
								 | 
							
								struct size_holder
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								   static const bool constant_time_size = ConstantSize;
							 | 
						||
| 
								 | 
							
								   typedef SizeType  size_type;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   BOOST_INTRUSIVE_FORCEINLINE SizeType get_size() const
							 | 
						||
| 
								 | 
							
								   {  return size_;  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   BOOST_INTRUSIVE_FORCEINLINE void set_size(SizeType size)
							 | 
						||
| 
								 | 
							
								   {  size_ = size; }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   BOOST_INTRUSIVE_FORCEINLINE void decrement()
							 | 
						||
| 
								 | 
							
								   {  --size_; }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   BOOST_INTRUSIVE_FORCEINLINE void increment()
							 | 
						||
| 
								 | 
							
								   {  ++size_; }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   BOOST_INTRUSIVE_FORCEINLINE void increase(SizeType n)
							 | 
						||
| 
								 | 
							
								   {  size_ += n; }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   BOOST_INTRUSIVE_FORCEINLINE void decrease(SizeType n)
							 | 
						||
| 
								 | 
							
								   {  size_ -= n; }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   BOOST_INTRUSIVE_FORCEINLINE void swap(size_holder &other)
							 | 
						||
| 
								 | 
							
								   {  SizeType tmp(size_); size_ = other.size_; other.size_ = tmp; }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   SizeType size_;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								template<class SizeType, class Tag>
							 | 
						||
| 
								 | 
							
								struct size_holder<false, SizeType, Tag>
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								   static const bool constant_time_size = false;
							 | 
						||
| 
								 | 
							
								   typedef SizeType  size_type;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   BOOST_INTRUSIVE_FORCEINLINE size_type get_size() const
							 | 
						||
| 
								 | 
							
								   {  return 0;  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   BOOST_INTRUSIVE_FORCEINLINE void set_size(size_type)
							 | 
						||
| 
								 | 
							
								   {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   BOOST_INTRUSIVE_FORCEINLINE void decrement()
							 | 
						||
| 
								 | 
							
								   {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   BOOST_INTRUSIVE_FORCEINLINE void increment()
							 | 
						||
| 
								 | 
							
								   {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   BOOST_INTRUSIVE_FORCEINLINE void increase(SizeType)
							 | 
						||
| 
								 | 
							
								   {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   BOOST_INTRUSIVE_FORCEINLINE void decrease(SizeType)
							 | 
						||
| 
								 | 
							
								   {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   BOOST_INTRUSIVE_FORCEINLINE void swap(size_holder){}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}  //namespace detail{
							 | 
						||
| 
								 | 
							
								}  //namespace intrusive{
							 | 
						||
| 
								 | 
							
								}  //namespace boost{
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif //BOOST_INTRUSIVE_DETAIL_SIZE_HOLDER_HPP
							 |