db/Visitor: remove the Error parameter

Implementations shall use exceptions instead.
This commit is contained in:
Max Kellermann
2016-10-29 10:04:43 +02:00
parent 78bf4ef5fa
commit 3ff728ab02
9 changed files with 135 additions and 169 deletions

View File

@@ -243,22 +243,19 @@ Directory::Walk(bool recursive, const SongFilter *filter,
if (visit_song) {
for (auto &song : songs){
const LightSong song2 = song.Export();
if ((filter == nullptr || filter->Match(song2)) &&
!visit_song(song2, error))
return false;
if (filter == nullptr || filter->Match(song2))
visit_song(song2);
}
}
if (visit_playlist) {
for (const PlaylistInfo &p : playlists)
if (!visit_playlist(p, Export(), error))
return false;
visit_playlist(p, Export());
}
for (auto &child : children) {
if (visit_directory &&
!visit_directory(child.Export(), error))
return false;
if (visit_directory)
visit_directory(child.Export());
if (recursive &&
!child.Walk(recursive, filter,

View File

@@ -40,29 +40,27 @@ struct PrefixedLightDirectory : LightDirectory {
}
};
static bool
static void
PrefixVisitDirectory(const char *base, const VisitDirectory &visit_directory,
const LightDirectory &directory, Error &error)
const LightDirectory &directory)
{
return visit_directory(PrefixedLightDirectory(directory, base), error);
visit_directory(PrefixedLightDirectory(directory, base));
}
static bool
static void
PrefixVisitSong(const char *base, const VisitSong &visit_song,
const LightSong &song, Error &error)
const LightSong &song)
{
return visit_song(PrefixedLightSong(song, base), error);
visit_song(PrefixedLightSong(song, base));
}
static bool
static void
PrefixVisitPlaylist(const char *base, const VisitPlaylist &visit_playlist,
const PlaylistInfo &playlist,
const LightDirectory &directory,
Error &error)
const LightDirectory &directory)
{
return visit_playlist(playlist,
PrefixedLightDirectory(directory, base),
error);
visit_playlist(playlist,
PrefixedLightDirectory(directory, base));
}
bool
@@ -77,17 +75,17 @@ WalkMount(const char *base, const Database &db,
VisitDirectory vd;
if (visit_directory)
vd = std::bind(PrefixVisitDirectory,
base, std::ref(visit_directory), _1, _2);
base, std::ref(visit_directory), _1);
VisitSong vs;
if (visit_song)
vs = std::bind(PrefixVisitSong,
base, std::ref(visit_song), _1, _2);
base, std::ref(visit_song), _1);
VisitPlaylist vp;
if (visit_playlist)
vp = std::bind(PrefixVisitPlaylist,
base, std::ref(visit_playlist), _1, _2, _3);
base, std::ref(visit_playlist), _1, _2);
return db.Visit(DatabaseSelection("", recursive, filter),
vd, vs, vp, error);

View File

@@ -274,9 +274,8 @@ SimpleDatabase::Visit(const DatabaseSelection &selection,
if (r.uri == nullptr) {
/* it's a directory */
if (selection.recursive && visit_directory &&
!visit_directory(r.directory->Export(), error))
return false;
if (selection.recursive && visit_directory)
visit_directory(r.directory->Export());
return r.directory->Walk(selection.recursive, selection.filter,
visit_directory, visit_song,
@@ -289,8 +288,8 @@ SimpleDatabase::Visit(const DatabaseSelection &selection,
Song *song = r.directory->FindSong(r.uri);
if (song != nullptr) {
const LightSong song2 = song->Export();
return !selection.Match(song2) ||
visit_song(song2, error);
if (selection.Match(song2))
visit_song(song2);
}
}
}