X-Git-Url: http://plrg.eecs.uci.edu/git/?p=folly.git;a=blobdiff_plain;f=folly%2FAtomicHashArray-inl.h;h=4333e5a0eb03135c05ded6ad1488a617e410100f;hp=ce857a92d31bbb11c36fa1cf555330248e2f9b73;hb=015306906e2811cc0cf3dab0c4142d45434a2801;hpb=fbfe105970bcf88e8c123046f84bebdfe24f8801 diff --git a/folly/AtomicHashArray-inl.h b/folly/AtomicHashArray-inl.h index ce857a92..4333e5a0 100644 --- a/folly/AtomicHashArray-inl.h +++ b/folly/AtomicHashArray-inl.h @@ -20,14 +20,20 @@ #include -#include #include +#include namespace folly { // AtomicHashArray private constructor -- -template +template < + class KeyT, + class ValueT, + class HashFcn, + class EqualFcn, + class Allocator, + class ProbeFcn, + class KeyConvertFcn> AtomicHashArray:: AtomicHashArray(size_t capacity, KeyT emptyKey, KeyT lockedKey, @@ -46,8 +52,14 @@ AtomicHashArray(size_t capacity, KeyT emptyKey, KeyT lockedKey, * of key and returns true, or if key does not exist returns false and * ret.index is set to capacity_. */ -template +template < + class KeyT, + class ValueT, + class HashFcn, + class EqualFcn, + class Allocator, + class ProbeFcn, + class KeyConvertFcn> template typename AtomicHashArray::SimpleRetT @@ -88,13 +100,20 @@ findInternal(const LookupKeyT key_in) { * this will be the previously inserted value, and if the map is full it is * default. */ -template -template +template < + class KeyT, + class ValueT, + class HashFcn, + class EqualFcn, + class Allocator, + class ProbeFcn, + class KeyConvertFcn> +template < + typename LookupKeyT, + typename LookupHashFcn, + typename LookupEqualFcn, + typename LookupKeyToKeyFcn, + typename... ArgTs> typename AtomicHashArray::SimpleRetT AtomicHashArray +template < + class KeyT, + class ValueT, + class HashFcn, + class EqualFcn, + class Allocator, + class ProbeFcn, + class KeyConvertFcn> size_t AtomicHashArray:: erase(KeyT key_in) { @@ -271,8 +296,14 @@ erase(KeyT key_in) { } } -template +template < + class KeyT, + class ValueT, + class HashFcn, + class EqualFcn, + class Allocator, + class ProbeFcn, + class KeyConvertFcn> typename AtomicHashArray::SmartPtr AtomicHashArray +template < + class KeyT, + class ValueT, + class HashFcn, + class EqualFcn, + class Allocator, + class ProbeFcn, + class KeyConvertFcn> void AtomicHashArray:: destroy(AtomicHashArray* p) { @@ -334,8 +371,14 @@ destroy(AtomicHashArray* p) { } // clear -- clears all keys and values in the map and resets all counters -template +template < + class KeyT, + class ValueT, + class HashFcn, + class EqualFcn, + class Allocator, + class ProbeFcn, + class KeyConvertFcn> void AtomicHashArray:: clear() { @@ -355,8 +398,14 @@ clear() { // Iterator implementation -template +template < + class KeyT, + class ValueT, + class HashFcn, + class EqualFcn, + class Allocator, + class ProbeFcn, + class KeyConvertFcn> template struct AtomicHashArray:: @@ -365,18 +414,17 @@ struct AtomicHashArray { - explicit aha_iterator() : aha_(0) {} + explicit aha_iterator() : aha_(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 - aha_iterator(const aha_iterator& o, - typename std::enable_if< - std::is_convertible::value >::type* = 0) - : aha_(o.aha_) - , offset_(o.offset_) - {} + aha_iterator( + const aha_iterator& o, + typename std::enable_if< + std::is_convertible::value>::type* = nullptr) + : aha_(o.aha_), offset_(o.offset_) {} explicit aha_iterator(ContT* array, size_t offset) : aha_(array)