Tag Parser: tag.h Source File

Tag Parser 12.5.2 C++ library for reading and writing MP4 (iTunes), ID3, Vorbis, Opus, FLAC and Matroska tags

Loading...
Searching...
No Matches
tag.h
Go to the documentation of this file.
1#ifndef TAG_PARSER_TAG_H
2#define TAG_PARSER_TAG_H
3
4#include "./tagtarget.h"
5#include "./tagtype.h"
6#include "./tagvalue.h"
7
8#include <c++utilities/io/binaryreader.h>
9
10#include <cstdint>
11#include <memory>
12#include <string>
13#include <type_traits>
14
15namespace TagParser {
16
37 enum class KnownField : unsigned int {
38 Invalid = std::numeric_limits<unsigned int>::max(),
39 Title = 0,
40 Album,
41 Artist,
42 Genre,
43 Comment,
44 Bpm,
45 Bps,
46 Lyricist,
47 TrackPosition,
48 DiskPosition,
49 PartNumber,
50 TotalParts,
51 Encoder,
52 RecordDate,
53 Performers,
54 Length,
55 Language,
56 EncoderSettings,
57 Lyrics,
58 SynchronizedLyrics,
59 Grouping,
60 RecordLabel,
61 Cover,
62 Composer,
63 Rating,
64 Description,
65 Vendor,
66 AlbumArtist,
67 ReleaseDate,
68 Subtitle,
69 LeadPerformer,
70 Arranger,
71 Conductor,
72 Director,
73 AssistantDirector,
74 DirectorOfPhotography,
75 SoundEngineer,
76 ArtDirector,
77 ProductionDesigner,
78 Choregrapher,
79 CostumeDesigner,
80 Actor,
81 Character,
82 WrittenBy,
83 ScreenplayBy,
84 EditedBy,
85 Producer,
86 Coproducer,
87 ExecutiveProducer,
88 DistributedBy,
89 MasteredBy,
90 EncodedBy,
91 MixedBy,
92 RemixedBy,
93 ProductionStudio,
94 ThanksTo,
95 Publisher,
96 Mood,
97 OriginalMediaType,
98 ContentType,
99 Subject,
100 Keywords,
101 Summary,
102 Synopsis,
103 InitialKey,
104 Period,
105 LawRating,
106 EncodingDate,
107 TaggingDate,
108 OriginalReleaseDate,
109 DigitalizationDate,
110 WritingDate,
111 PurchasingDate,
112 RecordingLocation,
113 CompositionLocation,
114 ComposerNationality,
115 PlayCounter,
116 Measure,
117 Tuning,
118 ISRC,
119 MCDI,
120 ISBN,
121 Barcode,
122 CatalogNumber,
123 LabelCode,
124 LCCN,
125 IMDB,
126 TMDB,
127 TVDB,
128 PurchaseItem,
129 PurchaseInfo,
130 PurchaseOwner,
131 PurchasePrice,
132 PurchaseCurrency,
133 Copyright,
134 ProductionCopyright,
135 License,
136 TermsOfUse,
137 PublisherWebpage,
138 StoreDescription,
139 MediaType,
140 PerformerWebpage,
141 ContentRating,
142};
143
147 constexpr KnownField firstKnownField = KnownField::Title;
148
152 constexpr KnownField lastKnownField = KnownField::ContentRating;
153
157 constexpr unsigned int knownFieldArraySize = static_cast<unsigned int>(lastKnownField) + 1;
158
162 constexpr bool isKnownFieldDeprecated(KnownField field)
163{
164 CPP_UTILITIES_UNUSED(field)
165 return false;
166}
167
171 constexpr KnownField nextKnownField(KnownField field)
172{
173 const auto next = field == lastKnownField ? KnownField::Invalid : static_cast<KnownField>(static_cast<int>(field) + 1);
174 return isKnownFieldDeprecated(next) ? nextKnownField(next) : next;
175}
176
177struct TagPrivate;
178
179 class TAG_PARSER_EXPORT Tag {
180public:
181 virtual ~Tag();
182
183 virtual TagType type() const;
184 virtual std::string_view typeName() const;
185 std::string toString() const;
186 virtual TagTextEncoding proposedTextEncoding() const;
187 virtual bool canEncodingBeUsed(TagTextEncoding encoding) const;
188 virtual const TagValue &value(KnownField field) const = 0;
189 virtual std::vector<const TagValue *> values(KnownField field) const;
190 virtual bool setValue(KnownField field, const TagValue &value) = 0;
191 virtual bool setValues(KnownField field, const std::vector<TagValue> &values);
192 virtual bool hasField(KnownField field) const = 0;
193 virtual void removeAllFields() = 0;
194 const std::string &version() const;
195 std::uint64_t size() const;
196 virtual bool supportsTarget() const;
197 const TagTarget &target() const;
198 TagTarget &target();
199 void setTarget(const TagTarget &target);
200 virtual TagTargetLevel targetLevel() const;
201 std::string_view targetLevelName() const;
202 bool isTargetingLevel(TagTargetLevel tagTargetLevel) const;
203 std::string targetString() const;
204 virtual std::size_t fieldCount() const = 0;
205 virtual bool supportsField(KnownField field) const = 0;
206 virtual TagDataType proposedDataType(KnownField field) const;
207 virtual bool supportsDescription(KnownField field) const;
208 virtual bool supportsMimeType(KnownField field) const;
209 virtual bool supportsMultipleValues(KnownField field) const;
210 virtual std::size_t insertValues(const Tag &from, bool overwrite);
211 virtual void ensureTextValuesAreProperlyEncoded() = 0;
212
213protected:
214 Tag();
215
216 std::string m_version;
217 std::uint64_t m_size;
218 std::unique_ptr<TagPrivate> m_p;
219 TagTarget m_target;
220};
221
222 inline TagType Tag::type() const
223{
224 return TagType::Unspecified;
225}
226
227 inline std::string_view Tag::typeName() const
228{
229 return "unspecified";
230}
231
232 inline TagTextEncoding Tag::proposedTextEncoding() const
233{
234 return TagTextEncoding::Latin1;
235}
236
237 inline bool Tag::canEncodingBeUsed(TagTextEncoding encoding) const
238{
239 return encoding == proposedTextEncoding();
240}
241
242 inline const std::string &Tag::version() const
243{
244 return m_version;
245}
246
247 inline std::uint64_t Tag::size() const
248{
249 return m_size;
250}
251
252 inline bool Tag::supportsTarget() const
253{
254 return false;
255}
256
257 inline const TagTarget &Tag::target() const
258{
259 return m_target;
260}
261
262 inline TagTarget &Tag::target()
263{
264 return m_target;
265}
266
267 inline void Tag::setTarget(const TagTarget &target)
268{
269 m_target = target;
270}
271
272 inline TagTargetLevel Tag::targetLevel() const
273{
274 return TagTargetLevel::Unspecified;
275}
276
277 inline std::string_view Tag::targetLevelName() const
278{
279 return supportsTarget() ? tagTargetLevelName(targetLevel()) : std::string_view();
280}
281
282 inline bool Tag::isTargetingLevel(TagTargetLevel tagTargetLevel) const
283{
284 return !supportsTarget() || static_cast<std::uint8_t>(targetLevel()) >= static_cast<std::uint8_t>(tagTargetLevel);
285}
286
287 inline std::string Tag::targetString() const
288{
289 return target().toString(targetLevel());
290}
291
292 inline TagDataType Tag::proposedDataType(KnownField field) const
293{
294 switch (field) {
295 case KnownField::Bpm:
296 case KnownField::Bps:
297 case KnownField::PartNumber:
298 case KnownField::TotalParts:
299 case KnownField::PlayCounter:
300 return TagDataType::Integer;
301 case KnownField::Cover:
302 return TagDataType::Picture;
303 case KnownField::Length:
304 return TagDataType::TimeSpan;
305 case KnownField::TrackPosition:
306 case KnownField::DiskPosition:
307 return TagDataType::PositionInSet;
308 case KnownField::Genre:
309 return TagDataType::StandardGenreIndex;
310 case KnownField::MCDI:
311 return TagDataType::Binary;
312 case KnownField::Rating:
313 // could also be a plain integer but popularity should generally be used (and can be converted
314 // to an integer)
315 return TagDataType::Popularity;
316 case KnownField::SynchronizedLyrics:
317 // not supported
318 return TagDataType::Undefined;
319 default:
320 return TagDataType::Text;
321 }
322}
323
324 inline bool Tag::supportsDescription(KnownField) const
325{
326 return false;
327}
328
329 inline bool Tag::supportsMimeType(KnownField) const
330{
331 return false;
332}
333
334 inline bool Tag::supportsMultipleValues(KnownField) const
335{
336 return false;
337}
338
339} // namespace TagParser
340
341#endif // TAG_PARSER_TAG_H
TagParser::FieldMapBasedTag::proposedDataType
TagDataType proposedDataType(const IdentifierType &id) const
Returns the proposed data type for the field with the specified id.
Definition fieldbasedtag.h:389
TagParser::FieldMapBasedTag::insertValues
std::size_t insertValues(const Tag &from, bool overwrite)
Inserts all compatible values from another Tag.
Definition fieldbasedtag.h:431
TagParser::TagTarget
The TagTarget class specifies the target of a tag.
Definition tagtarget.h:20
TagParser::TagTarget::toString
std::string toString(const std::function< TagTargetLevel(std::uint64_t)> &tagTargetMapping) const
Returns the string representation of the current instance.
Definition tagtarget.h:217
TagParser::TagValue
The TagValue class wraps values of different types.
Definition tagvalue.h:147
TagParser::Tag::targetLevel
virtual TagTargetLevel targetLevel() const
Returns the name of the current tag target level.
Definition tag.h:272
TagParser::Tag::setValue
virtual bool setValue(KnownField field, const TagValue &value)=0
Assigns the given value to the specified field.
TagParser::Tag::ensureTextValuesAreProperlyEncoded
virtual void ensureTextValuesAreProperlyEncoded()=0
Ensures the encoding of all assigned text values is supported by the tag by converting the character ...
TagParser::Tag::m_version
std::string m_version
Definition tag.h:216
TagParser::Tag::m_size
std::uint64_t m_size
Definition tag.h:217
TagParser::Tag::size
std::uint64_t size() const
Returns the size the tag within the file it is parsed from in bytes.
Definition tag.h:247
TagParser::Tag::setTarget
void setTarget(const TagTarget &target)
Sets the target of tag.
Definition tag.h:267
TagParser::Tag::m_p
std::unique_ptr< TagPrivate > m_p
Definition tag.h:218
TagParser::Tag::canEncodingBeUsed
virtual bool canEncodingBeUsed(TagTextEncoding encoding) const
Returns an indication whether the specified encoding can be used to provide string values for the tag...
Definition tag.h:237
TagParser::Tag::supportsTarget
virtual bool supportsTarget() const
Returns an indication whether a target is supported by the tag.
Definition tag.h:252
TagParser::Tag::targetLevelName
std::string_view targetLevelName() const
Returns the name of the current target level.
Definition tag.h:277
TagParser::Tag::proposedTextEncoding
virtual TagTextEncoding proposedTextEncoding() const
Returns the proposed text encoding.
Definition tag.h:232
TagParser::Tag::typeName
virtual std::string_view typeName() const
Returns the type name of the tag as C-style string.
Definition tag.h:227
TagParser::Tag::type
virtual TagType type() const
Returns the type of the tag as TagParser::TagType.
Definition tag.h:222
TagParser::Tag::toString
std::string toString() const
Returns a string representation of the tag.
Definition tag.cpp:39
TagParser::Tag::m_target
TagTarget m_target
Definition tag.h:219
TagParser::Tag::target
const TagTarget & target() const
Definition tag.h:257
TagParser::Tag::supportsField
virtual bool supportsField(KnownField field) const =0
Returns an indication whether the specified field is supported by the tag.
TagParser::Tag::proposedDataType
virtual TagDataType proposedDataType(KnownField field) const
Returns the proposed data type for the specified field as TagDataType.
Definition tag.h:292
TagParser::Tag::supportsMultipleValues
virtual bool supportsMultipleValues(KnownField field) const
Returns an indications whether the specified field supports multiple values.
Definition tag.h:334
TagParser::Tag::removeAllFields
virtual void removeAllFields()=0
Removes all fields from the tag.
TagParser::Tag::isTargetingLevel
bool isTargetingLevel(TagTargetLevel tagTargetLevel) const
Returns whether the tag is targeting the specified tagTargetLevel.
Definition tag.h:282
TagParser::Tag::version
const std::string & version() const
Returns the version of the tag as std::string.
Definition tag.h:242
TagParser::Tag::hasField
virtual bool hasField(KnownField field) const =0
Returns an indication whether the specified field is present.
TagParser::Tag::Tag
Tag()
Constructs a new Tag.
Definition tag.cpp:24
TagParser::Tag::supportsMimeType
virtual bool supportsMimeType(KnownField field) const
Returns an indications whether the specified field supports mime types.
Definition tag.h:329
TagParser::Tag::supportsDescription
virtual bool supportsDescription(KnownField field) const
Returns an indications whether the specified field supports descriptions.
Definition tag.h:324
TagParser::Tag::values
virtual std::vector< const TagValue * > values(KnownField field) const
Returns the values of the specified field.
Definition tag.cpp:58
TagParser::Tag::setValues
virtual bool setValues(KnownField field, const std::vector< TagValue > &values)
Assigns the given values to the specified field.
Definition tag.cpp:76
TagParser::Tag::value
virtual const TagValue & value(KnownField field) const =0
Returns the value of the specified field.
TagParser::Tag::fieldCount
virtual std::size_t fieldCount() const =0
Returns the number of present fields.
TagParser::Tag::targetString
std::string targetString() const
Returns the string representation for the assigned tag target.
Definition tag.h:287
TAG_PARSER_EXPORT
#define TAG_PARSER_EXPORT
Marks the symbol to be exported by the tagparser library.
Definition global.h:14
TagParser
Contains all classes and functions of the TagInfo library.
Definition aaccodebook.h:10
TagParser::KnownField
KnownField
Specifies the field.
Definition tag.h:37
TagParser::KnownField::EncodingDate
@ EncodingDate
Definition tag.h:106
TagParser::KnownField::StoreDescription
@ StoreDescription
Definition tag.h:138
TagParser::KnownField::Subtitle
@ Subtitle
Definition tag.h:68
TagParser::KnownField::PlayCounter
@ PlayCounter
Definition tag.h:115
TagParser::KnownField::Grouping
@ Grouping
Definition tag.h:59
TagParser::KnownField::ContentRating
@ ContentRating
Definition tag.h:141
TagParser::KnownField::MCDI
@ MCDI
Definition tag.h:119
TagParser::KnownField::Comment
@ Comment
Definition tag.h:43
TagParser::KnownField::Measure
@ Measure
Definition tag.h:116
TagParser::KnownField::MixedBy
@ MixedBy
Definition tag.h:91
TagParser::KnownField::PurchasingDate
@ PurchasingDate
Definition tag.h:111
TagParser::KnownField::Lyricist
@ Lyricist
Definition tag.h:46
TagParser::KnownField::Period
@ Period
Definition tag.h:104
TagParser::KnownField::Actor
@ Actor
Definition tag.h:80
TagParser::KnownField::EncodedBy
@ EncodedBy
Definition tag.h:90
TagParser::KnownField::DistributedBy
@ DistributedBy
Definition tag.h:88
TagParser::KnownField::Synopsis
@ Synopsis
Definition tag.h:102
TagParser::KnownField::Summary
@ Summary
Definition tag.h:101
TagParser::KnownField::Bps
@ Bps
Definition tag.h:45
TagParser::KnownField::ArtDirector
@ ArtDirector
Definition tag.h:76
TagParser::KnownField::Performers
@ Performers
Definition tag.h:53
TagParser::KnownField::Mood
@ Mood
Definition tag.h:96
TagParser::KnownField::TrackPosition
@ TrackPosition
Definition tag.h:47
TagParser::KnownField::Publisher
@ Publisher
Definition tag.h:95
TagParser::KnownField::Conductor
@ Conductor
Definition tag.h:71
TagParser::KnownField::IMDB
@ IMDB
Definition tag.h:125
TagParser::KnownField::Artist
@ Artist
Definition tag.h:41
TagParser::KnownField::PurchaseInfo
@ PurchaseInfo
Definition tag.h:129
TagParser::KnownField::ProductionDesigner
@ ProductionDesigner
Definition tag.h:77
TagParser::KnownField::CompositionLocation
@ CompositionLocation
Definition tag.h:113
TagParser::KnownField::Coproducer
@ Coproducer
Definition tag.h:86
TagParser::KnownField::EncoderSettings
@ EncoderSettings
Definition tag.h:56
TagParser::KnownField::PurchaseOwner
@ PurchaseOwner
Definition tag.h:130
TagParser::KnownField::Language
@ Language
Definition tag.h:55
TagParser::KnownField::CatalogNumber
@ CatalogNumber
Definition tag.h:122
TagParser::KnownField::Invalid
@ Invalid
Definition tag.h:38
TagParser::KnownField::PurchasePrice
@ PurchasePrice
Definition tag.h:131
TagParser::KnownField::Copyright
@ Copyright
Definition tag.h:133
TagParser::KnownField::TaggingDate
@ TaggingDate
Definition tag.h:107
TagParser::KnownField::RecordingLocation
@ RecordingLocation
Definition tag.h:112
TagParser::KnownField::SynchronizedLyrics
@ SynchronizedLyrics
Definition tag.h:58
TagParser::KnownField::PurchaseItem
@ PurchaseItem
Definition tag.h:128
TagParser::KnownField::Character
@ Character
Definition tag.h:81
TagParser::KnownField::License
@ License
Definition tag.h:135
TagParser::KnownField::LeadPerformer
@ LeadPerformer
Definition tag.h:69
TagParser::KnownField::Director
@ Director
Definition tag.h:72
TagParser::KnownField::TotalParts
@ TotalParts
Definition tag.h:50
TagParser::KnownField::SoundEngineer
@ SoundEngineer
Definition tag.h:75
TagParser::KnownField::InitialKey
@ InitialKey
Definition tag.h:103
TagParser::KnownField::ReleaseDate
@ ReleaseDate
Definition tag.h:67
TagParser::KnownField::Keywords
@ Keywords
Definition tag.h:100
TagParser::KnownField::OriginalMediaType
@ OriginalMediaType
Definition tag.h:97
TagParser::KnownField::Encoder
@ Encoder
Definition tag.h:51
TagParser::KnownField::Tuning
@ Tuning
Definition tag.h:117
TagParser::KnownField::Genre
@ Genre
Definition tag.h:42
TagParser::KnownField::ISBN
@ ISBN
Definition tag.h:120
TagParser::KnownField::AlbumArtist
@ AlbumArtist
Definition tag.h:66
TagParser::KnownField::OriginalReleaseDate
@ OriginalReleaseDate
Definition tag.h:108
TagParser::KnownField::DirectorOfPhotography
@ DirectorOfPhotography
Definition tag.h:74
TagParser::KnownField::Lyrics
@ Lyrics
Definition tag.h:57
TagParser::KnownField::PurchaseCurrency
@ PurchaseCurrency
Definition tag.h:132
TagParser::KnownField::LawRating
@ LawRating
Definition tag.h:105
TagParser::KnownField::Bpm
@ Bpm
Definition tag.h:44
TagParser::KnownField::ScreenplayBy
@ ScreenplayBy
Definition tag.h:83
TagParser::KnownField::Producer
@ Producer
Definition tag.h:85
TagParser::KnownField::Arranger
@ Arranger
Definition tag.h:70
TagParser::KnownField::ISRC
@ ISRC
Definition tag.h:118
TagParser::KnownField::AssistantDirector
@ AssistantDirector
Definition tag.h:73
TagParser::KnownField::LCCN
@ LCCN
Definition tag.h:124
TagParser::KnownField::Description
@ Description
Definition tag.h:64
TagParser::KnownField::Title
@ Title
Definition tag.h:39
TagParser::KnownField::WrittenBy
@ WrittenBy
Definition tag.h:82
TagParser::KnownField::ContentType
@ ContentType
Definition tag.h:98
TagParser::KnownField::WritingDate
@ WritingDate
Definition tag.h:110
TagParser::KnownField::Barcode
@ Barcode
Definition tag.h:121
TagParser::KnownField::Length
@ Length
Definition tag.h:54
TagParser::KnownField::Composer
@ Composer
Definition tag.h:62
TagParser::KnownField::Album
@ Album
Definition tag.h:40
TagParser::KnownField::Subject
@ Subject
Definition tag.h:99
TagParser::KnownField::Cover
@ Cover
Definition tag.h:61
TagParser::KnownField::Choregrapher
@ Choregrapher
Definition tag.h:78
TagParser::KnownField::TermsOfUse
@ TermsOfUse
Definition tag.h:136
TagParser::KnownField::ProductionCopyright
@ ProductionCopyright
Definition tag.h:134
TagParser::KnownField::DigitalizationDate
@ DigitalizationDate
Definition tag.h:109
TagParser::KnownField::LabelCode
@ LabelCode
Definition tag.h:123
TagParser::KnownField::RecordDate
@ RecordDate
Definition tag.h:52
TagParser::KnownField::Rating
@ Rating
Definition tag.h:63
TagParser::KnownField::EditedBy
@ EditedBy
Definition tag.h:84
TagParser::KnownField::ComposerNationality
@ ComposerNationality
Definition tag.h:114
TagParser::KnownField::CostumeDesigner
@ CostumeDesigner
Definition tag.h:79
TagParser::KnownField::PerformerWebpage
@ PerformerWebpage
Definition tag.h:140
TagParser::KnownField::Vendor
@ Vendor
Definition tag.h:65
TagParser::KnownField::RemixedBy
@ RemixedBy
Definition tag.h:92
TagParser::KnownField::PartNumber
@ PartNumber
Definition tag.h:49
TagParser::KnownField::ProductionStudio
@ ProductionStudio
Definition tag.h:93
TagParser::KnownField::ExecutiveProducer
@ ExecutiveProducer
Definition tag.h:87
TagParser::KnownField::TMDB
@ TMDB
Definition tag.h:126
TagParser::KnownField::PublisherWebpage
@ PublisherWebpage
Definition tag.h:137
TagParser::KnownField::DiskPosition
@ DiskPosition
Definition tag.h:48
TagParser::KnownField::RecordLabel
@ RecordLabel
Definition tag.h:60
TagParser::KnownField::ThanksTo
@ ThanksTo
Definition tag.h:94
TagParser::KnownField::TVDB
@ TVDB
Definition tag.h:127
TagParser::KnownField::MasteredBy
@ MasteredBy
Definition tag.h:89
TagParser::tagTargetLevelName
TAG_PARSER_EXPORT std::string_view tagTargetLevelName(TagTargetLevel tagTargetLevel)
Returns a string representation for the specified tagTargetLevel.
Definition tagtarget.cpp:17
TagParser::knownFieldArraySize
constexpr unsigned int knownFieldArraySize
The number of valid entries in the TagParser::KnownField enum.
Definition tag.h:157
TagParser::TagTargetLevel
TagTargetLevel
The TagTargetLevel enum specifies tag target levels.
Definition tagtarget.h:16
TagParser::TagTargetLevel::Unspecified
@ Unspecified
Definition tagtarget.h:16
TagParser::nextKnownField
constexpr KnownField nextKnownField(KnownField field)
Returns the next known field skipping any deprecated fields.
Definition tag.h:171
TagParser::TagTextEncoding
TagTextEncoding
Specifies the text encoding.
Definition tagvalue.h:29
TagParser::TagTextEncoding::Latin1
@ Latin1
Definition tagvalue.h:30
TagParser::lastKnownField
constexpr KnownField lastKnownField
The last valid entry in the TagParser::KnownField enum.
Definition tag.h:152
TagParser::TagType
TagType
Specifies the tag type.
Definition tagtype.h:11
TagParser::TagType::Unspecified
@ Unspecified
Definition tagtype.h:12
TagParser::firstKnownField
constexpr KnownField firstKnownField
The first valid entry in the TagParser::KnownField enum.
Definition tag.h:147
TagParser::isKnownFieldDeprecated
constexpr bool isKnownFieldDeprecated(KnownField field)
Returns whether the specified field is deprecated and should not be used anymore.
Definition tag.h:162
TagParser::MediaType
MediaType
The MediaType enum specifies the type of media data (audio, video, text, ...).
Definition mediaformat.h:14
TagParser::TagDataType
TagDataType
Specifies the data type.
Definition tagvalue.h:119
TagParser::TagDataType::TimeSpan
@ TimeSpan
Definition tagvalue.h:124
TagParser::TagDataType::PositionInSet
@ PositionInSet
Definition tagvalue.h:122
TagParser::TagDataType::Binary
@ Binary
Definition tagvalue.h:127
TagParser::TagDataType::Picture
@ Picture
Definition tagvalue.h:126
TagParser::TagDataType::StandardGenreIndex
@ StandardGenreIndex
Definition tagvalue.h:123
TagParser::TagDataType::Text
@ Text
Definition tagvalue.h:120
TagParser::TagDataType::Integer
@ Integer
Definition tagvalue.h:121
TagParser::TagDataType::Popularity
@ Popularity
Definition tagvalue.h:129
TagParser::TagDataType::Undefined
@ Undefined
Definition tagvalue.h:128
tagtarget.h
tagtype.h
tagvalue.h