db/Visitor: remove the Error parameter
Implementations shall use exceptions instead.
This commit is contained in:
@@ -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,
|
||||
|
@@ -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);
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user