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"
113 while (p->next_ != ptr) {
114 assert(p->next_ !=
this &&
115 "Trying to join() a linked ring we are already in. "
116 "Is GMock thread safety enabled?");
129 if (
next_ ==
this)
return true;
131 while (p->next_ !=
this) {
132 assert(p->next_ !=
next_ &&
133 "Trying to depart() a linked ring we are not in. "
134 "Is GMock thread safety enabled?");
158 assert(&ptr !=
this);
188 template <
typename U>
192 template <
typename U>
198 template <
typename U>
216 link_.join(&ptr->link_);
222template<
typename T>
inline
224 return ptr == x.
get();
227template<
typename T>
inline
229 return ptr != x.get();
linked_ptr_internal link_
Definition gtest-linked_ptr.h:202
const testing::MatcherInterface< const internal::string & > * value_
Definition gtest-linked_ptr.h:201
Definition gtest-linked_ptr.h:89
void join_new()
Definition gtest-linked_ptr.h:92
bool depart() GTEST_LOCK_EXCLUDED_(g_linked_ptr_mutex)
Definition gtest-linked_ptr.h:125
linked_ptr_internal const * next_
Definition gtest-linked_ptr.h:142
void join(linked_ptr_internal const *ptr) GTEST_LOCK_EXCLUDED_(g_linked_ptr_mutex)
Definition gtest-linked_ptr.h:108
Definition gtest-linked_ptr.h:146
void depart()
Definition gtest-linked_ptr.h:204
void capture(T *ptr)
Definition gtest-linked_ptr.h:208
linked_ptr & operator=(linked_ptr< U > const &ptr)
Definition gtest-linked_ptr.h:163
bool operator!=(T *p) const
Definition gtest-linked_ptr.h:187
T element_type
Definition gtest-linked_ptr.h:148
bool operator!=(linked_ptr< U > const &ptr) const
Definition gtest-linked_ptr.h:193
linked_ptr & operator=(linked_ptr const &ptr)
Definition gtest-linked_ptr.h:169
linked_ptr(linked_ptr< U > const &ptr)
Definition gtest-linked_ptr.h:156
friend class linked_ptr
Definition gtest-linked_ptr.h:199
T & operator*() const
Definition gtest-linked_ptr.h:184
bool operator==(linked_ptr< U > const &ptr) const
Definition gtest-linked_ptr.h:189
linked_ptr_internal link_
Definition gtest-linked_ptr.h:202
void reset(T *ptr=NULL)
Definition gtest-linked_ptr.h:178
T * operator->() const
Definition gtest-linked_ptr.h:183
T * value_
Definition gtest-linked_ptr.h:201
linked_ptr(linked_ptr const &ptr)
Definition gtest-linked_ptr.h:157
T * get() const
Definition gtest-linked_ptr.h:182
bool operator==(T *p) const
Definition gtest-linked_ptr.h:186
friend class linked_ptr
Definition gtest-linked_ptr.h:199
linked_ptr(T *ptr=NULL)
Definition gtest-linked_ptr.h:152
void copy(linked_ptr< U > const *ptr)
Definition gtest-linked_ptr.h:213
~linked_ptr()
Definition gtest-linked_ptr.h:153
Definition gtest-linked_ptr.h:146
T * get() const
Definition gtest-linked_ptr.h:182
#define GTEST_LOCK_EXCLUDED_(locks)
Definition gtest-port.h:2534
#define GTEST_API_
Definition gtest-port.h:934
#define GTEST_DECLARE_STATIC_MUTEX_(mutex)
Definition gtest-port.h:2144
Definition gmock-actions.h:64
GTestMutexLock MutexLock
Definition gtest-port.h:2159
bool operator!=(T *ptr, const linked_ptr< T > &x)
Definition gtest-linked_ptr.h:228
linked_ptr< T > make_linked_ptr(T *ptr)
Definition gtest-linked_ptr.h:236
bool operator==(T *ptr, const linked_ptr< T > &x)
Definition gtest-linked_ptr.h:223
Definition gmock-actions.h:53