Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2009, 2010, 2012, 2013 Apple Inc. All rights reserved. | 2 * Copyright (C) 2009, 2010, 2012, 2013 Apple Inc. All rights reserved. |
| 3 * Copyright (C) 2012 Google Inc. All rights reserved. | 3 * Copyright (C) 2012 Google Inc. All rights reserved. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
| 7 * are met: | 7 * are met: |
| 8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 108 else | 108 else |
| 109 append(string.characters16(), string.length()); | 109 append(string.characters16(), string.length()); |
| 110 } | 110 } |
| 111 | 111 |
| 112 void append(UChar c) | 112 void append(UChar c) |
| 113 { | 113 { |
| 114 if (m_is8Bit && c <= 0xFF) { | 114 if (m_is8Bit && c <= 0xFF) { |
| 115 append(static_cast<LChar>(c)); | 115 append(static_cast<LChar>(c)); |
| 116 return; | 116 return; |
| 117 } | 117 } |
| 118 ensureBuffer16(); | 118 ensureBuffer16(1); |
| 119 m_string = String(); | 119 m_string = String(); |
| 120 m_buffer16->append(c); | 120 m_buffer16->append(c); |
| 121 ++m_length; | 121 ++m_length; |
| 122 } | 122 } |
| 123 | 123 |
| 124 void append(LChar c) | 124 void append(LChar c) |
| 125 { | 125 { |
| 126 if (!m_is8Bit) { | 126 if (!m_is8Bit) { |
| 127 append(static_cast<UChar>(c)); | 127 append(static_cast<UChar>(c)); |
| 128 return; | 128 return; |
| 129 } | 129 } |
| 130 ensureBuffer8(); | 130 ensureBuffer8(1); |
| 131 m_string = String(); | 131 m_string = String(); |
| 132 m_buffer8->append(c); | 132 m_buffer8->append(c); |
| 133 ++m_length; | 133 ++m_length; |
| 134 } | 134 } |
| 135 | 135 |
| 136 void append(char c) | 136 void append(char c) |
| 137 { | 137 { |
| 138 append(static_cast<LChar>(c)); | 138 append(static_cast<LChar>(c)); |
| 139 } | 139 } |
| 140 | 140 |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 198 DCHECK(m_buffer16); | 198 DCHECK(m_buffer16); |
| 199 return m_buffer16->data(); | 199 return m_buffer16->data(); |
| 200 } | 200 } |
| 201 | 201 |
| 202 bool is8Bit() const { return m_is8Bit; } | 202 bool is8Bit() const { return m_is8Bit; } |
| 203 | 203 |
| 204 void clear(); | 204 void clear(); |
| 205 void swap(StringBuilder&); | 205 void swap(StringBuilder&); |
| 206 | 206 |
| 207 private: | 207 private: |
| 208 typedef Vector<LChar, 16> Buffer8; | 208 static const unsigned kInlineBufferSize = 16; |
| 209 typedef Vector<UChar, 16> Buffer16; | 209 static unsigned initialBufferSize() { return kInlineBufferSize; } |
|
esprehn
2016/06/30 23:23:15
You have to have a method since using kInlineBuffe
| |
| 210 | 210 |
| 211 void ensureBuffer8() | 211 typedef Vector<LChar, kInlineBufferSize> Buffer8; |
| 212 typedef Vector<UChar, kInlineBufferSize> Buffer16; | |
| 213 | |
| 214 void ensureBuffer8(unsigned addedSize) | |
| 212 { | 215 { |
| 213 DCHECK(m_is8Bit); | 216 DCHECK(m_is8Bit); |
| 214 if (!hasBuffer()) | 217 if (!hasBuffer()) |
| 215 createBuffer8(); | 218 createBuffer8(addedSize); |
| 216 } | 219 } |
| 217 | 220 |
| 218 void ensureBuffer16() | 221 void ensureBuffer16(unsigned addedSize) |
| 219 { | 222 { |
| 220 if (m_is8Bit || !hasBuffer()) | 223 if (m_is8Bit || !hasBuffer()) |
| 221 createBuffer16(); | 224 createBuffer16(addedSize); |
| 222 } | 225 } |
| 223 | 226 |
| 224 void createBuffer8(); | 227 void createBuffer8(unsigned addedSize); |
| 225 void createBuffer16(); | 228 void createBuffer16(unsigned addedSize); |
| 226 | 229 |
| 227 bool hasBuffer() const { return m_buffer; } | 230 bool hasBuffer() const { return m_buffer; } |
| 228 | 231 |
| 229 String m_string; | 232 String m_string; |
| 230 union { | 233 union { |
| 231 Buffer8* m_buffer8; | 234 Buffer8* m_buffer8; |
| 232 Buffer16* m_buffer16; | 235 Buffer16* m_buffer16; |
| 233 void* m_buffer; | 236 void* m_buffer; |
| 234 }; | 237 }; |
| 235 unsigned m_length; | 238 unsigned m_length; |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 310 inline bool operator==(const StringBuilder& a, const String& b) { return equal(a , b); } | 313 inline bool operator==(const StringBuilder& a, const String& b) { return equal(a , b); } |
| 311 inline bool operator!=(const StringBuilder& a, const String& b) { return !equal( a, b); } | 314 inline bool operator!=(const StringBuilder& a, const String& b) { return !equal( a, b); } |
| 312 inline bool operator==(const String& a, const StringBuilder& b) { return equal(b , a); } | 315 inline bool operator==(const String& a, const StringBuilder& b) { return equal(b , a); } |
| 313 inline bool operator!=(const String& a, const StringBuilder& b) { return !equal( b, a); } | 316 inline bool operator!=(const String& a, const StringBuilder& b) { return !equal( b, a); } |
| 314 | 317 |
| 315 } // namespace WTF | 318 } // namespace WTF |
| 316 | 319 |
| 317 using WTF::StringBuilder; | 320 using WTF::StringBuilder; |
| 318 | 321 |
| 319 #endif // StringBuilder_h | 322 #endif // StringBuilder_h |
| OLD | NEW |