| 160 | } |
| 161 | |
| 162 | virtual std::vector<Pattern*> flat(bool (*filter)(Pattern const*)) override { |
| 163 | if (filter(this)) { |
| 164 | return {this}; |
| 165 | } |
| 166 | |
| 167 | std::vector<Pattern*> ret; |
| 168 | for(auto& child : fChildren) { |
| 169 | auto sublist = child->flat(filter); |
| 170 | ret.insert(ret.end(), sublist.begin(), sublist.end()); |
| 171 | } |
| 172 | return ret; |
| 173 | } |
| 174 | |
| 175 | virtual void collect_leaves(std::vector<LeafPattern*>& lst) override final { |
| 176 | for(auto& child : fChildren) { |