8#ifndef INCLUDED_BDLCC_STRIPEDUNORDEREDMAP
9#define INCLUDED_BDLCC_STRIPEDUNORDEREDMAP
404#include <bdlscm_version.h>
412#include <bsl_functional.h>
552 bsl::size_t
erase(
const KEY& key);
564 template <
class RANDOM_ITER>
565 bsl::size_t
eraseBulk(RANDOM_ITER first, RANDOM_ITER last);
570 bsl::size_t
eraseIf(
const KEY& key,
579 bsl::size_t
insert(
const KEY& key,
const VALUE& value);
603 template <
class RANDOM_ITER>
604 bsl::size_t
insertBulk(RANDOM_ITER first, RANDOM_ITER last);
610 void rehash(bsl::size_t numBuckets);
642 bsl::size_t
setValue(
const KEY& key,
const VALUE& value);
727 bsl::size_t
bucketSize(bsl::size_t index)
const;
743 bsl::size_t
getValue(VALUE *value,
const KEY& key)
const;
807 bsl::size_t
size()
const;
827template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
830 bsl::size_t numInitialBuckets,
831 bsl::size_t numStripes,
833: d_imp(numInitialBuckets, numStripes, basicAllocator)
837template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
841: d_imp(k_DEFAULT_NUM_BUCKETS, k_DEFAULT_NUM_STRIPES, basicAllocator)
846template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
853template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
857 d_imp.disableRehash();
860template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
864 d_imp.enableRehash();
867template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
871 return d_imp.eraseFirst(key);
874template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
875template <
class RANDOM_ITER>
883 return d_imp.eraseBulkFirst(first, last);
886template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
892 return d_imp.eraseFirstIf(key, predicate);
895template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
901 return d_imp.insertUnique(key, value);
904template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
913template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
914template <
class RANDOM_ITER>
922 return d_imp.insertBulkUnique(first, last);
925template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
930 d_imp.rehash(numBuckets);
933template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
939 return d_imp.setComputedValueFirst(key, visitor);
942template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
948 return d_imp.setValueFirst(key, value);
951template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
960template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
966 return d_imp.update(key, visitor);
969template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
974 return d_imp.visit(visitor);
977template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
983 return d_imp.visit(key, visitor);
987template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
991 return d_imp.bucketCount();
994template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
997 const KEY& key)
const
999 return d_imp.bucketIndex(key);
1002template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1005 bsl::size_t index)
const
1009 return d_imp.bucketSize(index);
1012template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1016 return d_imp.empty();
1019template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1023 return d_imp.equalFunction();
1026template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1030 const KEY& key)
const
1032 return d_imp.getValue(value, key);
1035template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1039 return d_imp.hashFunction();
1042template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1046 return d_imp.isRehashEnabled();
1049template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1053 return d_imp.loadFactor();
1056template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1060 return d_imp.maxLoadFactor();
1063template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1067 return d_imp.numStripes();
1070template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1075 return d_imp.visitReadOnly(visitor);
1078template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1084 return d_imp.visitReadOnly(key, visitor);
1087template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1091 return d_imp.size();
1096template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
1101 return d_imp.allocator();
1108template <
class KEY,
class VALUE,
class HASH,
class EQUAL>
Definition bdlcc_stripedunorderedcontainerimpl.h:542
Definition bdlcc_stripedunorderedmap.h:440
int update(const KEY &key, const VisitorFunction &visitor)
Definition bdlcc_stripedunorderedmap.h:962
bsl::function< bool(const VALUE &, const KEY &)> ReadOnlyVisitorFunction
Definition bdlcc_stripedunorderedmap.h:505
int visitReadOnly(const ReadOnlyVisitorFunction &visitor) const
Definition bdlcc_stripedunorderedmap.h:1072
bsl::function< bool(VALUE *, const KEY &)> VisitorFunction
Definition bdlcc_stripedunorderedmap.h:491
EQUAL equalFunction() const
Definition bdlcc_stripedunorderedmap.h:1021
bsl::size_t numStripes() const
Return the number of stripes in the hash.
Definition bdlcc_stripedunorderedmap.h:1065
void enableRehash()
Definition bdlcc_stripedunorderedmap.h:862
void rehash(bsl::size_t numBuckets)
Definition bdlcc_stripedunorderedmap.h:928
bsl::size_t bucketSize(bsl::size_t index) const
Definition bdlcc_stripedunorderedmap.h:1004
~StripedUnorderedMap()=default
Destroy this hash map.
bsl::size_t setValue(const KEY &key, const VALUE &value)
Definition bdlcc_stripedunorderedmap.h:944
bsl::pair< KEY, VALUE > KVType
Value type of a bulk insert entry.
Definition bdlcc_stripedunorderedmap.h:469
bool empty() const
Definition bdlcc_stripedunorderedmap.h:1014
bslma::Allocator * allocator() const
Definition bdlcc_stripedunorderedmap.h:1098
float maxLoadFactor() const
Definition bdlcc_stripedunorderedmap.h:1058
bsl::size_t insertBulk(RANDOM_ITER first, RANDOM_ITER last)
Definition bdlcc_stripedunorderedmap.h:916
int visit(const VisitorFunction &visitor)
Definition bdlcc_stripedunorderedmap.h:971
void clear()
Definition bdlcc_stripedunorderedmap.h:848
bsl::function< bool(const VALUE &)> EraseIfValuePredicate
Definition bdlcc_stripedunorderedmap.h:479
@ k_DEFAULT_NUM_BUCKETS
Definition bdlcc_stripedunorderedmap.h:462
@ k_DEFAULT_NUM_STRIPES
Definition bdlcc_stripedunorderedmap.h:463
void disableRehash()
Prevent future rehash until enableRehash is called.
Definition bdlcc_stripedunorderedmap.h:855
bsl::size_t erase(const KEY &key)
Definition bdlcc_stripedunorderedmap.h:869
bsl::size_t bucketIndex(const KEY &key) const
Definition bdlcc_stripedunorderedmap.h:996
bsl::size_t eraseIf(const KEY &key, const EraseIfValuePredicate &predicate)
Definition bdlcc_stripedunorderedmap.h:888
bsl::size_t bucketCount() const
Definition bdlcc_stripedunorderedmap.h:989
bsl::size_t getValue(VALUE *value, const KEY &key) const
Definition bdlcc_stripedunorderedmap.h:1028
bsl::size_t size() const
Return the current number of elements in this hash map.
Definition bdlcc_stripedunorderedmap.h:1089
bsl::size_t eraseBulk(RANDOM_ITER first, RANDOM_ITER last)
Definition bdlcc_stripedunorderedmap.h:877
bsl::size_t insert(const KEY &key, const VALUE &value)
Definition bdlcc_stripedunorderedmap.h:897
HASH hashFunction() const
Definition bdlcc_stripedunorderedmap.h:1037
bool isRehashEnabled() const
Return true if rehash is enabled, or false otherwise.
Definition bdlcc_stripedunorderedmap.h:1044
float loadFactor() const
Definition bdlcc_stripedunorderedmap.h:1051
int setComputedValue(const KEY &key, const VisitorFunction &visitor)
Definition bdlcc_stripedunorderedmap.h:935
Forward declaration.
Definition bslstl_function.h:946
Definition bslstl_pair.h:1280
Definition bslma_allocator.h:545
Definition bslmf_movableref.h:752
#define BSLS_ASSERT(X)
Definition bsls_assert.h:1976
#define BSLS_IDENT(str)
BSLS_IDENT() - insert string into .comment binary segment (if supported)
Definition bsls_ident.h:238
Definition bdlcc_boundedqueue.h:270
Definition baljsn_encoder_testtypes.h:76
Definition bslstl_equalto.h:316
Definition bslstl_hash.h:495
Definition bslma_usesbslmaallocator.h:344
static MovableRef< t_TYPE > move(t_TYPE &reference) BSLS_KEYWORD_NOEXCEPT
Definition bslmf_movableref.h:1067