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
8namespace cc {
9
10// ScopedContainers need to implement a swap() method since they do not allow
11// assignment to their iterators.
12template <class ForwardIterator, class Predicate, class ScopedContainer>
13ForwardIterator 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