From 065feedee2d20bbe552faf329d2d57dac7841adf Mon Sep 17 00:00:00 2001 From: Bryan Schumaker Date: Sat, 16 Jun 2012 14:34:20 -0400 Subject: [PATCH] libsaria: Save tracks using for_each_item() It's simpler than custom writing my own for each loop... Signed-off-by: Bryan Schumaker --- include/libsaria/track.h | 2 +- libsaria/library/file.cpp | 8 ++++++-- libsaria/track/track.cpp | 40 +++++++++++++++++++-------------------- 3 files changed, 27 insertions(+), 23 deletions(-) diff --git a/include/libsaria/track.h b/include/libsaria/track.h index 82938aa5..cd78911e 100644 --- a/include/libsaria/track.h +++ b/include/libsaria/track.h @@ -52,7 +52,7 @@ namespace libsaria Track(ifstream &, library::Path *, unsigned int); ~Track(); - void save(ofstream &); + void save(ofstream *); void load_unlisted(bool); void load(bool); void add_playlist(libsaria::Playlist *); diff --git a/libsaria/library/file.cpp b/libsaria/library/file.cpp index 076a0261..71d27f6e 100644 --- a/libsaria/library/file.cpp +++ b/libsaria/library/file.cpp @@ -23,6 +23,11 @@ static string id_to_filename(unsigned int id) return s.str(); } +static void save_track(libsaria::Track &track, void *data) +{ + track.save((ofstream *)data); +} + static void do_save_path(ofstream &stream, void *data) { libsaria::library::Path *path = (libsaria::library::Path *)data; @@ -34,8 +39,7 @@ static void do_save_path(ofstream &stream, void *data) stream << path->id << " " << path->visible << " "; stream << path->next_track << " " << path->_tracks.size() << "\n"; - for (it = path->tracks.begin(); it != path->tracks.end(); it++) - (*it).save(stream); + path->_tracks.for_each_item(save_track, &stream); } void libsaria::library::save_path(libsaria::library::Path *path) diff --git a/libsaria/track/track.cpp b/libsaria/track/track.cpp index dee960ad..e3392a08 100644 --- a/libsaria/track/track.cpp +++ b/libsaria/track/track.cpp @@ -197,27 +197,27 @@ namespace libsaria return cur; } - void Track::save(ofstream &out) + void Track::save(ofstream *out) { - out << filepath << "\n"; - out << title << "\n"; - out << artist << "\n"; - out << album << "\n"; - out << comment << "\n"; - out << genre << "\n"; - out << lenstr << "\n"; - out << id << " "; - out << year << " "; - out << track << " "; - out << count << " "; - out << last_day << " "; - out << last_month << " "; - out << last_year << " "; - out << length << " "; - out << bitrate << " "; - out << sample << " "; - out << channels << " "; - out << banned << "\n"; + *out << filepath << "\n"; + *out << title << "\n"; + *out << artist << "\n"; + *out << album << "\n"; + *out << comment << "\n"; + *out << genre << "\n"; + *out << lenstr << "\n"; + *out << id << " "; + *out << year << " "; + *out << track << " "; + *out << count << " "; + *out << last_day << " "; + *out << last_month << " "; + *out << last_year << " "; + *out << length << " "; + *out << bitrate << " "; + *out << sample << " "; + *out << channels << " "; + *out << banned << "\n"; } void Track::add_playlist(Playlist *plist)