X-Git-Url: http://plrg.eecs.uci.edu/git/?p=folly.git;a=blobdiff_plain;f=folly%2FAtomicHashMap-inl.h;h=ee3da5da01f8b526d56636a11f24f097718b5891;hp=e00312662e942b6d6c65eb6287d7191f2f6e4638;hb=3764b633f977129f8ee3bca60db7c5d1bb969eec;hpb=fa172175980b13569ba42008202a857af6e959dd diff --git a/folly/AtomicHashMap-inl.h b/folly/AtomicHashMap-inl.h index e0031266..ee3da5da 100644 --- a/folly/AtomicHashMap-inl.h +++ b/folly/AtomicHashMap-inl.h @@ -54,18 +54,20 @@ AtomicHashMap< } // emplace -- -template -template +template < + typename KeyT, + typename ValueT, + typename HashFcn, + typename EqualFcn, + typename Allocator, + typename ProbeFcn, + typename KeyConvertFcn> +template < + typename LookupKeyT, + typename LookupHashFcn, + typename LookupEqualFcn, + typename LookupKeyToKeyFcn, + typename... ArgTs> std::pair::iterator, bool> AtomicHashMap -template +template < + typename KeyT, + typename ValueT, + typename HashFcn, + typename EqualFcn, + typename Allocator, + typename ProbeFcn, + typename KeyConvertFcn> +template < + typename LookupKeyT, + typename LookupHashFcn, + typename LookupEqualFcn, + typename LookupKeyToKeyFcn, + typename... ArgTs> typename AtomicHashMap:: SimpleRetT @@ -176,13 +180,14 @@ insertInternal(LookupKeyT key, ArgTs&&... vCtorArgs) { } // find -- -template +template < + typename KeyT, + typename ValueT, + typename HashFcn, + typename EqualFcn, + typename Allocator, + typename ProbeFcn, + typename KeyConvertFcn> template typename AtomicHashMap:: @@ -198,13 +203,14 @@ AtomicHashMapmakeIter(ret.j)); } -template +template < + typename KeyT, + typename ValueT, + typename HashFcn, + typename EqualFcn, + typename Allocator, + typename ProbeFcn, + typename KeyConvertFcn> template typename AtomicHashMap::const_iterator @@ -217,13 +223,14 @@ find(LookupKeyT k) const { } // findInternal -- -template +template < + typename KeyT, + typename ValueT, + typename HashFcn, + typename EqualFcn, + typename Allocator, + typename ProbeFcn, + typename KeyConvertFcn> template typename AtomicHashMap:: @@ -256,13 +263,14 @@ AtomicHashMap +template < + typename KeyT, + typename ValueT, + typename HashFcn, + typename EqualFcn, + typename Allocator, + typename ProbeFcn, + typename KeyConvertFcn> typename AtomicHashMap:: SimpleRetT @@ -285,13 +293,14 @@ findAtInternal(uint32_t idx) const { } // erase -- -template +template < + typename KeyT, + typename ValueT, + typename HashFcn, + typename EqualFcn, + typename Allocator, + typename ProbeFcn, + typename KeyConvertFcn> typename AtomicHashMap:: size_type @@ -310,13 +319,14 @@ erase(const KeyT k) { } // capacity -- summation of capacities of all submaps -template +template < + typename KeyT, + typename ValueT, + typename HashFcn, + typename EqualFcn, + typename Allocator, + typename ProbeFcn, + typename KeyConvertFcn> size_t AtomicHashMap:: capacity() const { @@ -330,13 +340,14 @@ capacity() const { // spaceRemaining -- // number of new insertions until current submaps are all at max load -template +template < + typename KeyT, + typename ValueT, + typename HashFcn, + typename EqualFcn, + typename Allocator, + typename ProbeFcn, + typename KeyConvertFcn> size_t AtomicHashMap:: spaceRemaining() const { @@ -354,13 +365,14 @@ spaceRemaining() const { // clear -- Wipes all keys and values from primary map and destroys // all secondary maps. Not thread safe. -template +template < + typename KeyT, + typename ValueT, + typename HashFcn, + typename EqualFcn, + typename Allocator, + typename ProbeFcn, + typename KeyConvertFcn> void AtomicHashMap:: clear() { @@ -377,13 +389,14 @@ clear() { } // size -- -template +template < + typename KeyT, + typename ValueT, + typename HashFcn, + typename EqualFcn, + typename Allocator, + typename ProbeFcn, + typename KeyConvertFcn> size_t AtomicHashMap:: size() const { @@ -413,19 +426,22 @@ size() const { // 31 1 // 27-30 which subMap // 0-26 subMap offset (index_ret input) -template +template < + typename KeyT, + typename ValueT, + typename HashFcn, + typename EqualFcn, + typename Allocator, + typename ProbeFcn, + typename KeyConvertFcn> inline uint32_t AtomicHashMap:: encodeIndex(uint32_t subMap, uint32_t offset) { DCHECK_EQ(offset & kSecondaryMapBit_, 0); // offset can't be too big - if (subMap == 0) return offset; + if (subMap == 0) { + return offset; + } // Make sure subMap isn't too big DCHECK_EQ(subMap >> kNumSubMapBits_, 0); // Make sure subMap bits of offset are clear @@ -438,32 +454,31 @@ AtomicHashMap +template < + typename KeyT, + typename ValueT, + typename HashFcn, + typename EqualFcn, + typename Allocator, + typename ProbeFcn, + typename KeyConvertFcn> template struct AtomicHashMap:: ahm_iterator : boost::iterator_facade, IterVal, boost::forward_traversal_tag> { - explicit ahm_iterator() : ahm_(0) {} + explicit ahm_iterator() : ahm_(nullptr) {} // Conversion ctor for interoperability between const_iterator and // iterator. The enable_if<> magic keeps us well-behaved for // is_convertible<> (v. the iterator_facade documentation). - template - ahm_iterator(const ahm_iterator& o, - typename std::enable_if< - std::is_convertible::value >::type* = 0) - : ahm_(o.ahm_) - , subMap_(o.subMap_) - , subIt_(o.subIt_) - {} + template + ahm_iterator( + const ahm_iterator& o, + typename std::enable_if< + std::is_convertible::value>::type* = nullptr) + : ahm_(o.ahm_), subMap_(o.subMap_), subIt_(o.subIt_) {} /* * Returns the unique index that can be used for access directly