Cpp Utilities 1.2.3
Classes | Namespaces | Typedefs
SafeSharedPtr.hpp File Reference
#include <memory>
#include <utility>
#include <type_traits>
#include "../Common.h"
#include <shared_mutex>

Go to the source code of this file.

Classes

class  Memory::SafeSharedPtr< T, mutex_t, read_lock_t, write_lock_t >
 Wrapper to std::shared_ptr to provide thread-safety while operating the underlying pointer. More...
 
class  Memory::SafeSharedPtr< T, mutex_t, read_lock_t, write_lock_t >::PtrHelper< Lock >
 Proxy class for operator-> in SafeSharedPtr, behave like underlying object, and provide RAII read-write lock for thread safety. More...
 
class  Memory::SafeSharedPtr< T, mutex_t, read_lock_t, write_lock_t >::RefHelper< Lock >
 Proxy class for operator* in SafeSharedPtr, behave like underlying object, and provide RAII read-write lock for thread safety. More...
 
class  Memory::SafeSharedPtr< T, mutex_t, read_lock_t, write_lock_t >::ArrayHelper< Lock >
 Proxy class for operator[] in SafeSharedPtr, behave like array element of underlying array object, and provide RAII read-write lock for thread safety. More...
 
class  Memory::SafeWeakPtr< T, mutex_t, read_lock_t, write_lock_t >
 Wrapper to std::weak_ptr to provide weak reference for SafeSharedPtr. More...
 
class  Memory::EnableSafeSharedFromThis< T, mutex_t, read_lock_t, write_lock_t >
 A proxy class from std::enable_shared_from_this to provide same functionality for SafeSharedPtr. More...
 

Namespaces

namespace  Memory
 Namespace for all classes, typedefs and functions of memory safety. See Memory Safety for more instrucion.
 
namespace  std
 Contains std functions overload for classes in Utilities, cannot hide in doxygen, just ignore it.
 

Typedefs

using Memory::shared_mutex_t = std::shared_mutex
 Defined to std::shared_mutex with C++17 or higher, otherwise defined to RWSpinLock. More...
 
using Memory::shared_lock_t = std::shared_lock< shared_mutex_t >
 Defined to std::shared_lock<std::shared_mutex> with C++17 or higher, otherwise defined to RWSpinLock::ReadHolder. More...
 
using Memory::unique_lock_t = std::unique_lock< shared_mutex_t >
 Defined to std::unique_lock<std::shared_mutex> with C++17 or higher, otherwise defined to RWSpinLock::WriteHolder. More...