#ifndef MUSIC_H #define MUSIC_H #include #include #include namespace fs = boost::filesystem; class MusicListing { public: fs::path path; virtual void render(std::ostream& os) = 0; }; class MusicTrack : public MusicListing { public: MusicTrack(const fs::path path); virtual void render(std::ostream& os); }; class MusicDirectory; typedef std::vector MusicDirectories; typedef std::vector MusicTracks; class MusicDirectory : public MusicListing { public: MusicDirectories directories; MusicTracks tracks; MusicDirectory(const fs::path root); virtual void render(std::ostream& os); }; namespace music { extern MusicDirectory *root_directory; void init(const fs::path root); MusicListing *find(const std::string path, MusicDirectory& root); MusicListing *find(const std::string path); }; #endif