2 #include <msp/datafile/collection.h>
14 void Playlist::add_track(const string &trk)
16 tracks.push_back(trk);
19 void Playlist::remove_track(const string &trk)
21 for(vector<Track>::iterator i=tracks.begin(); i!=tracks.end(); ++i)
29 void Playlist::clear_tracks()
34 void Playlist::set_shuffle(bool s)
39 const string &Playlist::get_track(unsigned i) const
42 throw out_of_range("Playlist::get_track");
43 return tracks[i].filename;
46 unsigned Playlist::advance(unsigned i, int d) const
48 unsigned s = tracks.size();
50 throw out_of_range("Playlist::next_track");
70 IO::Seekable *Playlist::open(unsigned i) const
73 throw out_of_range("Playlist::open");
75 const Track &track = tracks[i];
77 return track.collection->open_raw(track.filename);
79 return new IO::BufferedFile(track.filename);
83 Playlist::Track::Track():
87 Playlist::Track::Track(const string &fn):
93 Playlist::Loader::Loader(Playlist &p):
94 DataFile::CollectionObjectLoader<Playlist>(p, 0)
99 Playlist::Loader::Loader(Playlist &p, Collection &c):
100 DataFile::CollectionObjectLoader<Playlist>(p, &c)
105 void Playlist::Loader::init()
107 add("track", &Loader::track);
108 add("shuffle", &Playlist::shuffle);
111 void Playlist::Loader::track(const string &fn)
114 trk.collection = coll;
116 obj.tracks.push_back(trk);