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