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

Side by Side Diff: Source/platform/text/SegmentedString.h

Issue 1317693006: Make members of SegmentedSubstring private (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: remove mysterious lines Created 5 years, 3 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | Source/platform/text/SegmentedString.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 Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. 2 Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
3 3
4 This library is free software; you can redistribute it and/or 4 This library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Library General Public 5 modify it under the terms of the GNU Library General Public
6 License as published by the Free Software Foundation; either 6 License as published by the Free Software Foundation; either
7 version 2 of the License, or (at your option) any later version. 7 version 2 of the License, or (at your option) any later version.
8 8
9 This library is distributed in the hope that it will be useful, 9 This library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of 10 but WITHOUT ANY WARRANTY; without even the implied warranty of
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 } 118 }
119 119
120 ALWAYS_INLINE UChar incrementAndGetCurrentChar() 120 ALWAYS_INLINE UChar incrementAndGetCurrentChar()
121 { 121 {
122 ASSERT(m_length); 122 ASSERT(m_length);
123 if (is8Bit()) 123 if (is8Bit())
124 return incrementAndGetCurrentChar8(); 124 return incrementAndGetCurrentChar8();
125 return incrementAndGetCurrentChar16(); 125 return incrementAndGetCurrentChar16();
126 } 126 }
127 127
128 public: 128 ALWAYS_INLINE bool haveOneCharacterLeft() const
129 {
130 return m_length == 1;
131 }
132
133 ALWAYS_INLINE void decrementLength() { --m_length; }
134
135 ALWAYS_INLINE int length() const { return m_length; }
136
137 private:
129 union { 138 union {
130 const LChar* string8Ptr; 139 const LChar* string8Ptr;
131 const UChar* string16Ptr; 140 const UChar* string16Ptr;
132 } m_data; 141 } m_data;
133 int m_length; 142 int m_length;
134
135 private:
136 bool m_doNotExcludeLineNumbers; 143 bool m_doNotExcludeLineNumbers;
137 bool m_is8Bit; 144 bool m_is8Bit;
138 String m_string; 145 String m_string;
139 }; 146 };
140 147
141 class PLATFORM_EXPORT SegmentedString { 148 class PLATFORM_EXPORT SegmentedString {
142 public: 149 public:
143 SegmentedString() 150 SegmentedString()
144 : m_pushedChar1(0) 151 : m_pushedChar1(0)
145 , m_pushedChar2(0) 152 , m_pushedChar2(0)
(...skipping 14 matching lines...) Expand all
160 , m_pushedChar2(0) 167 , m_pushedChar2(0)
161 , m_currentString(str) 168 , m_currentString(str)
162 , m_currentChar(0) 169 , m_currentChar(0)
163 , m_numberOfCharactersConsumedPriorToCurrentString(0) 170 , m_numberOfCharactersConsumedPriorToCurrentString(0)
164 , m_numberOfCharactersConsumedPriorToCurrentLine(0) 171 , m_numberOfCharactersConsumedPriorToCurrentLine(0)
165 , m_currentLine(0) 172 , m_currentLine(0)
166 , m_closed(false) 173 , m_closed(false)
167 , m_empty(!str.length()) 174 , m_empty(!str.length())
168 , m_fastPathFlags(NoFastPath) 175 , m_fastPathFlags(NoFastPath)
169 { 176 {
170 if (m_currentString.m_length) 177 if (m_currentString.length())
171 m_currentChar = m_currentString.getCurrentChar(); 178 m_currentChar = m_currentString.getCurrentChar();
172 updateAdvanceFunctionPointers(); 179 updateAdvanceFunctionPointers();
173 } 180 }
174 181
175 void clear(); 182 void clear();
176 void close(); 183 void close();
177 184
178 void append(const SegmentedString&); 185 void append(const SegmentedString&);
179 void prepend(const SegmentedString&); 186 void prepend(const SegmentedString&);
180 187
(...skipping 23 matching lines...) Expand all
204 NotEnoughCharacters, 211 NotEnoughCharacters,
205 }; 212 };
206 213
207 LookAheadResult lookAhead(const String& string) { return lookAheadInline(str ing, TextCaseSensitive); } 214 LookAheadResult lookAhead(const String& string) { return lookAheadInline(str ing, TextCaseSensitive); }
208 LookAheadResult lookAheadIgnoringCase(const String& string) { return lookAhe adInline(string, TextCaseInsensitive); } 215 LookAheadResult lookAheadIgnoringCase(const String& string) { return lookAhe adInline(string, TextCaseInsensitive); }
209 216
210 void advance() 217 void advance()
211 { 218 {
212 if (m_fastPathFlags & Use8BitAdvance) { 219 if (m_fastPathFlags & Use8BitAdvance) {
213 ASSERT(!m_pushedChar1); 220 ASSERT(!m_pushedChar1);
214 bool haveOneCharacterLeft = (--m_currentString.m_length == 1);
215 m_currentChar = m_currentString.incrementAndGetCurrentChar8(); 221 m_currentChar = m_currentString.incrementAndGetCurrentChar8();
216 222 m_currentString.decrementLength();
217 if (!haveOneCharacterLeft) 223 if (!m_currentString.haveOneCharacterLeft())
218 return; 224 return;
219 225
220 updateSlowCaseFunctionPointers(); 226 updateSlowCaseFunctionPointers();
221 227
222 return; 228 return;
223 } 229 }
224 230
225 (this->*m_advanceFunc)(); 231 (this->*m_advanceFunc)();
226 } 232 }
227 233
228 inline void advanceAndUpdateLineNumber() 234 inline void advanceAndUpdateLineNumber()
229 { 235 {
230 if (m_fastPathFlags & Use8BitAdvance) { 236 if (m_fastPathFlags & Use8BitAdvance) {
231 ASSERT(!m_pushedChar1); 237 ASSERT(!m_pushedChar1);
232 238
233 bool haveNewLine = (m_currentChar == '\n') & !!(m_fastPathFlags & Us e8BitAdvanceAndUpdateLineNumbers); 239 bool haveNewLine = (m_currentChar == '\n') & !!(m_fastPathFlags & Us e8BitAdvanceAndUpdateLineNumbers);
234 bool haveOneCharacterLeft = (--m_currentString.m_length == 1);
235
236 m_currentChar = m_currentString.incrementAndGetCurrentChar8(); 240 m_currentChar = m_currentString.incrementAndGetCurrentChar8();
237 241 m_currentString.decrementLength();
238 if (!(haveNewLine | haveOneCharacterLeft)) 242 bool haveOneCharacterLeft = m_currentString.haveOneCharacterLeft();
239 return;
240 243
241 if (haveNewLine) { 244 if (haveNewLine) {
242 ++m_currentLine; 245 ++m_currentLine;
243 m_numberOfCharactersConsumedPriorToCurrentLine = m_numberOfChar actersConsumedPriorToCurrentString + m_currentString.numberOfCharactersConsumed( ); 246 m_numberOfCharactersConsumedPriorToCurrentLine = m_numberOfChar actersConsumedPriorToCurrentString + m_currentString.numberOfCharactersConsumed( );
244 } 247 }
245 248
246 if (haveOneCharacterLeft) 249 if (haveOneCharacterLeft)
247 updateSlowCaseFunctionPointers(); 250 updateSlowCaseFunctionPointers();
248 251
249 return; 252 return;
(...skipping 16 matching lines...) Expand all
266 269
267 void advancePastNonNewline() 270 void advancePastNonNewline()
268 { 271 {
269 ASSERT(currentChar() != '\n'); 272 ASSERT(currentChar() != '\n');
270 advance(); 273 advance();
271 } 274 }
272 275
273 void advancePastNewlineAndUpdateLineNumber() 276 void advancePastNewlineAndUpdateLineNumber()
274 { 277 {
275 ASSERT(currentChar() == '\n'); 278 ASSERT(currentChar() == '\n');
276 if (!m_pushedChar1 && m_currentString.m_length > 1) { 279 if (!m_pushedChar1 && m_currentString.length() > 1) {
277 int newLineFlag = m_currentString.doNotExcludeLineNumbers(); 280 int newLineFlag = m_currentString.doNotExcludeLineNumbers();
278 m_currentLine += newLineFlag; 281 m_currentLine += newLineFlag;
279 if (newLineFlag) 282 if (newLineFlag)
280 m_numberOfCharactersConsumedPriorToCurrentLine = numberOfCharact ersConsumed() + 1; 283 m_numberOfCharactersConsumedPriorToCurrentLine = numberOfCharact ersConsumed() + 1;
281 decrementAndCheckLength(); 284 decrementAndCheckLength();
282 m_currentChar = m_currentString.incrementAndGetCurrentChar(); 285 m_currentChar = m_currentString.incrementAndGetCurrentChar();
283 return; 286 return;
284 } 287 }
285 advanceAndUpdateLineNumberSlowCase(); 288 advanceAndUpdateLineNumberSlowCase();
286 } 289 }
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 void advanceAndUpdateLineNumber16(); 332 void advanceAndUpdateLineNumber16();
330 void advanceSlowCase(); 333 void advanceSlowCase();
331 void advanceAndUpdateLineNumberSlowCase(); 334 void advanceAndUpdateLineNumberSlowCase();
332 void advanceEmpty(); 335 void advanceEmpty();
333 void advanceSubstring(); 336 void advanceSubstring();
334 337
335 void updateSlowCaseFunctionPointers(); 338 void updateSlowCaseFunctionPointers();
336 339
337 void decrementAndCheckLength() 340 void decrementAndCheckLength()
338 { 341 {
339 ASSERT(m_currentString.m_length > 1); 342 ASSERT(m_currentString.length() > 1);
340 if (--m_currentString.m_length == 1) 343 m_currentString.decrementLength();
344 if (m_currentString.haveOneCharacterLeft())
341 updateSlowCaseFunctionPointers(); 345 updateSlowCaseFunctionPointers();
342 } 346 }
343 347
344 void updateAdvanceFunctionPointers() 348 void updateAdvanceFunctionPointers()
345 { 349 {
346 if ((m_currentString.m_length > 1) && !m_pushedChar1) { 350 if ((m_currentString.length() > 1) && !m_pushedChar1) {
347 if (m_currentString.is8Bit()) { 351 if (m_currentString.is8Bit()) {
348 m_advanceFunc = &SegmentedString::advance8; 352 m_advanceFunc = &SegmentedString::advance8;
349 m_fastPathFlags = Use8BitAdvance; 353 m_fastPathFlags = Use8BitAdvance;
350 if (m_currentString.doNotExcludeLineNumbers()) { 354 if (m_currentString.doNotExcludeLineNumbers()) {
351 m_advanceAndUpdateLineNumberFunc = &SegmentedString::advance AndUpdateLineNumber8; 355 m_advanceAndUpdateLineNumberFunc = &SegmentedString::advance AndUpdateLineNumber8;
352 m_fastPathFlags |= Use8BitAdvanceAndUpdateLineNumbers; 356 m_fastPathFlags |= Use8BitAdvanceAndUpdateLineNumbers;
353 } else { 357 } else {
354 m_advanceAndUpdateLineNumberFunc = &SegmentedString::advance 8; 358 m_advanceAndUpdateLineNumberFunc = &SegmentedString::advance 8;
355 } 359 }
356 return; 360 return;
357 } 361 }
358 362
359 m_advanceFunc = &SegmentedString::advance16; 363 m_advanceFunc = &SegmentedString::advance16;
360 m_fastPathFlags = NoFastPath; 364 m_fastPathFlags = NoFastPath;
361 if (m_currentString.doNotExcludeLineNumbers()) 365 if (m_currentString.doNotExcludeLineNumbers())
362 m_advanceAndUpdateLineNumberFunc = &SegmentedString::advanceAndU pdateLineNumber16; 366 m_advanceAndUpdateLineNumberFunc = &SegmentedString::advanceAndU pdateLineNumber16;
363 else 367 else
364 m_advanceAndUpdateLineNumberFunc = &SegmentedString::advance16; 368 m_advanceAndUpdateLineNumberFunc = &SegmentedString::advance16;
365 return; 369 return;
366 } 370 }
367 371
368 if (!m_currentString.m_length && !isComposite()) { 372 if (!m_currentString.length() && !isComposite()) {
369 m_advanceFunc = &SegmentedString::advanceEmpty; 373 m_advanceFunc = &SegmentedString::advanceEmpty;
370 m_fastPathFlags = NoFastPath; 374 m_fastPathFlags = NoFastPath;
371 m_advanceAndUpdateLineNumberFunc = &SegmentedString::advanceEmpty; 375 m_advanceAndUpdateLineNumberFunc = &SegmentedString::advanceEmpty;
372 } 376 }
373 377
374 updateSlowCaseFunctionPointers(); 378 updateSlowCaseFunctionPointers();
375 } 379 }
376 380
377 inline LookAheadResult lookAheadInline(const String& string, TextCaseSensiti vity caseSensitivity) 381 inline LookAheadResult lookAheadInline(const String& string, TextCaseSensiti vity caseSensitivity)
378 { 382 {
379 if (!m_pushedChar1 && string.length() <= static_cast<unsigned>(m_current String.m_length)) { 383 if (!m_pushedChar1 && string.length() <= static_cast<unsigned>(m_current String.length())) {
380 String currentSubstring = m_currentString.currentSubString(string.le ngth()); 384 String currentSubstring = m_currentString.currentSubString(string.le ngth());
381 if (currentSubstring.startsWith(string, caseSensitivity)) 385 if (currentSubstring.startsWith(string, caseSensitivity))
382 return DidMatch; 386 return DidMatch;
383 return DidNotMatch; 387 return DidNotMatch;
384 } 388 }
385 return lookAheadSlowCase(string, caseSensitivity); 389 return lookAheadSlowCase(string, caseSensitivity);
386 } 390 }
387 391
388 LookAheadResult lookAheadSlowCase(const String& string, TextCaseSensitivity caseSensitivity) 392 LookAheadResult lookAheadSlowCase(const String& string, TextCaseSensitivity caseSensitivity)
389 { 393 {
(...skipping 23 matching lines...) Expand all
413 bool m_closed; 417 bool m_closed;
414 bool m_empty; 418 bool m_empty;
415 unsigned char m_fastPathFlags; 419 unsigned char m_fastPathFlags;
416 void (SegmentedString::*m_advanceFunc)(); 420 void (SegmentedString::*m_advanceFunc)();
417 void (SegmentedString::*m_advanceAndUpdateLineNumberFunc)(); 421 void (SegmentedString::*m_advanceAndUpdateLineNumberFunc)();
418 }; 422 };
419 423
420 } 424 }
421 425
422 #endif 426 #endif
OLDNEW
« no previous file with comments | « no previous file | Source/platform/text/SegmentedString.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698