Autonomy Software C++ 24.5.1
Welcome to the Autonomy Software repository of the Mars Rover Design Team (MRDT) at Missouri University of Science and Technology (Missouri S&T)! API reference contains the source code and other resources for the development of the autonomy software for our Mars rover. The Autonomy Software project aims to compete in the University Rover Challenge (URC) by demonstrating advanced autonomous capabilities and robust navigation algorithms.
Loading...
Searching...
No Matches
duckdb::atomic_ptr< T, SAFE > Class Template Reference
Collaboration diagram for duckdb::atomic_ptr< T, SAFE >:

Public Member Functions

 atomic_ptr (T *ptr_p)
 
 atomic_ptr (T &ref)
 
 atomic_ptr (const unique_ptr< T > &ptr_p)
 
 atomic_ptr (const shared_ptr< T > &ptr_p)
 
void CheckValid (const T *ptr) const
 
T * GetPointer ()
 
const T * GetPointer () const
 
 operator bool () const
 
T & operator* ()
 
const T & operator* () const
 
T * operator-> ()
 
const T * operator-> () const
 
T * get ()
 
const T * get () const
 
T * get_mutable () const
 
void set (T &ref)
 
void reset ()
 
bool operator== (const atomic_ptr< T > &rhs) const
 
bool operator!= (const atomic_ptr< T > &rhs) const
 

Private Attributes

atomic< T * > ptr
 

Constructor & Destructor Documentation

◆ atomic_ptr() [1/5]

template<class T , bool SAFE = true>
duckdb::atomic_ptr< T, SAFE >::atomic_ptr ( )
inlinenoexcept
49146 : ptr(nullptr) {
49147 }

◆ atomic_ptr() [2/5]

template<class T , bool SAFE = true>
duckdb::atomic_ptr< T, SAFE >::atomic_ptr ( T *  ptr_p)
inline
49148 : ptr(ptr_p) { // NOLINT: allow implicit creation from pointer
49149 }

◆ atomic_ptr() [3/5]

template<class T , bool SAFE = true>
duckdb::atomic_ptr< T, SAFE >::atomic_ptr ( T &  ref)
inline
49150 : ptr(&ref) { // NOLINT: allow implicit creation from reference
49151 }

◆ atomic_ptr() [4/5]

template<class T , bool SAFE = true>
duckdb::atomic_ptr< T, SAFE >::atomic_ptr ( const unique_ptr< T > &  ptr_p)
inline
49152 : ptr(ptr_p.get()) { // NOLINT: allow implicit creation from unique pointer
49153 }

◆ atomic_ptr() [5/5]

template<class T , bool SAFE = true>
duckdb::atomic_ptr< T, SAFE >::atomic_ptr ( const shared_ptr< T > &  ptr_p)
inline
49154 : ptr(ptr_p.get()) { // NOLINT: allow implicit creation from shared pointer
49155 }

Member Function Documentation

◆ CheckValid()

template<class T , bool SAFE = true>
void duckdb::atomic_ptr< T, SAFE >::CheckValid ( const T *  ptr) const
inline
49157 {
49158 if (MemorySafety<SAFE>::ENABLED) {
49159 return;
49160 }
49161 if (!ptr) {
49162 throw InternalException("Attempting to dereference an optional pointer that is not set");
49163 }
49164 }

◆ GetPointer() [1/2]

template<class T , bool SAFE = true>
T * duckdb::atomic_ptr< T, SAFE >::GetPointer ( )
inline
49166 {
49167 auto res = ptr.load();
49168 CheckValid(res);
49169 return res;
49170 }

◆ GetPointer() [2/2]

template<class T , bool SAFE = true>
const T * duckdb::atomic_ptr< T, SAFE >::GetPointer ( ) const
inline
49172 {
49173 auto res = ptr.load();
49174 CheckValid(res);
49175 return res;
49176 }

◆ operator bool()

template<class T , bool SAFE = true>
duckdb::atomic_ptr< T, SAFE >::operator bool ( ) const
inline
49178 { // NOLINT: allow implicit conversion to bool
49179 return ptr;
49180 }

◆ operator*() [1/2]

template<class T , bool SAFE = true>
T & duckdb::atomic_ptr< T, SAFE >::operator* ( )
inline
49181 {
49182 return *GetPointer();
49183 }

◆ operator*() [2/2]

template<class T , bool SAFE = true>
const T & duckdb::atomic_ptr< T, SAFE >::operator* ( ) const
inline
49184 {
49185 return *GetPointer();
49186 }

◆ operator->() [1/2]

template<class T , bool SAFE = true>
T * duckdb::atomic_ptr< T, SAFE >::operator-> ( )
inline
49187 {
49188 return GetPointer();
49189 }

◆ operator->() [2/2]

template<class T , bool SAFE = true>
const T * duckdb::atomic_ptr< T, SAFE >::operator-> ( ) const
inline
49190 {
49191 return GetPointer();
49192 }

◆ get() [1/2]

template<class T , bool SAFE = true>
T * duckdb::atomic_ptr< T, SAFE >::get ( )
inline
49193 { // NOLINT: mimic std casing
49194 return GetPointer();
49195 }

◆ get() [2/2]

template<class T , bool SAFE = true>
const T * duckdb::atomic_ptr< T, SAFE >::get ( ) const
inline
49196 { // NOLINT: mimic std casing
49197 return GetPointer();
49198 }

◆ get_mutable()

template<class T , bool SAFE = true>
T * duckdb::atomic_ptr< T, SAFE >::get_mutable ( ) const
inline
49200 { // NOLINT: mimic std casing
49201 return GetPointer();
49202 }

◆ set()

template<class T , bool SAFE = true>
void duckdb::atomic_ptr< T, SAFE >::set ( T &  ref)
inline
49204 {
49205 ptr = &ref;
49206 }

◆ reset()

template<class T , bool SAFE = true>
void duckdb::atomic_ptr< T, SAFE >::reset ( )
inline
49208 {
49209 ptr = nullptr;
49210 }

◆ operator==()

template<class T , bool SAFE = true>
bool duckdb::atomic_ptr< T, SAFE >::operator== ( const atomic_ptr< T > &  rhs) const
inline
49212 {
49213 return ptr.load() == rhs.ptr.load();
49214 }

◆ operator!=()

template<class T , bool SAFE = true>
bool duckdb::atomic_ptr< T, SAFE >::operator!= ( const atomic_ptr< T > &  rhs) const
inline
49216 {
49217 return ptr.load() != rhs.ptr.load();
49218 }

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