tageditor/cli/fieldmapping.cpp

65 lines
1.8 KiB
C++

#include "./fieldmapping.h"
#include <tagparser/tag.h>
using namespace TagParser;
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},
};
const char *fieldDenotation(TagParser::KnownField knownField)
{
for(const auto &mapping : fieldMapping) {
if(mapping.knownField == knownField) {
return mapping.knownDenotation;
}
}
return nullptr;
}
TagParser::KnownField knownField(const char *fieldDenotation, std::size_t fieldDenotationSize)
{
for(const auto &mapping : fieldMapping) {
if(!strncmp(fieldDenotation, mapping.knownDenotation, fieldDenotationSize)) {
return mapping.knownField;
}
}
return KnownField::Invalid;
}
}
}