Roll src/third_party/WebKit d9c6159:8139f33 (svn 201974:201975)
[chromium-blink-merge.git] / cc / base / scoped_ptr_algorithm.h
blob79f4eee49e6d264e0a913280024d1c024b9cf9eb
1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef CC_BASE_SCOPED_PTR_ALGORITHM_H_
6 #define CC_BASE_SCOPED_PTR_ALGORITHM_H_
8 namespace cc {
10 // ScopedContainers need to implement a swap() method since they do not allow
11 // assignment to their iterators.
12 template <class ForwardIterator, class Predicate, class ScopedContainer>
13 ForwardIterator remove_if(
14 ScopedContainer* container,
15 ForwardIterator first,
16 ForwardIterator last,
17 Predicate predicate) {
18 ForwardIterator result = first;
19 for (; first != last; ++first) {
20 if (!predicate(*first)) {
21 container->swap(first, result);
22 ++result;
25 return result;
28 } // namespace cc
30 #endif // CC_BASE_SCOPED_PTR_ALGORITHM_H_