summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMax Kellermann <max@musicpd.org>2018-07-25 11:18:45 +0200
committerMax Kellermann <max@musicpd.org>2018-07-25 11:18:45 +0200
commit0505cb8f7e2f96f2fc7c993d0673b54648d52582 (patch)
tree31e7394854a6b22dc68ce665c1ee44d01b07bdb2 /src
parent2cfccc1c34224cc96b6e595b875180e3a9730c43 (diff)
db/Print: move code to PrintSongUris()
Diffstat (limited to 'src')
-rw-r--r--src/command/DatabaseCommands.cxx7
-rw-r--r--src/db/DatabasePrint.cxx35
-rw-r--r--src/db/DatabasePrint.hxx4
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);