diff --git a/include/boost/intrusive/detail/hashtable_node.hpp b/include/boost/intrusive/detail/hashtable_node.hpp index 0471ebe..8f8718e 100644 --- a/include/boost/intrusive/detail/hashtable_node.hpp +++ b/include/boost/intrusive/detail/hashtable_node.hpp @@ -40,23 +40,22 @@ template struct bucket_impl : public Slist { typedef Slist slist_type; - bucket_impl() + BOOST_INTRUSIVE_FORCEINLINE bucket_impl() {} - bucket_impl(const bucket_impl &) + BOOST_INTRUSIVE_FORCEINLINE bucket_impl(const bucket_impl &) {} - ~bucket_impl() + BOOST_INTRUSIVE_FORCEINLINE ~bucket_impl() { //This bucket is still being used! BOOST_INTRUSIVE_INVARIANT_ASSERT(Slist::empty()); } - bucket_impl &operator=(const bucket_impl&) + BOOST_INTRUSIVE_FORCEINLINE bucket_impl &operator=(const bucket_impl&) { //This bucket is still in use! BOOST_INTRUSIVE_INVARIANT_ASSERT(Slist::empty()); - //Slist::clear(); return *this; } }; @@ -77,25 +76,25 @@ struct bucket_traits_impl typedef typename Slist::size_type size_type; /// @endcond - bucket_traits_impl(bucket_ptr buckets, size_type len) + BOOST_INTRUSIVE_FORCEINLINE bucket_traits_impl(bucket_ptr buckets, size_type len) : buckets_(buckets), buckets_len_(len) {} - bucket_traits_impl(const bucket_traits_impl &x) + BOOST_INTRUSIVE_FORCEINLINE bucket_traits_impl(const bucket_traits_impl &x) : buckets_(x.buckets_), buckets_len_(x.buckets_len_) {} - bucket_traits_impl(BOOST_RV_REF(bucket_traits_impl) x) + BOOST_INTRUSIVE_FORCEINLINE bucket_traits_impl(BOOST_RV_REF(bucket_traits_impl) x) : buckets_(x.buckets_), buckets_len_(x.buckets_len_) { x.buckets_ = bucket_ptr(); x.buckets_len_ = 0; } - bucket_traits_impl& operator=(BOOST_RV_REF(bucket_traits_impl) x) + BOOST_INTRUSIVE_FORCEINLINE bucket_traits_impl& operator=(BOOST_RV_REF(bucket_traits_impl) x) { buckets_ = x.buckets_; buckets_len_ = x.buckets_len_; x.buckets_ = bucket_ptr(); x.buckets_len_ = 0; return *this; } - bucket_traits_impl& operator=(BOOST_COPY_ASSIGN_REF(bucket_traits_impl) x) + BOOST_INTRUSIVE_FORCEINLINE bucket_traits_impl& operator=(BOOST_COPY_ASSIGN_REF(bucket_traits_impl) x) { buckets_ = x.buckets_; buckets_len_ = x.buckets_len_; return *this; } @@ -182,7 +181,7 @@ class hashtable_iterator < const BucketValueTraits >::type const_bucketvaltraits_ptr; typedef typename slist_impl::size_type size_type; - static node_ptr downcast_bucket(typename bucket_type::node_ptr p) + BOOST_INTRUSIVE_FORCEINLINE static node_ptr downcast_bucket(typename bucket_type::node_ptr p) { return pointer_traits:: pointer_to(static_cast(*p)); @@ -199,17 +198,17 @@ class hashtable_iterator , traitsptr_ (cont ? pointer_traits::pointer_to(*cont) : const_bucketvaltraits_ptr() ) {} - hashtable_iterator(const hashtable_iterator &other) + BOOST_INTRUSIVE_FORCEINLINE hashtable_iterator(const hashtable_iterator &other) : slist_it_(other.slist_it()), traitsptr_(other.get_bucket_value_traits()) {} BOOST_INTRUSIVE_FORCEINLINE const siterator &slist_it() const { return slist_it_; } - hashtable_iterator unconst() const + BOOST_INTRUSIVE_FORCEINLINE hashtable_iterator unconst() const { return hashtable_iterator(this->slist_it(), this->get_bucket_value_traits()); } - hashtable_iterator& operator++() + BOOST_INTRUSIVE_FORCEINLINE hashtable_iterator& operator++() { this->increment(); return *this; } hashtable_iterator operator++(int) diff --git a/include/boost/intrusive/unordered_set.hpp b/include/boost/intrusive/unordered_set.hpp index 1968fa2..cf60dc4 100644 --- a/include/boost/intrusive/unordered_set.hpp +++ b/include/boost/intrusive/unordered_set.hpp @@ -120,7 +120,7 @@ class unordered_set_impl public: //! @copydoc ::boost::intrusive::hashtable::hashtable(const bucket_traits &,const hasher &,const key_equal &,const value_traits &) - explicit unordered_set_impl( const bucket_traits &b_traits + BOOST_INTRUSIVE_FORCEINLINE explicit unordered_set_impl( const bucket_traits &b_traits , const hasher & hash_func = hasher() , const key_equal &equal_func = key_equal() , const value_traits &v_traits = value_traits()) @@ -129,7 +129,7 @@ class unordered_set_impl //! @copydoc ::boost::intrusive::hashtable::hashtable(bool,Iterator,Iterator,const bucket_traits &,const hasher &,const key_equal &,const value_traits &) template - unordered_set_impl( Iterator b + BOOST_INTRUSIVE_FORCEINLINE unordered_set_impl( Iterator b , Iterator e , const bucket_traits &b_traits , const hasher & hash_func = hasher() @@ -139,12 +139,12 @@ class unordered_set_impl {} //! @copydoc ::boost::intrusive::hashtable::hashtable(hashtable&&) - unordered_set_impl(BOOST_RV_REF(unordered_set_impl) x) + BOOST_INTRUSIVE_FORCEINLINE unordered_set_impl(BOOST_RV_REF(unordered_set_impl) x) : table_type(BOOST_MOVE_BASE(table_type, x)) {} //! @copydoc ::boost::intrusive::hashtable::operator=(hashtable&&) - unordered_set_impl& operator=(BOOST_RV_REF(unordered_set_impl) x) + BOOST_INTRUSIVE_FORCEINLINE unordered_set_impl& operator=(BOOST_RV_REF(unordered_set_impl) x) { return static_cast(table_type::operator=(BOOST_MOVE_BASE(table_type, x))); } #ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED @@ -196,30 +196,30 @@ class unordered_set_impl //! @copydoc ::boost::intrusive::hashtable::clone_from(hashtable&&,Cloner,Disposer) template - void clone_from(BOOST_RV_REF(unordered_set_impl) src, Cloner cloner, Disposer disposer) + BOOST_INTRUSIVE_FORCEINLINE void clone_from(BOOST_RV_REF(unordered_set_impl) src, Cloner cloner, Disposer disposer) { table_type::clone_from(BOOST_MOVE_BASE(table_type, src), cloner, disposer); } //! @copydoc ::boost::intrusive::hashtable::insert_unique(reference) - std::pair insert(reference value) + BOOST_INTRUSIVE_FORCEINLINE std::pair insert(reference value) { return table_type::insert_unique(value); } //! @copydoc ::boost::intrusive::hashtable::insert_unique(Iterator,Iterator) template - void insert(Iterator b, Iterator e) + BOOST_INTRUSIVE_FORCEINLINE void insert(Iterator b, Iterator e) { table_type::insert_unique(b, e); } //! @copydoc ::boost::intrusive::hashtable::insert_unique_check(const key_type&,insert_commit_data&) - std::pair insert_check(const key_type &key, insert_commit_data &commit_data) + BOOST_INTRUSIVE_FORCEINLINE std::pair insert_check(const key_type &key, insert_commit_data &commit_data) { return table_type::insert_unique_check(key, commit_data); } //! @copydoc ::boost::intrusive::hashtable::insert_unique_check(const KeyType&,KeyHasher,KeyEqual,insert_commit_data&) template - std::pair insert_check + BOOST_INTRUSIVE_FORCEINLINE std::pair insert_check (const KeyType &key, KeyHasher hasher, KeyEqual key_value_equal, insert_commit_data &commit_data) { return table_type::insert_unique_check(key, hasher, key_value_equal, commit_data); } //! @copydoc ::boost::intrusive::hashtable::insert_unique_commit - iterator insert_commit(reference value, const insert_commit_data &commit_data) + BOOST_INTRUSIVE_FORCEINLINE iterator insert_commit(reference value, const insert_commit_data &commit_data) { return table_type::insert_unique_commit(value, commit_data); } #ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED @@ -506,8 +506,8 @@ class unordered_set {} template - unordered_set ( Iterator b - , Iterator e + BOOST_INTRUSIVE_FORCEINLINE unordered_set + ( Iterator b, Iterator e , const bucket_traits &b_traits , const hasher & hash_func = hasher() , const key_equal &equal_func = key_equal() @@ -515,19 +515,19 @@ class unordered_set : Base(b, e, b_traits, hash_func, equal_func, v_traits) {} - unordered_set(BOOST_RV_REF(unordered_set) x) + BOOST_INTRUSIVE_FORCEINLINE unordered_set(BOOST_RV_REF(unordered_set) x) : Base(BOOST_MOVE_BASE(Base, x)) {} - unordered_set& operator=(BOOST_RV_REF(unordered_set) x) + BOOST_INTRUSIVE_FORCEINLINE unordered_set& operator=(BOOST_RV_REF(unordered_set) x) { return static_cast(this->Base::operator=(BOOST_MOVE_BASE(Base, x))); } template - void clone_from(const unordered_set &src, Cloner cloner, Disposer disposer) + BOOST_INTRUSIVE_FORCEINLINE void clone_from(const unordered_set &src, Cloner cloner, Disposer disposer) { Base::clone_from(src, cloner, disposer); } template - void clone_from(BOOST_RV_REF(unordered_set) src, Cloner cloner, Disposer disposer) + BOOST_INTRUSIVE_FORCEINLINE void clone_from(BOOST_RV_REF(unordered_set) src, Cloner cloner, Disposer disposer) { Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); } }; @@ -616,7 +616,7 @@ class unordered_multiset_impl public: //! @copydoc ::boost::intrusive::hashtable::hashtable(const bucket_traits &,const hasher &,const key_equal &,const value_traits &) - explicit unordered_multiset_impl ( const bucket_traits &b_traits + BOOST_INTRUSIVE_FORCEINLINE explicit unordered_multiset_impl ( const bucket_traits &b_traits , const hasher & hash_func = hasher() , const key_equal &equal_func = key_equal() , const value_traits &v_traits = value_traits()) @@ -625,7 +625,7 @@ class unordered_multiset_impl //! @copydoc ::boost::intrusive::hashtable::hashtable(bool,Iterator,Iterator,const bucket_traits &,const hasher &,const key_equal &,const value_traits &) template - unordered_multiset_impl ( Iterator b + BOOST_INTRUSIVE_FORCEINLINE unordered_multiset_impl ( Iterator b , Iterator e , const bucket_traits &b_traits , const hasher & hash_func = hasher() @@ -636,13 +636,13 @@ class unordered_multiset_impl //! Effects: to-do //! - unordered_multiset_impl(BOOST_RV_REF(unordered_multiset_impl) x) + BOOST_INTRUSIVE_FORCEINLINE unordered_multiset_impl(BOOST_RV_REF(unordered_multiset_impl) x) : table_type(BOOST_MOVE_BASE(table_type, x)) {} //! Effects: to-do //! - unordered_multiset_impl& operator=(BOOST_RV_REF(unordered_multiset_impl) x) + BOOST_INTRUSIVE_FORCEINLINE unordered_multiset_impl& operator=(BOOST_RV_REF(unordered_multiset_impl) x) { return static_cast(table_type::operator=(BOOST_MOVE_BASE(table_type, x))); } #ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED @@ -695,16 +695,16 @@ class unordered_multiset_impl //! @copydoc ::boost::intrusive::hashtable::clone_from(hashtable&&,Cloner,Disposer) template - void clone_from(BOOST_RV_REF(unordered_multiset_impl) src, Cloner cloner, Disposer disposer) + BOOST_INTRUSIVE_FORCEINLINE void clone_from(BOOST_RV_REF(unordered_multiset_impl) src, Cloner cloner, Disposer disposer) { table_type::clone_from(BOOST_MOVE_BASE(table_type, src), cloner, disposer); } //! @copydoc ::boost::intrusive::hashtable::insert_equal(reference) - iterator insert(reference value) + BOOST_INTRUSIVE_FORCEINLINE iterator insert(reference value) { return table_type::insert_equal(value); } //! @copydoc ::boost::intrusive::hashtable::insert_equal(Iterator,Iterator) template - void insert(Iterator b, Iterator e) + BOOST_INTRUSIVE_FORCEINLINE void insert(Iterator b, Iterator e) { table_type::insert_equal(b, e); } #ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED @@ -954,7 +954,7 @@ class unordered_multiset : Base(b_traits, hash_func, equal_func, v_traits) {} - template + template BOOST_INTRUSIVE_FORCEINLINE unordered_multiset( Iterator b , Iterator e , const bucket_traits &b_traits @@ -964,19 +964,19 @@ class unordered_multiset : Base(b, e, b_traits, hash_func, equal_func, v_traits) {} - unordered_multiset(BOOST_RV_REF(unordered_multiset) x) + BOOST_INTRUSIVE_FORCEINLINE unordered_multiset(BOOST_RV_REF(unordered_multiset) x) : Base(BOOST_MOVE_BASE(Base, x)) {} - unordered_multiset& operator=(BOOST_RV_REF(unordered_multiset) x) + BOOST_INTRUSIVE_FORCEINLINE unordered_multiset& operator=(BOOST_RV_REF(unordered_multiset) x) { return static_cast(this->Base::operator=(BOOST_MOVE_BASE(Base, x))); } template - void clone_from(const unordered_multiset &src, Cloner cloner, Disposer disposer) + BOOST_INTRUSIVE_FORCEINLINE void clone_from(const unordered_multiset &src, Cloner cloner, Disposer disposer) { Base::clone_from(src, cloner, disposer); } template - void clone_from(BOOST_RV_REF(unordered_multiset) src, Cloner cloner, Disposer disposer) + BOOST_INTRUSIVE_FORCEINLINE void clone_from(BOOST_RV_REF(unordered_multiset) src, Cloner cloner, Disposer disposer) { Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); } };