Boost C++ Libraries Home Libraries People FAQ More

PrevUpHomeNext

Class template intrusive_ptr

boost::interprocess::intrusive_ptr

Synopsis

// In header: <boost/interprocess/smart_ptr/intrusive_ptr.hpp>

template<typename T, typename VoidPointer> 
class intrusive_ptr {
public:
  // types
  typedef  ;       // Provides the type of the internal stored pointer. 
  typedef                                                                                    ;  // Provides the type of the stored pointer. 

  // construct/copy/destruct
  () ;
  (,  = ) ;
  (intrusive_ptr ) ;
  (intrusive_ptr &&) ;
  template<typename U> (intrusive_ptr< ) ;
  intrusive_ptr & (intrusive_ptr)) ;
  intrusive_ptr & (intrusive_ptr &&) ;
  template<typename U> 
    intrusive_ptr & (intrusive_ptr< ) ;
  intrusive_ptr & () ;
  ~();

  // public member functions
   () ;
   () ;
   () ;
   () ;
   () ;
   () ;
  () ;
   () ;
   (intrusive_ptr &) ;
};

Description

The intrusive_ptr class template stores a pointer to an object with an embedded reference count. intrusive_ptr is parameterized on T (the type of the object pointed to) and VoidPointer(a void pointer type that defines the type of pointer that intrusive_ptr will store). intrusive_ptr<T, void *> defines a class with a T* member whereas intrusive_ptr<T, offset_ptr<void> > defines a class with a offset_ptr<T> member. Relies on unqualified calls to:

void intrusive_ptr_add_ref(T * p) BOOST_NOEXCEPT; void intrusive_ptr_release(T * p) BOOST_NOEXCEPT;

with (p != 0)

The object is responsible for destroying itself.

intrusive_ptr public construct/copy/destruct

  1. () ;

    Constructor. Initializes internal pointer to 0. Does not throw

  2. ( p,  add_ref = ) ;

    Constructor. Copies pointer and if "p" is not zero and "add_ref" is true calls intrusive_ptr_add_ref(to_raw_pointer(p)). Does not throw

  3. (intrusive_ptr  rhs) ;

    Copy constructor. Copies the internal pointer and if "p" is not zero calls intrusive_ptr_add_ref(to_raw_pointer(p)). Does not throw

  4. (intrusive_ptr && rhs) ;
    Move constructor. Moves the internal pointer. Does not throw.
  5. template<typename U> 
      (intrusive_ptr<  rhs) ;

    Constructor from related. Copies the internal pointer and if "p" is not zero calls intrusive_ptr_add_ref(to_raw_pointer(p)). Does not throw

  6. intrusive_ptr & (intrusive_ptr) rhs) ;

    Assignment operator. Equivalent to intrusive_ptr(r).swap(*this). Does not throw

  7. intrusive_ptr & (intrusive_ptr && rhs) ;

    Move Assignment operator Does not throw

  8. template<typename U> 
      intrusive_ptr & (intrusive_ptr<  rhs) ;

    Assignment from related. Equivalent to intrusive_ptr(r).swap(*this). Does not throw

  9. intrusive_ptr & ( rhs) ;

    Assignment from pointer. Equivalent to intrusive_ptr(r).swap(*this). Does not throw

  10. ~();
    Destructor. Calls reset(). Does not throw.

intrusive_ptr public member functions

  1.  () ;

    Release internal pointer and set it to 0. If internal pointer is not 0, calls intrusive_ptr_release(to_raw_pointer(m_ptr)). Does not throw

  2.  () ;

    Returns a reference to the internal pointer. Does not throw

  3.  () ;

    Returns a reference to the internal pointer. Does not throw

  4.  () ;

    Returns *get(). Does not throw

  5.  () ;

    Returns *get(). Does not throw

  6.  () ;

    Returns get(). Does not throw

  7. () ;

    Conversion to boolean. Does not throw

  8.  () ;

    Not operator. Does not throw

  9.  (intrusive_ptr & rhs) ;

    Exchanges the contents of the two smart pointers. Does not throw


PrevUpHomeNext