tagparser/id3/id3v1tag.h

48 lines
1.3 KiB
C
Raw Normal View History

2015-04-22 19:22:01 +02:00
#ifndef ID3V1TAG_H
#define ID3V1TAG_H
2015-09-06 19:57:33 +02:00
#include "../tag.h"
2015-04-22 19:22:01 +02:00
namespace Media
{
2016-08-29 15:43:05 +02:00
class TAG_PARSER_EXPORT Id3v1Tag : public Tag
2015-04-22 19:22:01 +02:00
{
public:
Id3v1Tag();
static constexpr TagType tagType = TagType::Id3v1Tag;
static constexpr const char *tagName = "ID3v1 tag";
2016-08-05 01:46:31 +02:00
TagType type() const;
const char *typeName() const;
bool canEncodingBeUsed(TagTextEncoding encoding) const;
const TagValue &value(KnownField value) const;
bool setValue(KnownField field, const TagValue &value);
bool setValueConsideringTypeInfo(KnownField field, const TagValue &value, const std::string &typeInfo);
bool hasField(KnownField field) const;
void removeAllFields();
unsigned int fieldCount() const;
bool supportsField(KnownField field) const;
void ensureTextValuesAreProperlyEncoded();
2015-04-22 19:22:01 +02:00
void parse(std::istream &sourceStream, bool autoSeek);
void parse(std::iostream &sourceStream);
void make(std::ostream &targetStream);
private:
2016-08-05 01:46:31 +02:00
void readValue(TagValue &value, size_t maxLength, const char *buffer);
2015-04-22 19:22:01 +02:00
void writeValue(const TagValue &value, size_t length, char *buffer, std::ostream &targetStream);
TagValue m_title;
TagValue m_artist;
TagValue m_album;
TagValue m_year;
TagValue m_comment;
TagValue m_trackPos;
TagValue m_genre;
};
}
#endif // ID3V1TAG_H