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

Side by Side Diff: Source/core/fetch/ResourceClientWalker.h

Issue 645513003: Use C++11 range-based loop in core/fetch (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: mike's comments Created 6 years, 2 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) 1998 Lars Knoll (knoll@mpi-hd.mpg.de) 2 Copyright (C) 1998 Lars Knoll (knoll@mpi-hd.mpg.de)
3 Copyright (C) 2001 Dirk Mueller <mueller@kde.org> 3 Copyright (C) 2001 Dirk Mueller <mueller@kde.org>
4 Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved. 4 Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved.
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 20 matching lines...) Expand all
31 31
32 namespace blink { 32 namespace blink {
33 33
34 // Call this "walker" instead of iterator so people won't expect Qt or STL-style iterator interface. 34 // Call this "walker" instead of iterator so people won't expect Qt or STL-style iterator interface.
35 // Just keep calling next() on this. It's safe from deletions of items. 35 // Just keep calling next() on this. It's safe from deletions of items.
36 template<typename T> class ResourceClientWalker { 36 template<typename T> class ResourceClientWalker {
37 public: 37 public:
38 ResourceClientWalker(const HashCountedSet<ResourceClient*>& set) 38 ResourceClientWalker(const HashCountedSet<ResourceClient*>& set)
39 : m_clientSet(set), m_clientVector(set.size()), m_index(0) 39 : m_clientSet(set), m_clientVector(set.size()), m_index(0)
40 { 40 {
41 typedef HashCountedSet<ResourceClient*>::const_iterator Iterator;
42 Iterator end = set.end();
43 size_t clientIndex = 0; 41 size_t clientIndex = 0;
44 for (Iterator current = set.begin(); current != end; ++current) 42 for (const auto& resourceClient : set)
45 m_clientVector[clientIndex++] = current->key; 43 m_clientVector[clientIndex++] = resourceClient.key;
46 } 44 }
47 45
48 T* next() 46 T* next()
49 { 47 {
50 size_t size = m_clientVector.size(); 48 size_t size = m_clientVector.size();
51 while (m_index < size) { 49 while (m_index < size) {
52 ResourceClient* next = m_clientVector[m_index++]; 50 ResourceClient* next = m_clientVector[m_index++];
53 if (m_clientSet.contains(next)) { 51 if (m_clientSet.contains(next)) {
54 ASSERT(T::expectedType() == ResourceClient::expectedType() || ne xt->resourceClientType() == T::expectedType()); 52 ASSERT(T::expectedType() == ResourceClient::expectedType() || ne xt->resourceClientType() == T::expectedType());
55 return static_cast<T*>(next); 53 return static_cast<T*>(next);
56 } 54 }
57 } 55 }
58 56
59 return 0; 57 return 0;
60 } 58 }
61 private: 59 private:
62 const HashCountedSet<ResourceClient*>& m_clientSet; 60 const HashCountedSet<ResourceClient*>& m_clientSet;
63 Vector<ResourceClient*> m_clientVector; 61 Vector<ResourceClient*> m_clientVector;
64 size_t m_index; 62 size_t m_index;
65 }; 63 };
66 64
67 } 65 }
68 66
69 #endif 67 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698