ocarina/core/tags/artist.cpp

73 lines
1.1 KiB
C++
Raw Normal View History

/**
* Copyright 2014 (c) Anna Schumaker.
*/
extern "C" {
#include <core/string.h>
}
#include <core/tags/artist.h>
static database<struct artist> artist_db;
artist :: artist() {}
artist :: artist(const std::string &name)
{
gchar *lower = string_lowercase(name.c_str());
ar_name = name;
ar_lower = lower;
g_free(lower);
}
const std::string artist :: primary_key() const
{
return ar_name;
}
void artist :: read(file &file)
{
gchar *name = file_readl(&file);
gchar *g_lc = string_lowercase(name);
ar_name = name;
ar_lower = g_lc;
g_free(name);
g_free(g_lc);
}
void artist :: write(file &file)
{
file_writef(&file, "%s", ar_name.c_str());
}
void artist_db_init()
{
db_init(&artist_db, "artist.db", true);
db_load(&artist_db);
}
void artist_db_deinit()
{
db_deinit(&artist_db);
}
struct artist *artist_find(const std::string &name)
{
return db_find(&artist_db, name.c_str());
}
struct artist *artist_get(const unsigned int index)
{
return db_at(&artist_db, index);
}
int artist_compare(struct artist *lhs, struct artist *rhs)
{
return string_compare(lhs->ar_lower.c_str(), rhs->ar_lower.c_str());
}