Tag Parser 12.4.0
C++ library for reading and writing MP4 (iTunes), ID3, Vorbis, Opus, FLAC and Matroska tags
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
id3v1tag.h
Go to the documentation of this file.
1#ifndef TAG_PARSER_ID3V1TAG_H
2#define TAG_PARSER_ID3V1TAG_H
3
4#include "../tag.h"
5
6namespace TagParser {
7
8class Diagnostics;
9
10class TAG_PARSER_EXPORT Id3v1Tag final : public Tag {
11public:
12 Id3v1Tag();
13
14 static constexpr TagType tagType = TagType::Id3v1Tag;
15 static constexpr std::string_view tagName = "ID3v1 tag";
16 TagType type() const override;
17 std::string_view typeName() const override;
18 bool canEncodingBeUsed(TagTextEncoding encoding) const override;
19 const TagValue &value(KnownField value) const override;
20 bool setValue(KnownField field, const TagValue &value) override;
21 bool setValueConsideringTypeInfo(KnownField field, const TagValue &value, const std::string &typeInfo);
22 bool hasField(KnownField field) const override;
23 void removeAllFields() override;
24 std::size_t fieldCount() const override;
25 bool supportsField(KnownField field) const override;
26 void ensureTextValuesAreProperlyEncoded() override;
27
28 void parse(std::istream &sourceStream, Diagnostics &diag);
29 void make(std::ostream &targetStream, Diagnostics &diag);
30
31private:
32 void readValue(TagValue &value, std::size_t maxLength, const char *buffer);
33 void writeValue(const TagValue &value, std::size_t length, char *buffer, std::ostream &targetStream, Diagnostics &diag);
34
35 TagValue m_title;
36 TagValue m_artist;
37 TagValue m_album;
38 TagValue m_year;
39 TagValue m_comment;
40 TagValue m_trackPos;
41 TagValue m_genre;
42};
43
44} // namespace TagParser
45
46#endif // TAG_PARSER_ID3V1TAG_H
The Diagnostics class is a container for DiagMessage.
The TagValue class wraps values of different types.
#define TAG_PARSER_EXPORT
Marks the symbol to be exported by the tagparser library.
Definition global.h:14
Contains all classes and functions of the TagInfo library.
Definition aaccodebook.h:10
KnownField
Specifies the field.
Definition tag.h:37
TagTextEncoding
Specifies the text encoding.
Definition tagvalue.h:29
TagType
Specifies the tag type.
Definition tagtype.h:11