Exiv2
tags_int.hpp
Go to the documentation of this file.
1// ***************************************************************** -*- C++ -*-
2/*
3 * Copyright (C) 2004-2018 Exiv2 authors
4 * This program is part of the Exiv2 distribution.
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version 2
9 * of the License, or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA.
19 */
28#ifndef TAGS_INT_HPP_
29#define TAGS_INT_HPP_
30
31// *****************************************************************************
32// included header files
33#include "types.hpp"
34#include "tags.hpp"
35#include "value.hpp"
36
37// + standard includes
38#include <string>
39#include <iostream>
40#include <memory>
41
42// *****************************************************************************
43// namespace extensions
44
45namespace Exiv2 {
46 class ExifData;
47
48 namespace Internal {
49
50// *****************************************************************************
51// class definitions
52
54 enum IfdId {
55 ifdIdNotSet,
56 ifd0Id,
57 ifd1Id,
58 ifd2Id,
59 ifd3Id,
60 exifId,
61 gpsId,
62 iopId,
63 mpfId,
64 subImage1Id,
65 subImage2Id,
66 subImage3Id,
67 subImage4Id,
68 subImage5Id,
69 subImage6Id,
70 subImage7Id,
71 subImage8Id,
72 subImage9Id,
73 subThumb1Id,
74 panaRawId,
75 mnId,
76 canonId,
77 canonCsId,
78 canonSiId,
79 canonCfId,
80 canonPiId,
81 canonPaId,
82 canonTiId,
83 canonFiId,
84 canonPrId,
85 casioId,
86 casio2Id,
87 fujiId,
88 minoltaId,
89 minoltaCs5DId,
90 minoltaCs7DId,
91 minoltaCsOldId,
92 minoltaCsNewId,
93 nikon1Id,
94 nikon2Id,
95 nikon3Id,
96 nikonPvId,
97 nikonVrId,
98 nikonPcId,
99 nikonWtId,
100 nikonIiId,
101 nikonAfId,
102 nikonAf21Id,
103 nikonAf22Id,
104 nikonAFTId,
105 nikonFiId,
106 nikonMeId,
107 nikonFl1Id,
108 nikonFl2Id,
109 nikonFl3Id,
110 nikonSi1Id,
111 nikonSi2Id,
112 nikonSi3Id,
113 nikonSi4Id,
114 nikonSi5Id,
115 nikonSi6Id,
116 nikonLd1Id,
117 nikonLd2Id,
118 nikonLd3Id,
119 nikonCb1Id,
120 nikonCb2Id,
121 nikonCb2aId,
122 nikonCb2bId,
123 nikonCb3Id,
124 nikonCb4Id,
125 olympusId,
126 olympus2Id,
127 olympusCsId,
128 olympusEqId,
129 olympusRdId,
130 olympusRd2Id,
131 olympusIpId,
132 olympusFiId,
133 olympusFe1Id,
134 olympusFe2Id,
135 olympusFe3Id,
136 olympusFe4Id,
137 olympusFe5Id,
138 olympusFe6Id,
139 olympusFe7Id,
140 olympusFe8Id,
141 olympusFe9Id,
142 olympusRiId,
143 panasonicId,
144 pentaxId,
145 pentaxDngId,
146 samsung2Id,
147 samsungPvId,
148 samsungPwId,
149 sigmaId,
150 sony1Id,
151 sony2Id,
152 sonyMltId,
153 sony1CsId,
154 sony1Cs2Id,
155 sony2CsId,
156 sony2Cs2Id,
157 sony2FpId,
158 sony1MltCs7DId,
159 sony1MltCsOldId,
160 sony1MltCsNewId,
161 sony1MltCsA100Id,
162 lastId,
163 ignoreId = lastId
164 };
165
170 enum SectionId { sectionIdNotSet,
171 imgStruct, recOffset, imgCharacter, otherTags, exifFormat,
172 exifVersion, imgConfig, userInfo, relatedFile, dateTime,
173 captureCond, gpsTags, iopTags, mpfTags, makerTags, dngTags, panaRaw,
174 tiffEp, tiffPm6, adobeOpi,
175 lastSectionId };
176
178 struct SectionInfo {
180 const char* name_;
181 const char* desc_;
182 };
183
188 struct TagDetails {
189 int64_t val_;
190 const char* label_;
191
193 bool operator==(long key) const { return val_ == key; }
194 }; // struct TagDetails
195
201 uint32_t mask_;
202 const char* label_;
203 }; // struct TagDetailsBitmask
204
210 const char* voc_;
211 const char* label_;
212
220 bool operator==(const std::string& key) const;
221 }; // struct TagDetails
222
227 template <int N, const TagDetails (&array)[N]>
228 std::ostream& printTag(std::ostream& os, const Value& value, const ExifData*)
229 {
230 const TagDetails* td = find(array, value.toLong());
231 if (td) {
232 os << exvGettext(td->label_);
233 }
234 else {
235 os << "(" << value << ")";
236 }
237 return os;
238 }
239
241#define EXV_PRINT_TAG(array) printTag<EXV_COUNTOF(array), array>
242
247 template <int N, const TagDetailsBitmask (&array)[N]>
248 std::ostream& printTagBitmask(std::ostream& os, const Value& value, const ExifData*)
249 {
250 const uint32_t val = static_cast<uint32_t>(value.toLong());
251 if (val == 0 && N > 0) {
252 const TagDetailsBitmask* td = *(&array);
253 if (td->mask_ == 0) return os << exvGettext(td->label_);
254 }
255 bool sep = false;
256 for (int i = 0; i < N; ++i) {
257 // *& acrobatics is a workaround for a MSVC 7.1 bug
258 const TagDetailsBitmask* td = *(&array) + i;
259
260 if (val & td->mask_) {
261 if (sep) {
262 os << ", " << exvGettext(td->label_);
263 }
264 else {
265 os << exvGettext(td->label_);
266 sep = true;
267 }
268 }
269 }
270 return os;
271 }
272
274#define EXV_PRINT_TAG_BITMASK(array) printTagBitmask<EXV_COUNTOF(array), array>
275
280 template <int N, const TagVocabulary (&array)[N]>
281 std::ostream& printTagVocabulary(std::ostream& os, const Value& value, const ExifData*)
282 {
283 const TagVocabulary* td = find(array, value.toString());
284 if (td) {
285 os << exvGettext(td->label_);
286 }
287 else {
288 os << "(" << value << ")";
289 }
290 return os;
291 }
292
294#define EXV_PRINT_VOCABULARY(array) printTagVocabulary<EXV_COUNTOF(array), array>
295
296// *****************************************************************************
297// free functions
298
300 const TagInfo* ifdTagList();
302 const TagInfo* exifTagList();
304 const TagInfo* iopTagList();
306 const TagInfo* gpsTagList();
308 const TagInfo* mnTagList();
310 const TagInfo* mpfTagList();
311
312 const GroupInfo* groupList();
313 const TagInfo* tagList(const std::string& groupName);
314
318 const char* ifdName(IfdId ifdId);
320 const char* groupName(IfdId ifdId);
321
323 bool isMakerIfd(IfdId ifdId);
325 bool isExifIfd(IfdId ifdId);
326
328 void taglist(std::ostream& os, IfdId ifdId);
330 const TagInfo* tagList(IfdId ifdId);
332 const TagInfo* tagInfo(uint16_t tag, IfdId ifdId);
334 const TagInfo* tagInfo(const std::string& tagName, IfdId ifdId);
342 uint16_t tagNumber(const std::string& tagName, IfdId ifdId);
343
345
346
347 std::ostream& printValue(std::ostream& os, const Value& value, const ExifData*);
349 std::ostream& printLong(std::ostream& os, const Value& value, const ExifData*);
351 std::ostream& printFloat(std::ostream& os, const Value& value, const ExifData*);
353 std::ostream& printDegrees(std::ostream& os, const Value& value, const ExifData*);
355 std::ostream& printUcs2(std::ostream& os, const Value& value, const ExifData*);
357 std::ostream& printExifUnit(std::ostream& os, const Value& value, const ExifData*);
359 std::ostream& print0x0000(std::ostream& os, const Value& value, const ExifData*);
361 std::ostream& print0x0005(std::ostream& os, const Value& value, const ExifData*);
363 std::ostream& print0x0006(std::ostream& os, const Value& value, const ExifData*);
365 std::ostream& print0x0007(std::ostream& os, const Value& value, const ExifData*);
367 std::ostream& print0x0009(std::ostream& os, const Value& value, const ExifData*);
369 std::ostream& print0x000a(std::ostream& os, const Value& value, const ExifData*);
371 std::ostream& print0x000c(std::ostream& os, const Value& value, const ExifData*);
373 std::ostream& print0x0019(std::ostream& os, const Value& value, const ExifData*);
375 std::ostream& print0x001e(std::ostream& os, const Value& value, const ExifData*);
377 std::ostream& print0x0112(std::ostream& os, const Value& value, const ExifData*);
379 std::ostream& print0x0213(std::ostream& os, const Value& value, const ExifData*);
381 std::ostream& print0x8298(std::ostream& os, const Value& value, const ExifData*);
383 std::ostream& print0x829a(std::ostream& os, const Value& value, const ExifData*);
385 std::ostream& print0x829d(std::ostream& os, const Value& value, const ExifData*);
387 std::ostream& print0x8822(std::ostream& os, const Value& value, const ExifData*);
389 std::ostream& print0x8827(std::ostream& os, const Value& value, const ExifData*);
391 std::ostream& print0x9101(std::ostream& os, const Value& value, const ExifData*);
393 std::ostream& print0x9201(std::ostream& os, const Value& value, const ExifData*);
395 std::ostream& print0x9202(std::ostream& os, const Value& value, const ExifData*);
397 std::ostream& print0x9204(std::ostream& os, const Value& value, const ExifData*);
399 std::ostream& print0x9206(std::ostream& os, const Value& value, const ExifData*);
401 std::ostream& print0x9207(std::ostream& os, const Value& value, const ExifData*);
403 std::ostream& print0x9208(std::ostream& os, const Value& value, const ExifData*);
405 std::ostream& print0x920a(std::ostream& os, const Value& value, const ExifData*);
407 std::ostream& print0x9286(std::ostream& os, const Value& value, const ExifData*);
409 std::ostream& print0xa001(std::ostream& os, const Value& value, const ExifData*);
411 std::ostream& print0xa217(std::ostream& os, const Value& value, const ExifData*);
413 std::ostream& print0xa300(std::ostream& os, const Value& value, const ExifData*);
415 std::ostream& print0xa301(std::ostream& os, const Value& value, const ExifData*);
417 std::ostream& print0xa401(std::ostream& os, const Value& value, const ExifData*);
419 std::ostream& print0xa402(std::ostream& os, const Value& value, const ExifData*);
421 std::ostream& print0xa403(std::ostream& os, const Value& value, const ExifData*);
423 std::ostream& print0xa404(std::ostream& os, const Value& value, const ExifData*);
425 std::ostream& print0xa405(std::ostream& os, const Value& value, const ExifData*);
427 std::ostream& print0xa406(std::ostream& os, const Value& value, const ExifData*);
429 std::ostream& print0xa407(std::ostream& os, const Value& value, const ExifData*);
431 std::ostream& print0xa409(std::ostream& os, const Value& value, const ExifData*);
433 std::ostream& print0xa40c(std::ostream& os, const Value& value, const ExifData*);
435 std::ostream& printGPSDirRef(std::ostream& os, const Value& value, const ExifData*);
437 std::ostream& printNormalSoftHard(std::ostream& os, const Value& value, const ExifData*);
439 std::ostream& printExifVersion(std::ostream& os, const Value& value, const ExifData*);
441 std::ostream& printXmpVersion(std::ostream& os, const Value& value, const ExifData*);
443 std::ostream& printXmpDate(std::ostream& os, const Value& value, const ExifData*);
445
447 float fnumber(float apertureValue);
448
450 URational exposureTime(float shutterSpeedValue);
451
452}} // namespace Internal, Exiv2
453
454#endif // #ifndef TAGS_INT_HPP_
A container for Exif data. This is a top-level class of the Exiv2 library. The container holds Exifda...
Definition: exif.hpp:434
Common interface for all types of values used with metadata.
Definition: value.hpp:60
virtual long toLong(long n=0) const =0
Convert the n-th component of the value to a long. The behaviour of this method may be undefined if t...
std::string toString() const
Return the value as a string. Implemented in terms of write(std::ostream& os) const of the concrete c...
Definition: value.cpp:175
const char * groupName(IfdId ifdId)
Return the group name for a group id.
Definition: tags_int.cpp:2155
std::ostream & print0xa405(std::ostream &os, const Value &value, const ExifData *)
Print 35mm equivalent focal length.
Definition: tags_int.cpp:2745
std::ostream & print0xa407(std::ostream &os, const Value &value, const ExifData *metadata)
Print gain control.
Definition: tags_int.cpp:2780
std::ostream & print0x9206(std::ostream &os, const Value &value, const ExifData *)
Print the subject distance.
Definition: tags_int.cpp:2539
bool isMakerIfd(IfdId ifdId)
Return true if ifdId is a makernote IFD id. (Note: returns false for makerIfd)
Definition: tags_int.cpp:2060
std::ostream & printUcs2(std::ostream &os, const Value &value, const ExifData *)
Print function converting from UCS-2LE to UTF-8.
Definition: tags_int.cpp:2246
std::ostream & print0xa001(std::ostream &os, const Value &value, const ExifData *metadata)
Print color space.
Definition: tags_int.cpp:2650
std::ostream & print0xa300(std::ostream &os, const Value &value, const ExifData *metadata)
Print file source.
Definition: tags_int.cpp:2678
std::ostream & print0x9202(std::ostream &os, const Value &value, const ExifData *)
Print f-number converted from APEX aperture value.
Definition: tags_int.cpp:2503
std::ostream & printDegrees(std::ostream &os, const Value &value, const ExifData *)
Print a longitude or latitude value.
Definition: tags_int.cpp:2210
std::ostream & printTag(std::ostream &os, const Value &value, const ExifData *)
Generic pretty-print function to translate a long value to a description by looking up a reference ta...
Definition: tags_int.hpp:228
std::ostream & print0x8827(std::ostream &os, const Value &value, const ExifData *)
Print ISO speed ratings.
Definition: tags_int.cpp:2467
URational exposureTime(float shutterSpeedValue)
Calculate the exposure time from an APEX shutter speed value.
Definition: tags_int.cpp:2172
std::ostream & print0xa409(std::ostream &os, const Value &value, const ExifData *metadata)
Print saturation.
Definition: tags_int.cpp:2792
std::ostream & print0x0009(std::ostream &os, const Value &value, const ExifData *metadata)
Print GPS status.
Definition: tags_int.cpp:2348
std::ostream & print0xa217(std::ostream &os, const Value &value, const ExifData *metadata)
Print sensing method.
Definition: tags_int.cpp:2666
std::ostream & print0x000c(std::ostream &os, const Value &value, const ExifData *metadata)
Print GPS speed ref.
Definition: tags_int.cpp:2358
std::ostream & print0xa40c(std::ostream &os, const Value &value, const ExifData *metadata)
Print subject distance range.
Definition: tags_int.cpp:2806
std::ostream & print0x829a(std::ostream &os, const Value &value, const ExifData *)
Print the exposure time.
Definition: tags_int.cpp:2408
std::ostream & print0x829d(std::ostream &os, const Value &value, const ExifData *)
Print the f-number.
Definition: tags_int.cpp:2431
SectionId
Section identifiers to logically group tags. A section consists of nothing more than a name,...
Definition: tags_int.hpp:170
const TagInfo * mpfTagList()
Return read-only list of built-in mfp Tags http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/MPF....
Definition: tags_int.cpp:2001
std::ostream & print0x0019(std::ostream &os, const Value &value, const ExifData *metadata)
Print GPS destination distance ref.
Definition: tags_int.cpp:2363
std::ostream & printExifUnit(std::ostream &os, const Value &value, const ExifData *metadata)
Print function for Exif units.
Definition: tags_int.cpp:2272
void taglist(std::ostream &os, IfdId ifdId)
Print the list of tags for ifdId to the output stream os.
Definition: tags_int.cpp:2098
std::ostream & print0x9286(std::ostream &os, const Value &value, const ExifData *)
Print the user comment.
Definition: tags_int.cpp:2631
std::ostream & print0xa403(std::ostream &os, const Value &value, const ExifData *metadata)
Print white balance.
Definition: tags_int.cpp:2722
std::ostream & print0x0005(std::ostream &os, const Value &value, const ExifData *metadata)
Print GPS altitude ref.
Definition: tags_int.cpp:2292
const TagInfo * tagList(IfdId ifdId)
Return the tag list for ifdId.
Definition: tags_int.cpp:2108
std::ostream & print0x9201(std::ostream &os, const Value &value, const ExifData *)
Print exposure time converted from APEX shutter speed value.
Definition: tags_int.cpp:2490
std::ostream & print0x000a(std::ostream &os, const Value &value, const ExifData *metadata)
Print GPS measurement mode.
Definition: tags_int.cpp:2353
const TagInfo * iopTagList()
Return read-only list of built-in IOP tags.
Definition: tags_int.cpp:2034
std::ostream & print0x0112(std::ostream &os, const Value &value, const ExifData *metadata)
Print orientation.
Definition: tags_int.cpp:2373
std::ostream & printExifVersion(std::ostream &os, const Value &value, const ExifData *)
Print any version packed in 4 Bytes format : major major minor minor.
Definition: tags_int.cpp:2834
const char * ifdName(IfdId ifdId)
Return the name of the IFD.
Definition: tags_int.cpp:2148
std::ostream & printNormalSoftHard(std::ostream &os, const Value &value, const ExifData *metadata)
Print contrast, sharpness (normal, soft, hard)
Definition: tags_int.cpp:2829
std::ostream & print0x0213(std::ostream &os, const Value &value, const ExifData *metadata)
Print YCbCrPositioning.
Definition: tags_int.cpp:2383
std::ostream & print0x920a(std::ostream &os, const Value &value, const ExifData *)
Print the actual focal length of the lens.
Definition: tags_int.cpp:2612
const TagInfo * tagInfo(uint16_t tag, IfdId ifdId)
Return the tag info for tag and ifdId.
Definition: tags_int.cpp:2115
std::ostream & print0xa401(std::ostream &os, const Value &value, const ExifData *metadata)
Print custom rendered.
Definition: tags_int.cpp:2699
uint16_t tagNumber(const std::string &tagName, IfdId ifdId)
Return the tag number for one combination of IFD id and tagName. If the tagName is not known,...
Definition: tags_int.cpp:2185
float fnumber(float apertureValue)
Calculate F number from an APEX aperture value.
Definition: tags_int.cpp:2167
std::ostream & printTagBitmask(std::ostream &os, const Value &value, const ExifData *)
Generic print function to translate a long value to a description by looking up bitmasks in a referen...
Definition: tags_int.hpp:248
std::ostream & printGPSDirRef(std::ostream &os, const Value &value, const ExifData *metadata)
Print GPS direction ref.
Definition: tags_int.cpp:2817
std::ostream & printXmpVersion(std::ostream &os, const Value &value, const ExifData *)
Print any version encoded in the ASCII string majormajorminorminor.
Definition: tags_int.cpp:2849
const TagInfo * gpsTagList()
Return read-only list of built-in GPS tags.
Definition: tags_int.cpp:1931
std::ostream & print0x9101(std::ostream &os, const Value &value, const ExifData *)
Print components configuration specific to compressed data.
Definition: tags_int.cpp:2472
std::ostream & print0x0000(std::ostream &os, const Value &value, const ExifData *)
Print GPS version.
Definition: tags_int.cpp:2277
std::ostream & print0xa402(std::ostream &os, const Value &value, const ExifData *metadata)
Print exposure mode.
Definition: tags_int.cpp:2711
std::ostream & print0xa404(std::ostream &os, const Value &value, const ExifData *)
Print digital zoom ratio.
Definition: tags_int.cpp:2727
IfdId groupId(const std::string &groupName)
Return the group id for a group name.
Definition: tags_int.cpp:2140
std::ostream & print0x8298(std::ostream &os, const Value &value, const ExifData *)
Print the copyright.
Definition: tags_int.cpp:2388
std::ostream & printTagVocabulary(std::ostream &os, const Value &value, const ExifData *)
Generic pretty-print function to translate a controlled vocabulary value (string) to a description by...
Definition: tags_int.hpp:281
std::ostream & print0x0006(std::ostream &os, const Value &value, const ExifData *)
Print GPS altitude.
Definition: tags_int.cpp:2297
std::ostream & printFloat(std::ostream &os, const Value &value, const ExifData *)
Print a Rational or URational value in floating point format.
Definition: tags_int.cpp:2203
const TagInfo * exifTagList()
Return read-only list of built-in Exif IFD tags.
Definition: tags_int.cpp:1757
IfdId
Type to specify the IFD to which a metadata belongs.
Definition: tags_int.hpp:54
const TagInfo * ifdTagList()
Return read-only list of built-in IFD0/1 tags.
Definition: tags_int.cpp:1428
std::ostream & print0x9204(std::ostream &os, const Value &value, const ExifData *)
Print the exposure bias value.
Definition: tags_int.cpp:2518
std::ostream & printXmpDate(std::ostream &os, const Value &value, const ExifData *)
Print a date following the format YYYY-MM-DDTHH:MM:SSZ.
Definition: tags_int.cpp:2858
std::ostream & print0xa406(std::ostream &os, const Value &value, const ExifData *metadata)
Print scene capture type.
Definition: tags_int.cpp:2766
std::ostream & printValue(std::ostream &os, const Value &value, const ExifData *)
Default print function, using the Value output operator.
Definition: tags_int.cpp:2162
bool isExifIfd(IfdId ifdId)
Return true if ifdId is an Exif IFD id.
Definition: tags_int.cpp:2070
const TagInfo * mnTagList()
Return read-only list of built-in Exiv2 Makernote info tags.
Definition: tags_int.cpp:2053
std::ostream & print0x9208(std::ostream &os, const Value &value, const ExifData *metadata)
Print light source.
Definition: tags_int.cpp:2607
std::ostream & print0x8822(std::ostream &os, const Value &value, const ExifData *metadata)
Print exposure program.
Definition: tags_int.cpp:2462
std::ostream & print0x001e(std::ostream &os, const Value &value, const ExifData *metadata)
Print GPS differential correction.
Definition: tags_int.cpp:2368
std::ostream & printLong(std::ostream &os, const Value &value, const ExifData *)
Print the value converted to a long.
Definition: tags_int.cpp:2196
std::ostream & print0x9207(std::ostream &os, const Value &value, const ExifData *metadata)
Print metering mode.
Definition: tags_int.cpp:2577
std::ostream & print0xa301(std::ostream &os, const Value &value, const ExifData *metadata)
Print scene type.
Definition: tags_int.cpp:2688
std::ostream & print0x0007(std::ostream &os, const Value &value, const ExifData *)
Print GPS timestamp.
Definition: tags_int.cpp:2312
Provides classes and functions to encode and decode Exif and Iptc data. The libexiv2 API consists of ...
Definition: asfvideo.hpp:36
const T * find(T(&src)[N], const K &key)
Find an element that matches key in the array src.
Definition: types.hpp:508
EXIV2API const char * exvGettext(const char *str)
Translate a string using the gettext framework. This wrapper hides all the implementation details fro...
Definition: types.cpp:576
@ string
IPTC string type.
Definition: types.hpp:147
std::pair< uint32_t, uint32_t > URational
8 byte unsigned rational type.
Definition: types.hpp:108
The details of a section.
Definition: tags_int.hpp:178
const char * name_
Section name (one word)
Definition: tags_int.hpp:180
SectionId sectionId_
Section id.
Definition: tags_int.hpp:179
const char * desc_
Section description.
Definition: tags_int.hpp:181
Helper structure for lookup tables for translations of bitmask values to human readable labels.
Definition: tags_int.hpp:200
uint32_t mask_
Bitmask value.
Definition: tags_int.hpp:201
const char * label_
Description of the tag value.
Definition: tags_int.hpp:202
Helper structure for lookup tables for translations of numeric tag values to human readable labels.
Definition: tags_int.hpp:188
const char * label_
Translation of the tag value.
Definition: tags_int.hpp:190
int64_t val_
Tag value.
Definition: tags_int.hpp:189
bool operator==(long key) const
Comparison operator for use with the find template.
Definition: tags_int.hpp:193
Helper structure for lookup tables for translations of controlled vocabulary strings to their descrip...
Definition: tags_int.hpp:209
const char * voc_
Vocabulary string.
Definition: tags_int.hpp:210
const char * label_
Description of the vocabulary string.
Definition: tags_int.hpp:211
bool operator==(const std::string &key) const
Comparison operator for use with the find template.
Definition: tags.cpp:98
Exif tag and type information.
Type definitions for Exiv2 and related functionality.
Value interface and concrete subclasses.