Tag Parser 12.5.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;
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.
Id3v1Tag()
Constructs a new tag.
Definition id3v1tag.cpp:25
void make(std::ostream &targetStream, Diagnostics &diag)
Writes tag information to the specified stream.
Definition id3v1tag.cpp:93
void ensureTextValuesAreProperlyEncoded() override
Ensures the encoding of all assigned text values is supported by the tag by converting the character ...
Definition id3v1tag.cpp:260
std::size_t fieldCount() const override
Returns the number of present fields.
Definition id3v1tag.cpp:233
bool canEncodingBeUsed(TagTextEncoding encoding) const override
Returns only true for TagTextEncoding::Latin1.
Definition id3v1tag.cpp:47
bool hasField(KnownField field) const override
Returns an indication whether the specified field is present.
Definition id3v1tag.cpp:201
const TagValue & value(KnownField value) const override
Returns the value of the specified field.
Definition id3v1tag.cpp:144
bool supportsField(KnownField field) const override
Returns an indication whether the specified field is supported by the tag.
Definition id3v1tag.cpp:244
void removeAllFields() override
Removes all fields from the tag.
Definition id3v1tag.cpp:222
static constexpr TagType tagType
Definition id3v1tag.h:14
bool setValueConsideringTypeInfo(KnownField field, const TagValue &value, const std::string &typeInfo)
Definition id3v1tag.cpp:196
static constexpr std::string_view tagName
Definition id3v1tag.h:15
TagType type() const override
Returns the type of the tag as TagParser::TagType.
Definition id3v1tag.cpp:29
std::string_view typeName() const override
Returns the type name of the tag as C-style string.
Definition id3v1tag.cpp:34
bool setValue(KnownField field, const TagValue &value) override
Assigns the given value to the specified field.
Definition id3v1tag.cpp:166
void parse(std::istream &sourceStream, Diagnostics &diag)
Parses tag information from the specified stream.
Definition id3v1tag.cpp:58
The TagValue class wraps values of different types.
Definition tagvalue.h:147
Tag()
Constructs a new Tag.
Definition tag.cpp:24
#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