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

Side by Side Diff: Source/core/rendering/FastTextAutosizer.cpp

Issue 138643003: Simpler return value of HashTable::add/HashMap:add and others (Closed)
Patch Set: Daily master update (now with base url?) Created 6 years, 10 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) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * 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 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after
272 AtomicString fingerprint = m_fingerprintMapper.get(block); 272 AtomicString fingerprint = m_fingerprintMapper.get(block);
273 if (fingerprint.isNull()) 273 if (fingerprint.isNull())
274 return 0; 274 return 0;
275 275
276 BlockSet* roots = &m_fingerprintMapper.getBlocks(fingerprint); 276 BlockSet* roots = &m_fingerprintMapper.getBlocks(fingerprint);
277 if (roots->size() < 2) 277 if (roots->size() < 2)
278 return 0; 278 return 0;
279 279
280 SuperclusterMap::AddResult addResult = m_superclusters.add(fingerprint, Pass OwnPtr<Supercluster>()); 280 SuperclusterMap::AddResult addResult = m_superclusters.add(fingerprint, Pass OwnPtr<Supercluster>());
281 if (!addResult.isNewEntry) 281 if (!addResult.isNewEntry)
282 return addResult.iterator->value.get(); 282 return addResult.storedValue->value.get();
283 283
284 Supercluster* supercluster = new Supercluster(roots); 284 Supercluster* supercluster = new Supercluster(roots);
285 addResult.iterator->value = adoptPtr(supercluster); 285 addResult.storedValue->value = adoptPtr(supercluster);
286 return supercluster; 286 return supercluster;
287 } 287 }
288 288
289 const RenderBlock* FastTextAutosizer::deepestCommonAncestor(BlockSet& blocks) 289 const RenderBlock* FastTextAutosizer::deepestCommonAncestor(BlockSet& blocks)
290 { 290 {
291 // Find the lowest common ancestor of blocks. 291 // Find the lowest common ancestor of blocks.
292 // Note: this could be improved to not be O(b*h) for b blocks and tree heigh t h. 292 // Note: this could be improved to not be O(b*h) for b blocks and tree heigh t h.
293 HashCountedSet<const RenderBlock*> ancestors; 293 HashCountedSet<const RenderBlock*> ancestors;
294 for (BlockSet::iterator it = blocks.begin(); it != blocks.end(); ++it) { 294 for (BlockSet::iterator it = blocks.begin(); it != blocks.end(); ++it) {
295 for (const RenderBlock* block = (*it); block; block = block->containingB lock()) { 295 for (const RenderBlock* block = (*it); block; block = block->containingB lock()) {
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
495 ASSERT(!m_clusterStack.isEmpty()); 495 ASSERT(!m_clusterStack.isEmpty());
496 return m_clusterStack.last().get(); 496 return m_clusterStack.last().get();
497 } 497 }
498 498
499 void FastTextAutosizer::FingerprintMapper::add(const RenderBlock* block, AtomicS tring fingerprint) 499 void FastTextAutosizer::FingerprintMapper::add(const RenderBlock* block, AtomicS tring fingerprint)
500 { 500 {
501 m_fingerprints.set(block, fingerprint); 501 m_fingerprints.set(block, fingerprint);
502 502
503 ReverseFingerprintMap::AddResult addResult = m_blocksForFingerprint.add(fing erprint, PassOwnPtr<BlockSet>()); 503 ReverseFingerprintMap::AddResult addResult = m_blocksForFingerprint.add(fing erprint, PassOwnPtr<BlockSet>());
504 if (addResult.isNewEntry) 504 if (addResult.isNewEntry)
505 addResult.iterator->value = adoptPtr(new BlockSet); 505 addResult.storedValue->value = adoptPtr(new BlockSet);
506 addResult.iterator->value->add(block); 506 addResult.storedValue->value->add(block);
507 } 507 }
508 508
509 void FastTextAutosizer::FingerprintMapper::remove(const RenderBlock* block) 509 void FastTextAutosizer::FingerprintMapper::remove(const RenderBlock* block)
510 { 510 {
511 AtomicString fingerprint = m_fingerprints.take(block); 511 AtomicString fingerprint = m_fingerprints.take(block);
512 if (fingerprint.isNull()) 512 if (fingerprint.isNull())
513 return; 513 return;
514 514
515 ReverseFingerprintMap::iterator blocksIter = m_blocksForFingerprint.find(fin gerprint); 515 ReverseFingerprintMap::iterator blocksIter = m_blocksForFingerprint.find(fin gerprint);
516 BlockSet& blocks = *blocksIter->value; 516 BlockSet& blocks = *blocksIter->value;
(...skipping 13 matching lines...) Expand all
530 } 530 }
531 531
532 RenderObject* FastTextAutosizer::nextChildSkippingChildrenOfBlocks(const RenderO bject* current, const RenderObject* stayWithin) 532 RenderObject* FastTextAutosizer::nextChildSkippingChildrenOfBlocks(const RenderO bject* current, const RenderObject* stayWithin)
533 { 533 {
534 if (current == stayWithin || !current->isRenderBlock()) 534 if (current == stayWithin || !current->isRenderBlock())
535 return current->nextInPreOrder(stayWithin); 535 return current->nextInPreOrder(stayWithin);
536 return current->nextInPreOrderAfterChildren(stayWithin); 536 return current->nextInPreOrderAfterChildren(stayWithin);
537 } 537 }
538 538
539 } // namespace WebCore 539 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/core/page/scrolling/ScrollingCoordinator.cpp ('k') | Source/core/rendering/RenderBlockLineLayout.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698