Tag Parser 12.3.1
C++ library for reading and writing MP4 (iTunes), ID3, Vorbis, Opus, FLAC and Matroska tags
Loading...
Searching...
No Matches
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:29
TagTextEncoding
Specifies the text encoding.
Definition tagvalue.h:29
TagType
Specifies the tag type.
Definition tagtype.h:11