1#ifndef XRPL_BASICS_LOCALVALUE_H_INCLUDED
2#define XRPL_BASICS_LOCALVALUE_H_INCLUDED
4#include <boost/thread/tss.hpp>
54template <
class =
void>
55boost::thread_specific_ptr<detail::LocalValues>&
58 static boost::thread_specific_ptr<detail::LocalValues> tsp(
69 template <
class... Args>
102 auto const iter = lvs->values.find(
this);
103 if (iter != lvs->values.end())
104 return *
reinterpret_cast<T*
>(iter->second->get());
107 return *
reinterpret_cast<T*
>(
110 .first->second->get());
T & operator*()
Stores instance of T specific to the calling coroutine or thread.
LocalValue(Args &&... args)
T * operator->()
Stores instance of T specific to the calling coroutine or thread.
boost::thread_specific_ptr< detail::LocalValues > & getLocalValues()
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
virtual ~BasicValue()=default
std::unordered_map< void const *, std::unique_ptr< BasicValue > > values
static void cleanup(LocalValues *lvs)