summaryrefslogtreecommitdiff
path: root/src/support
diff options
context:
space:
mode:
Diffstat (limited to 'src/support')
-rw-r--r--src/support/sorted_vector.h16
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]);