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)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