| 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 #include "SkString.h" | 10 #include "SkString.h" |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 83 SkASSERT(p >= buffer); | 83 SkASSERT(p >= buffer); |
| 84 char* stop = buffer + sizeof(buffer); | 84 char* stop = buffer + sizeof(buffer); |
| 85 while (p < stop) { | 85 while (p < stop) { |
| 86 *string++ = *p++; | 86 *string++ = *p++; |
| 87 } | 87 } |
| 88 SkASSERT(string - start <= SkStrAppendU32_MaxSize); | 88 SkASSERT(string - start <= SkStrAppendU32_MaxSize); |
| 89 return string; | 89 return string; |
| 90 } | 90 } |
| 91 | 91 |
| 92 char* SkStrAppendS32(char string[], int32_t dec) { | 92 char* SkStrAppendS32(char string[], int32_t dec) { |
| 93 uint32_t udec = dec; |
| 93 if (dec < 0) { | 94 if (dec < 0) { |
| 94 *string++ = '-'; | 95 *string++ = '-'; |
| 95 dec = -dec; | 96 udec = ~udec + 1; // udec = -udec, but silences some warnings that are
trying to be helpful |
| 96 } | 97 } |
| 97 return SkStrAppendU32(string, static_cast<uint32_t>(dec)); | 98 return SkStrAppendU32(string, udec); |
| 98 } | 99 } |
| 99 | 100 |
| 100 char* SkStrAppendU64(char string[], uint64_t dec, int minDigits) { | 101 char* SkStrAppendU64(char string[], uint64_t dec, int minDigits) { |
| 101 SkDEBUGCODE(char* start = string;) | 102 SkDEBUGCODE(char* start = string;) |
| 102 | 103 |
| 103 char buffer[SkStrAppendU64_MaxSize]; | 104 char buffer[SkStrAppendU64_MaxSize]; |
| 104 char* p = buffer + sizeof(buffer); | 105 char* p = buffer + sizeof(buffer); |
| 105 | 106 |
| 106 do { | 107 do { |
| 107 *--p = SkToU8('0' + (int32_t) (dec % 10)); | 108 *--p = SkToU8('0' + (int32_t) (dec % 10)); |
| 108 dec /= 10; | 109 dec /= 10; |
| 109 minDigits--; | 110 minDigits--; |
| 110 } while (dec != 0); | 111 } while (dec != 0); |
| 111 | 112 |
| 112 while (minDigits > 0) { | 113 while (minDigits > 0) { |
| 113 *--p = '0'; | 114 *--p = '0'; |
| 114 minDigits--; | 115 minDigits--; |
| 115 } | 116 } |
| 116 | 117 |
| 117 SkASSERT(p >= buffer); | 118 SkASSERT(p >= buffer); |
| 118 size_t cp_len = buffer + sizeof(buffer) - p; | 119 size_t cp_len = buffer + sizeof(buffer) - p; |
| 119 memcpy(string, p, cp_len); | 120 memcpy(string, p, cp_len); |
| 120 string += cp_len; | 121 string += cp_len; |
| 121 | 122 |
| 122 SkASSERT(string - start <= SkStrAppendU64_MaxSize); | 123 SkASSERT(string - start <= SkStrAppendU64_MaxSize); |
| 123 return string; | 124 return string; |
| 124 } | 125 } |
| 125 | 126 |
| 126 char* SkStrAppendS64(char string[], int64_t dec, int minDigits) { | 127 char* SkStrAppendS64(char string[], int64_t dec, int minDigits) { |
| 128 uint64_t udec = dec; |
| 127 if (dec < 0) { | 129 if (dec < 0) { |
| 128 *string++ = '-'; | 130 *string++ = '-'; |
| 129 dec = -dec; | 131 udec = ~udec + 1; // udec = -udec, but silences some warnings that are
trying to be helpful |
| 130 } | 132 } |
| 131 return SkStrAppendU64(string, static_cast<uint64_t>(dec), minDigits); | 133 return SkStrAppendU64(string, udec, minDigits); |
| 132 } | 134 } |
| 133 | 135 |
| 134 char* SkStrAppendFloat(char string[], float value) { | 136 char* SkStrAppendFloat(char string[], float value) { |
| 135 // since floats have at most 8 significant digits, we limit our %g to that. | 137 // since floats have at most 8 significant digits, we limit our %g to that. |
| 136 static const char gFormat[] = "%.8g"; | 138 static const char gFormat[] = "%.8g"; |
| 137 // make it 1 larger for the terminating 0 | 139 // make it 1 larger for the terminating 0 |
| 138 char buffer[SkStrAppendScalar_MaxSize + 1]; | 140 char buffer[SkStrAppendScalar_MaxSize + 1]; |
| 139 int len = SNPRINTF(buffer, sizeof(buffer), gFormat, value); | 141 int len = SNPRINTF(buffer, sizeof(buffer), gFormat, value); |
| 140 memcpy(string, buffer, len); | 142 memcpy(string, buffer, len); |
| 141 SkASSERT(len <= SkStrAppendScalar_MaxSize); | 143 SkASSERT(len <= SkStrAppendScalar_MaxSize); |
| (...skipping 512 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 654 const size_t len = strcspn(str, delimiters); | 656 const size_t len = strcspn(str, delimiters); |
| 655 out->push_back().set(str, len); | 657 out->push_back().set(str, len); |
| 656 str += len; | 658 str += len; |
| 657 // Skip any delimiters. | 659 // Skip any delimiters. |
| 658 str += strspn(str, delimiters); | 660 str += strspn(str, delimiters); |
| 659 } | 661 } |
| 660 } | 662 } |
| 661 | 663 |
| 662 #undef VSNPRINTF | 664 #undef VSNPRINTF |
| 663 #undef SNPRINTF | 665 #undef SNPRINTF |
| OLD | NEW |