LLDB mainline
lldb_private::NonNullSharedPtr< T > Class Template Reference

A non-nullable shared pointer that always holds a valid object. More...

#include <NonNullSharedPtr.h>

Inheritance diagram for lldb_private::NonNullSharedPtr< T >:
[legend]

Public Member Functions

 NonNullSharedPtr (const std::shared_ptr< T > &t)
 NonNullSharedPtr (std::shared_ptr< T > &&t)
 NonNullSharedPtr (const NonNullSharedPtr &other)
 NonNullSharedPtr (NonNullSharedPtr &&other)
NonNullSharedPtroperator= (const NonNullSharedPtr &other)
NonNullSharedPtroperator= (NonNullSharedPtr &&other)
void swap (NonNullSharedPtr &other)
void reset ()=delete
 Explicitly deleted operations that could introduce nullptr.
void reset (T *ptr)=delete

Private Types

using Base = std::shared_ptr<T>

Detailed Description

template<typename T>
class lldb_private::NonNullSharedPtr< T >

A non-nullable shared pointer that always holds a valid object.

NonNullSharedPtr is a smart pointer wrapper around std::shared_ptr that guarantees the pointer is never null.

This class is used for enforcing invariants at the type level and eliminating entire classes of null pointer bugs.

Template Parameters
TThe type of object to manage. Must be default-constructible.

Definition at line 26 of file NonNullSharedPtr.h.

Member Typedef Documentation

◆ Base

template<typename T>
using lldb_private::NonNullSharedPtr< T >::Base = std::shared_ptr<T>
private

Definition at line 27 of file NonNullSharedPtr.h.

Constructor & Destructor Documentation

◆ NonNullSharedPtr() [1/4]

template<typename T>
lldb_private::NonNullSharedPtr< T >::NonNullSharedPtr ( const std::shared_ptr< T > & t)
inline

Definition at line 30 of file NonNullSharedPtr.h.

◆ NonNullSharedPtr() [2/4]

template<typename T>
lldb_private::NonNullSharedPtr< T >::NonNullSharedPtr ( std::shared_ptr< T > && t)
inline

Definition at line 35 of file NonNullSharedPtr.h.

◆ NonNullSharedPtr() [3/4]

template<typename T>
lldb_private::NonNullSharedPtr< T >::NonNullSharedPtr ( const NonNullSharedPtr< T > & other)
inline

Definition at line 42 of file NonNullSharedPtr.h.

◆ NonNullSharedPtr() [4/4]

template<typename T>
lldb_private::NonNullSharedPtr< T >::NonNullSharedPtr ( NonNullSharedPtr< T > && other)
inline

Definition at line 44 of file NonNullSharedPtr.h.

Member Function Documentation

◆ operator=() [1/2]

template<typename T>
NonNullSharedPtr & lldb_private::NonNullSharedPtr< T >::operator= ( const NonNullSharedPtr< T > & other)
inline

Definition at line 46 of file NonNullSharedPtr.h.

◆ operator=() [2/2]

template<typename T>
NonNullSharedPtr & lldb_private::NonNullSharedPtr< T >::operator= ( NonNullSharedPtr< T > && other)
inline

Definition at line 51 of file NonNullSharedPtr.h.

◆ reset() [1/2]

template<typename T>
void lldb_private::NonNullSharedPtr< T >::reset ( )
delete

Explicitly deleted operations that could introduce nullptr.

◆ reset() [2/2]

template<typename T>
void lldb_private::NonNullSharedPtr< T >::reset ( T * ptr)
delete

◆ swap()

template<typename T>
void lldb_private::NonNullSharedPtr< T >::swap ( NonNullSharedPtr< T > & other)
inline

Definition at line 62 of file NonNullSharedPtr.h.

Referenced by swap().


The documentation for this class was generated from the following file: