tageditor/cli/fieldmapping.cpp

68 lines
2.1 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[] = {
2018-03-07 01:18:01 +01:00
{ "title", KnownField::Title },
{ "album", KnownField::Album },
{ "artist", KnownField::Artist },
{ "genre", KnownField::Genre },
2021-02-01 17:11:48 +01:00
{ "year", KnownField::RecordDate },
2018-03-07 01:18:01 +01:00
{ "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 },
{ "releasedate", KnownField::ReleaseDate },
2018-03-07 01:18:01 +01:00
{ "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 },
2019-01-01 23:44:28 +01:00
{ "vendor", KnownField::Vendor },
{ "albumartist", KnownField::AlbumArtist },
2018-01-15 00:14:53 +01:00
};
2018-03-06 23:10:13 +01:00
const char *fieldDenotation(TagParser::KnownField knownField)
2018-01-15 00:14:53 +01:00
{
2018-03-07 01:18:01 +01:00
for (const auto &mapping : fieldMapping) {
if (mapping.knownField == knownField) {
2018-01-15 00:14:53 +01:00
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
{
2018-03-07 01:18:01 +01:00
for (const auto &mapping : fieldMapping) {
if (!strncmp(fieldDenotation, mapping.knownDenotation, fieldDenotationSize)) {
2018-01-15 00:14:53 +01:00
return mapping.knownField;
}
}
return KnownField::Invalid;
}
2018-03-07 01:18:01 +01:00
} // namespace FieldMapping
} // namespace Cli