• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.
4 
5 #ifndef CC_BASE_SCOPED_PTR_ALGORITHM_H_
6 #define CC_BASE_SCOPED_PTR_ALGORITHM_H_
7 
8 namespace cc {
9 
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>
remove_if(ScopedContainer * container,ForwardIterator first,ForwardIterator last,Predicate predicate)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;
23     }
24   }
25   return result;
26 }
27 
28 }  // namespace cc
29 
30 #endif  // CC_BASE_SCOPED_PTR_ALGORITHM_H_
31