| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2011 Google Inc. | 2 * Copyright 2011 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #ifndef SkTArray_DEFINED | 8 #ifndef SkTArray_DEFINED |
| 9 #define SkTArray_DEFINED | 9 #define SkTArray_DEFINED |
| 10 | 10 |
| (...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 187 return *new (newT) T(std::forward<Args>(args)...); | 187 return *new (newT) T(std::forward<Args>(args)...); |
| 188 } | 188 } |
| 189 | 189 |
| 190 /** | 190 /** |
| 191 * Allocates n more default-initialized T values, and returns the address of | 191 * Allocates n more default-initialized T values, and returns the address of |
| 192 * the start of that new range. Note: this address is only valid until the | 192 * the start of that new range. Note: this address is only valid until the |
| 193 * next API call made on the array that might add or remove elements. | 193 * next API call made on the array that might add or remove elements. |
| 194 */ | 194 */ |
| 195 T* push_back_n(int n) { | 195 T* push_back_n(int n) { |
| 196 SkASSERT(n >= 0); | 196 SkASSERT(n >= 0); |
| 197 char* newTs = static_cast<char*>(this->push_back_raw(n)); | 197 void* newTs = this->push_back_raw(n); |
| 198 for (int i = 0; i < n; ++i) { | 198 for (int i = 0; i < n; ++i) { |
| 199 new (newTs + i * sizeof(T)) T; | 199 new (static_cast<char*>(newTs) + i * sizeof(T)) T; |
| 200 } | 200 } |
| 201 return reinterpret_cast<T*>(newTs); | 201 return static_cast<T*>(newTs); |
| 202 } | 202 } |
| 203 | 203 |
| 204 /** | 204 /** |
| 205 * Version of above that uses a copy constructor to initialize all n items | 205 * Version of above that uses a copy constructor to initialize all n items |
| 206 * to the same T. | 206 * to the same T. |
| 207 */ | 207 */ |
| 208 T* push_back_n(int n, const T& t) { | 208 T* push_back_n(int n, const T& t) { |
| 209 SkASSERT(n >= 0); | 209 SkASSERT(n >= 0); |
| 210 char* newTs = static_cast<char*>(this->push_back_raw(n)); | 210 void* newTs = this->push_back_raw(n); |
| 211 for (int i = 0; i < n; ++i) { | 211 for (int i = 0; i < n; ++i) { |
| 212 new (newTs + i * sizeof(T)) T(t); | 212 new (static_cast<char*>(newTs) + i * sizeof(T)) T(t); |
| 213 } | 213 } |
| 214 return reinterpret_cast<T*>(newTs); | 214 return static_cast<T*>(newTs); |
| 215 } | 215 } |
| 216 | 216 |
| 217 /** | 217 /** |
| 218 * Version of above that uses a copy constructor to initialize the n items | 218 * Version of above that uses a copy constructor to initialize the n items |
| 219 * to separate T values. | 219 * to separate T values. |
| 220 */ | 220 */ |
| 221 T* push_back_n(int n, const T t[]) { | 221 T* push_back_n(int n, const T t[]) { |
| 222 SkASSERT(n >= 0); | 222 SkASSERT(n >= 0); |
| 223 this->checkRealloc(n); | 223 this->checkRealloc(n); |
| 224 for (int i = 0; i < n; ++i) { | 224 for (int i = 0; i < n; ++i) { |
| (...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 529 SkSTArray& operator= (const INHERITED& array) { | 529 SkSTArray& operator= (const INHERITED& array) { |
| 530 INHERITED::operator=(array); | 530 INHERITED::operator=(array); |
| 531 return *this; | 531 return *this; |
| 532 } | 532 } |
| 533 | 533 |
| 534 private: | 534 private: |
| 535 SkAlignedSTStorage<N,T> fStorage; | 535 SkAlignedSTStorage<N,T> fStorage; |
| 536 }; | 536 }; |
| 537 | 537 |
| 538 #endif | 538 #endif |
| OLD | NEW |