Add BOOST_CONTAINER_FORCEINLINE to trivial functions

This commit is contained in:
Ion Gaztañaga
2022-05-04 23:38:58 +02:00
parent 44d0f716f3
commit def7a52269

View File

@@ -33,13 +33,13 @@ namespace container {
template <class PseudoReference> template <class PseudoReference>
struct operator_arrow_proxy struct operator_arrow_proxy
{ {
operator_arrow_proxy(const PseudoReference &px) BOOST_CONTAINER_FORCEINLINE operator_arrow_proxy(const PseudoReference &px)
: m_value(px) : m_value(px)
{} {}
typedef PseudoReference element_type; typedef PseudoReference element_type;
PseudoReference* operator->() const { return &m_value; } BOOST_CONTAINER_FORCEINLINE PseudoReference* operator->() const { return &m_value; }
mutable PseudoReference m_value; mutable PseudoReference m_value;
}; };
@@ -47,13 +47,13 @@ struct operator_arrow_proxy
template <class T> template <class T>
struct operator_arrow_proxy<T&> struct operator_arrow_proxy<T&>
{ {
operator_arrow_proxy(T &px) BOOST_CONTAINER_FORCEINLINE operator_arrow_proxy(T &px)
: m_value(px) : m_value(px)
{} {}
typedef T element_type; typedef T element_type;
T* operator->() const { return const_cast<T*>(&m_value); } BOOST_CONTAINER_FORCEINLINE T* operator->() const { return const_cast<T*>(&m_value); }
T &m_value; T &m_value;
}; };
@@ -69,29 +69,29 @@ class transform_iterator
, typename UnaryFunction::result_type> , typename UnaryFunction::result_type>
{ {
public: public:
explicit transform_iterator(const Iterator &it, const UnaryFunction &f = UnaryFunction()) BOOST_CONTAINER_FORCEINLINE explicit transform_iterator(const Iterator &it, const UnaryFunction &f = UnaryFunction())
: UnaryFunction(f), m_it(it) : UnaryFunction(f), m_it(it)
{} {}
explicit transform_iterator() BOOST_CONTAINER_FORCEINLINE explicit transform_iterator()
: UnaryFunction(), m_it() : UnaryFunction(), m_it()
{} {}
//Constructors //Constructors
transform_iterator& operator++() BOOST_CONTAINER_FORCEINLINE transform_iterator& operator++()
{ increment(); return *this; } { increment(); return *this; }
transform_iterator operator++(int) BOOST_CONTAINER_FORCEINLINE transform_iterator operator++(int)
{ {
transform_iterator result (*this); transform_iterator result (*this);
increment(); increment();
return result; return result;
} }
friend bool operator== (const transform_iterator& i, const transform_iterator& i2) BOOST_CONTAINER_FORCEINLINE friend bool operator== (const transform_iterator& i, const transform_iterator& i2)
{ return i.equal(i2); } { return i.equal(i2); }
friend bool operator!= (const transform_iterator& i, const transform_iterator& i2) BOOST_CONTAINER_FORCEINLINE friend bool operator!= (const transform_iterator& i, const transform_iterator& i2)
{ return !(i == i2); } { return !(i == i2); }
/* /*
@@ -104,69 +104,69 @@ class transform_iterator
friend bool operator>= (const transform_iterator& i, const transform_iterator& i2) friend bool operator>= (const transform_iterator& i, const transform_iterator& i2)
{ return !(i < i2); } { return !(i < i2); }
*/ */
friend typename Iterator::difference_type operator- (const transform_iterator& i, const transform_iterator& i2) BOOST_CONTAINER_FORCEINLINE friend typename Iterator::difference_type operator- (const transform_iterator& i, const transform_iterator& i2)
{ return i2.distance_to(i); } { return i2.distance_to(i); }
//Arithmetic //Arithmetic
transform_iterator& operator+=(typename Iterator::difference_type off) BOOST_CONTAINER_FORCEINLINE transform_iterator& operator+=(typename Iterator::difference_type off)
{ this->advance(off); return *this; } { this->advance(off); return *this; }
transform_iterator operator+(typename Iterator::difference_type off) const BOOST_CONTAINER_FORCEINLINE transform_iterator operator+(typename Iterator::difference_type off) const
{ {
transform_iterator other(*this); transform_iterator other(*this);
other.advance(off); other.advance(off);
return other; return other;
} }
friend transform_iterator operator+(typename Iterator::difference_type off, const transform_iterator& right) BOOST_CONTAINER_FORCEINLINE friend transform_iterator operator+(typename Iterator::difference_type off, const transform_iterator& right)
{ return right + off; } { return right + off; }
transform_iterator& operator-=(typename Iterator::difference_type off) BOOST_CONTAINER_FORCEINLINE transform_iterator& operator-=(typename Iterator::difference_type off)
{ this->advance(-off); return *this; } { this->advance(-off); return *this; }
transform_iterator operator-(typename Iterator::difference_type off) const BOOST_CONTAINER_FORCEINLINE transform_iterator operator-(typename Iterator::difference_type off) const
{ return *this + (-off); } { return *this + (-off); }
typename UnaryFunction::result_type operator*() const BOOST_CONTAINER_FORCEINLINE typename UnaryFunction::result_type operator*() const
{ return dereference(); } { return dereference(); }
operator_arrow_proxy<typename UnaryFunction::result_type> BOOST_CONTAINER_FORCEINLINE operator_arrow_proxy<typename UnaryFunction::result_type>
operator->() const operator->() const
{ return operator_arrow_proxy<typename UnaryFunction::result_type>(dereference()); } { return operator_arrow_proxy<typename UnaryFunction::result_type>(dereference()); }
Iterator & base() BOOST_CONTAINER_FORCEINLINE Iterator & base()
{ return m_it; } { return m_it; }
const Iterator & base() const BOOST_CONTAINER_FORCEINLINE const Iterator & base() const
{ return m_it; } { return m_it; }
private: private:
Iterator m_it; Iterator m_it;
void increment() BOOST_CONTAINER_FORCEINLINE void increment()
{ ++m_it; } { ++m_it; }
void decrement() BOOST_CONTAINER_FORCEINLINE void decrement()
{ --m_it; } { --m_it; }
bool equal(const transform_iterator &other) const BOOST_CONTAINER_FORCEINLINE bool equal(const transform_iterator &other) const
{ return m_it == other.m_it; } { return m_it == other.m_it; }
bool less(const transform_iterator &other) const BOOST_CONTAINER_FORCEINLINE bool less(const transform_iterator &other) const
{ return other.m_it < m_it; } { return other.m_it < m_it; }
typename UnaryFunction::result_type dereference() const BOOST_CONTAINER_FORCEINLINE typename UnaryFunction::result_type dereference() const
{ return UnaryFunction::operator()(*m_it); } { return UnaryFunction::operator()(*m_it); }
void advance(typename Iterator::difference_type n) BOOST_CONTAINER_FORCEINLINE void advance(typename Iterator::difference_type n)
{ boost::container::iterator_advance(m_it, n); } { boost::container::iterator_advance(m_it, n); }
typename Iterator::difference_type distance_to(const transform_iterator &other)const BOOST_CONTAINER_FORCEINLINE typename Iterator::difference_type distance_to(const transform_iterator &other)const
{ return boost::container::iterator_distance(other.m_it, m_it); } { return boost::container::iterator_distance(other.m_it, m_it); }
}; };
template <class Iterator, class UnaryFunc> template <class Iterator, class UnaryFunc>
transform_iterator<Iterator, UnaryFunc> BOOST_CONTAINER_FORCEINLINE transform_iterator<Iterator, UnaryFunc>
make_transform_iterator(Iterator it, UnaryFunc fun) make_transform_iterator(Iterator it, UnaryFunc fun)
{ {
return transform_iterator<Iterator, UnaryFunc>(it, fun); return transform_iterator<Iterator, UnaryFunc>(it, fun);