8#ifndef INCLUDED_BSLSTL_HASHTABLEBUCKETITERATOR
9#define INCLUDED_BSLSTL_HASHTABLEBUCKETITERATOR
145#include <bslscm_version.h>
159#ifndef BDE_DONT_ALLOW_TRANSITIVE_INCLUDES
181#if defined(BSLS_LIBRARYFEATURES_STDCPP_LIBCSTD)
186template <
class VALUE_TYPE,
class DIFFERENCE_TYPE>
187class HashTableBucketIterator
188:
public std::iterator<std::forward_iterator_tag, VALUE_TYPE> {
190template <
class VALUE_TYPE,
class DIFFERENCE_TYPE>
315template <
class VALUE_TYPE,
class DIFFERENCE_TYPE>
319template <
class VALUE_TYPE,
class DIFFERENCE_TYPE>
323template <
class VALUE_TYPE,
class DIFFERENCE_TYPE>
327template <
class VALUE_TYPE,
class DIFFERENCE_TYPE>
337template <
class VALUE_TYPE,
class DIFFERENCE_TYPE>
341template <
class VALUE_TYPE,
class DIFFERENCE_TYPE>
345template <
class VALUE_TYPE,
class DIFFERENCE_TYPE>
349template <
class VALUE_TYPE,
class DIFFERENCE_TYPE>
359template <
class VALUE_TYPE,
class DIFFERENCE_TYPE>
373template <
class VALUE_TYPE,
class DIFFERENCE_TYPE>
382template <
class VALUE_TYPE,
class DIFFERENCE_TYPE>
386: d_node_p(bucket ? bucket->first() : 0)
391template <
class VALUE_TYPE,
class DIFFERENCE_TYPE>
401template <
class VALUE_TYPE,
class DIFFERENCE_TYPE>
405: d_node_p(original.node())
406, d_bucket_p(original.bucket())
411template <
class VALUE_TYPE,
class DIFFERENCE_TYPE>
417 d_node_p = rhs.
node();
418 d_bucket_p = rhs.
bucket();
422template <
class VALUE_TYPE,
class DIFFERENCE_TYPE>
431 if (this->d_bucket_p->last() == this->d_node_p) {
435 this->d_node_p = this->d_node_p->nextLink();
439template <
class VALUE_TYPE,
class DIFFERENCE_TYPE>
441HashTableBucketIterator<VALUE_TYPE, DIFFERENCE_TYPE>&
453template <
class VALUE_TYPE,
class DIFFERENCE_TYPE>
466template <
class VALUE_TYPE,
class DIFFERENCE_TYPE>
480template <
class VALUE_TYPE,
class DIFFERENCE_TYPE>
485 return this->d_node_p;
488template <
class VALUE_TYPE,
class DIFFERENCE_TYPE>
493 return this->d_bucket_p;
496template <
class VALUE_TYPE,
class DIFFERENCE_TYPE>
504 return lhs.node() == rhs.node();
507template <
class VALUE_TYPE,
class DIFFERENCE_TYPE>
515 return lhs.node() == rhs.node();
518template <
class VALUE_TYPE,
class DIFFERENCE_TYPE>
526 return lhs.node() == rhs.node();
529template <
class VALUE_TYPE,
class DIFFERENCE_TYPE>
537 return lhs.node() == rhs.node();
540template <
class VALUE_TYPE,
class DIFFERENCE_TYPE>
548 return lhs.node() != rhs.node();
551template <
class VALUE_TYPE,
class DIFFERENCE_TYPE>
559 return lhs.node() != rhs.node();
562template <
class VALUE_TYPE,
class DIFFERENCE_TYPE>
570 return lhs.node() != rhs.node();
573template <
class VALUE_TYPE,
class DIFFERENCE_TYPE>
581 return lhs.node() != rhs.node();
584template <
class VALUE_TYPE,
class DIFFERENCE_TYPE>
586HashTableBucketIterator<VALUE_TYPE, DIFFERENCE_TYPE>
Definition bslalg_bidirectionallink.h:346
Definition bslalg_bidirectionalnode.h:357
Definition bslstl_hashtablebucketiterator.h:191
bslalg::BidirectionalLink * node() const
Definition bslstl_hashtablebucketiterator.h:483
NonConstType value_type
Definition bslstl_hashtablebucketiterator.h:201
reference operator*() const
Definition bslstl_hashtablebucketiterator.h:458
HashTableBucketIterator()
Definition bslstl_hashtablebucketiterator.h:376
VALUE_TYPE * pointer
Definition bslstl_hashtablebucketiterator.h:203
const bslalg::HashTableBucket * bucket() const
Definition bslstl_hashtablebucketiterator.h:491
~HashTableBucketIterator()=default
pointer operator->() const
Definition bslstl_hashtablebucketiterator.h:471
HashTableBucketIterator(const HashTableBucketIterator &original)=default
std::forward_iterator_tag iterator_category
Standard iterator defined types [24.4.2].
Definition bslstl_hashtablebucketiterator.h:207
DIFFERENCE_TYPE difference_type
Definition bslstl_hashtablebucketiterator.h:202
HashTableBucketIterator & operator=(const HashTableBucketIterator &) HashTableBucketIterator &operator
Definition bslstl_hashtablebucketiterator.h:414
HashTableBucketIterator & operator++()
Definition bslstl_hashtablebucketiterator.h:443
VALUE_TYPE & reference
Definition bslstl_hashtablebucketiterator.h:204
#define BSLS_ASSERT_SAFE(X)
Definition bsls_assert.h:1762
#define BSLS_IDENT(str)
Definition bsls_ident.h:195
Definition bslstl_algorithm.h:82
BidirectionalIterator< T, ITER_IMP, TAG_TYPE > operator++(BidirectionalIterator< T, ITER_IMP, TAG_TYPE > &iter, int)
remove_const< typenameremove_volatile< t_TYPE >::type >::type type
Definition bslmf_removecv.h:126
Definition bslalg_hashtablebucket.h:297
static TYPE * addressOf(TYPE &obj)
Definition bsls_util.h:305