diff --git a/core/tags/track.cpp b/core/tags/track.cpp index 743ff625..7262cbd8 100644 --- a/core/tags/track.cpp +++ b/core/tags/track.cpp @@ -164,3 +164,8 @@ Track *tags :: add_track(Album *album, Artist *artist, Genre *genre, return track_db.insert(Track(album, artist, genre, library, path, name, length, track)); } + +Track *tags :: get_track(const unsigned int index) +{ + return track_db.at(index); +} diff --git a/include/core/tags/track.h b/include/core/tags/track.h index a92845b6..f67a3bb2 100644 --- a/include/core/tags/track.h +++ b/include/core/tags/track.h @@ -142,6 +142,14 @@ namespace tags Track *add_track(Album *, Artist *, Genre *, Library *, const std::string &, const std::string &, unsigned int, unsigned int); + + /** + * Called to look up a Track tag by tag index. + * + * @param index The index of the Track tag. + * @return A matching Track tag, or NULL. + */ + Track *get_track(const unsigned int); } #endif /* OCARINA_CORE_TAGS_TRACK_H */ diff --git a/tests/core/tags/track.cpp b/tests/core/tags/track.cpp index 3813e48d..2ef41654 100644 --- a/tests/core/tags/track.cpp +++ b/tests/core/tags/track.cpp @@ -95,6 +95,9 @@ static void test_track_tag_lookup() MUSIC_DIR + "/Hyrule Symphony/13 - Legend of Zelda Medley.mp3", "Legend of Zelda Medley", 288, 13); test_equal(b, (Track *)NULL); + + test_equal(tags :: get_track(a->index()), a); + test_equal(tags :: get_track(a->index() + 1), (Track *)NULL); } static void test_track_tag_functional()