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

Side by Side Diff: Source/wtf/RefPtr.h

Issue 170603003: Use nullptr_t for RefPtr, PassRefPtr and RawPtr. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Final rebase Created 6 years, 10 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 | Annotate | Revision Log
« no previous file with comments | « Source/wtf/RawPtr.h ('k') | Source/wtf/TypedArrayBase.h » ('j') | 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) 2005, 2006, 2007, 2008, 2009, 2010, 2013 Apple Inc. All rights reserved. 2 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2013 Apple Inc. All rights reserved.
3 * 3 *
4 * This library is free software; you can redistribute it and/or 4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Library General Public 5 * modify it under the terms of the GNU Library General Public
6 * License as published by the Free Software Foundation; either 6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version. 7 * version 2 of the License, or (at your option) any later version.
8 * 8 *
9 * This library is distributed in the hope that it will be useful, 9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
(...skipping 15 matching lines...) Expand all
26 #include <algorithm> 26 #include <algorithm>
27 #include "wtf/HashTableDeletedValueType.h" 27 #include "wtf/HashTableDeletedValueType.h"
28 #include "wtf/PassRefPtr.h" 28 #include "wtf/PassRefPtr.h"
29 #include "wtf/RawPtr.h" 29 #include "wtf/RawPtr.h"
30 30
31 namespace WTF { 31 namespace WTF {
32 32
33 template<typename T> class PassRefPtr; 33 template<typename T> class PassRefPtr;
34 34
35 template<typename T> class RefPtr { 35 template<typename T> class RefPtr {
36 WTF_DISALLOW_CONSTRUCTION_FROM_ZERO(RefPtr);
37 WTF_DISALLOW_ZERO_ASSIGNMENT(RefPtr);
36 public: 38 public:
37 ALWAYS_INLINE RefPtr() : m_ptr(0) { } 39 ALWAYS_INLINE RefPtr() : m_ptr(0) { }
40 ALWAYS_INLINE RefPtr(std::nullptr_t) : m_ptr(0) { }
38 ALWAYS_INLINE RefPtr(T* ptr) : m_ptr(ptr) { refIfNotNull(ptr); } 41 ALWAYS_INLINE RefPtr(T* ptr) : m_ptr(ptr) { refIfNotNull(ptr); }
39 template<typename U> RefPtr(const RawPtr<U>& ptr, EnsurePtrConvertibleAr gDecl(U, T)) : m_ptr(ptr.get()) { refIfNotNull(m_ptr); } 42 template<typename U> RefPtr(const RawPtr<U>& ptr, EnsurePtrConvertibleAr gDecl(U, T)) : m_ptr(ptr.get()) { refIfNotNull(m_ptr); }
40 ALWAYS_INLINE explicit RefPtr(T& ref) : m_ptr(&ref) { m_ptr->ref(); } 43 ALWAYS_INLINE explicit RefPtr(T& ref) : m_ptr(&ref) { m_ptr->ref(); }
41 ALWAYS_INLINE RefPtr(const RefPtr& o) : m_ptr(o.m_ptr) { refIfNotNull(m_ ptr); } 44 ALWAYS_INLINE RefPtr(const RefPtr& o) : m_ptr(o.m_ptr) { refIfNotNull(m_ ptr); }
42 template<typename U> RefPtr(const RefPtr<U>& o, EnsurePtrConvertibleArgD ecl(U, T)) : m_ptr(o.get()) { refIfNotNull(m_ptr); } 45 template<typename U> RefPtr(const RefPtr<U>& o, EnsurePtrConvertibleArgD ecl(U, T)) : m_ptr(o.get()) { refIfNotNull(m_ptr); }
43 46
44 // See comments in PassRefPtr.h for an explanation of why this takes a c onst reference. 47 // See comments in PassRefPtr.h for an explanation of why this takes a c onst reference.
45 template<typename U> RefPtr(const PassRefPtr<U>&, EnsurePtrConvertibleAr gDecl(U, T)); 48 template<typename U> RefPtr(const PassRefPtr<U>&, EnsurePtrConvertibleAr gDecl(U, T));
46 49
47 // Hash table deleted values, which are only constructed and never copie d or destroyed. 50 // Hash table deleted values, which are only constructed and never copie d or destroyed.
(...skipping 12 matching lines...) Expand all
60 63
61 bool operator!() const { return !m_ptr; } 64 bool operator!() const { return !m_ptr; }
62 65
63 // This conversion operator allows implicit conversion to bool but not t o other integer types. 66 // This conversion operator allows implicit conversion to bool but not t o other integer types.
64 typedef T* (RefPtr::*UnspecifiedBoolType); 67 typedef T* (RefPtr::*UnspecifiedBoolType);
65 operator UnspecifiedBoolType() const { return m_ptr ? &RefPtr::m_ptr : 0 ; } 68 operator UnspecifiedBoolType() const { return m_ptr ? &RefPtr::m_ptr : 0 ; }
66 69
67 RefPtr& operator=(const RefPtr&); 70 RefPtr& operator=(const RefPtr&);
68 RefPtr& operator=(T*); 71 RefPtr& operator=(T*);
69 RefPtr& operator=(const PassRefPtr<T>&); 72 RefPtr& operator=(const PassRefPtr<T>&);
70 #if !COMPILER_SUPPORTS(CXX_NULLPTR)
71 RefPtr& operator=(std::nullptr_t) { clear(); return *this; } 73 RefPtr& operator=(std::nullptr_t) { clear(); return *this; }
72 #endif 74
73 template<typename U> RefPtr<T>& operator=(const RefPtr<U>&); 75 template<typename U> RefPtr<T>& operator=(const RefPtr<U>&);
74 template<typename U> RefPtr<T>& operator=(const PassRefPtr<U>&); 76 template<typename U> RefPtr<T>& operator=(const PassRefPtr<U>&);
75 template<typename U> RefPtr<T>& operator=(const RawPtr<U>&); 77 template<typename U> RefPtr<T>& operator=(const RawPtr<U>&);
76 78
77 void swap(RefPtr&); 79 void swap(RefPtr&);
78 80
79 static T* hashTableDeletedValue() { return reinterpret_cast<T*>(-1); } 81 static T* hashTableDeletedValue() { return reinterpret_cast<T*>(-1); }
80 82
81 private: 83 private:
82 T* m_ptr; 84 T* m_ptr;
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
185 { 187 {
186 return p.get(); 188 return p.get();
187 } 189 }
188 190
189 } // namespace WTF 191 } // namespace WTF
190 192
191 using WTF::RefPtr; 193 using WTF::RefPtr;
192 using WTF::static_pointer_cast; 194 using WTF::static_pointer_cast;
193 195
194 #endif // WTF_RefPtr_h 196 #endif // WTF_RefPtr_h
OLDNEW
« no previous file with comments | « Source/wtf/RawPtr.h ('k') | Source/wtf/TypedArrayBase.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698