// 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_