| Index: include/private/SkTemplates.h
|
| diff --git a/include/private/SkTemplates.h b/include/private/SkTemplates.h
|
| index e36910e81446365e15c9cb2a2aa8124da7605f16..811b817d2258df0c6216497d6667963419a1a52d 100644
|
| --- a/include/private/SkTemplates.h
|
| +++ b/include/private/SkTemplates.h
|
| @@ -13,8 +13,8 @@
|
| #include "SkMath.h"
|
| #include "SkTLogic.h"
|
| #include "SkTypes.h"
|
| -#include "SkUniquePtr.h"
|
| #include <limits.h>
|
| +#include <memory>
|
| #include <new>
|
|
|
| /** \file SkTemplates.h
|
| @@ -58,9 +58,9 @@ template <typename R, typename T, R (*P)(T*)> struct SkFunctionWrapper {
|
| function.
|
| */
|
| template <typename T, void (*P)(T*)> class SkAutoTCallVProc
|
| - : public skstd::unique_ptr<T, SkFunctionWrapper<void, T, P>> {
|
| + : public std::unique_ptr<T, SkFunctionWrapper<void, T, P>> {
|
| public:
|
| - SkAutoTCallVProc(T* obj): skstd::unique_ptr<T, SkFunctionWrapper<void, T, P>>(obj) {}
|
| + SkAutoTCallVProc(T* obj): std::unique_ptr<T, SkFunctionWrapper<void, T, P>>(obj) {}
|
|
|
| operator T*() const { return this->get(); }
|
| T* detach() { return this->release(); }
|
| @@ -75,9 +75,9 @@ reference is null when the destructor is called, we do not call the
|
| function.
|
| */
|
| template <typename T, int (*P)(T*)> class SkAutoTCallIProc
|
| - : public skstd::unique_ptr<T, SkFunctionWrapper<int, T, P>> {
|
| + : public std::unique_ptr<T, SkFunctionWrapper<int, T, P>> {
|
| public:
|
| - SkAutoTCallIProc(T* obj): skstd::unique_ptr<T, SkFunctionWrapper<int, T, P>>(obj) {}
|
| + SkAutoTCallIProc(T* obj): std::unique_ptr<T, SkFunctionWrapper<int, T, P>>(obj) {}
|
|
|
| operator T*() const { return this->get(); }
|
| T* detach() { return this->release(); }
|
| @@ -93,18 +93,21 @@ public:
|
|
|
| The size of a SkAutoTDelete is small: sizeof(SkAutoTDelete<T>) == sizeof(T*)
|
| */
|
| -template <typename T> class SkAutoTDelete : public skstd::unique_ptr<T> {
|
| +template <typename T> class SkAutoTDelete : public std::unique_ptr<T> {
|
| public:
|
| - SkAutoTDelete(T* obj = NULL) : skstd::unique_ptr<T>(obj) {}
|
| + SkAutoTDelete(T* obj = NULL) : std::unique_ptr<T>(obj) {}
|
|
|
| operator T*() const { return this->get(); }
|
| void free() { this->reset(nullptr); }
|
| T* detach() { return this->release(); }
|
| +
|
| + // See SkAutoTUnref for why we do this.
|
| + explicit operator bool() const { return this->get() != nullptr; }
|
| };
|
|
|
| -template <typename T> class SkAutoTDeleteArray : public skstd::unique_ptr<T[]> {
|
| +template <typename T> class SkAutoTDeleteArray : public std::unique_ptr<T[]> {
|
| public:
|
| - SkAutoTDeleteArray(T array[]) : skstd::unique_ptr<T[]>(array) {}
|
| + SkAutoTDeleteArray(T array[]) : std::unique_ptr<T[]>(array) {}
|
|
|
| void free() { this->reset(nullptr); }
|
| T* detach() { return this->release(); }
|
|
|