db/Interface: migrate visitor methods from class Error to C++ exceptions

This commit is contained in:
Max Kellermann
2016-10-29 10:21:57 +02:00
parent 9a9da7b077
commit fac8edd47a
27 changed files with 190 additions and 331 deletions

View File

@@ -148,12 +148,11 @@ PrintPlaylistFull(Response &r, bool base,
return true;
}
bool
void
db_selection_print(Response &r, Partition &partition,
const DatabaseSelection &selection,
bool full, bool base,
unsigned window_start, unsigned window_end,
Error &error)
unsigned window_start, unsigned window_end)
{
const Database &db = partition.GetDatabaseOrThrow();
@@ -180,18 +179,16 @@ db_selection_print(Response &r, Partition &partition,
s(song);
};
return db.Visit(selection, d, s, p, error);
db.Visit(selection, d, s, p);
}
bool
void
db_selection_print(Response &r, Partition &partition,
const DatabaseSelection &selection,
bool full, bool base,
Error &error)
bool full, bool base)
{
return db_selection_print(r, partition, selection, full, base,
0, std::numeric_limits<int>::max(),
error);
db_selection_print(r, partition, selection, full, base,
0, std::numeric_limits<int>::max());
}
static bool
@@ -218,11 +215,10 @@ PrintUniqueTag(Response &r, TagType tag_type,
return true;
}
bool
void
PrintUniqueTags(Response &r, Partition &partition,
unsigned type, tag_mask_t group_mask,
const SongFilter *filter,
Error &error)
const SongFilter *filter)
{
const Database &db = partition.GetDatabaseOrThrow();
@@ -232,15 +228,14 @@ PrintUniqueTags(Response &r, Partition &partition,
using namespace std::placeholders;
const auto f = std::bind(PrintSongURIVisitor,
std::ref(r), std::ref(partition), _1);
return db.Visit(selection, f, error);
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);
return db.VisitUniqueTags(selection, (TagType)type,
group_mask,
f, error);
db.VisitUniqueTags(selection, (TagType)type,
group_mask, f);
}
}