diff options
Diffstat (limited to 'JavaScriptCore/wtf/PassRefPtr.h')
-rw-r--r-- | JavaScriptCore/wtf/PassRefPtr.h | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/JavaScriptCore/wtf/PassRefPtr.h b/JavaScriptCore/wtf/PassRefPtr.h index 7c5d868..230637a 100644 --- a/JavaScriptCore/wtf/PassRefPtr.h +++ b/JavaScriptCore/wtf/PassRefPtr.h @@ -76,8 +76,8 @@ namespace WTF { T* get() const { return m_ptr; } - void clear() { T* ptr = m_ptr; derefIfNotNull(ptr); m_ptr = 0; } - T* leakRef() const; + void clear(); + T* leakRef() const WARN_UNUSED_RETURN; T& operator*() const { return *m_ptr; } T* operator->() const { return m_ptr; } @@ -96,7 +96,7 @@ namespace WTF { friend PassRefPtr adoptRef<T>(T*); // FIXME: Remove releaseRef once we change all callers to call leakRef instead. - T* releaseRef() const { return leakRef(); } + T* releaseRef() const { return leakRef(); } WARN_UNUSED_RETURN; private: // adopting constructor @@ -151,12 +151,15 @@ namespace WTF { T* get() const { return m_ptr; } - void clear() { derefIfNotNull(m_ptr); m_ptr = 0; } - T* releaseRef() const { T* tmp = m_ptr; m_ptr = 0; return tmp; } + void clear(); + T* leakRef() const { T* tmp = m_ptr; m_ptr = 0; return tmp; } WARN_UNUSED_RETURN; T& operator*() const { return *m_ptr; } T* operator->() const { return m_ptr; } + // FIXME: Remove releaseRef once we change all callers to call leakRef instead. + T* releaseRef() const { return leakRef(); } WARN_UNUSED_RETURN; + private: mutable T* m_ptr; }; @@ -168,6 +171,13 @@ namespace WTF { refIfNotNull(ptr); } + template<typename T> inline void PassRefPtr<T>::clear() + { + T* ptr = m_ptr; + m_ptr = 0; + derefIfNotNull(ptr); + } + template<typename T> inline T* PassRefPtr<T>::leakRef() const { T* ptr = m_ptr; @@ -281,6 +291,13 @@ namespace WTF { return p.get(); } + template<typename T> inline void NonNullPassRefPtr<T>::clear() + { + T* ptr = m_ptr; + m_ptr = 0; + derefIfNotNull(ptr); + } + } // namespace WTF using WTF::PassRefPtr; |