mirror of
https://github.com/yuzu-emu/ext-boost.git
synced 2024-12-23 10:05:41 +00:00
81 lines
1.6 KiB
C++
81 lines
1.6 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// (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
|
|
|
|
#if defined(_MSC_VER)
|
|
# pragma once
|
|
#endif
|
|
|
|
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;
|
|
|
|
SizeType get_size() const
|
|
{ return size_; }
|
|
|
|
void set_size(SizeType size)
|
|
{ size_ = size; }
|
|
|
|
void decrement()
|
|
{ --size_; }
|
|
|
|
void increment()
|
|
{ ++size_; }
|
|
|
|
void increase(SizeType n)
|
|
{ size_ += n; }
|
|
|
|
void decrease(SizeType n)
|
|
{ size_ -= n; }
|
|
|
|
SizeType size_;
|
|
};
|
|
|
|
template<class SizeType, class Tag>
|
|
struct size_holder<false, SizeType, Tag>
|
|
{
|
|
static const bool constant_time_size = false;
|
|
typedef SizeType size_type;
|
|
|
|
size_type get_size() const
|
|
{ return 0; }
|
|
|
|
void set_size(size_type)
|
|
{}
|
|
|
|
void decrement()
|
|
{}
|
|
|
|
void increment()
|
|
{}
|
|
|
|
void increase(SizeType)
|
|
{}
|
|
|
|
void decrease(SizeType)
|
|
{}
|
|
};
|
|
|
|
} //namespace detail{
|
|
} //namespace intrusive{
|
|
} //namespace boost{
|
|
|
|
#endif //BOOST_INTRUSIVE_DETAIL_SIZE_HOLDER_HPP
|