/** * Copyright 2014 (c) Anna Schumaker. */ #include #include #include static database album_db("album.db", true); static const std::string make_key(const std::string &name, unsigned int year) { gchar *g_res = g_strdup_printf("%u/%s", year, name.c_str()); std :: string res = g_res; g_free(g_res); return res; } Album :: Album() : GenericTag(), _year(0) {} Album :: Album(const std::string &name, unsigned int year) : GenericTag(name), _year(year) { } const std::string Album :: primary_key() const { return make_key(GenericTag :: primary_key(), _year); } void Album :: read(file &file) { file_readf(&file, "%u", &_year); GenericTag :: read(file); } void Album :: write(file &file) { file_writef(&file, "%u ", _year); GenericTag :: write(file); } unsigned int Album :: year() { return _year; } void tags :: init_album_db() { db_load(&album_db); } Album *tags :: get_album(const std::string &name, unsigned int year) { Album *ret = album_db.find(make_key(name, year)); if (ret) return ret; return db_insert(&album_db, new Album(name, year)); } Album *tags ::get_album(const unsigned int index) { return db_at(&album_db, index); }