xgboost
Classes | Namespaces | Functions
intrusive_ptr.h File Reference

Implementation of Intrusive Ptr. More...

#include <atomic>
#include <cinttypes>
#include <functional>
#include <ostream>
Include dependency graph for intrusive_ptr.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  xgboost::IntrusivePtrCell
 Helper class for embedding reference counting into client objects. See https://www.boost.org/doc/libs/1_74_0/doc/html/atomic/usage_examples.html for discussions of memory order. More...
 
class  xgboost::IntrusivePtr< T >
 Implementation of Intrusive Pointer. A smart pointer that points to an object with an embedded reference counter. The underlying object must implement a friend function IntrusivePtrRefCount() that returns the ref counter (of type IntrusivePtrCell). The intrusive pointer is faster than std::shared_ptr<>: std::shared_ptr<> makes an extra memory allocation for the ref counter whereas the intrusive pointer does not. More...
 
struct  xgboost::IntrusivePtr< T >::Hash
 
struct  std::hash< xgboost::IntrusivePtr< T > >
 

Namespaces

 xgboost
 namespace of xgboost
 
 std
 

Functions

template<typename T >
IntrusivePtrCell & xgboost::IntrusivePtrRefCount (T const *ptr) noexcept
 User defined function for returning embedded reference count. More...
 
template<class T , class U >
bool xgboost::operator== (IntrusivePtr< T > const &x, IntrusivePtr< U > const &y) noexcept
 
template<class T , class U >
bool xgboost::operator!= (IntrusivePtr< T > const &x, IntrusivePtr< U > const &y) noexcept
 
template<class T , class U >
bool xgboost::operator== (IntrusivePtr< T > const &x, U *y) noexcept
 
template<class T , class U >
bool xgboost::operator!= (IntrusivePtr< T > const &x, U *y) noexcept
 
template<class T , class U >
bool xgboost::operator== (T *x, IntrusivePtr< U > const &y) noexcept
 
template<class T , class U >
bool xgboost::operator!= (T *x, IntrusivePtr< U > const &y) noexcept
 
template<class T >
bool xgboost::operator< (IntrusivePtr< T > const &x, IntrusivePtr< T > const &y) noexcept
 
template<class T >
bool xgboost::operator<= (IntrusivePtr< T > const &x, IntrusivePtr< T > const &y) noexcept
 
template<class T >
bool xgboost::operator> (IntrusivePtr< T > const &x, IntrusivePtr< T > const &y) noexcept
 
template<class T >
bool xgboost::operator>= (IntrusivePtr< T > const &x, IntrusivePtr< T > const &y) noexcept
 
template<class E , class T , class Y >
std::basic_ostream< E, T > & xgboost::operator<< (std::basic_ostream< E, T > &os, IntrusivePtr< Y > const &p)
 
template<class T >
void std::swap (xgboost::IntrusivePtr< T > &x, xgboost::IntrusivePtr< T > &y) noexcept
 

Detailed Description

Implementation of Intrusive Ptr.

Copyright (c) by Contributors 2020