Resolve the circular dependency between ThreadLocalDetail and ThreadLocal
authorChristopher Dykes <cdykes@fb.com>
Mon, 26 Jun 2017 18:42:42 +0000 (11:42 -0700)
committerFacebook Github Bot <facebook-github-bot@users.noreply.github.com>
Mon, 26 Jun 2017 18:50:39 +0000 (11:50 -0700)
Summary: There was a circular dependency between the `detail/ThreadLocalDetail.(cpp|h)` files and `ThreadLocal.(cpp|h)`, this resolves that circular dependency by moving a couple of declarations into the detail file.

Reviewed By: yfeldblum

Differential Revision: D5318875

fbshipit-source-id: 61de7c4b3ffa30f9eb11bd97e0493e9de12c5804

folly/ThreadLocal.h
folly/detail/ThreadLocalDetail.cpp
folly/detail/ThreadLocalDetail.h

index 3565c210a25e0279bd6d1ce614cf684a8fe3852e..d67f3b82ee4bd2de5c1e7d6f9765f8bb7194149e 100644 (file)
 #include <folly/Portability.h>
 #include <folly/ScopeGuard.h>
 #include <folly/SharedMutex.h>
+#include <folly/detail/ThreadLocalDetail.h>
 #include <type_traits>
 #include <utility>
 
-namespace folly {
-enum class TLPDestructionMode {
-  THIS_THREAD,
-  ALL_THREADS
-};
-struct AccessModeStrict {};
-}  // namespace
-
-#include <folly/detail/ThreadLocalDetail.h>
-
 namespace folly {
 
 template <class T, class Tag, class AccessMode>
index 67eb056534042d2b0405dc74ee1f8057704d8e52..4c0364618cb7c39be7da73e1b80ece6af63579dd 100644 (file)
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-#include <folly/ThreadLocal.h>
+#include <folly/detail/ThreadLocalDetail.h>
 
 #include <list>
 #include <mutex>
index 9c86385128a17a7e7eb9f2637b94c7aa3e6bec30..fe72161a2a618d8a4e76a1db2142feecc440ab82 100644 (file)
@@ -33,6 +33,7 @@
 #include <folly/MicroSpinLock.h>
 #include <folly/Portability.h>
 #include <folly/ScopeGuard.h>
+#include <folly/SharedMutex.h>
 #include <folly/portability/PThread.h>
 
 #include <folly/detail/StaticSingletonManager.h>
 #endif
 
 namespace folly {
+
+enum class TLPDestructionMode { THIS_THREAD, ALL_THREADS };
+struct AccessModeStrict {};
+
 namespace threadlocal_detail {
 
 /**