proxygen
testing::internal::linked_ptr< T > Class Template Reference

#include <gtest-linked_ptr.h>

Public Types

typedef T element_type
 
typedef T element_type
 
typedef T element_type
 

Public Member Functions

 linked_ptr (T *ptr=NULL)
 
 ~linked_ptr ()
 
template<typename U >
 linked_ptr (linked_ptr< U > const &ptr)
 
 linked_ptr (linked_ptr const &ptr)
 
template<typename U >
linked_ptroperator= (linked_ptr< U > const &ptr)
 
linked_ptroperator= (linked_ptr const &ptr)
 
void reset (T *ptr=NULL)
 
Tget () const
 
Toperator-> () const
 
Toperator* () const
 
bool operator== (T *p) const
 
bool operator!= (T *p) const
 
template<typename U >
bool operator== (linked_ptr< U > const &ptr) const
 
template<typename U >
bool operator!= (linked_ptr< U > const &ptr) const
 
 linked_ptr (T *ptr=NULL)
 
 ~linked_ptr ()
 
template<typename U >
 linked_ptr (linked_ptr< U > const &ptr)
 
 linked_ptr (linked_ptr const &ptr)
 
template<typename U >
linked_ptroperator= (linked_ptr< U > const &ptr)
 
linked_ptroperator= (linked_ptr const &ptr)
 
void reset (T *ptr=NULL)
 
Tget () const
 
Toperator-> () const
 
Toperator* () const
 
bool operator== (T *p) const
 
bool operator!= (T *p) const
 
template<typename U >
bool operator== (linked_ptr< U > const &ptr) const
 
template<typename U >
bool operator!= (linked_ptr< U > const &ptr) const
 
 linked_ptr (T *ptr=NULL)
 
 ~linked_ptr ()
 
template<typename U >
 linked_ptr (linked_ptr< U > const &ptr)
 
 linked_ptr (linked_ptr const &ptr)
 
template<typename U >
linked_ptroperator= (linked_ptr< U > const &ptr)
 
linked_ptroperator= (linked_ptr const &ptr)
 
void reset (T *ptr=NULL)
 
Tget () const
 
Toperator-> () const
 
Toperator* () const
 
bool operator== (T *p) const
 
bool operator!= (T *p) const
 
template<typename U >
bool operator== (linked_ptr< U > const &ptr) const
 
template<typename U >
bool operator!= (linked_ptr< U > const &ptr) const
 

Private Member Functions

void depart ()
 
void capture (T *ptr)
 
template<typename U >
void copy (linked_ptr< U > const *ptr)
 
void depart ()
 
void capture (T *ptr)
 
template<typename U >
void copy (linked_ptr< U > const *ptr)
 
void depart ()
 
void capture (T *ptr)
 
template<typename U >
void copy (linked_ptr< U > const *ptr)
 

Private Attributes

Tvalue_
 
linked_ptr_internal link_
 

Friends

template<typename U >
class linked_ptr
 
template<typename U>
class linked_ptr
 
template<typename U>
class linked_ptr
 

Detailed Description

template<typename T>
class testing::internal::linked_ptr< T >

Definition at line 146 of file gtest-linked_ptr.h.

Member Typedef Documentation

template<typename T>
typedef T testing::internal::linked_ptr< T >::element_type

Definition at line 148 of file gtest-linked_ptr.h.

template<typename T>
typedef T testing::internal::linked_ptr< T >::element_type

Definition at line 148 of file gtest-linked_ptr.h.

template<typename T>
typedef T testing::internal::linked_ptr< T >::element_type

Definition at line 148 of file gtest-linked_ptr.h.

Constructor & Destructor Documentation

template<typename T>
testing::internal::linked_ptr< T >::linked_ptr ( T ptr = NULL)
inlineexplicit

Definition at line 152 of file gtest-linked_ptr.h.

152 { capture(ptr); }
void * ptr
template<typename T>
testing::internal::linked_ptr< T >::~linked_ptr ( )
inline

Definition at line 153 of file gtest-linked_ptr.h.

template<typename T>
template<typename U >
testing::internal::linked_ptr< T >::linked_ptr ( linked_ptr< U > const &  ptr)
inline

Definition at line 156 of file gtest-linked_ptr.h.

156 { copy(&ptr); }
void * ptr
void copy(linked_ptr< U > const *ptr)
template<typename T>
testing::internal::linked_ptr< T >::linked_ptr ( linked_ptr< T > const &  ptr)
inline

Definition at line 157 of file gtest-linked_ptr.h.

157  { // NOLINT
158  assert(&ptr != this);
159  copy(&ptr);
160  }
void * ptr
void copy(linked_ptr< U > const *ptr)
template<typename T>
testing::internal::linked_ptr< T >::linked_ptr ( T ptr = NULL)
inlineexplicit

Definition at line 152 of file gtest-linked_ptr.h.

152 { capture(ptr); }
void * ptr
template<typename T>
testing::internal::linked_ptr< T >::~linked_ptr ( )
inline

Definition at line 153 of file gtest-linked_ptr.h.

template<typename T>
template<typename U >
testing::internal::linked_ptr< T >::linked_ptr ( linked_ptr< U > const &  ptr)
inline

Definition at line 156 of file gtest-linked_ptr.h.

156 { copy(&ptr); }
void * ptr
void copy(linked_ptr< U > const *ptr)
template<typename T>
testing::internal::linked_ptr< T >::linked_ptr ( linked_ptr< T > const &  ptr)
inline

Definition at line 157 of file gtest-linked_ptr.h.

157  { // NOLINT
158  assert(&ptr != this);
159  copy(&ptr);
160  }
void * ptr
void copy(linked_ptr< U > const *ptr)
template<typename T>
testing::internal::linked_ptr< T >::linked_ptr ( T ptr = NULL)
inlineexplicit

Definition at line 152 of file gtest-linked_ptr.h.

152 { capture(ptr); }
void * ptr
template<typename T>
testing::internal::linked_ptr< T >::~linked_ptr ( )
inline

Definition at line 153 of file gtest-linked_ptr.h.

template<typename T>
template<typename U >
testing::internal::linked_ptr< T >::linked_ptr ( linked_ptr< U > const &  ptr)
inline

Definition at line 156 of file gtest-linked_ptr.h.

156 { copy(&ptr); }
void * ptr
void copy(linked_ptr< U > const *ptr)
template<typename T>
testing::internal::linked_ptr< T >::linked_ptr ( linked_ptr< T > const &  ptr)
inline

Definition at line 157 of file gtest-linked_ptr.h.

157  { // NOLINT
158  assert(&ptr != this);
159  copy(&ptr);
160  }
void * ptr
void copy(linked_ptr< U > const *ptr)

Member Function Documentation

template<typename T>
void testing::internal::linked_ptr< T >::capture ( T ptr)
inlineprivate

Definition at line 208 of file gtest-linked_ptr.h.

template<typename T>
void testing::internal::linked_ptr< T >::capture ( T ptr)
inlineprivate

Definition at line 208 of file gtest-linked_ptr.h.

template<typename T>
void testing::internal::linked_ptr< T >::capture ( T ptr)
inlineprivate

Definition at line 208 of file gtest-linked_ptr.h.

template<typename T>
template<typename U >
void testing::internal::linked_ptr< T >::copy ( linked_ptr< U > const *  ptr)
inlineprivate

Definition at line 213 of file gtest-linked_ptr.h.

213  {
214  value_ = ptr->get();
215  if (value_)
216  link_.join(&ptr->link_);
217  else
218  link_.join_new();
219  }
void * ptr
void join(linked_ptr_internal const *ptr) GTEST_LOCK_EXCLUDED_(g_linked_ptr_mutex)
template<typename T>
template<typename U >
void testing::internal::linked_ptr< T >::copy ( linked_ptr< U > const *  ptr)
inlineprivate

Definition at line 213 of file gtest-linked_ptr.h.

213  {
214  value_ = ptr->get();
215  if (value_)
216  link_.join(&ptr->link_);
217  else
218  link_.join_new();
219  }
void * ptr
void join(linked_ptr_internal const *ptr) GTEST_LOCK_EXCLUDED_(g_linked_ptr_mutex)
template<typename T>
template<typename U >
void testing::internal::linked_ptr< T >::copy ( linked_ptr< U > const *  ptr)
inlineprivate

Definition at line 213 of file gtest-linked_ptr.h.

213  {
214  value_ = ptr->get();
215  if (value_)
216  link_.join(&ptr->link_);
217  else
218  link_.join_new();
219  }
void * ptr
void join(linked_ptr_internal const *ptr) GTEST_LOCK_EXCLUDED_(g_linked_ptr_mutex)
template<typename T>
void testing::internal::linked_ptr< T >::depart ( )
inlineprivate

Definition at line 204 of file gtest-linked_ptr.h.

204  {
205  if (link_.depart()) delete value_;
206  }
bool depart() GTEST_LOCK_EXCLUDED_(g_linked_ptr_mutex)
template<typename T>
void testing::internal::linked_ptr< T >::depart ( )
inlineprivate

Definition at line 204 of file gtest-linked_ptr.h.

204  {
205  if (link_.depart()) delete value_;
206  }
bool depart() GTEST_LOCK_EXCLUDED_(g_linked_ptr_mutex)
template<typename T>
void testing::internal::linked_ptr< T >::depart ( )
inlineprivate

Definition at line 204 of file gtest-linked_ptr.h.

204  {
205  if (link_.depart()) delete value_;
206  }
bool depart() GTEST_LOCK_EXCLUDED_(g_linked_ptr_mutex)
template<typename T>
T* testing::internal::linked_ptr< T >::get ( ) const
inline

Definition at line 182 of file gtest-linked_ptr.h.

template<typename T>
T* testing::internal::linked_ptr< T >::get ( ) const
inline

Definition at line 182 of file gtest-linked_ptr.h.

template<typename T>
bool testing::internal::linked_ptr< T >::operator!= ( T p) const
inline

Definition at line 187 of file gtest-linked_ptr.h.

187 { return value_ != p; }
template<typename T>
bool testing::internal::linked_ptr< T >::operator!= ( T p) const
inline

Definition at line 187 of file gtest-linked_ptr.h.

187 { return value_ != p; }
template<typename T>
bool testing::internal::linked_ptr< T >::operator!= ( T p) const
inline

Definition at line 187 of file gtest-linked_ptr.h.

187 { return value_ != p; }
template<typename T>
template<typename U >
bool testing::internal::linked_ptr< T >::operator!= ( linked_ptr< U > const &  ptr) const
inline

Definition at line 193 of file gtest-linked_ptr.h.

193  {
194  return value_ != ptr.get();
195  }
void * ptr
template<typename T>
template<typename U >
bool testing::internal::linked_ptr< T >::operator!= ( linked_ptr< U > const &  ptr) const
inline

Definition at line 193 of file gtest-linked_ptr.h.

193  {
194  return value_ != ptr.get();
195  }
void * ptr
template<typename T>
template<typename U >
bool testing::internal::linked_ptr< T >::operator!= ( linked_ptr< U > const &  ptr) const
inline

Definition at line 193 of file gtest-linked_ptr.h.

193  {
194  return value_ != ptr.get();
195  }
void * ptr
template<typename T>
T& testing::internal::linked_ptr< T >::operator* ( ) const
inline

Definition at line 184 of file gtest-linked_ptr.h.

template<typename T>
T& testing::internal::linked_ptr< T >::operator* ( ) const
inline

Definition at line 184 of file gtest-linked_ptr.h.

template<typename T>
T& testing::internal::linked_ptr< T >::operator* ( ) const
inline

Definition at line 184 of file gtest-linked_ptr.h.

template<typename T>
T* testing::internal::linked_ptr< T >::operator-> ( ) const
inline

Definition at line 183 of file gtest-linked_ptr.h.

template<typename T>
T* testing::internal::linked_ptr< T >::operator-> ( ) const
inline

Definition at line 183 of file gtest-linked_ptr.h.

template<typename T>
T* testing::internal::linked_ptr< T >::operator-> ( ) const
inline

Definition at line 183 of file gtest-linked_ptr.h.

template<typename T>
template<typename U >
linked_ptr& testing::internal::linked_ptr< T >::operator= ( linked_ptr< U > const &  ptr)
inline

Definition at line 163 of file gtest-linked_ptr.h.

163  {
164  depart();
165  copy(&ptr);
166  return *this;
167  }
void * ptr
void copy(linked_ptr< U > const *ptr)
template<typename T>
template<typename U >
linked_ptr& testing::internal::linked_ptr< T >::operator= ( linked_ptr< U > const &  ptr)
inline

Definition at line 163 of file gtest-linked_ptr.h.

163  {
164  depart();
165  copy(&ptr);
166  return *this;
167  }
void * ptr
void copy(linked_ptr< U > const *ptr)
template<typename T>
template<typename U >
linked_ptr& testing::internal::linked_ptr< T >::operator= ( linked_ptr< U > const &  ptr)
inline

Definition at line 163 of file gtest-linked_ptr.h.

163  {
164  depart();
165  copy(&ptr);
166  return *this;
167  }
void * ptr
void copy(linked_ptr< U > const *ptr)
template<typename T>
linked_ptr& testing::internal::linked_ptr< T >::operator= ( linked_ptr< T > const &  ptr)
inline

Definition at line 169 of file gtest-linked_ptr.h.

169  {
170  if (&ptr != this) {
171  depart();
172  copy(&ptr);
173  }
174  return *this;
175  }
void * ptr
void copy(linked_ptr< U > const *ptr)
template<typename T>
linked_ptr& testing::internal::linked_ptr< T >::operator= ( linked_ptr< T > const &  ptr)
inline

Definition at line 169 of file gtest-linked_ptr.h.

169  {
170  if (&ptr != this) {
171  depart();
172  copy(&ptr);
173  }
174  return *this;
175  }
void * ptr
void copy(linked_ptr< U > const *ptr)
template<typename T>
linked_ptr& testing::internal::linked_ptr< T >::operator= ( linked_ptr< T > const &  ptr)
inline

Definition at line 169 of file gtest-linked_ptr.h.

169  {
170  if (&ptr != this) {
171  depart();
172  copy(&ptr);
173  }
174  return *this;
175  }
void * ptr
void copy(linked_ptr< U > const *ptr)
template<typename T>
bool testing::internal::linked_ptr< T >::operator== ( T p) const
inline

Definition at line 186 of file gtest-linked_ptr.h.

186 { return value_ == p; }
template<typename T>
bool testing::internal::linked_ptr< T >::operator== ( T p) const
inline

Definition at line 186 of file gtest-linked_ptr.h.

186 { return value_ == p; }
template<typename T>
bool testing::internal::linked_ptr< T >::operator== ( T p) const
inline

Definition at line 186 of file gtest-linked_ptr.h.

186 { return value_ == p; }
template<typename T>
template<typename U >
bool testing::internal::linked_ptr< T >::operator== ( linked_ptr< U > const &  ptr) const
inline

Definition at line 189 of file gtest-linked_ptr.h.

189  {
190  return value_ == ptr.get();
191  }
void * ptr
template<typename T>
template<typename U >
bool testing::internal::linked_ptr< T >::operator== ( linked_ptr< U > const &  ptr) const
inline

Definition at line 189 of file gtest-linked_ptr.h.

189  {
190  return value_ == ptr.get();
191  }
void * ptr
template<typename T>
template<typename U >
bool testing::internal::linked_ptr< T >::operator== ( linked_ptr< U > const &  ptr) const
inline

Definition at line 189 of file gtest-linked_ptr.h.

189  {
190  return value_ == ptr.get();
191  }
void * ptr
template<typename T>
void testing::internal::linked_ptr< T >::reset ( T ptr = NULL)
inline

Definition at line 178 of file gtest-linked_ptr.h.

178  {
179  depart();
180  capture(ptr);
181  }
void * ptr
template<typename T>
void testing::internal::linked_ptr< T >::reset ( T ptr = NULL)
inline

Definition at line 178 of file gtest-linked_ptr.h.

178  {
179  depart();
180  capture(ptr);
181  }
void * ptr
template<typename T>
void testing::internal::linked_ptr< T >::reset ( T ptr = NULL)
inline

Definition at line 178 of file gtest-linked_ptr.h.

178  {
179  depart();
180  capture(ptr);
181  }
void * ptr

Friends And Related Function Documentation

template<typename T>
template<typename U >
friend class linked_ptr
friend

Definition at line 199 of file gtest-linked_ptr.h.

template<typename T>
template<typename U>
class linked_ptr ( )
friend

Definition at line 199 of file gtest-linked_ptr.h.

template<typename T>
template<typename U>
class linked_ptr ( )
friend

Definition at line 199 of file gtest-linked_ptr.h.

Member Data Documentation

template<typename T>
T * testing::internal::linked_ptr< T >::value_
private

Definition at line 201 of file gtest-linked_ptr.h.


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