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

Side by Side Diff: third_party/WebKit/Source/platform/text/SegmentedString.cpp

Issue 2811453002: Replace ASSERT, ASSERT_NOT_REACHED, and RELEASE_ASSERT in platform/text (Closed)
Patch Set: test Created 3 years, 8 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
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 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
50 current_line_ = 0; 50 current_line_ = 0;
51 substrings_.Clear(); 51 substrings_.Clear();
52 closed_ = false; 52 closed_ = false;
53 empty_ = true; 53 empty_ = true;
54 fast_path_flags_ = kNoFastPath; 54 fast_path_flags_ = kNoFastPath;
55 advance_func_ = &SegmentedString::AdvanceEmpty; 55 advance_func_ = &SegmentedString::AdvanceEmpty;
56 advance_and_update_line_number_func_ = &SegmentedString::AdvanceEmpty; 56 advance_and_update_line_number_func_ = &SegmentedString::AdvanceEmpty;
57 } 57 }
58 58
59 void SegmentedString::Append(const SegmentedSubstring& s) { 59 void SegmentedString::Append(const SegmentedSubstring& s) {
60 ASSERT(!closed_); 60 DCHECK(!closed_);
61 if (!s.length()) 61 if (!s.length())
62 return; 62 return;
63 63
64 if (!current_string_.length()) { 64 if (!current_string_.length()) {
65 number_of_characters_consumed_prior_to_current_string_ += 65 number_of_characters_consumed_prior_to_current_string_ +=
66 current_string_.NumberOfCharactersConsumed(); 66 current_string_.NumberOfCharactersConsumed();
67 current_string_ = s; 67 current_string_ = s;
68 UpdateAdvanceFunctionPointers(); 68 UpdateAdvanceFunctionPointers();
69 } else { 69 } else {
70 substrings_.push_back(s); 70 substrings_.push_back(s);
71 } 71 }
72 empty_ = false; 72 empty_ = false;
73 } 73 }
74 74
75 void SegmentedString::Push(UChar c) { 75 void SegmentedString::Push(UChar c) {
76 ASSERT(c); 76 DCHECK(c);
77 77
78 // pushIfPossible attempts to rewind the pointer in the SegmentedSubstring, 78 // pushIfPossible attempts to rewind the pointer in the SegmentedSubstring,
79 // however it will fail if the SegmentedSubstring is empty, or 79 // however it will fail if the SegmentedSubstring is empty, or
80 // when we prepended some text while consuming a SegmentedSubstring by 80 // when we prepended some text while consuming a SegmentedSubstring by
81 // document.write(). 81 // document.write().
82 if (current_string_.PushIfPossible(c)) { 82 if (current_string_.PushIfPossible(c)) {
83 current_char_ = c; 83 current_char_ = c;
84 return; 84 return;
85 } 85 }
86 86
87 Prepend(SegmentedString(String(&c, 1)), PrependType::kUnconsume); 87 Prepend(SegmentedString(String(&c, 1)), PrependType::kUnconsume);
88 } 88 }
89 89
90 void SegmentedString::Prepend(const SegmentedSubstring& s, PrependType type) { 90 void SegmentedString::Prepend(const SegmentedSubstring& s, PrependType type) {
91 ASSERT(!s.NumberOfCharactersConsumed()); 91 DCHECK(!s.NumberOfCharactersConsumed());
92 if (!s.length()) 92 if (!s.length())
93 return; 93 return;
94 94
95 // FIXME: We're also ASSERTing that s is a fresh SegmentedSubstring. 95 // FIXME: We're also ASSERTing that s is a fresh SegmentedSubstring.
96 // The assumption is sufficient for our current use, but we might 96 // The assumption is sufficient for our current use, but we might
97 // need to handle the more elaborate cases in the future. 97 // need to handle the more elaborate cases in the future.
98 number_of_characters_consumed_prior_to_current_string_ += 98 number_of_characters_consumed_prior_to_current_string_ +=
99 current_string_.NumberOfCharactersConsumed(); 99 current_string_.NumberOfCharactersConsumed();
100 if (type == PrependType::kUnconsume) 100 if (type == PrependType::kUnconsume)
101 number_of_characters_consumed_prior_to_current_string_ -= s.length(); 101 number_of_characters_consumed_prior_to_current_string_ -= s.length();
102 if (!current_string_.length()) { 102 if (!current_string_.length()) {
103 current_string_ = s; 103 current_string_ = s;
104 UpdateAdvanceFunctionPointers(); 104 UpdateAdvanceFunctionPointers();
105 } else { 105 } else {
106 // Shift our m_currentString into our list. 106 // Shift our m_currentString into our list.
107 substrings_.push_front(current_string_); 107 substrings_.push_front(current_string_);
108 current_string_ = s; 108 current_string_ = s;
109 UpdateAdvanceFunctionPointers(); 109 UpdateAdvanceFunctionPointers();
110 } 110 }
111 empty_ = false; 111 empty_ = false;
112 } 112 }
113 113
114 void SegmentedString::Close() { 114 void SegmentedString::Close() {
115 // Closing a stream twice is likely a coding mistake. 115 // Closing a stream twice is likely a coding mistake.
116 ASSERT(!closed_); 116 DCHECK(!closed_);
117 closed_ = true; 117 closed_ = true;
118 } 118 }
119 119
120 void SegmentedString::Append(const SegmentedString& s) { 120 void SegmentedString::Append(const SegmentedString& s) {
121 ASSERT(!closed_); 121 DCHECK(!closed_);
122 122
123 Append(s.current_string_); 123 Append(s.current_string_);
124 if (s.IsComposite()) { 124 if (s.IsComposite()) {
125 Deque<SegmentedSubstring>::const_iterator it = s.substrings_.begin(); 125 Deque<SegmentedSubstring>::const_iterator it = s.substrings_.begin();
126 Deque<SegmentedSubstring>::const_iterator e = s.substrings_.end(); 126 Deque<SegmentedSubstring>::const_iterator e = s.substrings_.end();
127 for (; it != e; ++it) 127 for (; it != e; ++it)
128 Append(*it); 128 Append(*it);
129 } 129 }
130 current_char_ = 130 current_char_ =
131 current_string_.length() ? current_string_.GetCurrentChar() : 0; 131 current_string_.length() ? current_string_.GetCurrentChar() : 0;
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 DecrementAndCheckLength(); 188 DecrementAndCheckLength();
189 current_char_ = current_string_.IncrementAndGetCurrentChar8(); 189 current_char_ = current_string_.IncrementAndGetCurrentChar8();
190 } 190 }
191 191
192 void SegmentedString::Advance16() { 192 void SegmentedString::Advance16() {
193 DecrementAndCheckLength(); 193 DecrementAndCheckLength();
194 current_char_ = current_string_.IncrementAndGetCurrentChar16(); 194 current_char_ = current_string_.IncrementAndGetCurrentChar16();
195 } 195 }
196 196
197 void SegmentedString::AdvanceAndUpdateLineNumber8() { 197 void SegmentedString::AdvanceAndUpdateLineNumber8() {
198 ASSERT(current_string_.GetCurrentChar() == current_char_); 198 DCHECK_EQ(current_string_.GetCurrentChar(), current_char_);
199 if (current_char_ == '\n') { 199 if (current_char_ == '\n') {
200 ++current_line_; 200 ++current_line_;
201 number_of_characters_consumed_prior_to_current_line_ = 201 number_of_characters_consumed_prior_to_current_line_ =
202 NumberOfCharactersConsumed() + 1; 202 NumberOfCharactersConsumed() + 1;
203 } 203 }
204 DecrementAndCheckLength(); 204 DecrementAndCheckLength();
205 current_char_ = current_string_.IncrementAndGetCurrentChar8(); 205 current_char_ = current_string_.IncrementAndGetCurrentChar8();
206 } 206 }
207 207
208 void SegmentedString::AdvanceAndUpdateLineNumber16() { 208 void SegmentedString::AdvanceAndUpdateLineNumber16() {
209 ASSERT(current_string_.GetCurrentChar() == current_char_); 209 DCHECK_EQ(current_string_.GetCurrentChar(), current_char_);
210 if (current_char_ == '\n') { 210 if (current_char_ == '\n') {
211 ++current_line_; 211 ++current_line_;
212 number_of_characters_consumed_prior_to_current_line_ = 212 number_of_characters_consumed_prior_to_current_line_ =
213 NumberOfCharactersConsumed() + 1; 213 NumberOfCharactersConsumed() + 1;
214 } 214 }
215 DecrementAndCheckLength(); 215 DecrementAndCheckLength();
216 current_char_ = current_string_.IncrementAndGetCurrentChar16(); 216 current_char_ = current_string_.IncrementAndGetCurrentChar16();
217 } 217 }
218 218
219 void SegmentedString::AdvanceSlowCase() { 219 void SegmentedString::AdvanceSlowCase() {
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 fast_path_flags_ = kNoFastPath; 253 fast_path_flags_ = kNoFastPath;
254 advance_func_ = &SegmentedString::AdvanceEmpty; 254 advance_func_ = &SegmentedString::AdvanceEmpty;
255 advance_and_update_line_number_func_ = &SegmentedString::AdvanceEmpty; 255 advance_and_update_line_number_func_ = &SegmentedString::AdvanceEmpty;
256 } 256 }
257 257
258 current_char_ = 258 current_char_ =
259 current_string_.length() ? current_string_.GetCurrentChar() : 0; 259 current_string_.length() ? current_string_.GetCurrentChar() : 0;
260 } 260 }
261 261
262 void SegmentedString::AdvanceEmpty() { 262 void SegmentedString::AdvanceEmpty() {
263 ASSERT(!current_string_.length() && !IsComposite()); 263 DCHECK(!current_string_.length());
264 DCHECK(!IsComposite());
264 current_char_ = 0; 265 current_char_ = 0;
265 } 266 }
266 267
267 void SegmentedString::UpdateSlowCaseFunctionPointers() { 268 void SegmentedString::UpdateSlowCaseFunctionPointers() {
268 fast_path_flags_ = kNoFastPath; 269 fast_path_flags_ = kNoFastPath;
269 advance_func_ = &SegmentedString::AdvanceSlowCase; 270 advance_func_ = &SegmentedString::AdvanceSlowCase;
270 advance_and_update_line_number_func_ = 271 advance_and_update_line_number_func_ =
271 &SegmentedString::AdvanceAndUpdateLineNumberSlowCase; 272 &SegmentedString::AdvanceAndUpdateLineNumberSlowCase;
272 } 273 }
273 274
(...skipping 10 matching lines...) Expand all
284 void SegmentedString::SetCurrentPosition(OrdinalNumber line, 285 void SegmentedString::SetCurrentPosition(OrdinalNumber line,
285 OrdinalNumber column_aftre_prolog, 286 OrdinalNumber column_aftre_prolog,
286 int prolog_length) { 287 int prolog_length) {
287 current_line_ = line.ZeroBasedInt(); 288 current_line_ = line.ZeroBasedInt();
288 number_of_characters_consumed_prior_to_current_line_ = 289 number_of_characters_consumed_prior_to_current_line_ =
289 NumberOfCharactersConsumed() + prolog_length - 290 NumberOfCharactersConsumed() + prolog_length -
290 column_aftre_prolog.ZeroBasedInt(); 291 column_aftre_prolog.ZeroBasedInt();
291 } 292 }
292 293
293 } // namespace blink 294 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698