X-Git-Url: http://plrg.eecs.uci.edu/git/?p=folly.git;a=blobdiff_plain;f=folly%2FAtomicHashArray.h;h=654077b1945759d30a9aa08711c2027cf3d7df90;hp=7dce3a0eb158822898132a45ddce7cdab31ec6dc;hb=f6ed4a26c0f3e6ba12788206e54add9db18e4dd6;hpb=fbfe105970bcf88e8c123046f84bebdfe24f8801 diff --git a/folly/AtomicHashArray.h b/folly/AtomicHashArray.h index 7dce3a0e..654077b1 100644 --- a/folly/AtomicHashArray.h +++ b/folly/AtomicHashArray.h @@ -37,9 +37,9 @@ #include #include -#include #include #include +#include namespace folly { @@ -80,7 +80,7 @@ inline void checkLegalKeyIfKeyTImpl(KeyT key_in, KeyT emptyKey, DCHECK_NE(key_in, lockedKey); DCHECK_NE(key_in, erasedKey); } -} // namespace detail +} // namespace detail template < class KeyT, @@ -179,7 +179,6 @@ class AtomicHashArray : boost::noncopyable { uint32_t entryCountThreadCacheSize; size_t capacity; // if positive, overrides maxLoadFactor - public: // Cannot have constexpr ctor because some compilers rightly complain. Config() : emptyKey((KeyT)-1), lockedKey((KeyT)-2), @@ -210,17 +209,19 @@ class AtomicHashArray : boost::noncopyable { * * See folly/test/ArrayHashArrayTest.cpp for sample usage. */ - template + template < + typename LookupKeyT = key_type, + typename LookupHashFcn = hasher, + typename LookupEqualFcn = key_equal> iterator find(LookupKeyT k) { return iterator(this, findInternal(k).idx); } - template + template < + typename LookupKeyT = key_type, + typename LookupHashFcn = hasher, + typename LookupEqualFcn = key_equal> const_iterator find(LookupKeyT k) const { return const_cast(this)-> find(k); @@ -255,11 +256,12 @@ class AtomicHashArray : boost::noncopyable { * equal key is already present, this method converts 'key_in' to a key of * type KeyT using the provided LookupKeyToKeyFcn. */ - template + template < + typename LookupKeyT = key_type, + typename LookupHashFcn = hasher, + typename LookupEqualFcn = key_equal, + typename LookupKeyToKeyFcn = key_convert, + typename... ArgTs> std::pair emplace(LookupKeyT key_in, ArgTs&&... vCtorArgs) { SimpleRetT ret = insertInternal SimpleRetT insertInternal(LookupKeyT key, ArgTs&&... vCtorArgs); - template + template < + typename LookupKeyT = key_type, + typename LookupHashFcn = hasher, + typename LookupEqualFcn = key_equal> SimpleRetT findInternal(const LookupKeyT key); template