Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(10)

Unified Diff: include/core/SkTemplates.h

Issue 15739013: Use macros for new and delete in SkTemplates.h (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Respond to comments Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: include/core/SkTemplates.h
diff --git a/include/core/SkTemplates.h b/include/core/SkTemplates.h
index 5eb7885425f46c31389be142bfeb81e93acdfecb..ce76dbfbbab2a3097f8b0555d790d164de5f477b 100644
--- a/include/core/SkTemplates.h
+++ b/include/core/SkTemplates.h
@@ -101,7 +101,7 @@ private:
template <typename T> class SkAutoTDelete : SkNoncopyable {
public:
SkAutoTDelete(T* obj = NULL) : fObj(obj) {}
- ~SkAutoTDelete() { delete fObj; }
+ ~SkAutoTDelete() { SkDELETE(fObj); }
T* get() const { return fObj; }
T& operator*() const { SkASSERT(fObj); return *fObj; }
@@ -109,7 +109,7 @@ public:
void reset(T* obj) {
if (fObj != obj) {
- delete fObj;
+ SkDELETE(fObj);
fObj = obj;
}
}
@@ -118,7 +118,7 @@ public:
* Delete the owned object, setting the internal pointer to NULL.
*/
void free() {
- delete fObj;
+ SkDELETE(fObj);
fObj = NULL;
}
@@ -182,7 +182,7 @@ public:
SkASSERT(count >= 0);
fArray = NULL;
if (count) {
- fArray = new T[count];
+ fArray = SkNEW_ARRAY(T, count);
}
SkDEBUGCODE(fCount = count;)
}
@@ -190,17 +190,17 @@ public:
/** Reallocates given a new count. Reallocation occurs even if new count equals old count.
*/
void reset(int count) {
- delete[] fArray;
+ SkDELETE_ARRAY(fArray);
SkASSERT(count >= 0);
fArray = NULL;
if (count) {
- fArray = new T[count];
+ fArray = SkNEW_ARRAY(T, count);
}
SkDEBUGCODE(fCount = count;)
}
~SkAutoTArray() {
- delete[] fArray;
+ SkDELETE_ARRAY(fArray);
}
/** Return the array of T elements. Will be NULL if count == 0
@@ -226,25 +226,30 @@ public:
/** Allocate count number of T elements
*/
SkAutoSTArray(size_t count) {
+ fCount = count;
if (count > N) {
- fArray = new T[count];
- } else if (count) {
- fArray = new (fStorage) T[count];
+ fArray = (T*) sk_malloc_throw(count * sizeof(T));
+ } else if (count > 0) {
+ fArray = (T*) fStorage;
} else {
fArray = NULL;
+ return;
+ }
+ T* iter = fArray;
+ T* stop = fArray + count;
+ while (iter < stop) {
+ SkNEW_PLACEMENT(iter++, T);
}
- fCount = count;
}
~SkAutoSTArray() {
+ T* start = fArray;
+ T* iter = start + fCount;
+ while (iter > start) {
+ (--iter)->~T();
+ }
if (fCount > N) {
- delete[] fArray;
- } else {
- T* start = fArray;
- T* iter = start + fCount;
- while (iter > start) {
- (--iter)->~T();
- }
+ sk_free(fArray);
}
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698