Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(162)

Side by Side Diff: third_party/WebKit/public/platform/WebPrivatePtr.h

Issue 1884113002: Remove RawPtr.h (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix HeapTest.Bind expectation Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/WebKit/Source/wtf/TypeTraits.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2010 Google Inc. All rights reserved. 2 * Copyright (C) 2010 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 136
137 template <typename T> 137 template <typename T>
138 struct WebPrivatePtrPersistentStorageType<T, WebPrivatePtrDestructionCrossThread , WebPrivatePtrStrength::Weak> { 138 struct WebPrivatePtrPersistentStorageType<T, WebPrivatePtrDestructionCrossThread , WebPrivatePtrStrength::Weak> {
139 public: 139 public:
140 using Type = CrossThreadWeakPersistent<T>; 140 using Type = CrossThreadWeakPersistent<T>;
141 }; 141 };
142 142
143 template<typename T, WebPrivatePtrDestruction crossThreadDestruction, WebPrivate PtrStrength strongOrWeak> 143 template<typename T, WebPrivatePtrDestruction crossThreadDestruction, WebPrivate PtrStrength strongOrWeak>
144 class PtrStorageImpl<T, crossThreadDestruction, strongOrWeak, GarbageCollectedLi fetime> { 144 class PtrStorageImpl<T, crossThreadDestruction, strongOrWeak, GarbageCollectedLi fetime> {
145 public: 145 public:
146 void assign(const RawPtr<T>& val) 146 void assign(T* val)
147 { 147 {
148 if (!val) { 148 if (!val) {
149 release(); 149 release();
150 return; 150 return;
151 } 151 }
152 152
153 if (!m_handle) 153 if (!m_handle)
154 m_handle = new (typename WebPrivatePtrPersistentStorageType<T, cross ThreadDestruction, strongOrWeak>::Type)(); 154 m_handle = new (typename WebPrivatePtrPersistentStorageType<T, cross ThreadDestruction, strongOrWeak>::Type)();
155 155
156 (*m_handle) = val; 156 (*m_handle) = val;
157 } 157 }
158 158
159 void assign(T* ptr) { assign(RawPtr<T>(ptr)); } 159 template<typename U> void assign(U* val) { assign(static_cast<T*>(val)); }
160 template<typename U> void assign(const RawPtr<U>& val) { assign(RawPtr<T>(va l)); }
161 160
162 void assign(const PtrStorageImpl& other) { assign(other.get()); } 161 void assign(const PtrStorageImpl& other) { assign(other.get()); }
163 162
164 T* get() const { return m_handle ? m_handle->get() : 0; } 163 T* get() const { return m_handle ? m_handle->get() : 0; }
165 164
166 void release() 165 void release()
167 { 166 {
168 delete m_handle; 167 delete m_handle;
169 m_handle = 0; 168 m_handle = 0;
170 } 169 }
171 170
172 private: 171 private:
173 typename WebPrivatePtrPersistentStorageType<T, crossThreadDestruction, stron gOrWeak>::Type* m_handle; 172 typename WebPrivatePtrPersistentStorageType<T, crossThreadDestruction, stron gOrWeak>::Type* m_handle;
174 }; 173 };
175 174
176 template<typename T, WebPrivatePtrDestruction crossThreadDestruction, WebPrivate PtrStrength strongOrWeak> 175 template<typename T, WebPrivatePtrDestruction crossThreadDestruction, WebPrivate PtrStrength strongOrWeak>
177 class PtrStorageImpl<T, crossThreadDestruction, strongOrWeak, RefCountedGarbageC ollectedLifetime> : public PtrStorageImpl<T, crossThreadDestruction, strongOrWea k, GarbageCollectedLifetime> { 176 class PtrStorageImpl<T, crossThreadDestruction, strongOrWeak, RefCountedGarbageC ollectedLifetime> : public PtrStorageImpl<T, crossThreadDestruction, strongOrWea k, GarbageCollectedLifetime> {
178 public: 177 public:
179 void assign(const RawPtr<T>& val) { PtrStorageImpl<T, crossThreadDestruction , strongOrWeak, GarbageCollectedLifetime>::assign(val.get()); } 178 void assign(T* val) { PtrStorageImpl<T, crossThreadDestruction, strongOrWeak , GarbageCollectedLifetime>::assign(val); }
180 179
181 void assign(const PtrStorageImpl& other) { PtrStorageImpl<T, crossThreadDest ruction, strongOrWeak, GarbageCollectedLifetime>::assign(other.get()); } 180 void assign(const PtrStorageImpl& other) { PtrStorageImpl<T, crossThreadDest ruction, strongOrWeak, GarbageCollectedLifetime>::assign(other.get()); }
182 }; 181 };
183 182
184 template<typename T, WebPrivatePtrDestruction crossThreadDestruction, WebPrivate PtrStrength strongOrWeak> 183 template<typename T, WebPrivatePtrDestruction crossThreadDestruction, WebPrivate PtrStrength strongOrWeak>
185 class PtrStorage : public PtrStorageImpl<T, crossThreadDestruction, strongOrWeak , LifetimeOf<T>::value> { 184 class PtrStorage : public PtrStorageImpl<T, crossThreadDestruction, strongOrWeak , LifetimeOf<T>::value> {
186 public: 185 public:
187 static PtrStorage& fromSlot(void** slot) 186 static PtrStorage& fromSlot(void** slot)
188 { 187 {
189 static_assert(sizeof(PtrStorage) == sizeof(void*), "PtrStorage must be t he size of a pointer"); 188 static_assert(sizeof(PtrStorage) == sizeof(void*), "PtrStorage must be t he size of a pointer");
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 // Disable the copy constructor; classes that contain a WebPrivatePtr 307 // Disable the copy constructor; classes that contain a WebPrivatePtr
309 // should implement their copy constructor using assign(). 308 // should implement their copy constructor using assign().
310 WebPrivatePtr(const WebPrivatePtr&); 309 WebPrivatePtr(const WebPrivatePtr&);
311 310
312 void* m_storage; 311 void* m_storage;
313 }; 312 };
314 313
315 } // namespace blink 314 } // namespace blink
316 315
317 #endif // WebPrivatePtr_h 316 #endif // WebPrivatePtr_h
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/wtf/TypeTraits.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698