92 Id3v2Frame(
const IdentifierType &
id,
const TagValue &value, std::uint8_t group = 0, std::uint16_t flag = 0);
95 void parse(CppUtilities::BinaryReader &reader, std::uint32_t version, std::uint32_t maximalSize,
Diagnostics &diag);
97 void make(CppUtilities::BinaryWriter &writer, std::uint8_t version,
Diagnostics &diag);
100 const std::vector<TagValue> &additionalValues()
const;
101 std::vector<TagValue> &additionalValues();
102 bool isAdditionalTypeInfoUsed()
const;
103 bool isValid()
const;
104 bool hasPaddingReached()
const;
105 std::uint16_t flag()
const;
106 void setFlag(std::uint16_t value);
107 std::uint32_t totalSize()
const;
108 std::uint32_t dataSize()
const;
109 bool toDiscardWhenUnknownAndTagIsAltered()
const;
110 bool toDiscardWhenUnknownAndFileIsAltered()
const;
111 bool isReadOnly()
const;
112 bool isCompressed()
const;
113 bool isEncrypted()
const;
114 bool hasGroupInformation()
const;
115 bool isUnsynchronized()
const;
116 bool hasDataLengthIndicator()
const;
117 std::uint8_t group()
const;
118 void setGroup(std::uint8_t value);
119 std::uint32_t parsedVersion()
const;
120 bool supportsNestedFields()
const;
124 std::tuple<const char *, std::size_t, const char *> parseSubstring(
126 std::string parseString(
const char *buffer, std::size_t maxSize,
TagTextEncoding &encoding,
bool addWarnings,
Diagnostics &diag);
127 std::u16string parseWideString(
const char *buffer, std::size_t dataSize,
TagTextEncoding &encoding,
bool addWarnings,
Diagnostics &diag);
128 void parseLegacyPicture(
const char *buffer, std::size_t maxSize,
TagValue &tagValue, std::uint8_t &typeInfo,
Diagnostics &diag);
129 void parsePicture(
const char *buffer, std::size_t maxSize,
TagValue &tagValue, std::uint8_t &typeInfo,
Diagnostics &diag);
130 void parseComment(
const char *buffer, std::size_t maxSize,
TagValue &tagValue,
Diagnostics &diag);
134 static std::uint8_t makeTextEncodingByte(
TagTextEncoding textEncoding);
136 static void makeLegacyPicture(
137 std::unique_ptr<
char[]> &buffer, std::uint32_t &bufferSize,
const TagValue &picture, std::uint8_t typeInfo,
Diagnostics &diag);
138 static void makePicture(std::unique_ptr<
char[]> &buffer, std::uint32_t &bufferSize,
const TagValue &picture, std::uint8_t typeInfo,
140 static void makeComment(
141 std::unique_ptr<
char[]> &buffer, std::uint32_t &bufferSize,
const TagValue &comment, std::uint8_t version,
Diagnostics &diag);
143 static IdentifierType fieldIdFromString(std::string_view idString);
144 static std::string fieldIdToString(IdentifierType
id);
147 void internallyClearValue();
148 void internallyClearFurtherData();
149 std::string ignoreAdditionalValuesDiagMsg()
const;
151 std::vector<TagValue> m_additionalValues;
152 std::uint32_t m_parsedVersion;
153 std::uint32_t m_dataSize;
154 std::uint32_t m_totalSize;
155 std::uint16_t m_flag;
156 std::uint8_t m_group;