/*
- * Copyright 2016 Facebook, Inc.
+ * Copyright 2017 Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
#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>
}
T* get() const {
- threadlocal_detail::ElementWrapper& w = StaticMeta::instance().get(&id_);
+ threadlocal_detail::ElementWrapper& w = StaticMeta::get(&id_);
return static_cast<T*>(w.ptr);
}
}
T* release() {
- threadlocal_detail::ElementWrapper& w = StaticMeta::instance().get(&id_);
+ threadlocal_detail::ElementWrapper& w = StaticMeta::get(&id_);
return static_cast<T*>(w.release());
}
void reset(T* newPtr = nullptr) {
auto guard = makeGuard([&] { delete newPtr; });
- threadlocal_detail::ElementWrapper& w = StaticMeta::instance().get(&id_);
+ threadlocal_detail::ElementWrapper& w = StaticMeta::get(&id_);
w.dispose(TLPDestructionMode::THIS_THREAD);
guard.dismiss();
deleter(newPtr, TLPDestructionMode::THIS_THREAD);
}
});
- threadlocal_detail::ElementWrapper& w = StaticMeta::instance().get(&id_);
+ threadlocal_detail::ElementWrapper& w = StaticMeta::get(&id_);
w.dispose(TLPDestructionMode::THIS_THREAD);
guard.dismiss();
w.set(newPtr, deleter);
mutable typename StaticMeta::EntryID id_;
};
-} // namespace folly
+} // namespace folly