Index: include/core/SkTemplates.h |
diff --git a/include/core/SkTemplates.h b/include/core/SkTemplates.h |
index 5d3fa2d10cd2371c7dcebf2b45552e8922412884..bfcc785718f3f49b18402449a65017ea42ba8243 100644 |
--- a/include/core/SkTemplates.h |
+++ b/include/core/SkTemplates.h |
@@ -77,7 +77,19 @@ template <typename T, void (*P)(T*)> class SkAutoTCallVProc : SkNoncopyable { |
public: |
SkAutoTCallVProc(T* obj): fObj(obj) {} |
~SkAutoTCallVProc() { if (fObj) P(fObj); } |
+ |
+ operator T*() const { return fObj; } |
+ T& operator*() const { SkASSERT(fObj); return *fObj; } |
+ T* operator->() const { SkASSERT(fObj); return fObj; } |
+ T** operator&() { return &fObj; } |
+ |
T* detach() { T* obj = fObj; fObj = NULL; return obj; } |
+ void reset(T* obj = NULL) { |
+ if (fObj != obj) { |
+ if (fObj) { P(fObj); } |
+ fObj = obj; |
reed1
2014/07/17 20:41:42
nitty nit: lets not keep the "if (fObj) { ... }" o
bungeman-skia
2014/07/17 22:08:27
Done.
|
+ } |
+ } |
private: |
T* fObj; |
}; |