diff options
author | Ben Murdoch <benm@google.com> | 2009-08-11 17:01:47 +0100 |
---|---|---|
committer | Ben Murdoch <benm@google.com> | 2009-08-11 18:21:02 +0100 |
commit | 0bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5 (patch) | |
tree | 2943df35f62d885c89d01063cc528dd73b480fea /JavaScriptCore/wtf/RefCounted.h | |
parent | 7e7a70bfa49a1122b2597a1e6367d89eb4035eca (diff) | |
download | external_webkit-0bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5.zip external_webkit-0bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5.tar.gz external_webkit-0bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5.tar.bz2 |
Merge in WebKit r47029.
Diffstat (limited to 'JavaScriptCore/wtf/RefCounted.h')
-rw-r--r-- | JavaScriptCore/wtf/RefCounted.h | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/JavaScriptCore/wtf/RefCounted.h b/JavaScriptCore/wtf/RefCounted.h index c174145..761a856 100644 --- a/JavaScriptCore/wtf/RefCounted.h +++ b/JavaScriptCore/wtf/RefCounted.h @@ -29,7 +29,7 @@ namespace WTF { // This base class holds the non-template methods and attributes. // The RefCounted class inherits from it reducing the template bloat // generated by the compiler (technique called template hoisting). -class RefCountedBase : Noncopyable { +class RefCountedBase { public: void ref() { @@ -101,7 +101,7 @@ private: }; -template<class T> class RefCounted : public RefCountedBase { +template<class T> class RefCounted : public RefCountedBase, public Noncopyable { public: void deref() { @@ -115,8 +115,23 @@ protected: } }; +template<class T> class RefCountedCustomAllocated : public RefCountedBase, public NoncopyableCustomAllocated { +public: + void deref() + { + if (derefBase()) + delete static_cast<T*>(this); + } + +protected: + ~RefCountedCustomAllocated() + { + } +}; + } // namespace WTF using WTF::RefCounted; +using WTF::RefCountedCustomAllocated; #endif // RefCounted_h |