xgboost

Classes | Namespaces | Functions
intrusive_ptr.h File Reference

Implementation of Intrusive Ptr. More...

`#include <atomic>`
`#include <cinttypes>`
`#include <functional>`
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 returing 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