diff options
author | Max Kellermann <max@musicpd.org> | 2018-07-25 11:18:45 +0200 |
---|---|---|
committer | Max Kellermann <max@musicpd.org> | 2018-07-25 11:18:45 +0200 |
commit | 0505cb8f7e2f96f2fc7c993d0673b54648d52582 (patch) | |
tree | 31e7394854a6b22dc68ce665c1ee44d01b07bdb2 /src | |
parent | 2cfccc1c34224cc96b6e595b875180e3a9730c43 (diff) |
db/Print: move code to PrintSongUris()
Diffstat (limited to 'src')
-rw-r--r-- | src/command/DatabaseCommands.cxx | 7 | ||||
-rw-r--r-- | src/db/DatabasePrint.cxx | 35 | ||||
-rw-r--r-- | src/db/DatabasePrint.hxx | 4 |
3 files changed, 30 insertions, 16 deletions
diff --git a/src/command/DatabaseCommands.cxx b/src/command/DatabaseCommands.cxx index 746dfcb50..d9ff60316 100644 --- a/src/command/DatabaseCommands.cxx +++ b/src/command/DatabaseCommands.cxx @@ -285,8 +285,11 @@ handle_list(Client &client, Request args, Response &r) return CommandResult::ERROR; } - PrintUniqueTags(r, client.GetPartition(), - tagType, group_mask, filter.get()); + if (tagType == LOCATE_TAG_FILE_TYPE) + PrintSongUris(r, client.GetPartition(), filter.get()); + else + PrintUniqueTags(r, client.GetPartition(), + tagType, group_mask, filter.get()); return CommandResult::OK; } diff --git a/src/db/DatabasePrint.cxx b/src/db/DatabasePrint.cxx index f166e4a17..89172299d 100644 --- a/src/db/DatabasePrint.cxx +++ b/src/db/DatabasePrint.cxx @@ -273,6 +273,20 @@ PrintSongURIVisitor(Response &r, const LightSong &song) noexcept song_print_uri(r, song); } +void +PrintSongUris(Response &r, Partition &partition, + const SongFilter *filter) +{ + const Database &db = partition.GetDatabaseOrThrow(); + + const DatabaseSelection selection("", true, filter); + + using namespace std::placeholders; + const auto f = std::bind(PrintSongURIVisitor, + std::ref(r), _1); + db.Visit(selection, f); +} + static void PrintUniqueTag(Response &r, TagType tag_type, const Tag &tag) noexcept @@ -292,22 +306,15 @@ PrintUniqueTags(Response &r, Partition &partition, unsigned type, TagMask group_mask, const SongFilter *filter) { + assert(type < TAG_NUM_OF_ITEM_TYPES); + const Database &db = partition.GetDatabaseOrThrow(); const DatabaseSelection selection("", true, filter); - if (type == LOCATE_TAG_FILE_TYPE) { - using namespace std::placeholders; - const auto f = std::bind(PrintSongURIVisitor, - std::ref(r), _1); - db.Visit(selection, f); - } else { - assert(type < TAG_NUM_OF_ITEM_TYPES); - - using namespace std::placeholders; - const auto f = std::bind(PrintUniqueTag, std::ref(r), - (TagType)type, _1); - db.VisitUniqueTags(selection, (TagType)type, - group_mask, f); - } + using namespace std::placeholders; + const auto f = std::bind(PrintUniqueTag, std::ref(r), + (TagType)type, _1); + db.VisitUniqueTags(selection, (TagType)type, + group_mask, f); } diff --git a/src/db/DatabasePrint.hxx b/src/db/DatabasePrint.hxx index 7026308b7..ab462de9e 100644 --- a/src/db/DatabasePrint.hxx +++ b/src/db/DatabasePrint.hxx @@ -50,6 +50,10 @@ db_selection_print(Response &r, Partition &partition, unsigned window_start, unsigned window_end); void +PrintSongUris(Response &r, Partition &partition, + const SongFilter *filter); + +void PrintUniqueTags(Response &r, Partition &partition, unsigned type, TagMask group_mask, const SongFilter *filter); |