diff options
Diffstat (limited to 'src/song/Filter.cxx')
-rw-r--r-- | src/song/Filter.cxx | 32 |
1 files changed, 15 insertions, 17 deletions
diff --git a/src/song/Filter.cxx b/src/song/Filter.cxx index aa9fc06e5..881b8b3ea 100644 --- a/src/song/Filter.cxx +++ b/src/song/Filter.cxx @@ -429,29 +429,27 @@ SongFilter::Match(const LightSong &song) const noexcept bool SongFilter::HasFoldCase() const noexcept { - for (const auto &i : and_filter.GetItems()) { - if (auto t = dynamic_cast<const TagSongFilter *>(i.get())) { - if (t->GetFoldCase()) - return true; - } else if (auto u = dynamic_cast<const UriSongFilter *>(i.get())) { - if (u->GetFoldCase()) - return true; - } - } + return std::any_of( + and_filter.GetItems().begin(), and_filter.GetItems().end(), + [](const auto &item) { + if (auto t = dynamic_cast<const TagSongFilter *>(item.get())) + return t->GetFoldCase(); + + if (auto u = dynamic_cast<const UriSongFilter *>(item.get())) + return u->GetFoldCase(); - return false; + return false; + }); } bool SongFilter::HasOtherThanBase() const noexcept { - for (const auto &i : and_filter.GetItems()) { - const auto *f = dynamic_cast<const BaseSongFilter *>(i.get()); - if (f == nullptr) - return true; - } - - return false; + return std::any_of(and_filter.GetItems().begin(), and_filter.GetItems().end(), + [=](const auto &item) { + return !dynamic_cast<const BaseSongFilter *>( + item.get()); + }); } const char * |