Changeset 101448 in webkit for trunk/Source/JavaScriptCore/wtf/RetainPtr.h
- Timestamp:
- Nov 29, 2011, 9:42:14 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/wtf/RetainPtr.h
r96757 r101448 66 66 RetainPtr(const RetainPtr& o) : m_ptr(o.m_ptr) { if (PtrType ptr = m_ptr) CFRetain(ptr); } 67 67 68 #if COMPILER_SUPPORTS(CXX_RVALUE_REFERENCES) 69 RetainPtr(RetainPtr&& o) : m_ptr(o.leakRef()) { } 70 #endif 71 68 72 // Hash table deleted values, which are only constructed and never copied or destroyed. 69 73 RetainPtr(HashTableDeletedValueType) : m_ptr(hashTableDeletedValue()) { } … … 91 95 RetainPtr& operator=(PtrType); 92 96 template<typename U> RetainPtr& operator=(U*); 97 98 #if COMPILER_SUPPORTS(CXX_RVALUE_REFERENCES) 99 RetainPtr& operator=(RetainPtr&&); 100 template<typename U> RetainPtr& operator=(RetainPtr<U>&&); 101 #endif 102 93 103 #if !HAVE(NULLPTR) 94 104 RetainPtr& operator=(std::nullptr_t) { clear(); return *this; } … … 154 164 return *this; 155 165 } 156 166 157 167 template<typename T> inline RetainPtr<T>& RetainPtr<T>::operator=(PtrType optr) 158 168 { … … 166 176 } 167 177 178 template<typename T> template<typename U> inline RetainPtr<T>& RetainPtr<T>::operator=(U* optr) 179 { 180 if (optr) 181 CFRetain(optr); 182 PtrType ptr = m_ptr; 183 m_ptr = optr; 184 if (ptr) 185 CFRelease(ptr); 186 return *this; 187 } 188 189 #if COMPILER_SUPPORTS(CXX_RVALUE_REFERENCES) 190 template<typename T> inline RetainPtr<T>& RetainPtr<T>::operator=(RetainPtr<T>&& o) 191 { 192 adoptCF(leakRef()); 193 return *this; 194 } 195 196 template<typename T> template<typename U> inline RetainPtr<T>& RetainPtr<T>::operator=(RetainPtr<U>&& o) 197 { 198 adoptCF(leakRef()); 199 return *this; 200 } 201 #endif 202 168 203 template<typename T> inline void RetainPtr<T>::adoptCF(PtrType optr) 169 204 { … … 183 218 CFRelease(ptr); 184 219 } 185 186 template<typename T> template<typename U> inline RetainPtr<T>& RetainPtr<T>::operator=(U* optr)187 {188 if (optr)189 CFRetain(optr);190 PtrType ptr = m_ptr;191 m_ptr = optr;192 if (ptr)193 CFRelease(ptr);194 return *this;195 }196 220 197 221 template<typename T> inline void RetainPtr<T>::swap(RetainPtr<T>& o) … … 234 258 return a != b.get(); 235 259 } 236 260 237 261 template<typename P> struct HashTraits<RetainPtr<P> > : SimpleClassHashTraits<RetainPtr<P> > { }; 238 262
Note:
See TracChangeset
for help on using the changeset viewer.