| // Copyright 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CC_BASE_SCOPED_PTR_ALGORITHM_H_ |
| #define CC_BASE_SCOPED_PTR_ALGORITHM_H_ |
| |
| namespace cc { |
| |
| // ScopedContainers need to implement a swap() method since they do not allow |
| // assignment to their iterators. |
| template <class ForwardIterator, class Predicate, class ScopedContainer> |
| ForwardIterator remove_if( |
| ScopedContainer* container, |
| ForwardIterator first, |
| ForwardIterator last, |
| Predicate predicate) { |
| ForwardIterator result = first; |
| for (; first != last; ++first) { |
| if (!predicate(*first)) { |
| container->swap(first, result); |
| ++result; |
| } |
| } |
| return result; |
| } |
| |
| } // namespace cc |
| |
| #endif // CC_BASE_SCOPED_PTR_ALGORITHM_H_ |