OLD | NEW |
---|---|
1 | 1 |
2 /* | 2 /* |
3 * Copyright 2006 The Android Open Source Project | 3 * Copyright 2006 The Android Open Source Project |
4 * | 4 * |
5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
7 */ | 7 */ |
8 | 8 |
9 | 9 |
10 #ifndef SkTemplates_DEFINED | 10 #ifndef SkTemplates_DEFINED |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
91 | 91 |
92 The size of a SkAutoTDelete is small: sizeof(SkAutoTDelete<T>) == sizeof(T*) | 92 The size of a SkAutoTDelete is small: sizeof(SkAutoTDelete<T>) == sizeof(T*) |
93 */ | 93 */ |
94 template <typename T> class SkAutoTDelete : public std::unique_ptr<T> { | 94 template <typename T> class SkAutoTDelete : public std::unique_ptr<T> { |
95 public: | 95 public: |
96 SkAutoTDelete(T* obj = NULL) : std::unique_ptr<T>(obj) {} | 96 SkAutoTDelete(T* obj = NULL) : std::unique_ptr<T>(obj) {} |
97 | 97 |
98 operator T*() const { return this->get(); } | 98 operator T*() const { return this->get(); } |
99 void free() { this->reset(nullptr); } | 99 void free() { this->reset(nullptr); } |
100 | 100 |
101 #if defined(SK_BUILD_FOR_ANDROID_FRAMEWORK) | |
102 // Need to update graphics/BitmapRegionDecoder.cpp. | |
scroggo
2016/03/17 12:37:47
Looks like we also need to update Shader.cpp
| |
103 T* detach() { return this->release(); } | |
104 #endif | |
105 | |
101 // See SkAutoTUnref for why we do this. | 106 // See SkAutoTUnref for why we do this. |
102 explicit operator bool() const { return this->get() != nullptr; } | 107 explicit operator bool() const { return this->get() != nullptr; } |
103 }; | 108 }; |
104 | 109 |
105 template <typename T> class SkAutoTDeleteArray : public std::unique_ptr<T[]> { | 110 template <typename T> class SkAutoTDeleteArray : public std::unique_ptr<T[]> { |
106 public: | 111 public: |
107 SkAutoTDeleteArray(T array[]) : std::unique_ptr<T[]>(array) {} | 112 SkAutoTDeleteArray(T array[]) : std::unique_ptr<T[]>(array) {} |
108 | 113 |
109 void free() { this->reset(nullptr); } | 114 void free() { this->reset(nullptr); } |
110 }; | 115 }; |
(...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
472 * Returns void* because this object does not initialize the | 477 * Returns void* because this object does not initialize the |
473 * memory. Use placement new for types that require a cons. | 478 * memory. Use placement new for types that require a cons. |
474 */ | 479 */ |
475 void* get() { return fStorage.get(); } | 480 void* get() { return fStorage.get(); } |
476 const void* get() const { return fStorage.get(); } | 481 const void* get() const { return fStorage.get(); } |
477 private: | 482 private: |
478 SkAlignedSStorage<sizeof(T)*N> fStorage; | 483 SkAlignedSStorage<sizeof(T)*N> fStorage; |
479 }; | 484 }; |
480 | 485 |
481 #endif | 486 #endif |
OLD | NEW |