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

Side by Side Diff: third_party/WebKit/Source/wtf/text/WTFString.cpp

Issue 2333933002: Move String::remove to StringImpl. (Closed)
Patch Set: types. Created 4 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
« no previous file with comments | « third_party/WebKit/Source/wtf/text/WTFString.h ('k') | no next file » | 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 * (C) 1999 Lars Knoll (knoll@kde.org) 2 * (C) 1999 Lars Knoll (knoll@kde.org)
3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2010, 2012 Apple Inc. All rights reserved. 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2010, 2012 Apple Inc. All rights reserved.
4 * Copyright (C) 2007-2009 Torch Mobile, Inc. 4 * Copyright (C) 2007-2009 Torch Mobile, Inc.
5 * 5 *
6 * This library is free software; you can redistribute it and/or 6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public 7 * modify it under the terms of the GNU Library General Public
8 * License as published by the Free Software Foundation; either 8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version. 9 * version 2 of the License, or (at your option) any later version.
10 * 10 *
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after
241 memcpy(data, m_impl->characters8(), position * sizeof(LChar)); 241 memcpy(data, m_impl->characters8(), position * sizeof(LChar));
242 m_impl = newImpl.release(); 242 m_impl = newImpl.release();
243 } else { 243 } else {
244 UChar* data; 244 UChar* data;
245 RefPtr<StringImpl> newImpl = StringImpl::createUninitialized(position, d ata); 245 RefPtr<StringImpl> newImpl = StringImpl::createUninitialized(position, d ata);
246 memcpy(data, m_impl->characters16(), position * sizeof(UChar)); 246 memcpy(data, m_impl->characters16(), position * sizeof(UChar));
247 m_impl = newImpl.release(); 247 m_impl = newImpl.release();
248 } 248 }
249 } 249 }
250 250
251 template <typename CharacterType> 251 void String::remove(unsigned start, unsigned lengthToRemove)
252 inline void String::removeInternal(const CharacterType* characters, unsigned pos ition, int lengthToRemove)
253 { 252 {
254 CharacterType* data; 253 if (m_impl)
255 RefPtr<StringImpl> newImpl = StringImpl::createUninitialized(length() - leng thToRemove, data); 254 m_impl = m_impl->remove(start, lengthToRemove);
256 memcpy(data, characters, position * sizeof(CharacterType));
257 memcpy(data + position, characters + position + lengthToRemove,
258 (length() - lengthToRemove - position) * sizeof(CharacterType));
259
260 m_impl = newImpl.release();
261 }
262
263 void String::remove(unsigned position, int lengthToRemove)
264 {
265 if (lengthToRemove <= 0)
266 return;
267 if (position >= length())
268 return;
269 if (static_cast<unsigned>(lengthToRemove) > length() - position)
270 lengthToRemove = length() - position;
271
272 if (is8Bit()) {
273 removeInternal(characters8(), position, lengthToRemove);
274
275 return;
276 }
277
278 removeInternal(characters16(), position, lengthToRemove);
279 } 255 }
280 256
281 String String::substring(unsigned pos, unsigned len) const 257 String String::substring(unsigned pos, unsigned len) const
282 { 258 {
283 if (!m_impl) 259 if (!m_impl)
284 return String(); 260 return String();
285 return m_impl->substring(pos, len); 261 return m_impl->substring(pos, len);
286 } 262 }
287 263
288 String String::lower() const 264 String String::lower() const
(...skipping 647 matching lines...) Expand 10 before | Expand all | Expand 10 after
936 buffer.append('\0'); 912 buffer.append('\0');
937 return buffer; 913 return buffer;
938 } 914 }
939 915
940 Vector<char> asciiDebug(String& string) 916 Vector<char> asciiDebug(String& string)
941 { 917 {
942 return asciiDebug(string.impl()); 918 return asciiDebug(string.impl());
943 } 919 }
944 920
945 #endif 921 #endif
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/wtf/text/WTFString.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698