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

Side by Side Diff: include/core/SkTDArray.h

Issue 150663014: Change growth function for SkWriter32 (Closed) Base URL: https://skia.googlesource.com/skia.git@no_external_test
Patch Set: Created 6 years, 10 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 unified diff | Download patch
« no previous file with comments | « no previous file | src/core/SkWriter32.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 SkTDArray_DEFINED 10 #ifndef SkTDArray_DEFINED
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 } else { 144 } else {
145 SkASSERT(fReserve == 0 && fCount == 0); 145 SkASSERT(fReserve == 0 && fCount == 0);
146 } 146 }
147 } 147 }
148 148
149 void rewind() { 149 void rewind() {
150 // same as setCount(0) 150 // same as setCount(0)
151 fCount = 0; 151 fCount = 0;
152 } 152 }
153 153
154 void setCount(int count) { 154 void setCount(int count) {
reed1 2014/02/07 15:37:49 yikes -- what can this API mean if it doesn't chan
iancottrell 2014/02/07 16:54:15 Done.
155 if (count > fReserve) { 155 if (count > fReserve) {
156 this->growBy(count - fCount); 156 this->growBy(count - fCount);
157 } else { 157 } else {
158 fCount = count; 158 fCount = count;
159 } 159 }
160 } 160 }
161 161
162 void setCountExact(int count) {
163 if (count > fReserve) {
164 this->growTo(count);
165 }
166 fCount = count;
167 }
168
162 void setReserve(int reserve) { 169 void setReserve(int reserve) {
163 if (reserve > fReserve) { 170 if (reserve > fReserve) {
164 SkASSERT(reserve > fCount); 171 SkASSERT(reserve > fCount);
165 int count = fCount; 172 int count = fCount;
166 this->growBy(reserve - fCount); 173 this->growBy(reserve - fCount);
167 fCount = count; 174 fCount = count;
168 } 175 }
169 } 176 }
170 177
171 T* prepend() { 178 T* prepend() {
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
349 enum { 356 enum {
350 kDebugArraySize = 16 357 kDebugArraySize = 16
351 }; 358 };
352 typedef T ArrayT[kDebugArraySize]; 359 typedef T ArrayT[kDebugArraySize];
353 ArrayT* fData; 360 ArrayT* fData;
354 #endif 361 #endif
355 T* fArray; 362 T* fArray;
356 int fReserve; 363 int fReserve;
357 int fCount; 364 int fCount;
358 365
366 void growTo(int size) {
reed1 2014/02/07 15:37:49 /** * This resizes the storage to *exactly* size
iancottrell 2014/02/07 16:54:15 Done.
367 fArray = (T*)sk_realloc_throw(fArray, size * sizeof(T));
368 #ifdef SK_DEBUG
369 fData = (ArrayT*)fArray;
370 #endif
371 fReserve = size;
372 }
373
359 void growBy(int extra) { 374 void growBy(int extra) {
reed1 2014/02/07 15:37:49 /** * Increase the storage allocation such it can
iancottrell 2014/02/07 16:54:15 Done.
360 SkASSERT(extra); 375 SkASSERT(extra);
361 376
362 if (fCount + extra > fReserve) { 377 if (fCount + extra > fReserve) {
363 int size = fCount + extra + 4; 378 int size = fCount + extra + 4;
364 size += size >> 2; 379 growTo(size + (size >> 2));
365
366 fArray = (T*)sk_realloc_throw(fArray, size * sizeof(T));
367 #ifdef SK_DEBUG
368 fData = (ArrayT*)fArray;
369 #endif
370 fReserve = size;
371 } 380 }
372 fCount += extra; 381 fCount += extra;
373 } 382 }
374 }; 383 };
375 384
376 #endif 385 #endif
OLDNEW
« no previous file with comments | « no previous file | src/core/SkWriter32.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698