From adf4a5ac9d3604427c85dd92ec379e9d7a3a4a8a Mon Sep 17 00:00:00 2001 From: Yedidya Feldblum Date: Sun, 30 Jul 2017 19:40:25 -0700 Subject: [PATCH] Formatting for template parameters Summary: [Folly] Formatting for template parameters. Reviewed By: Orvid Differential Revision: D5525123 fbshipit-source-id: 4feb772300cfdd6ae3168fe9f59f5a951fb85d0e --- folly/AtomicHashArray-inl.h | 91 +++++++--- folly/AtomicHashArray.h | 32 ++-- folly/AtomicHashMap-inl.h | 217 ++++++++++++----------- folly/AtomicHashMap.h | 54 +++--- folly/AtomicUnorderedMap.h | 19 +- folly/FBString.h | 9 +- folly/MPMCQueue.h | 7 +- folly/Range.h | 5 +- folly/SharedMutex.h | 9 +- folly/Singleton.h | 7 +- folly/String.h | 16 +- folly/detail/MemoryIdler.h | 9 +- folly/experimental/BitVectorCoding.h | 18 +- folly/experimental/EliasFanoCoding.h | 18 +- folly/experimental/StringKeyedMap.h | 7 +- folly/experimental/StringKeyedSet.h | 5 +- folly/experimental/TupleOps.h | 13 +- folly/experimental/test/TupleOpsTest.cpp | 10 +- folly/futures/detail/Core.h | 7 +- folly/futures/helpers.h | 19 +- folly/test/AtomicHashArrayTest.cpp | 9 +- folly/test/AtomicUnorderedMapTest.cpp | 11 +- folly/test/MPMCQueueTest.cpp | 7 +- 23 files changed, 351 insertions(+), 248 deletions(-) diff --git a/folly/AtomicHashArray-inl.h b/folly/AtomicHashArray-inl.h index ce857a92..5b818379 100644 --- a/folly/AtomicHashArray-inl.h +++ b/folly/AtomicHashArray-inl.h @@ -26,8 +26,14 @@ 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:: diff --git a/folly/AtomicHashArray.h b/folly/AtomicHashArray.h index 3e151afc..897bf8a8 100644 --- a/folly/AtomicHashArray.h +++ b/folly/AtomicHashArray.h @@ -209,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); @@ -254,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 diff --git a/folly/AtomicHashMap-inl.h b/folly/AtomicHashMap-inl.h index 25ca05e1..2dc55255 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,13 +426,14 @@ 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:: @@ -438,13 +452,14 @@ AtomicHashMap +template < + typename KeyT, + typename ValueT, + typename HashFcn, + typename EqualFcn, + typename Allocator, + typename ProbeFcn, + typename KeyConvertFcn> template struct AtomicHashMap:: diff --git a/folly/AtomicHashMap.h b/folly/AtomicHashMap.h index be683e58..af8aa633 100644 --- a/folly/AtomicHashMap.h +++ b/folly/AtomicHashMap.h @@ -254,11 +254,12 @@ typedef AtomicHashArray + template < + typename LookupKeyT = key_type, + typename LookupHashFcn = hasher, + typename LookupEqualFcn = key_equal, + typename LookupKeyToKeyFcn = key_convert, + typename... ArgTs> std::pair emplace(LookupKeyT k, ArgTs&&... vCtorArg); /* @@ -277,14 +278,16 @@ typedef AtomicHashArray + template < + typename LookupKeyT = key_type, + typename LookupHashFcn = hasher, + typename LookupEqualFcn = key_equal> iterator find(LookupKeyT k); - template + template < + typename LookupKeyT = key_type, + typename LookupHashFcn = hasher, + typename LookupEqualFcn = key_equal> const_iterator find(LookupKeyT k) const; /* @@ -437,16 +440,18 @@ typedef AtomicHashArray + template < + typename LookupKeyT = key_type, + typename LookupHashFcn = hasher, + typename LookupEqualFcn = key_equal, + typename LookupKeyToKeyFcn = key_convert, + typename... ArgTs> SimpleRetT insertInternal(LookupKeyT key, ArgTs&&... value); - template + template < + typename LookupKeyT = key_type, + typename LookupHashFcn = hasher, + typename LookupEqualFcn = key_equal> SimpleRetT findInternal(const LookupKeyT k) const; SimpleRetT findAtInternal(uint32_t idx) const; @@ -464,11 +469,12 @@ typedef AtomicHashArray, - class EqualFcn = std::equal_to, - class Allocator = std::allocator> +template < + class KeyT, + class ValueT, + class HashFcn = std::hash, + class EqualFcn = std::equal_to, + class Allocator = std::allocator> using QuadraticProbingAtomicHashMap = AtomicHashMap, - typename KeyEqual = std::equal_to, - bool SkipKeyValueDeletion = - (boost::has_trivial_destructor::value && - boost::has_trivial_destructor::value), - template class Atom = std::atomic, - typename Allocator = folly::detail::MMapAlloc> +template < + typename Key, + typename Value, + typename Hash = std::hash, + typename KeyEqual = std::equal_to, + bool SkipKeyValueDeletion = + (boost::has_trivial_destructor::value && + boost::has_trivial_destructor::value), + template class Atom = std::atomic, + typename Allocator = folly::detail::MMapAlloc> using AtomicUnorderedInsertMap64 = AtomicUnorderedInsertMap #else -template , - class A = std::allocator, - class Storage = fbstring_core > +template < + typename E, + class T = std::char_traits, + class A = std::allocator, + class Storage = fbstring_core> #endif class basic_fbstring { static void enforce( diff --git a/folly/MPMCQueue.h b/folly/MPMCQueue.h index 03c85e47..b3564126 100644 --- a/folly/MPMCQueue.h +++ b/folly/MPMCQueue.h @@ -1307,9 +1307,10 @@ struct SingleElementQueue { } /// enqueue using in-place noexcept construction - template ::value>::type> + template < + typename... Args, + typename = typename std::enable_if< + std::is_nothrow_constructible::value>::type> void enqueue(const uint32_t turn, Atom& spinCutoff, const bool updateSpinCutoff, diff --git a/folly/Range.h b/folly/Range.h index aaf30af7..b6e428ea 100644 --- a/folly/Range.h +++ b/folly/Range.h @@ -69,8 +69,9 @@ template class Range; * as Boyer-Moore. On the upside, it does not do any upfront * preprocessing and does not allocate memory. */ -template ::value_type>> +template < + class Iter, + class Comp = std::equal_to::value_type>> inline size_t qfind(const Range & haystack, const Range & needle, Comp eq = Comp()); diff --git a/folly/SharedMutex.h b/folly/SharedMutex.h index 163382ab..0968f5ba 100644 --- a/folly/SharedMutex.h +++ b/folly/SharedMutex.h @@ -236,10 +236,11 @@ struct SharedMutexToken { uint16_t slot_; }; -template class Atom = std::atomic, - bool BlockImmediately = false> +template < + bool ReaderPriority, + typename Tag_ = void, + template class Atom = std::atomic, + bool BlockImmediately = false> class SharedMutexImpl { public: static constexpr bool kReaderPriority = ReaderPriority; diff --git a/folly/Singleton.h b/folly/Singleton.h index 64b6f375..975bab57 100644 --- a/folly/Singleton.h +++ b/folly/Singleton.h @@ -532,9 +532,10 @@ class SingletonVault { // singletons. Create instances of this class in the global scope of // type Singleton to register your singleton for later access via // Singleton::try_get(). -template +template < + typename T, + typename Tag = detail::DefaultTag, + typename VaultTag = detail::DefaultTag /* for testing */> class Singleton { public: typedef std::function CreateFunc; diff --git a/folly/String.h b/folly/String.h index 5570b7b9..53b54f42 100644 --- a/folly/String.h +++ b/folly/String.h @@ -561,11 +561,12 @@ std::string join(const Delim& delimiter, return output; } -template ::iterator_category, - std::random_access_iterator_tag>::value>::type* = nullptr> +template < + class Delim, + class Iterator, + typename std::enable_if::iterator_category, + std::random_access_iterator_tag>::value>::type* = nullptr> std::string join(const Delim& delimiter, Iterator begin, Iterator end) { std::string output; join(delimiter, begin, end, output); @@ -625,8 +626,9 @@ inline void toLowerAscii(MutableStringPiece str) { toLowerAscii(str.begin(), str.size()); } -template >> +template < + class Iterator = const char*, + class Base = folly::Range>> class UTF8Range : public Base { public: /* implicit */ UTF8Range(const folly::Range baseRange) diff --git a/folly/detail/MemoryIdler.h b/folly/detail/MemoryIdler.h index c7a35297..fcbde002 100644 --- a/folly/detail/MemoryIdler.h +++ b/folly/detail/MemoryIdler.h @@ -110,14 +110,15 @@ struct MemoryIdler { /// (1 + timeoutVariationFraction), to smooth out the behavior in a /// system with bursty requests. The default is to wait up to 50% /// extra, so on average 25% extra - template