diff options
Diffstat (limited to 'src/support')
-rw-r--r-- | src/support/sorted_vector.h | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/support/sorted_vector.h b/src/support/sorted_vector.h index bb157f590..8f33de03a 100644 --- a/src/support/sorted_vector.h +++ b/src/support/sorted_vector.h @@ -25,7 +25,7 @@ namespace wasm { -struct SortedVector : std::vector<Index> { +struct SortedVector : public std::vector<Index> { SortedVector() {} SortedVector merge(const SortedVector& other) const { @@ -85,6 +85,20 @@ struct SortedVector : std::vector<Index> { return it != end() && *it == x; } + template<typename T> + SortedVector& filter(T keep) { + size_t skip = 0; + for (size_t i = 0; i < size(); i++) { + if (keep((*this)[i])) { + (*this)[i - skip] = (*this)[i]; + } else { + skip++; + } + } + resize(size() - skip); + return *this; + } + void verify() const { for (Index i = 1; i < size(); i++) { assert((*this)[i - 1] < (*this)[i]); |