tageditor/cli/fieldmapping.cpp

65 lines
1.8 KiB
C++
Raw Normal View History

2018-01-15 00:14:53 +01:00
#include "./fieldmapping.h"
#include <tagparser/tag.h>
2018-03-06 23:10:13 +01:00
using namespace TagParser;
2018-01-15 00:14:53 +01:00
namespace Cli {
namespace FieldMapping {
static constexpr struct {
const char *knownDenotation;
KnownField knownField;
} fieldMapping[] = {
{"title", KnownField::Title},
{"album", KnownField::Album},
{"artist", KnownField::Artist},
{"genre", KnownField::Genre},
{"year", KnownField::Year},
{"comment", KnownField::Comment},
{"bpm", KnownField::Bpm},
{"bps", KnownField::Bps},
{"lyricist", KnownField::Lyricist},
{"track", KnownField::TrackPosition},
{"disk", KnownField::DiskPosition},
{"part", KnownField::PartNumber},
{"totalparts", KnownField::TotalParts},
{"encoder", KnownField::Encoder},
{"recorddate", KnownField::RecordDate},
{"performers", KnownField::Performers},
{"duration", KnownField::Length},
{"language", KnownField::Language},
{"encodersettings", KnownField::EncoderSettings},
{"lyrics", KnownField::Lyrics},
{"synchronizedlyrics", KnownField::SynchronizedLyrics},
{"grouping", KnownField::Grouping},
{"recordlabel", KnownField::RecordLabel},
{"cover", KnownField::Cover},
{"composer", KnownField::Composer},
{"rating", KnownField::Rating},
{"description", KnownField::Description},
};
2018-03-06 23:10:13 +01:00
const char *fieldDenotation(TagParser::KnownField knownField)
2018-01-15 00:14:53 +01:00
{
for(const auto &mapping : fieldMapping) {
if(mapping.knownField == knownField) {
return mapping.knownDenotation;
}
}
return nullptr;
}
2018-03-06 23:10:13 +01:00
TagParser::KnownField knownField(const char *fieldDenotation, std::size_t fieldDenotationSize)
2018-01-15 00:14:53 +01:00
{
for(const auto &mapping : fieldMapping) {
if(!strncmp(fieldDenotation, mapping.knownDenotation, fieldDenotationSize)) {
return mapping.knownField;
}
}
return KnownField::Invalid;
}
}
}