ocarina/core/tags/generic.cpp

62 lines
984 B
C++

/**
* Copyright 2014 (c) Anna Schumaker.
*/
extern "C" {
#include <core/string.h>
}
#include <core/tags/generic.h>
GenericTag :: GenericTag() {}
GenericTag :: GenericTag(const std::string &name)
: _name(name)
{
gchar *g_lc = string_lowercase(name.c_str());
_lower = g_lc;
g_free(g_lc);
}
GenericTag :: GenericTag(const GenericTag &tag)
: _name(tag._name), _lower(tag._lower)
{
}
const std::string GenericTag :: primary_key() const
{
return _name;
}
void GenericTag :: read(File &file)
{
gchar *g_lc;
_name = file.getline();
g_lc = string_lowercase(_name.c_str());
_lower = g_lc;
g_free(g_lc);
}
void GenericTag :: write(File &file)
{
file << _name;
}
const std::string &GenericTag :: name() const
{
return _name;
}
const std::string &GenericTag :: lowercase()
{
return _lower;
}
int GenericTag :: compare(const GenericTag *rhs)
{
if (_lower.size() == 0)
return 1;
if (rhs->_lower.size() == 0)
return -1;
return _lower.compare(rhs->_lower);
}