From 52657c75b5d4c0e72d64ecaec504b26d0d215a33 Mon Sep 17 00:00:00 2001 From: "reed@google.com" Date: Thu, 20 Sep 2012 18:04:12 +0000 Subject: [PATCH] remove unused parameter (that also slowed us down) to SkAutoTDelete git-svn-id: http://skia.googlecode.com/svn/trunk@5611 2bbb7eff-a529-9590-31e7-b0007b416f81 --- include/core/SkTemplates.h | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/include/core/SkTemplates.h b/include/core/SkTemplates.h index 3570946..b7831ea 100644 --- a/include/core/SkTemplates.h +++ b/include/core/SkTemplates.h @@ -76,18 +76,34 @@ private: // See also SkTScopedPtr. template class SkAutoTDelete : SkNoncopyable { public: - SkAutoTDelete(T* obj, bool deleteWhenDone = true) : fObj(obj) { - fDeleteWhenDone = deleteWhenDone; + SkAutoTDelete(T* obj) : fObj(obj) {} + ~SkAutoTDelete() { delete fObj; } + + T* get() const { return fObj; } + T& operator*() const { SkASSERT(fObj); return *fObj; } + T* operator->() const { SkASSERT(fObj); return fObj; } + + /** + * Delete the owned object, setting the internal pointer to NULL. + */ + void free() { + delete fObj; + fObj = NULL; } - ~SkAutoTDelete() { if (fDeleteWhenDone) delete fObj; } - T* get() const { return fObj; } - void free() { delete fObj; fObj = NULL; } - T* detach() { T* obj = fObj; fObj = NULL; return obj; } + /** + * Transfer ownership of the object to the caller, setting the internal + * pointer to NULL. Note that this differs from get(), which also returns + * the pointer, but it does not transfer ownership. + */ + T* detach() { + T* obj = fObj; + fObj = NULL; + return obj; + } private: T* fObj; - bool fDeleteWhenDone; }; template class SkAutoTDeleteArray : SkNoncopyable { -- 2.7.4