68 #ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_LINKED_PTR_H_ 69 #define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_LINKED_PTR_H_ 74 #include "gtest/internal/gtest-port.h" 91 class linked_ptr_internal
119 while (p->next_ != ptr) { p = p->next_; }
132 if (
next_ ==
this) {
return true; }
136 while (p->next_ !=
this) { p = p->next_; }
146 template <
typename T>
161 assert(&ptr !=
this);
190 T *
get()
const {
return value_; }
196 template <
typename U>
199 return value_ == ptr.
get();
201 template <
typename U>
204 return value_ != ptr.
get();
208 template <
typename U>
216 if (link_.depart()) {
delete value_; }
230 { link_.join(&ptr->
link_); }
233 { link_.join_new(); }
237 template<
typename T>
inline 240 return ptr == x.
get();
243 template<
typename T>
inline 246 return ptr != x.
get();
252 template <
typename T>
261 #endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_LINKED_PTR_H_ bool operator==(linked_ptr< U > const &ptr) const
linked_ptr(linked_ptr< U > const &ptr)
bool operator==(T *p) const
linked_ptr(linked_ptr const &ptr)
linked_ptr_internal const * next_
void copy(linked_ptr< U > const *ptr)
bool operator==(T *ptr, const linked_ptr< T > &x)
GTEST_API_ GTEST_DECLARE_STATIC_MUTEX_(g_gmock_mutex)
bool operator!=(T *p) const
linked_ptr_internal link_
linked_ptr< T > make_linked_ptr(T *ptr)
void join(linked_ptr_internal const *ptr) GTEST_LOCK_EXCLUDED_(g_linked_ptr_mutex)
bool operator!=(linked_ptr< U > const &ptr) const
linked_ptr & operator=(linked_ptr< U > const &ptr)
bool depart() GTEST_LOCK_EXCLUDED_(g_linked_ptr_mutex)
bool operator!=(T *ptr, const linked_ptr< T > &x)
linked_ptr & operator=(linked_ptr const &ptr)
#define GTEST_LOCK_EXCLUDED_(locks)