Home | History | Annotate | Download | only in base
      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>
     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