Coverage Report

Created: 2026-08-13 07:05

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/exiv2/src/tiffcomposite_int.hpp
Line
Count
Source
1
// SPDX-License-Identifier: GPL-2.0-or-later
2
3
#ifndef TIFFCOMPOSITE_INT_HPP_
4
#define TIFFCOMPOSITE_INT_HPP_
5
6
// *****************************************************************************
7
// included header files
8
#include "tifffwd_int.hpp"
9
#include "types.hpp"
10
11
#include <cstddef>
12
#include <cstdint>
13
#include <memory>
14
#include <string_view>
15
#include <utility>
16
#include <vector>
17
18
// *****************************************************************************
19
// namespace extensions
20
namespace Exiv2 {
21
class BasicIo;
22
class Value;
23
24
namespace Internal {
25
// *****************************************************************************
26
// class definitions
27
28
//! TIFF value type.
29
enum TiffType : uint16_t {
30
  ttUnsignedByte = 1,      //!< Exif BYTE type
31
  ttAsciiString = 2,       //!< Exif ASCII type
32
  ttUnsignedShort = 3,     //!< Exif SHORT type
33
  ttUnsignedLong = 4,      //!< Exif LONG type
34
  ttUnsignedRational = 5,  //!< Exif RATIONAL type
35
  ttSignedByte = 6,        //!< Exif SBYTE type
36
  ttUndefined = 7,         //!< Exif UNDEFINED type
37
  ttSignedShort = 8,       //!< Exif SSHORT type
38
  ttSignedLong = 9,        //!< Exif SLONG type
39
  ttSignedRational = 10,   //!< Exif SRATIONAL type
40
  ttTiffFloat = 11,        //!< TIFF FLOAT type
41
  ttTiffDouble = 12,       //!< TIFF DOUBLE type
42
  ttTiffIfd = 13,          //!< TIFF IFD type
43
};
44
45
//! Convert the \em tiffType of a \em tag and \em group to an Exiv2 \em typeId.
46
TypeId toTypeId(TiffType tiffType, uint16_t tag, IfdId group);
47
//! Convert the %Exiv2 \em typeId to a TIFF value type.
48
TiffType toTiffType(TypeId typeId);
49
50
/*!
51
  Special TIFF tags for the use in TIFF structures only
52
*/
53
enum Tag {
54
  none = 0x10000,   //!< Dummy tag
55
  root = 0x20000,   //!< Special tag: root IFD
56
  next = 0x30000,   //!< Special tag: next IFD
57
  all = 0x40000,    //!< Special tag: all tags in a group
58
  pana = 0x80000,   //!< Special tag: root IFD of Panasonic RAW images
59
  fuji = 0x100000,  //!< Special tag: root IFD of Fujifilm RAF images
60
  cmt2 = 0x110000,  //!< Special tag: root IFD of CR3 images
61
  cmt3 = 0x120000,  //!< Special tag: root IFD of CR3 images
62
  cmt4 = 0x130000,  //!< Special tag: root IFD of CR3 images
63
};
64
65
/*!
66
  @brief A tuple consisting of extended Tag and group used as an item in
67
         TIFF paths.
68
*/
69
class TiffPathItem {
70
 public:
71
  //! @name Creators
72
  //@{
73
  //! Constructor
74
12.9M
  constexpr TiffPathItem(uint32_t extendedTag, IfdId group) : extendedTag_(extendedTag), group_(group) {
75
12.9M
  }
76
  //@}
77
78
  //! @name Accessors
79
  //@{
80
  //! Return the tag corresponding to the extended tag
81
46.7M
  [[nodiscard]] uint16_t tag() const {
82
46.7M
    return static_cast<uint16_t>(extendedTag_);
83
46.7M
  }
84
  //! Return the extended tag (32 bit so that it can contain special tags)
85
12.7M
  [[nodiscard]] uint32_t extendedTag() const {
86
12.7M
    return extendedTag_;
87
12.7M
  }
88
  //! Return the group
89
14.0M
  [[nodiscard]] IfdId group() const {
90
14.0M
    return group_;
91
14.0M
  }
92
  //@}
93
94
 private:
95
  // DATA
96
  uint32_t extendedTag_;
97
  IfdId group_;
98
};
99
100
/*!
101
  @brief Simple IO wrapper to ensure that the header is only written if there is
102
         any other data at all.
103
104
  The wrapper is initialized with an IO reference and a pointer to a TIFF header.
105
  Subsequently the wrapper is used by all TIFF write methods. It takes care that
106
  the TIFF header is written to the IO first before any other output and only if
107
  there is any other data.
108
 */
109
class IoWrapper {
110
 public:
111
  //! @name Creators
112
  //@{
113
  /*!
114
    brief Constructor.
115
116
    The IO wrapper owns none of the objects passed in so the caller is
117
    responsible to keep them alive.
118
   */
119
  IoWrapper(BasicIo& io, const byte* pHeader, size_t size, OffsetWriter* pow);
120
  //@}
121
122
  //! @name Manipulators
123
  //@{
124
  /*!
125
    @brief Wraps the corresponding BasicIo::write() method.
126
127
    Writes the TIFF header to the IO, if it hasn't been written yet, followed
128
    by the data passed in the arguments.
129
   */
130
  size_t write(const byte* pData, size_t wcount);
131
  /*!
132
    @brief Wraps the corresponding BasicIo::putb() method.
133
134
    Writes the TIFF header to the IO, if it hasn't been written yet, followed
135
    by the data passed in the argument.
136
   */
137
  int putb(byte data);
138
  //! Wrapper for OffsetWriter::setTarget(), using an int instead of the enum to reduce include deps
139
  void setTarget(int id, size_t target);
140
  //@}
141
142
 private:
143
  // DATA
144
  BasicIo& io_;              //! Reference for the IO instance.
145
  const byte* pHeader_;      //! Pointer to the header data.
146
  size_t size_;              //! Size of the header data.
147
  bool wroteHeader_{false};  //! Indicates if the header has been written.
148
  OffsetWriter* pow_;        //! Pointer to an offset-writer, if any, or 0
149
};
150
151
/*!
152
  @brief Interface class for components of a TIFF directory hierarchy
153
         (Composite pattern).  Both TIFF directories as well as entries
154
         implement this interface.  A component can be uniquely identified
155
         by a tag, group tuple.  This class is implemented as a NVI
156
         (Non-Virtual Interface) and it has an interface for visitors
157
         (Visitor pattern) to perform operations on all components.
158
 */
159
class TiffComponent {
160
 public:
161
  //! TiffComponent auto_ptr type
162
  using UniquePtr = std::unique_ptr<TiffComponent>;
163
  using SharedPtr = std::shared_ptr<TiffComponent>;
164
  //! Container type to hold all metadata
165
  using Components = std::vector<SharedPtr>;
166
167
  //! @name Creators
168
  //@{
169
  //! Constructor
170
8.83M
  constexpr TiffComponent(uint16_t tag, IfdId group) : tag_(tag), group_(group) {
171
8.83M
  }
172
  //! Virtual destructor.
173
8.87M
  virtual ~TiffComponent() = default;
174
  //@}
175
176
  //! @name Manipulators
177
  //@{
178
  /*!
179
    @brief Add a TIFF entry \em tag to the component. Components on
180
           the path to the entry are added if they don't exist yet.
181
182
    @param tag      The tag of the new entry
183
    @param tiffPath A path from the TIFF root element to a TIFF entry.
184
    @param pRoot    Pointer to the root component of the TIFF composite.
185
    @param object   TIFF component to add. If 0, the correct entry will be
186
                    created.
187
188
    @return A pointer to the newly added TIFF entry.
189
   */
190
  TiffComponent* addPath(uint16_t tag, TiffPath& tiffPath, TiffComponent* pRoot, UniquePtr object = nullptr);
191
  /*!
192
    @brief Add a child to the component. Default is to do nothing.
193
    @param tiffComponent Auto pointer to the component to add.
194
    @return Return a pointer to the newly added child element or 0.
195
   */
196
  TiffComponent* addChild(SharedPtr tiffComponent);
197
  /*!
198
      @brief Add a "next" component to the component. Default is to do
199
             nothing.
200
      @param tiffComponent Auto pointer to the component to add.
201
      @return Return a pointer to the newly added "next" element or 0.
202
   */
203
  TiffComponent* addNext(UniquePtr tiffComponent);
204
  /*!
205
    @brief Interface to accept visitors (Visitor pattern). Visitors
206
           can perform operations on all components of the composite.
207
208
    @param visitor The visitor.
209
   */
210
  void accept(TiffVisitor& visitor);
211
  /*!
212
    @brief Set a pointer to the start of the binary representation of the
213
           component in a memory buffer. The buffer must be allocated and
214
           freed outside of this class.
215
   */
216
5.59M
  void setStart(const byte* pStart) {
217
5.59M
    pStart_ = const_cast<byte*>(pStart);
218
5.59M
  }
219
  /*!
220
    @brief Write a TiffComponent to a binary image.
221
222
    @param ioWrapper  IO wrapper to which the TiffComponent is written.
223
    @param byteOrder  Applicable byte order (little or big endian).
224
    @param offset     Offset from the start of the image (TIFF header) to
225
                      the component.
226
    @param valueIdx   Index of the component to be written relative to offset.
227
    @param dataIdx    Index of the data area of the component relative to offset.
228
    @param imageIdx   Index of the image data area relative to offset.
229
    @return           Number of bytes written to the IO wrapper including all
230
                      nested components.
231
    @throw            Error If the component cannot be written.
232
   */
233
  size_t write(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, size_t valueIdx, size_t dataIdx,
234
               size_t& imageIdx);
235
  //@}
236
237
  //! @name Accessors
238
  //@{
239
  //! Return the tag of this entry.
240
275M
  [[nodiscard]] uint16_t tag() const {
241
275M
    return tag_;
242
275M
  }
243
  //! Return the group id of this component
244
36.0M
  [[nodiscard]] IfdId group() const {
245
36.0M
    return group_;
246
36.0M
  }
247
  //! Return a pointer to the start of the binary representation of the component
248
5.72M
  [[nodiscard]] byte* start() const {
249
5.72M
    return pStart_;
250
5.72M
  }
251
  /*!
252
    @brief Return an auto-pointer to a copy of itself (deep copy, but
253
           without any children). The caller owns this copy and the
254
           auto-pointer ensures that it will be deleted.
255
   */
256
  [[nodiscard]] UniquePtr clone() const;
257
  /*!
258
    @brief Write the IFD data of this component to a binary image.
259
           Return the number of bytes written. Components derived from
260
           TiffEntryBase implement this method if needed.
261
   */
262
  size_t writeData(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, size_t dataIdx, size_t& imageIdx) const;
263
  /*!
264
    @brief Write the image data of this component to a binary image.
265
           Return the number of bytes written. TIFF components implement
266
           this method if needed.
267
   */
268
  size_t writeImage(IoWrapper& ioWrapper, ByteOrder byteOrder) const;
269
  /*!
270
    @brief Return the size in bytes of the IFD value of this component
271
           when written to a binary image.
272
   */
273
  [[nodiscard]] size_t size() const;
274
  /*!
275
    @brief Return the number of components in this component.
276
   */
277
  [[nodiscard]] size_t count() const;
278
  /*!
279
    @brief Return the size in bytes of the IFD data of this component when
280
           written to a binary image.  This is a support function for
281
           write(). Components derived from TiffEntryBase implement this
282
           method corresponding to their implementation of writeData().
283
   */
284
  [[nodiscard]] size_t sizeData() const;
285
  /*!
286
    @brief Return the size in bytes of the image data of this component
287
           when written to a binary image.  This is a support function for
288
           write(). TIFF components implement this method corresponding to
289
           their implementation of writeImage().
290
   */
291
  [[nodiscard]] size_t sizeImage() const;
292
  /*!
293
    @brief Return the unique id of the entry in the image.
294
   */
295
  // Todo: This is only implemented in TiffEntryBase. It is needed here so that
296
  //       we can sort components by tag and idx. Something is not quite right.
297
  [[nodiscard]] virtual int idx() const;
298
  //@}
299
300
 protected:
301
  //! @name Protected Manipulators
302
  //@{
303
  //! Implements addPath(). The default implementation does nothing.
304
  virtual TiffComponent* doAddPath(uint16_t tag, TiffPath& tiffPath, TiffComponent* pRoot, UniquePtr object);
305
  //! Implements addChild(). The default implementation does nothing.
306
  virtual TiffComponent* doAddChild(SharedPtr tiffComponent);
307
  //! Implements addNext(). The default implementation does nothing.
308
  virtual TiffComponent* doAddNext(UniquePtr tiffComponent);
309
  //! Implements accept().
310
  virtual void doAccept(TiffVisitor& visitor) = 0;
311
  //! Implements write().
312
  virtual size_t doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, size_t valueIdx, size_t dataIdx,
313
                         size_t& imageIdx) = 0;
314
  //@}
315
316
  //! @name Protected Accessors
317
  //@{
318
  //! Internal virtual copy constructor, implements clone().
319
  [[nodiscard]] virtual TiffComponent* doClone() const = 0;
320
  //! Implements writeData().
321
  virtual size_t doWriteData(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, size_t dataIdx,
322
                             size_t& imageIdx) const = 0;
323
  //! Implements writeImage().
324
  virtual size_t doWriteImage(IoWrapper& ioWrapper, ByteOrder byteOrder) const = 0;
325
  //! Implements size().
326
  [[nodiscard]] virtual size_t doSize() const = 0;
327
  //! Implements count().
328
  [[nodiscard]] virtual size_t doCount() const = 0;
329
  //! Implements sizeData().
330
  [[nodiscard]] virtual size_t doSizeData() const = 0;
331
  //! Implements sizeImage().
332
  [[nodiscard]] virtual size_t doSizeImage() const = 0;
333
  //@}
334
335
 private:
336
  // DATA
337
  uint16_t tag_;  //!< Tag that identifies the component
338
  IfdId group_;   //!< Group id for this component
339
  /*!
340
    Pointer to the start of the binary representation of the component in
341
    a memory buffer. The buffer is allocated and freed outside of this class.
342
   */
343
  byte* pStart_{};
344
};
345
346
//! TIFF mapping table for functions to decode special cases
347
struct TiffMappingInfo {
348
  struct Key;
349
  /*!
350
    @brief Compare a TiffMappingInfo with a TiffMappingInfo::Key.
351
           The two are equal if TiffMappingInfo::make_ equals a substring
352
           of the key of the same size. E.g., mapping info = "OLYMPUS",
353
           key = "OLYMPUS OPTICAL CO.,LTD" (found in the image) match,
354
           the extendedTag is Tag::all or equal to the extended tag of the
355
           key, and the group is equal to that of the key.
356
   */
357
  bool operator==(const Key& key) const;
358
  //! Return the tag corresponding to the extended tag
359
0
  [[nodiscard]] uint16_t tag() const {
360
0
    return static_cast<uint16_t>(extendedTag_);
361
0
  }
362
363
  // DATA
364
  std::string_view make_;  //!< Camera make for which these mapping functions apply
365
  uint32_t extendedTag_;   //!< Tag (32 bit so that it can contain special tags)
366
  IfdId group_;            //!< Group that contains the tag
367
  DecoderFct decoderFct_;  //!< Decoder function for matching tags
368
  EncoderFct encoderFct_;  //!< Encoder function for matching tags
369
370
};  // struct TiffMappingInfo
371
372
//! Search key for TIFF mapping structures.
373
struct TiffMappingInfo::Key {
374
  std::string_view m_;  //!< Camera make
375
  uint32_t e_;          //!< Extended tag
376
  IfdId g_;             //!< %Group
377
};
378
379
/*!
380
  @brief This abstract base class provides the common functionality of an
381
         IFD directory entry and defines an extended interface for derived
382
         concrete entries, which allows access to the attributes of the
383
         entry.
384
 */
385
class TiffEntryBase : public TiffComponent {
386
  friend class TiffReader;
387
  friend class TiffEncoder;
388
389
 public:
390
  //! @name Creators
391
  //@{
392
  //! Default constructor.
393
  TiffEntryBase(uint16_t tag, IfdId group, TiffType tiffType = ttUndefined);
394
395
  //! Virtual destructor.
396
  ~TiffEntryBase() override;
397
  //@}
398
399
  //! @name NOT implemented
400
  //@{
401
  //! Assignment operator.
402
  TiffEntryBase& operator=(const TiffEntryBase&) = delete;
403
  //@}
404
405
  //! @name Manipulators
406
  //@{
407
  /*!
408
    @brief Encode a TIFF component from the metadatum provided and
409
           information from the \em encoder as needed.
410
411
    Implemented as double-dispatch calls back to one of the specific
412
    encoding functions at the \em encoder.
413
   */
414
  void encode(TiffEncoder& encoder, const Exifdatum* datum);
415
  //! Set the offset
416
3.93M
  void setOffset(size_t offset) {
417
3.93M
    offset_ = offset;
418
3.93M
  }
419
  /*!
420
    @brief Set pointer and size of the entry's data (not taking ownership of the data).
421
422
    @param storage Usually, pData is a pointer into a copy of the image file, which
423
                   means that it points to memory which is guaranteed to live longer
424
                   than this class. However, sometimes pData is pointer into a
425
                   DataBuf that was allocated by another node in the component tree.
426
                   If so, we need to make sure that the DataBuf doesn't get freed too
427
                   early. We use a std::shared_ptr to hold a reference to the DataBuf
428
                   to ensure that it will be kept alive. The storage parameter is
429
                   assigned to the storage_ field. In the more common scenario where
430
                   pData points to a copy of the image, rather than a DataBuf, then
431
                   you should pass std::shared_ptr<DataBuf>(), which is essentially
432
                   a nullptr.
433
   */
434
  void setData(byte* pData, size_t size, std::shared_ptr<DataBuf> storage);
435
  /*!
436
    @brief Set the entry's data buffer. A shared_ptr is used to manage the DataBuf
437
           because TiffEntryBase has a clone method so it is possible (in theory) for
438
           the DataBuf to have multiple owners.
439
   */
440
  void setData(std::shared_ptr<DataBuf> buf);
441
  /*!
442
   @brief Update the value. Takes ownership of the pointer passed in.
443
444
   Update binary value data and call setValue().
445
 */
446
  void updateValue(std::unique_ptr<Value> value, ByteOrder byteOrder);
447
  /*!
448
    @brief Set tag value. Takes ownership of the pointer passed in.
449
450
    Update type, count and the pointer to the value.
451
  */
452
  void setValue(std::unique_ptr<Value> value);
453
  //@}
454
455
  //! @name Accessors
456
  //@{
457
  //! Return the TIFF type
458
1.61M
  [[nodiscard]] TiffType tiffType() const {
459
1.61M
    return tiffType_;
460
1.61M
  }
461
  /*!
462
    @brief Return the offset to the data area relative to the base
463
           for the component (usually the start of the TIFF header)
464
   */
465
93.4k
  [[nodiscard]] size_t offset() const {
466
93.4k
    return offset_;
467
93.4k
  }
468
  /*!
469
    @brief Return the unique id of the entry in the image
470
   */
471
  [[nodiscard]] int idx() const override;
472
  /*!
473
    @brief Return a pointer to the binary representation of the
474
           value of this component.
475
   */
476
4.71M
  [[nodiscard]] const byte* pData() const {
477
4.71M
    return pData_;
478
4.71M
  }
479
  //! Return a const pointer to the converted value of this component
480
27.9M
  [[nodiscard]] const Value* pValue() const {
481
27.9M
    return pValue_.get();
482
27.9M
  }
483
  //@}
484
485
 protected:
486
  //! @name Protected Creators
487
  //@{
488
  //! Copy constructor (used to implement clone()).
489
  TiffEntryBase(const TiffEntryBase& rhs);
490
  //@}
491
492
  //! @name Protected Manipulators
493
  //@{
494
  //! Implements encode().
495
  virtual void doEncode(TiffEncoder& encoder, const Exifdatum* datum) = 0;
496
  //! Set the number of components in this entry
497
1.73M
  void setCount(size_t count) {
498
1.73M
    count_ = count;
499
1.73M
  }
500
  //! Set the unique id of the entry in the image
501
3.84M
  void setIdx(int idx) {
502
3.84M
    idx_ = idx;
503
3.84M
  }
504
  /*!
505
    @brief Implements write(). Write the value of a standard TIFF entry to
506
           the \em ioWrapper, return the number of bytes written. Only the
507
           \em ioWrapper and \em byteOrder arguments are used.
508
   */
509
  size_t doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, size_t valueIdx, size_t dataIdx,
510
                 size_t& imageIdx) override;
511
  //@}
512
513
  //! @name Protected Accessors
514
  //@{
515
  //! Implements count().
516
  [[nodiscard]] size_t doCount() const override;
517
  /*!
518
    @brief Implements writeData(). Standard TIFF entries have no data:
519
           write nothing and return 0.
520
   */
521
  size_t doWriteData(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, size_t dataIdx,
522
                     size_t& imageIdx) const override;
523
  /*!
524
    @brief Implements writeImage(). Standard TIFF entries have no image data:
525
           write nothing and return 0.
526
   */
527
  size_t doWriteImage(IoWrapper& ioWrapper, ByteOrder byteOrder) const override;
528
  //! Implements size(). Return the size of a standard TIFF entry
529
  [[nodiscard]] size_t doSize() const override;
530
  //! Implements sizeData(). Return 0.
531
  [[nodiscard]] size_t doSizeData() const override;
532
  //! Implements sizeImage(). Return 0.
533
  [[nodiscard]] size_t doSizeImage() const override;
534
  //@}
535
536
  //! Helper function to write an \em offset to a preallocated binary buffer
537
  static size_t writeOffset(byte* buf, size_t offset, TiffType tiffType, ByteOrder byteOrder);
538
539
  //! Used (internally) to create another reference to the DataBuf reference by storage_.
540
2.29M
  [[nodiscard]] std::shared_ptr<DataBuf> storage() const {
541
2.29M
    return storage_;
542
2.29M
  }
543
544
 private:
545
  // DATA
546
  TiffType tiffType_;  //!< Field TIFF type
547
  size_t count_{};     //!< The number of values of the indicated type
548
  size_t offset_{};    //!< Offset to the data area
549
  size_t size_{};      //!< Size of the data buffer holding the value in bytes, there is no minimum size.
550
551
  // Notes on the ownership model of pData_: pData_ is a always a
552
  // pointer to a buffer owned by somebody else. Usually it is a
553
  // pointer into a copy of the image file, but if
554
  // TiffEntryBase::setData is used then it is a pointer into the
555
  // storage_ DataBuf below.
556
  byte* pData_{};  //!< Pointer to the data area
557
558
  int idx_{};                      //!< Unique id of the entry in the image
559
  std::unique_ptr<Value> pValue_;  //!< Converted data value
560
561
  // This DataBuf is only used when TiffEntryBase::setData is called.
562
  // Otherwise, it remains empty. It is wrapped in a shared_ptr because
563
  // TiffEntryBase has a clone method, which could lead to the DataBuf
564
  // having multiple owners.
565
  std::shared_ptr<DataBuf> storage_;
566
};
567
568
/*!
569
  @brief A standard TIFF IFD entry.
570
 */
571
class TiffEntry : public TiffEntryBase {
572
 public:
573
  using TiffEntryBase::TiffEntryBase;
574
575
 protected:
576
  //! @name Manipulators
577
  //@{
578
  void doAccept(TiffVisitor& visitor) override;
579
  void doEncode(TiffEncoder& encoder, const Exifdatum* datum) override;
580
  //@}
581
582
  //! @name Protected Accessors
583
  //@{
584
  [[nodiscard]] TiffEntry* doClone() const override;
585
  //@}
586
};
587
588
/*!
589
  @brief Interface for a standard TIFF IFD entry consisting of a value
590
         which is a set of offsets to a data area. The sizes of these "strips"
591
         are provided in a related TiffSizeEntry, tag and group of which are
592
         set in the constructor. The implementations of this interface differ
593
         in whether the data areas are extracted to the higher level metadata
594
         (TiffDataEntry) or not (TiffImageEntry).
595
 */
596
class TiffDataEntryBase : public TiffEntryBase {
597
 public:
598
  //! @name Creators
599
  //@{
600
  //! Constructor
601
  TiffDataEntryBase(uint16_t tag, IfdId group, uint16_t szTag, IfdId szGroup);
602
  //@}
603
604
  ~TiffDataEntryBase() override;
605
606
  //! @name Manipulators
607
  //@{
608
  /*!
609
    @brief Set the data areas ("strips").
610
611
    @param pSize Pointer to the Value holding the sizes corresponding
612
                 to this data entry.
613
    @param pData Pointer to the data area.
614
    @param sizeData Size of the data area.
615
    @param baseOffset Base offset into the data area.
616
   */
617
  virtual void setStrips(const Value* pSize, const byte* pData, size_t sizeData, size_t baseOffset) = 0;
618
  //@}
619
620
  //! @name Accessors
621
  //@{
622
  //! Return the group of the entry which has the size
623
66.9k
  [[nodiscard]] uint16_t szTag() const {
624
66.9k
    return szTag_;
625
66.9k
  }
626
  //! Return the group of the entry which has the size
627
66.9k
  [[nodiscard]] IfdId szGroup() const {
628
66.9k
    return szGroup_;
629
66.9k
  }
630
  //@}
631
632
 private:
633
  // DATA
634
  uint16_t szTag_;  //!< Tag of the entry with the size
635
  IfdId szGroup_;   //!< Group of the entry with the size
636
};
637
638
/*!
639
  @brief A standard TIFF IFD entry consisting of a value which is an offset
640
         to a data area and the data area. The size of the data area is
641
         provided in a related TiffSizeEntry, tag and group of which are set
642
         in the constructor.
643
644
         This component extracts the data areas ("strips") and makes them
645
         available in the higher level metadata. It is used, e.g., for
646
         \em Exif.Thumbnail.JPEGInterchangeFormat for which the size
647
         is provided in \em Exif.Thumbnail.JPEGInterchangeFormatLength.
648
 */
649
class TiffDataEntry : public TiffDataEntryBase {
650
  friend class TiffEncoder;
651
652
 public:
653
  using TiffDataEntryBase::TiffDataEntryBase;
654
655
  //! @name Manipulators
656
  //@{
657
  void setStrips(const Value* pSize, const byte* pData, size_t sizeData, size_t baseOffset) override;
658
  //@}
659
660
 protected:
661
  //! @name Protected Manipulators
662
  //@{
663
  void doAccept(TiffVisitor& visitor) override;
664
  void doEncode(TiffEncoder& encoder, const Exifdatum* datum) override;
665
  /*!
666
    @brief Implements write(). Write pointers into the data area to the
667
           \em ioWrapper, relative to the offsets in the value. Return the
668
           number of bytes written. The \em valueIdx argument is not used.
669
670
    The number of components in the value determines how many offsets are
671
    written. Set the first value to 0, the second to the size of the first
672
    data area, etc. when creating a new data entry. Offsets will be adjusted
673
    on write. The type of the value can only be signed or unsigned short or
674
    long.
675
   */
676
  size_t doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, size_t valueIdx, size_t dataIdx,
677
                 size_t& imageIdx) override;
678
  //@}
679
680
  //! @name Protected Accessors
681
  //@{
682
  [[nodiscard]] TiffDataEntry* doClone() const override;
683
  /*!
684
    @brief Implements writeData(). Write the data area to the \em ioWrapper.
685
           Return the number of bytes written.
686
   */
687
  size_t doWriteData(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, size_t dataIdx,
688
                     size_t& imageIdx) const override;
689
  // Using doWriteImage from base class
690
  // Using doSize() from base class
691
  //! Implements sizeData(). Return the size of the data area.
692
  [[nodiscard]] size_t doSizeData() const override;
693
  // Using doSizeImage from base class
694
  //@}
695
696
 private:
697
  // DATA
698
  byte* pDataArea_{};      //!< Pointer to the data area (never alloc'd)
699
  size_t sizeDataArea_{};  //!< Size of the data area
700
};
701
702
/*!
703
  @brief A standard TIFF IFD entry consisting of a value which is an array
704
         of offsets to image data areas. The sizes of the image data areas are
705
         provided in a related TiffSizeEntry, tag and group of which are set
706
         in the constructor.
707
708
         The data is not extracted into the higher level metadata tags, it is
709
         only copied to the target image when the image is written.
710
         This component is used, e.g., for
711
         \em Exif.Image.StripOffsets for which the sizes are provided in
712
         \em Exif.Image.StripByteCounts.
713
 */
714
class TiffImageEntry : public TiffDataEntryBase {
715
  friend class TiffEncoder;
716
  using TiffDataEntryBase::TiffDataEntryBase;
717
718
 public:
719
  //! @name Manipulators
720
  //@{
721
  void setStrips(const Value* pSize, const byte* pData, size_t sizeData, size_t baseOffset) override;
722
  //@}
723
724
 protected:
725
  //! @name Protected Manipulators
726
  //@{
727
  void doAccept(TiffVisitor& visitor) override;
728
  void doEncode(TiffEncoder& encoder, const Exifdatum* datum) override;
729
  /*!
730
    @brief Implements write(). Write pointers into the image data area to the
731
           \em ioWrapper. Return the number of bytes written. The \em valueIdx
732
           and \em dataIdx  arguments are not used.
733
   */
734
  size_t doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, size_t valueIdx, size_t dataIdx,
735
                 size_t& imageIdx) override;
736
  //@}
737
738
  //! @name Protected Accessors
739
  //@{
740
  [[nodiscard]] TiffImageEntry* doClone() const override;
741
  /*!
742
    @brief Implements writeData(). Write the image data area to the \em ioWrapper.
743
           Return the number of bytes written.
744
745
    This function writes the image data to the data area of the current
746
    directory. It is used for TIFF image entries in the makernote (large
747
    preview images) so that the image data remains in the makernote IFD.
748
   */
749
  size_t doWriteData(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, size_t dataIdx,
750
                     size_t& imageIdx) const override;
751
  /*!
752
    @brief Implements writeImage(). Write the image data area to the \em ioWrapper.
753
           Return the number of bytes written.
754
   */
755
  size_t doWriteImage(IoWrapper& ioWrapper, ByteOrder byteOrder) const override;
756
  //! Implements size(). Return the size of the strip pointers.
757
  [[nodiscard]] size_t doSize() const override;
758
  //! Implements sizeData(). Return the size of the image data area.
759
  [[nodiscard]] size_t doSizeData() const override;
760
  //! Implements sizeImage(). Return the size of the image data area.
761
  [[nodiscard]] size_t doSizeImage() const override;
762
  //@}
763
764
 private:
765
  //! Pointers to the image data (strips) and their sizes.
766
  using Strips = std::vector<std::pair<const byte*, size_t>>;
767
768
  // DATA
769
  Strips strips_;  //!< Image strips data (never alloc'd) and sizes
770
};
771
772
/*!
773
  @brief A TIFF IFD entry containing the size of a data area of a related
774
         TiffDataEntry. This component is used, e.g. for
775
         \em Exif.Thumbnail.JPEGInterchangeFormatLength, which contains the
776
         size of \em Exif.Thumbnail.JPEGInterchangeFormat.
777
 */
778
class TiffSizeEntry : public TiffEntryBase {
779
 public:
780
  //! @name Creators
781
  //@{
782
  //! Constructor
783
  TiffSizeEntry(uint16_t tag, IfdId group, uint16_t dtTag, IfdId dtGroup);
784
  //@}
785
786
  //! @name Accessors
787
  //@{
788
  //! Return the group of the related entry which has the data area
789
71.1k
  [[nodiscard]] uint16_t dtTag() const {
790
71.1k
    return dtTag_;
791
71.1k
  }
792
  //! Return the group of the related entry which has the data area
793
71.1k
  [[nodiscard]] IfdId dtGroup() const {
794
71.1k
    return dtGroup_;
795
71.1k
  }
796
  //@}
797
798
 protected:
799
  //! @name Protected Manipulators
800
  //@{
801
  void doAccept(TiffVisitor& visitor) override;
802
  void doEncode(TiffEncoder& encoder, const Exifdatum* datum) override;
803
  //@}
804
805
  //! @name Protected Accessors
806
  //@{
807
  [[nodiscard]] TiffSizeEntry* doClone() const override;
808
  //@}
809
810
 private:
811
  // DATA
812
  uint16_t dtTag_;  //!< Tag of the entry with the data area
813
  IfdId dtGroup_;   //!< Group of the entry with the data area
814
};
815
816
/*!
817
  @brief This class models a TIFF directory (%Ifd). It is a composite
818
         component of the TIFF tree.
819
 */
820
class TiffDirectory : public TiffComponent {
821
  friend class TiffEncoder;
822
  friend class TiffDecoder;
823
824
 public:
825
  //! @name Creators
826
  //@{
827
  //! Default constructor
828
  TiffDirectory(uint16_t tag, IfdId group, bool hasNext = true);
829
  //! Virtual destructor
830
151k
  ~TiffDirectory() override = default;
831
  //@}
832
833
  //! @name NOT implemented
834
  //@{
835
  //! Assignment operator.
836
  TiffDirectory& operator=(const TiffDirectory&) = delete;
837
  //@}
838
839
  //! @name Accessors
840
  //@{
841
  //! Return true if the directory has a next pointer
842
30.4k
  [[nodiscard]] bool hasNext() const {
843
30.4k
    return hasNext_;
844
30.4k
  }
845
  //@}
846
847
 protected:
848
  //! @name Protected Creators
849
  //@{
850
  //! Copy constructor (used to implement clone()).
851
  TiffDirectory(const TiffDirectory& rhs);
852
  //@}
853
854
  //! @name Protected Manipulators
855
  //@{
856
  TiffComponent* doAddPath(uint16_t tag, TiffPath& tiffPath, TiffComponent* pRoot, UniquePtr object) override;
857
  TiffComponent* doAddChild(SharedPtr tiffComponent) override;
858
  TiffComponent* doAddNext(UniquePtr tiffComponent) override;
859
  void doAccept(TiffVisitor& visitor) override;
860
  /*!
861
    @brief Implements write(). Write the TIFF directory, values and
862
           additional data, including the next-IFD, if any, to the
863
           \em ioWrapper, return the number of bytes written.
864
   */
865
  size_t doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, size_t valueIdx, size_t dataIdx,
866
                 size_t& imageIdx) override;
867
  //@}
868
869
  //! @name Protected Accessors
870
  //@{
871
  [[nodiscard]] TiffDirectory* doClone() const override;
872
  /*!
873
    @brief This class does not really implement writeData(), it only has
874
           write(). This method must not be called; it commits suicide.
875
   */
876
  size_t doWriteData(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, size_t dataIdx,
877
                     size_t& imageIdx) const override;
878
  /*!
879
    @brief Implements writeImage(). Write the image data of the TIFF
880
           directory to the \em ioWrapper by forwarding the call to each
881
           component as well as the next-IFD, if there is any. Return the
882
           number of bytes written.
883
   */
884
  size_t doWriteImage(IoWrapper& ioWrapper, ByteOrder byteOrder) const override;
885
  /*!
886
    @brief Implements size(). Return the size of the TIFF directory,
887
           values and additional data, including the next-IFD, if any.
888
   */
889
  [[nodiscard]] size_t doSize() const override;
890
  /*!
891
    @brief Implements count(). Return the number of entries in the TIFF
892
           directory. Does not count entries which are marked as deleted.
893
   */
894
  [[nodiscard]] size_t doCount() const override;
895
  /*!
896
    @brief This class does not really implement sizeData(), it only has
897
           size(). This method must not be called; it commits suicide.
898
   */
899
  [[nodiscard]] size_t doSizeData() const override;
900
  /*!
901
    @brief Implements sizeImage(). Return the sum of the image sizes of
902
           all components plus that of the next-IFD, if there is any.
903
   */
904
  [[nodiscard]] size_t doSizeImage() const override;
905
  //@}
906
907
 private:
908
  //! @name Private Accessors
909
  //@{
910
  //! Write a binary directory entry for a TIFF component.
911
  static size_t writeDirEntry(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, TiffComponent* pTiffComponent,
912
                              size_t valueIdx, size_t dataIdx, size_t& imageIdx);
913
  //@}
914
915
  // DATA
916
  Components components_;  //!< List of components in this directory
917
  bool hasNext_;           //!< True if the directory has a next pointer
918
  UniquePtr pNext_;        //!< Pointer to the next IFD
919
};
920
921
/*!
922
  @brief This class models a TIFF sub-directory (sub-IFD). A sub-IFD
923
         is an entry with one or more values that are pointers to IFD
924
         structures containing an IFD. The TIFF standard defines
925
         some important tags to be sub-IFDs, including the %Exif and
926
         GPS tags.
927
 */
928
class TiffSubIfd : public TiffEntryBase {
929
  friend class TiffReader;
930
931
 public:
932
  //! @name Creators
933
  //@{
934
  //! Default constructor
935
  TiffSubIfd(uint16_t tag, IfdId group, IfdId newGroup);
936
  //! Virtual destructor
937
52.9k
  ~TiffSubIfd() override = default;
938
  //@}
939
940
  //! @name NOT implemented
941
  //@{
942
  //! Assignment operator.
943
  TiffSubIfd& operator=(const TiffSubIfd&) = delete;
944
  //@}
945
946
 protected:
947
  //! @name Protected Creators
948
  //@{
949
  //! Copy constructor (used to implement clone()).
950
  TiffSubIfd(const TiffSubIfd& rhs);
951
  //@}
952
953
  //! @name Protected Manipulators
954
  //@{
955
  TiffComponent* doAddPath(uint16_t tag, TiffPath& tiffPath, TiffComponent* pRoot, UniquePtr object) override;
956
  TiffComponent* doAddChild(SharedPtr tiffComponent) override;
957
  void doAccept(TiffVisitor& visitor) override;
958
  void doEncode(TiffEncoder& encoder, const Exifdatum* datum) override;
959
  /*!
960
    @brief Implements write(). Write the sub-IFD pointers to the \em ioWrapper,
961
           return the number of bytes written. The \em valueIdx and
962
           \em imageIdx arguments are not used.
963
   */
964
  size_t doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, size_t valueIdx, size_t dataIdx,
965
                 size_t& imageIdx) override;
966
  //@}
967
968
  //! @name Protected Accessors
969
  //@{
970
  [[nodiscard]] TiffSubIfd* doClone() const override;
971
  /*!
972
    @brief Implements writeData(). Write the sub-IFDs to the \em ioWrapper.
973
           Return the number of bytes written.
974
   */
975
  size_t doWriteData(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, size_t dataIdx,
976
                     size_t& imageIdx) const override;
977
  /*!
978
    @brief Implements writeImage(). Write the image data of each sub-IFD to
979
           the \em ioWrapper. Return the number of bytes written.
980
   */
981
  size_t doWriteImage(IoWrapper& ioWrapper, ByteOrder byteOrder) const override;
982
  //! Implements size(). Return the size of the sub-Ifd pointers.
983
  [[nodiscard]] size_t doSize() const override;
984
  //! Implements sizeData(). Return the sum of the sizes of all sub-IFDs.
985
  [[nodiscard]] size_t doSizeData() const override;
986
  //! Implements sizeImage(). Return the sum of the image sizes of all sub-IFDs.
987
  [[nodiscard]] size_t doSizeImage() const override;
988
  //@}
989
990
 private:
991
  //! A collection of TIFF directories (IFDs)
992
  using Ifds = std::vector<std::shared_ptr<TiffDirectory>>;
993
994
  // DATA
995
  IfdId newGroup_;  //!< Start of the range of group numbers for the sub-IFDs
996
  Ifds ifds_;       //!< The subdirectories
997
};
998
999
/*!
1000
  @brief This class is the basis for Makernote support in TIFF. It contains
1001
         a pointer to a concrete Makernote. The TiffReader visitor has the
1002
         responsibility to create the correct Make/Model specific Makernote
1003
         for a particular TIFF file. Calls to child management methods are
1004
         forwarded to the concrete Makernote, if there is one.
1005
 */
1006
class TiffMnEntry : public TiffEntryBase {
1007
  friend class TiffReader;
1008
  friend class TiffDecoder;
1009
  friend class TiffEncoder;
1010
1011
 public:
1012
  //! @name Creators
1013
  //@{
1014
  //! Default constructor
1015
  TiffMnEntry(uint16_t tag, IfdId group, IfdId mnGroup);
1016
  ~TiffMnEntry() override;
1017
1018
 protected:
1019
  //! @name Protected Manipulators
1020
  //@{
1021
  TiffComponent* doAddPath(uint16_t tag, TiffPath& tiffPath, TiffComponent* pRoot, UniquePtr object) override;
1022
  TiffComponent* doAddChild(SharedPtr tiffComponent) override;
1023
  TiffComponent* doAddNext(UniquePtr tiffComponent) override;
1024
  void doAccept(TiffVisitor& visitor) override;
1025
  void doEncode(TiffEncoder& encoder, const Exifdatum* datum) override;
1026
  /*!
1027
    @brief Implements write() by forwarding the call to the actual
1028
           concrete Makernote, if there is one.
1029
   */
1030
  size_t doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, size_t valueIdx, size_t dataIdx,
1031
                 size_t& imageIdx) override;
1032
  //@}
1033
1034
  //! @name Protected Accessors
1035
  //@{
1036
  [[nodiscard]] TiffMnEntry* doClone() const override;
1037
  //! Implements count(). Return number of components in the entry.
1038
  [[nodiscard]] size_t doCount() const override;
1039
  // Using doWriteData from base class
1040
  // Using doWriteImage from base class
1041
  /*!
1042
    @brief Implements size() by forwarding the call to the actual
1043
           concrete Makernote, if there is one.
1044
   */
1045
  [[nodiscard]] size_t doSize() const override;
1046
  // Using doSizeData from base class
1047
  // Using doSizeImage from base class
1048
  //@}
1049
1050
 private:
1051
  // DATA
1052
  IfdId mnGroup_;                         //!< New group for concrete mn
1053
  std::unique_ptr<TiffIfdMakernote> mn_;  //!< The Makernote
1054
};
1055
1056
/*!
1057
  @brief Tiff IFD Makernote. This is a concrete class suitable for all
1058
         IFD makernotes.
1059
1060
         Contains a makernote header (which can be 0) and an IFD and
1061
         implements child mgmt functions to deal with the IFD entries. The
1062
         various makernote weirdnesses are taken care of in the makernote
1063
         header (and possibly in special purpose IFD entries).
1064
 */
1065
class TiffIfdMakernote : public TiffComponent {
1066
  friend class TiffReader;
1067
1068
 public:
1069
  //! @name Creators
1070
  //@{
1071
  //! Default constructor
1072
  TiffIfdMakernote(uint16_t tag, IfdId group, IfdId mnGroup, std::unique_ptr<MnHeader> pHeader, bool hasNext = true);
1073
  //! Virtual destructor
1074
  ~TiffIfdMakernote() override;
1075
  //@}
1076
1077
  /*!
1078
    @name NOT implemented
1079
1080
    Implementing the copy constructor and assignment operator will require
1081
    cloning the header, i.e., clone() functionality on the MnHeader
1082
    hierarchy.
1083
   */
1084
  //@{
1085
  //! Copy constructor.
1086
  TiffIfdMakernote(const TiffIfdMakernote&) = delete;
1087
  //! Assignment operator.
1088
  TiffIfdMakernote& operator=(const TiffIfdMakernote&) = delete;
1089
  //@}
1090
1091
  //! @name Manipulators
1092
  //@{
1093
  /*!
1094
    @brief Read the header from a data buffer, return true if successful.
1095
1096
    The default implementation simply returns true.
1097
   */
1098
  bool readHeader(const byte* pData, size_t size, ByteOrder byteOrder);
1099
  /*!
1100
    @brief Set the byte order for the makernote.
1101
   */
1102
  void setByteOrder(ByteOrder byteOrder);
1103
  /*!
1104
    @brief Set the byte order used for the image.
1105
   */
1106
17.2k
  void setImageByteOrder(ByteOrder byteOrder) {
1107
17.2k
    imageByteOrder_ = byteOrder;
1108
17.2k
  }
1109
  //@}
1110
1111
  //! @name Accessors
1112
  //@{
1113
  //! Return the size of the header in bytes.
1114
  [[nodiscard]] size_t sizeHeader() const;
1115
  //! Write the header to a data buffer, return the number of bytes written.
1116
  size_t writeHeader(IoWrapper& ioWrapper, ByteOrder byteOrder) const;
1117
  /*!
1118
    @brief Return the offset to the makernote from the start of the
1119
           TIFF header.
1120
  */
1121
  [[nodiscard]] size_t mnOffset() const;
1122
  /*!
1123
    @brief Return the offset to the start of the Makernote IFD from
1124
           the start of the Makernote.
1125
           Returns 0 if there is no header.
1126
   */
1127
  [[nodiscard]] size_t ifdOffset() const;
1128
  /*!
1129
    @brief Return the byte order for the makernote. Requires the image
1130
           byte order to be set (setImageByteOrder()).  Returns the byte
1131
           order for the image if there is no header or the byte order for
1132
           the header is \c invalidByteOrder.
1133
   */
1134
  [[nodiscard]] ByteOrder byteOrder() const;
1135
1136
  /*!
1137
    @brief Return the base offset for use with the makernote IFD entries
1138
           relative to the start of the TIFF header.
1139
           Returns 0 if there is no header.
1140
   */
1141
  [[nodiscard]] size_t baseOffset() const;
1142
  //@}
1143
1144
 protected:
1145
  //! @name Protected Manipulators
1146
  //@{
1147
  TiffComponent* doAddPath(uint16_t tag, TiffPath& tiffPath, TiffComponent* pRoot, UniquePtr object) override;
1148
  TiffComponent* doAddChild(SharedPtr tiffComponent) override;
1149
  TiffComponent* doAddNext(UniquePtr tiffComponent) override;
1150
  void doAccept(TiffVisitor& visitor) override;
1151
  /*!
1152
    @brief Implements write(). Write the Makernote header, TIFF directory,
1153
           values and additional data to the \em ioWrapper, return the
1154
           number of bytes written.
1155
   */
1156
  size_t doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, size_t valueIdx, size_t dataIdx,
1157
                 size_t& imageIdx) override;
1158
  //@}
1159
1160
  //! @name Protected Accessors
1161
  //@{
1162
  [[nodiscard]] TiffIfdMakernote* doClone() const override;
1163
  /*!
1164
    @brief This class does not really implement writeData(), it only has
1165
           write(). This method must not be called; it commits suicide.
1166
   */
1167
  size_t doWriteData(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, size_t dataIdx,
1168
                     size_t& imageIdx) const override;
1169
  /*!
1170
    @brief Implements writeImage(). Write the image data of the IFD of
1171
           the Makernote. Return the number of bytes written.
1172
   */
1173
  size_t doWriteImage(IoWrapper& ioWrapper, ByteOrder byteOrder) const override;
1174
  /*!
1175
    @brief Implements size(). Return the size of the Makernote header,
1176
           TIFF directory, values and additional data.
1177
   */
1178
  [[nodiscard]] size_t doSize() const override;
1179
  /*!
1180
    @brief Implements count(). Return the number of entries in the IFD
1181
           of the Makernote. Does not count entries which are marked as
1182
           deleted.
1183
   */
1184
  [[nodiscard]] size_t doCount() const override;
1185
  /*!
1186
    @brief This class does not really implement sizeData(), it only has
1187
           size(). This method must not be called; it commits suicide.
1188
   */
1189
  [[nodiscard]] size_t doSizeData() const override;
1190
  /*!
1191
    @brief Implements sizeImage(). Return the total image data size of the
1192
           makernote IFD.
1193
   */
1194
  [[nodiscard]] size_t doSizeImage() const override;
1195
  //@}
1196
1197
 private:
1198
  // DATA
1199
  std::unique_ptr<MnHeader> pHeader_;           //!< Makernote header
1200
  TiffDirectory ifd_;                           //!< Makernote IFD
1201
  size_t mnOffset_{};                           //!< Makernote offset
1202
  ByteOrder imageByteOrder_{invalidByteOrder};  //!< Byte order for the image
1203
};
1204
1205
/*!
1206
  @brief Function pointer type for a function to determine which cfg + def
1207
         of a corresponding array set to use.
1208
 */
1209
using CfgSelFct = int (*)(uint16_t, const byte*, size_t, TiffComponent*);
1210
1211
//! Function pointer type for a crypt function used for binary arrays.
1212
using CryptFct = DataBuf (*)(uint16_t, const byte*, size_t, TiffComponent*);
1213
1214
//! Defines one tag in a binary array
1215
struct ArrayDef {
1216
  //! Comparison with idx
1217
9.30M
  bool operator==(size_t idx) const {
1218
9.30M
    return idx_ == idx;
1219
9.30M
  }
1220
  //! Get the size in bytes of a tag.
1221
  [[nodiscard]] size_t size(uint16_t tag, IfdId group) const;
1222
  // DATA
1223
  size_t idx_;         //!< Index in bytes from the start
1224
  TiffType tiffType_;  //!< TIFF type of the element
1225
  size_t count_;       //!< Number of components
1226
};
1227
1228
//! Additional configuration for a binary array.
1229
struct ArrayCfg {
1230
  /*!
1231
    @brief Return the size of the default tag, which is used
1232
           to calculate tag numbers as idx/tagStep
1233
   */
1234
4.31M
  [[nodiscard]] size_t tagStep() const {
1235
4.31M
    return elDefaultDef_.size(0, group_);
1236
4.31M
  }
1237
  // DATA
1238
  IfdId group_;            //!< Group for the elements
1239
  ByteOrder byteOrder_;    //!< Byte order, invalidByteOrder to inherit
1240
  TiffType elTiffType_;    //!< Type for the array entry and the size element, if any
1241
  CryptFct cryptFct_;      //!< Crypt function, 0 if not used
1242
  bool hasSize_;           //!< If true, first tag is the size element
1243
  bool hasFillers_;        //!< If true, write all defined tags
1244
  bool concat_;            //!< If true, concatenate gaps between defined tags to single tags
1245
  ArrayDef elDefaultDef_;  //!< Default element
1246
};
1247
1248
//! Combination of array configuration and definition for arrays
1249
struct ArraySet {
1250
  ArrayCfg cfg_;         //!< Binary array configuration
1251
  const ArrayDef* def_;  //!< Binary array definition array
1252
  size_t defSize_;       //!< Size of the array definition array
1253
};
1254
1255
/*!
1256
  @brief Composite to model an array of different tags. The tag types as well
1257
         as other aspects of the array are configurable. The elements of this
1258
         component are of type TiffBinaryElement.
1259
 */
1260
class TiffBinaryArray : public TiffEntryBase {
1261
 public:
1262
  //! @name Creators
1263
  //@{
1264
  //! Constructor
1265
  TiffBinaryArray(uint16_t tag, IfdId group, const ArrayCfg& arrayCfg, const ArrayDef* arrayDef, size_t defSize);
1266
  //! Constructor for a complex binary array
1267
  TiffBinaryArray(uint16_t tag, IfdId group, const ArraySet* arraySet, size_t setSize, CfgSelFct cfgSelFct);
1268
  //! Virtual destructor
1269
41.3k
  ~TiffBinaryArray() override = default;
1270
  //@}
1271
1272
  //! @name NOT implemented
1273
  //@{
1274
  //! Assignment operator.
1275
  TiffBinaryArray& operator=(const TiffBinaryArray&) = delete;
1276
  //@}
1277
1278
  //! @name Manipulators
1279
  //@{
1280
  //! Add an element to the binary array, return the size of the element
1281
  size_t addElement(size_t idx, const ArrayDef& def);
1282
  /*!
1283
    @brief Setup cfg and def for the component, in case of a complex binary array.
1284
           Else do nothing. Return true if the initialization succeeded, else false.
1285
1286
    This version of initialize() is used during intrusive writing. It determines the
1287
    correct settings based on the \em group passed in (which is the group of the first
1288
    tag that is added to the array). It doesn't require cfgSelFct_.
1289
1290
    @param group Group to setup the binary array for.
1291
    @return true if the initialization succeeded, else false.
1292
   */
1293
  bool initialize(IfdId group);
1294
  /*!
1295
    @brief Setup cfg and def for the component, in case of a complex binary array.
1296
           Else do nothing. Return true if the initialization succeeded, else false.
1297
1298
    This version of initialize() is used for reading and non-intrusive writing. It
1299
    calls cfgSelFct_ to determine the correct settings.
1300
1301
    @param pRoot Pointer to the root component of the TIFF tree.
1302
    @return true if the initialization succeeded, else false.
1303
   */
1304
  bool initialize(TiffComponent* pRoot);
1305
  //! Initialize the original data buffer and its size from the base entry.
1306
  void iniOrigDataBuf();
1307
  //! Update the original data buffer and its size, return true if successful.
1308
  bool updOrigDataBuf(const byte* pData, size_t size);
1309
  //! Set a flag to indicate if the array was decoded
1310
4.01M
  void setDecoded(bool decoded) {
1311
4.01M
    decoded_ = decoded;
1312
4.01M
  }
1313
  //@}
1314
1315
  //! @name Accessors
1316
  //@{
1317
  //! Return a pointer to the configuration
1318
13.5M
  [[nodiscard]] const ArrayCfg* cfg() const {
1319
13.5M
    return arrayCfg_;
1320
13.5M
  }
1321
  //! Return a pointer to the definition
1322
181k
  [[nodiscard]] const ArrayDef* def() const {
1323
181k
    return arrayDef_;
1324
181k
  }
1325
  //! Return the number of elements in the definition
1326
92.6k
  [[nodiscard]] size_t defSize() const {
1327
92.6k
    return defSize_;
1328
92.6k
  }
1329
  //! Return the flag which indicates if the array was decoded
1330
364k
  [[nodiscard]] bool decoded() const {
1331
364k
    return decoded_;
1332
364k
  }
1333
  //@}
1334
1335
 protected:
1336
  //! @name Protected Creators
1337
  //@{
1338
  //! Copy constructor (used to implement clone()).
1339
  TiffBinaryArray(const TiffBinaryArray& rhs);
1340
  //@}
1341
1342
  //! @name Protected Manipulators
1343
  //@{
1344
  /*!
1345
    @brief Implements addPath(). Todo: Document it!
1346
   */
1347
  TiffComponent* doAddPath(uint16_t tag, TiffPath& tiffPath, TiffComponent* pRoot, UniquePtr object) override;
1348
  /*!
1349
    @brief Implements addChild(). Todo: Document it!
1350
   */
1351
  TiffComponent* doAddChild(SharedPtr tiffComponent) override;
1352
  void doAccept(TiffVisitor& visitor) override;
1353
  void doEncode(TiffEncoder& encoder, const Exifdatum* datum) override;
1354
  /*!
1355
    @brief Implements write(). Todo: Document it!
1356
   */
1357
  size_t doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, size_t valueIdx, size_t dataIdx,
1358
                 size_t& imageIdx) override;
1359
  //@}
1360
1361
  //! @name Protected Accessors
1362
  //@{
1363
  [[nodiscard]] TiffBinaryArray* doClone() const override;
1364
  //! Implements count(). Todo: Document it!
1365
  [[nodiscard]] size_t doCount() const override;
1366
  // Using doWriteData from base class
1367
  // Using doWriteImage from base class
1368
  /*!
1369
    @brief Implements size(). Todo: Document it!
1370
   */
1371
  [[nodiscard]] size_t doSize() const override;
1372
  // Using doSizeData from base class
1373
  // Using doSizeImage from base class
1374
  //@}
1375
1376
 private:
1377
  // DATA
1378
  CfgSelFct cfgSelFct_{};       //!< Pointer to a function to determine which cfg to use (may be 0)
1379
  const ArraySet* arraySet_{};  //!< Pointer to the array set, if any (may be 0)
1380
  const ArrayCfg* arrayCfg_{};  //!< Pointer to the array configuration (must not be 0, except for
1381
                                //!< unrecognized complex binary arrays)
1382
  const ArrayDef* arrayDef_{};  //!< Pointer to the array definition (may be 0)
1383
  size_t defSize_{};            //!< Size of the array definition array (may be 0)
1384
  size_t setSize_{};            //!< Size of the array set (may be 0)
1385
  Components elements_;         //!< List of elements in this composite
1386
  byte* origData_{};            //!< Pointer to the original data buffer (unencrypted)
1387
  size_t origSize_{};           //!< Size of the original data buffer
1388
  TiffComponent* pRoot_{};      //!< Pointer to the root component of the TIFF tree. (Only used for intrusive writing.)
1389
  bool decoded_{};              //!< Flag to indicate if the array was decoded
1390
};
1391
1392
/*!
1393
  @brief Element of a TiffBinaryArray.
1394
 */
1395
class TiffBinaryElement : public TiffEntryBase {
1396
  using TiffEntryBase::TiffEntryBase;
1397
1398
 public:
1399
  //! @name Manipulators
1400
  //@{
1401
  /*!
1402
    @brief Set the array definition for this element.
1403
   */
1404
2.29M
  void setElDef(const ArrayDef& def) {
1405
2.29M
    elDef_ = def;
1406
2.29M
  }
1407
  /*!
1408
    @brief Set the byte order of this element.
1409
   */
1410
2.29M
  void setElByteOrder(ByteOrder byteOrder) {
1411
2.29M
    elByteOrder_ = byteOrder;
1412
2.29M
  }
1413
  //@}
1414
1415
  //! @name Accessors
1416
  //@{
1417
  /*!
1418
    @brief Return the array definition of this element.
1419
   */
1420
2.33M
  [[nodiscard]] const ArrayDef* elDef() const {
1421
2.33M
    return &elDef_;
1422
2.33M
  }
1423
  /*!
1424
    @brief Return the byte order of this element.
1425
   */
1426
2.33M
  [[nodiscard]] ByteOrder elByteOrder() const {
1427
2.33M
    return elByteOrder_;
1428
2.33M
  }
1429
  //@}
1430
1431
 protected:
1432
  //! @name Protected Manipulators
1433
  //@{
1434
  void doAccept(TiffVisitor& visitor) override;
1435
  void doEncode(TiffEncoder& encoder, const Exifdatum* datum) override;
1436
  /*!
1437
    @brief Implements write(). Todo: Document it!
1438
   */
1439
  size_t doWrite(IoWrapper& ioWrapper, ByteOrder byteOrder, size_t offset, size_t valueIdx, size_t dataIdx,
1440
                 size_t& imageIdx) override;
1441
  //@}
1442
1443
  //! @name Protected Accessors
1444
  //@{
1445
  [[nodiscard]] TiffBinaryElement* doClone() const override;
1446
  /*!
1447
    @brief Implements count(). Returns the count from the element definition.
1448
   */
1449
  [[nodiscard]] size_t doCount() const override;
1450
  // Using doWriteData from base class
1451
  // Using doWriteImage from base class
1452
  /*!
1453
    @brief Implements size(). Returns count * type-size, both taken from
1454
           the element definition.
1455
   */
1456
  [[nodiscard]] size_t doSize() const override;
1457
  // Using doSizeData from base class
1458
  // Using doSizeImage from base class
1459
  //@}
1460
1461
 private:
1462
  // DATA
1463
  ArrayDef elDef_{0, ttUndefined, 0};        //!< The array element definition
1464
  ByteOrder elByteOrder_{invalidByteOrder};  //!< Byte order to read/write the element
1465
};
1466
1467
// *****************************************************************************
1468
// template, inline and free functions
1469
1470
/*!
1471
  @brief Compare two TIFF component pointers by tag. Return true if the tag
1472
         of component lhs is less than that of rhs.
1473
 */
1474
bool cmpTagLt(const TiffComponent::SharedPtr& lhs, const TiffComponent::SharedPtr& rhs);
1475
1476
//! Function to create and initialize a new TIFF entry
1477
TiffComponent::UniquePtr newTiffEntry(uint16_t tag, IfdId group);
1478
1479
//! Function to create and initialize a new TIFF makernote entry
1480
TiffComponent::UniquePtr newTiffMnEntry(uint16_t tag, IfdId group);
1481
1482
//! Function to create and initialize a new binary array element
1483
TiffComponent::UniquePtr newTiffBinaryElement(uint16_t tag, IfdId group);
1484
1485
//! Function to create and initialize a new TIFF directory
1486
template <IfdId newGroup>
1487
46.5k
TiffComponent::UniquePtr newTiffDirectory(uint16_t tag, IfdId /*group*/) {
1488
46.5k
  return std::make_unique<TiffDirectory>(tag, newGroup);
1489
46.5k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffDirectory<(Exiv2::IfdId)1>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1487
31.8k
TiffComponent::UniquePtr newTiffDirectory(uint16_t tag, IfdId /*group*/) {
1488
31.8k
  return std::make_unique<TiffDirectory>(tag, newGroup);
1489
31.8k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffDirectory<(Exiv2::IfdId)56>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1487
9
TiffComponent::UniquePtr newTiffDirectory(uint16_t tag, IfdId /*group*/) {
1488
9
  return std::make_unique<TiffDirectory>(tag, newGroup);
1489
9
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffDirectory<(Exiv2::IfdId)5>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1487
39
TiffComponent::UniquePtr newTiffDirectory(uint16_t tag, IfdId /*group*/) {
1488
39
  return std::make_unique<TiffDirectory>(tag, newGroup);
1489
39
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffDirectory<(Exiv2::IfdId)21>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1487
337
TiffComponent::UniquePtr newTiffDirectory(uint16_t tag, IfdId /*group*/) {
1488
337
  return std::make_unique<TiffDirectory>(tag, newGroup);
1489
337
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffDirectory<(Exiv2::IfdId)6>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1487
41
TiffComponent::UniquePtr newTiffDirectory(uint16_t tag, IfdId /*group*/) {
1488
41
  return std::make_unique<TiffDirectory>(tag, newGroup);
1489
41
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffDirectory<(Exiv2::IfdId)2>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1487
5.43k
TiffComponent::UniquePtr newTiffDirectory(uint16_t tag, IfdId /*group*/) {
1488
5.43k
  return std::make_unique<TiffDirectory>(tag, newGroup);
1489
5.43k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffDirectory<(Exiv2::IfdId)3>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1487
471
TiffComponent::UniquePtr newTiffDirectory(uint16_t tag, IfdId /*group*/) {
1488
471
  return std::make_unique<TiffDirectory>(tag, newGroup);
1489
471
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffDirectory<(Exiv2::IfdId)4>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1487
169
TiffComponent::UniquePtr newTiffDirectory(uint16_t tag, IfdId /*group*/) {
1488
169
  return std::make_unique<TiffDirectory>(tag, newGroup);
1489
169
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffDirectory<(Exiv2::IfdId)19>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1487
8.17k
TiffComponent::UniquePtr newTiffDirectory(uint16_t tag, IfdId /*group*/) {
1488
8.17k
  return std::make_unique<TiffDirectory>(tag, newGroup);
1489
8.17k
}
1490
1491
//! Function to create and initialize a new TIFF sub-directory
1492
template <IfdId newGroup>
1493
52.5k
TiffComponent::UniquePtr newTiffSubIfd(uint16_t tag, IfdId group) {
1494
52.5k
  return std::make_unique<TiffSubIfd>(tag, group, newGroup);
1495
52.5k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffSubIfd<(Exiv2::IfdId)56>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1493
209
TiffComponent::UniquePtr newTiffSubIfd(uint16_t tag, IfdId group) {
1494
209
  return std::make_unique<TiffSubIfd>(tag, group, newGroup);
1495
209
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffSubIfd<(Exiv2::IfdId)5>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1493
12.3k
TiffComponent::UniquePtr newTiffSubIfd(uint16_t tag, IfdId group) {
1494
12.3k
  return std::make_unique<TiffSubIfd>(tag, group, newGroup);
1495
12.3k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffSubIfd<(Exiv2::IfdId)6>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1493
8.90k
TiffComponent::UniquePtr newTiffSubIfd(uint16_t tag, IfdId group) {
1494
8.90k
  return std::make_unique<TiffSubIfd>(tag, group, newGroup);
1495
8.90k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffSubIfd<(Exiv2::IfdId)9>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1493
4.13k
TiffComponent::UniquePtr newTiffSubIfd(uint16_t tag, IfdId group) {
1494
4.13k
  return std::make_unique<TiffSubIfd>(tag, group, newGroup);
1495
4.13k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffSubIfd<(Exiv2::IfdId)7>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1493
296
TiffComponent::UniquePtr newTiffSubIfd(uint16_t tag, IfdId group) {
1494
296
  return std::make_unique<TiffSubIfd>(tag, group, newGroup);
1495
296
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffSubIfd<(Exiv2::IfdId)18>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1493
1.96k
TiffComponent::UniquePtr newTiffSubIfd(uint16_t tag, IfdId group) {
1494
1.96k
  return std::make_unique<TiffSubIfd>(tag, group, newGroup);
1495
1.96k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffSubIfd<(Exiv2::IfdId)100>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1493
256
TiffComponent::UniquePtr newTiffSubIfd(uint16_t tag, IfdId group) {
1494
256
  return std::make_unique<TiffSubIfd>(tag, group, newGroup);
1495
256
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffSubIfd<(Exiv2::IfdId)99>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1493
4.07k
TiffComponent::UniquePtr newTiffSubIfd(uint16_t tag, IfdId group) {
1494
4.07k
  return std::make_unique<TiffSubIfd>(tag, group, newGroup);
1495
4.07k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffSubIfd<(Exiv2::IfdId)101>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1493
241
TiffComponent::UniquePtr newTiffSubIfd(uint16_t tag, IfdId group) {
1494
241
  return std::make_unique<TiffSubIfd>(tag, group, newGroup);
1495
241
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffSubIfd<(Exiv2::IfdId)102>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1493
148
TiffComponent::UniquePtr newTiffSubIfd(uint16_t tag, IfdId group) {
1494
148
  return std::make_unique<TiffSubIfd>(tag, group, newGroup);
1495
148
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffSubIfd<(Exiv2::IfdId)103>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1493
259
TiffComponent::UniquePtr newTiffSubIfd(uint16_t tag, IfdId group) {
1494
259
  return std::make_unique<TiffSubIfd>(tag, group, newGroup);
1495
259
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffSubIfd<(Exiv2::IfdId)104>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1493
307
TiffComponent::UniquePtr newTiffSubIfd(uint16_t tag, IfdId group) {
1494
307
  return std::make_unique<TiffSubIfd>(tag, group, newGroup);
1495
307
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffSubIfd<(Exiv2::IfdId)105>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1493
452
TiffComponent::UniquePtr newTiffSubIfd(uint16_t tag, IfdId group) {
1494
452
  return std::make_unique<TiffSubIfd>(tag, group, newGroup);
1495
452
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffSubIfd<(Exiv2::IfdId)106>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1493
380
TiffComponent::UniquePtr newTiffSubIfd(uint16_t tag, IfdId group) {
1494
380
  return std::make_unique<TiffSubIfd>(tag, group, newGroup);
1495
380
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffSubIfd<(Exiv2::IfdId)107>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1493
848
TiffComponent::UniquePtr newTiffSubIfd(uint16_t tag, IfdId group) {
1494
848
  return std::make_unique<TiffSubIfd>(tag, group, newGroup);
1495
848
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffSubIfd<(Exiv2::IfdId)108>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1493
118
TiffComponent::UniquePtr newTiffSubIfd(uint16_t tag, IfdId group) {
1494
118
  return std::make_unique<TiffSubIfd>(tag, group, newGroup);
1495
118
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffSubIfd<(Exiv2::IfdId)109>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1493
5.08k
TiffComponent::UniquePtr newTiffSubIfd(uint16_t tag, IfdId group) {
1494
5.08k
  return std::make_unique<TiffSubIfd>(tag, group, newGroup);
1495
5.08k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffSubIfd<(Exiv2::IfdId)110>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1493
419
TiffComponent::UniquePtr newTiffSubIfd(uint16_t tag, IfdId group) {
1494
419
  return std::make_unique<TiffSubIfd>(tag, group, newGroup);
1495
419
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffSubIfd<(Exiv2::IfdId)111>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1493
778
TiffComponent::UniquePtr newTiffSubIfd(uint16_t tag, IfdId group) {
1494
778
  return std::make_unique<TiffSubIfd>(tag, group, newGroup);
1495
778
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffSubIfd<(Exiv2::IfdId)112>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1493
6.25k
TiffComponent::UniquePtr newTiffSubIfd(uint16_t tag, IfdId group) {
1494
6.25k
  return std::make_unique<TiffSubIfd>(tag, group, newGroup);
1495
6.25k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffSubIfd<(Exiv2::IfdId)113>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1493
1.45k
TiffComponent::UniquePtr newTiffSubIfd(uint16_t tag, IfdId group) {
1494
1.45k
  return std::make_unique<TiffSubIfd>(tag, group, newGroup);
1495
1.45k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffSubIfd<(Exiv2::IfdId)114>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1493
2.09k
TiffComponent::UniquePtr newTiffSubIfd(uint16_t tag, IfdId group) {
1494
2.09k
  return std::make_unique<TiffSubIfd>(tag, group, newGroup);
1495
2.09k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffSubIfd<(Exiv2::IfdId)65>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1493
449
TiffComponent::UniquePtr newTiffSubIfd(uint16_t tag, IfdId group) {
1494
449
  return std::make_unique<TiffSubIfd>(tag, group, newGroup);
1495
449
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffSubIfd<(Exiv2::IfdId)119>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1493
969
TiffComponent::UniquePtr newTiffSubIfd(uint16_t tag, IfdId group) {
1494
969
  return std::make_unique<TiffSubIfd>(tag, group, newGroup);
1495
969
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffSubIfd<(Exiv2::IfdId)124>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1493
140
TiffComponent::UniquePtr newTiffSubIfd(uint16_t tag, IfdId group) {
1494
140
  return std::make_unique<TiffSubIfd>(tag, group, newGroup);
1495
140
}
1496
1497
//! Function to create and initialize a new binary array entry
1498
template <const ArrayCfg& arrayCfg, size_t N, const ArrayDef (&arrayDef)[N]>
1499
12.2k
TiffComponent::UniquePtr newTiffBinaryArray0(uint16_t tag, IfdId group) {
1500
12.2k
  static_assert(N > 0, "Passed zero length newTiffBinaryArray0");
1501
12.2k
  return std::make_unique<TiffBinaryArray>(tag, group, arrayCfg, arrayDef, N);
1502
12.2k
}
tiffimage_int.cpp:_ZN5Exiv28Internal19newTiffBinaryArray0IL_ZNS0_L10canonCsCfgEELm1ETnRAT0__KNS0_8ArrayDefEL_ZNS0_L10canonCsDefEEEENSt3__110unique_ptrINS0_13TiffComponentENS6_14default_deleteIS8_EEEEtNS_5IfdIdE
Line
Count
Source
1499
1.32k
TiffComponent::UniquePtr newTiffBinaryArray0(uint16_t tag, IfdId group) {
1500
1.32k
  static_assert(N > 0, "Passed zero length newTiffBinaryArray0");
1501
1.32k
  return std::make_unique<TiffBinaryArray>(tag, group, arrayCfg, arrayDef, N);
1502
1.32k
}
tiffimage_int.cpp:_ZN5Exiv28Internal19newTiffBinaryArray0IL_ZNS0_L10canonFiCfgEELm1ETnRAT0__KNS0_8ArrayDefEL_ZNS0_L10canonFiDefEEEENSt3__110unique_ptrINS0_13TiffComponentENS6_14default_deleteIS8_EEEEtNS_5IfdIdE
Line
Count
Source
1499
136
TiffComponent::UniquePtr newTiffBinaryArray0(uint16_t tag, IfdId group) {
1500
136
  static_assert(N > 0, "Passed zero length newTiffBinaryArray0");
1501
136
  return std::make_unique<TiffBinaryArray>(tag, group, arrayCfg, arrayDef, N);
1502
136
}
tiffimage_int.cpp:_ZN5Exiv28Internal19newTiffBinaryArray0IL_ZNS0_L10canonLeCfgEELm2ETnRAT0__KNS0_8ArrayDefEL_ZNS0_L10canonLeDefEEEENSt3__110unique_ptrINS0_13TiffComponentENS6_14default_deleteIS8_EEEEtNS_5IfdIdE
Line
Count
Source
1499
80
TiffComponent::UniquePtr newTiffBinaryArray0(uint16_t tag, IfdId group) {
1500
80
  static_assert(N > 0, "Passed zero length newTiffBinaryArray0");
1501
80
  return std::make_unique<TiffBinaryArray>(tag, group, arrayCfg, arrayDef, N);
1502
80
}
tiffimage_int.cpp:_ZN5Exiv28Internal19newTiffBinaryArray0IL_ZNS0_L10nikonVrCfgEELm2ETnRAT0__KNS0_8ArrayDefEL_ZNS0_L10nikonVrDefEEEENSt3__110unique_ptrINS0_13TiffComponentENS6_14default_deleteIS8_EEEEtNS_5IfdIdE
Line
Count
Source
1499
190
TiffComponent::UniquePtr newTiffBinaryArray0(uint16_t tag, IfdId group) {
1500
190
  static_assert(N > 0, "Passed zero length newTiffBinaryArray0");
1501
190
  return std::make_unique<TiffBinaryArray>(tag, group, arrayCfg, arrayDef, N);
1502
190
}
tiffimage_int.cpp:_ZN5Exiv28Internal19newTiffBinaryArray0IL_ZNS0_L10nikonPcCfgEELm13ETnRAT0__KNS0_8ArrayDefEL_ZNS0_L10nikonPcDefEEEENSt3__110unique_ptrINS0_13TiffComponentENS6_14default_deleteIS8_EEEEtNS_5IfdIdE
Line
Count
Source
1499
104
TiffComponent::UniquePtr newTiffBinaryArray0(uint16_t tag, IfdId group) {
1500
104
  static_assert(N > 0, "Passed zero length newTiffBinaryArray0");
1501
104
  return std::make_unique<TiffBinaryArray>(tag, group, arrayCfg, arrayDef, N);
1502
104
}
tiffimage_int.cpp:_ZN5Exiv28Internal19newTiffBinaryArray0IL_ZNS0_L10nikonWtCfgEELm3ETnRAT0__KNS0_8ArrayDefEL_ZNS0_L10nikonWtDefEEEENSt3__110unique_ptrINS0_13TiffComponentENS6_14default_deleteIS8_EEEEtNS_5IfdIdE
Line
Count
Source
1499
152
TiffComponent::UniquePtr newTiffBinaryArray0(uint16_t tag, IfdId group) {
1500
152
  static_assert(N > 0, "Passed zero length newTiffBinaryArray0");
1501
152
  return std::make_unique<TiffBinaryArray>(tag, group, arrayCfg, arrayDef, N);
1502
152
}
tiffimage_int.cpp:_ZN5Exiv28Internal19newTiffBinaryArray0IL_ZNS0_L10nikonIiCfgEELm5ETnRAT0__KNS0_8ArrayDefEL_ZNS0_L10nikonIiDefEEEENSt3__110unique_ptrINS0_13TiffComponentENS6_14default_deleteIS8_EEEEtNS_5IfdIdE
Line
Count
Source
1499
187
TiffComponent::UniquePtr newTiffBinaryArray0(uint16_t tag, IfdId group) {
1500
187
  static_assert(N > 0, "Passed zero length newTiffBinaryArray0");
1501
187
  return std::make_unique<TiffBinaryArray>(tag, group, arrayCfg, arrayDef, N);
1502
187
}
tiffimage_int.cpp:_ZN5Exiv28Internal19newTiffBinaryArray0IL_ZNS0_L10nikonAfCfgEELm3ETnRAT0__KNS0_8ArrayDefEL_ZNS0_L10nikonAfDefEEEENSt3__110unique_ptrINS0_13TiffComponentENS6_14default_deleteIS8_EEEEtNS_5IfdIdE
Line
Count
Source
1499
491
TiffComponent::UniquePtr newTiffBinaryArray0(uint16_t tag, IfdId group) {
1500
491
  static_assert(N > 0, "Passed zero length newTiffBinaryArray0");
1501
491
  return std::make_unique<TiffBinaryArray>(tag, group, arrayCfg, arrayDef, N);
1502
491
}
tiffimage_int.cpp:_ZN5Exiv28Internal19newTiffBinaryArray0IL_ZNS0_L10nikonMeCfgEELm4ETnRAT0__KNS0_8ArrayDefEL_ZNS0_L10nikonMeDefEEEENSt3__110unique_ptrINS0_13TiffComponentENS6_14default_deleteIS8_EEEEtNS_5IfdIdE
Line
Count
Source
1499
112
TiffComponent::UniquePtr newTiffBinaryArray0(uint16_t tag, IfdId group) {
1500
112
  static_assert(N > 0, "Passed zero length newTiffBinaryArray0");
1501
112
  return std::make_unique<TiffBinaryArray>(tag, group, arrayCfg, arrayDef, N);
1502
112
}
tiffimage_int.cpp:_ZN5Exiv28Internal19newTiffBinaryArray0IL_ZNS0_L10nikonFiCfgEELm3ETnRAT0__KNS0_8ArrayDefEL_ZNS0_L10nikonFiDefEEEENSt3__110unique_ptrINS0_13TiffComponentENS6_14default_deleteIS8_EEEEtNS_5IfdIdE
Line
Count
Source
1499
285
TiffComponent::UniquePtr newTiffBinaryArray0(uint16_t tag, IfdId group) {
1500
285
  static_assert(N > 0, "Passed zero length newTiffBinaryArray0");
1501
285
  return std::make_unique<TiffBinaryArray>(tag, group, arrayCfg, arrayDef, N);
1502
285
}
tiffimage_int.cpp:_ZN5Exiv28Internal19newTiffBinaryArray0IL_ZNS0_L11nikonAFTCfgEELm3ETnRAT0__KNS0_8ArrayDefEL_ZNS0_L11nikonAFTDefEEEENSt3__110unique_ptrINS0_13TiffComponentENS6_14default_deleteIS8_EEEEtNS_5IfdIdE
Line
Count
Source
1499
257
TiffComponent::UniquePtr newTiffBinaryArray0(uint16_t tag, IfdId group) {
1500
257
  static_assert(N > 0, "Passed zero length newTiffBinaryArray0");
1501
257
  return std::make_unique<TiffBinaryArray>(tag, group, arrayCfg, arrayDef, N);
1502
257
}
tiffimage_int.cpp:_ZN5Exiv28Internal19newTiffBinaryArray0IL_ZNS0_L12samsungPwCfgEELm5ETnRAT0__KNS0_8ArrayDefEL_ZNS0_L12samsungPwDefEEEENSt3__110unique_ptrINS0_13TiffComponentENS6_14default_deleteIS8_EEEEtNS_5IfdIdE
Line
Count
Source
1499
5.64k
TiffComponent::UniquePtr newTiffBinaryArray0(uint16_t tag, IfdId group) {
1500
5.64k
  static_assert(N > 0, "Passed zero length newTiffBinaryArray0");
1501
5.64k
  return std::make_unique<TiffBinaryArray>(tag, group, arrayCfg, arrayDef, N);
1502
5.64k
}
tiffimage_int.cpp:_ZN5Exiv28Internal19newTiffBinaryArray0IL_ZNS0_L12sonyMisc1CfgEELm1ETnRAT0__KNS0_8ArrayDefEL_ZNS0_L12sonyMisc1DefEEEENSt3__110unique_ptrINS0_13TiffComponentENS6_14default_deleteIS8_EEEEtNS_5IfdIdE
Line
Count
Source
1499
130
TiffComponent::UniquePtr newTiffBinaryArray0(uint16_t tag, IfdId group) {
1500
130
  static_assert(N > 0, "Passed zero length newTiffBinaryArray0");
1501
130
  return std::make_unique<TiffBinaryArray>(tag, group, arrayCfg, arrayDef, N);
1502
130
}
tiffimage_int.cpp:_ZN5Exiv28Internal19newTiffBinaryArray0IL_ZNS0_L13sonySInfo1CfgEELm5ETnRAT0__KNS0_8ArrayDefEL_ZNS0_L13sonySInfo1DefEEEENSt3__110unique_ptrINS0_13TiffComponentENS6_14default_deleteIS8_EEEEtNS_5IfdIdE
Line
Count
Source
1499
1.81k
TiffComponent::UniquePtr newTiffBinaryArray0(uint16_t tag, IfdId group) {
1500
1.81k
  static_assert(N > 0, "Passed zero length newTiffBinaryArray0");
1501
1.81k
  return std::make_unique<TiffBinaryArray>(tag, group, arrayCfg, arrayDef, N);
1502
1.81k
}
tiffimage_int.cpp:_ZN5Exiv28Internal19newTiffBinaryArray0IL_ZNS0_L12sony1MCs7CfgEELm2ETnRAT0__KNS0_8ArrayDefEL_ZNS0_L10minoCs7DefEEEENSt3__110unique_ptrINS0_13TiffComponentENS6_14default_deleteIS8_EEEEtNS_5IfdIdE
Line
Count
Source
1499
537
TiffComponent::UniquePtr newTiffBinaryArray0(uint16_t tag, IfdId group) {
1500
537
  static_assert(N > 0, "Passed zero length newTiffBinaryArray0");
1501
537
  return std::make_unique<TiffBinaryArray>(tag, group, arrayCfg, arrayDef, N);
1502
537
}
tiffimage_int.cpp:_ZN5Exiv28Internal19newTiffBinaryArray0IL_ZNS0_L15sony1MCsA100CfgEELm3ETnRAT0__KNS0_8ArrayDefEL_ZNS0_L15sony1MCsA100DefEEEENSt3__110unique_ptrINS0_13TiffComponentENS6_14default_deleteIS8_EEEEtNS_5IfdIdE
Line
Count
Source
1499
76
TiffComponent::UniquePtr newTiffBinaryArray0(uint16_t tag, IfdId group) {
1500
76
  static_assert(N > 0, "Passed zero length newTiffBinaryArray0");
1501
76
  return std::make_unique<TiffBinaryArray>(tag, group, arrayCfg, arrayDef, N);
1502
76
}
tiffimage_int.cpp:_ZN5Exiv28Internal19newTiffBinaryArray0IL_ZNS0_L10minoCs7CfgEELm2ETnRAT0__KNS0_8ArrayDefEL_ZNS0_L10minoCs7DefEEEENSt3__110unique_ptrINS0_13TiffComponentENS6_14default_deleteIS8_EEEEtNS_5IfdIdE
Line
Count
Source
1499
625
TiffComponent::UniquePtr newTiffBinaryArray0(uint16_t tag, IfdId group) {
1500
625
  static_assert(N > 0, "Passed zero length newTiffBinaryArray0");
1501
625
  return std::make_unique<TiffBinaryArray>(tag, group, arrayCfg, arrayDef, N);
1502
625
}
tiffimage_int.cpp:_ZN5Exiv28Internal19newTiffBinaryArray0IL_ZNS0_L10minoCs5CfgEELm1ETnRAT0__KNS0_8ArrayDefEL_ZNS0_L10minoCs5DefEEEENSt3__110unique_ptrINS0_13TiffComponentENS6_14default_deleteIS8_EEEEtNS_5IfdIdE
Line
Count
Source
1499
107
TiffComponent::UniquePtr newTiffBinaryArray0(uint16_t tag, IfdId group) {
1500
107
  static_assert(N > 0, "Passed zero length newTiffBinaryArray0");
1501
107
  return std::make_unique<TiffBinaryArray>(tag, group, arrayCfg, arrayDef, N);
1502
107
}
1503
1504
//! Function to create and initialize a new simple binary array entry
1505
template <const ArrayCfg& arrayCfg>
1506
20.8k
TiffComponent::UniquePtr newTiffBinaryArray1(uint16_t tag, IfdId group) {
1507
20.8k
  return std::make_unique<TiffBinaryArray>(tag, group, arrayCfg, nullptr, 0);
1508
20.8k
}
tiffimage_int.cpp:std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffBinaryArray1<Exiv2::Internal::minoCsoCfg>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1506
13.1k
TiffComponent::UniquePtr newTiffBinaryArray1(uint16_t tag, IfdId group) {
1507
13.1k
  return std::make_unique<TiffBinaryArray>(tag, group, arrayCfg, nullptr, 0);
1508
13.1k
}
tiffimage_int.cpp:std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffBinaryArray1<Exiv2::Internal::minoCsnCfg>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1506
2.38k
TiffComponent::UniquePtr newTiffBinaryArray1(uint16_t tag, IfdId group) {
1507
2.38k
  return std::make_unique<TiffBinaryArray>(tag, group, arrayCfg, nullptr, 0);
1508
2.38k
}
tiffimage_int.cpp:std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffBinaryArray1<Exiv2::Internal::canonSiCfg>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1506
1.32k
TiffComponent::UniquePtr newTiffBinaryArray1(uint16_t tag, IfdId group) {
1507
1.32k
  return std::make_unique<TiffBinaryArray>(tag, group, arrayCfg, nullptr, 0);
1508
1.32k
}
tiffimage_int.cpp:std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffBinaryArray1<Exiv2::Internal::canonPaCfg>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1506
438
TiffComponent::UniquePtr newTiffBinaryArray1(uint16_t tag, IfdId group) {
1507
438
  return std::make_unique<TiffBinaryArray>(tag, group, arrayCfg, nullptr, 0);
1508
438
}
tiffimage_int.cpp:std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffBinaryArray1<Exiv2::Internal::canonCfCfg>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1506
488
TiffComponent::UniquePtr newTiffBinaryArray1(uint16_t tag, IfdId group) {
1507
488
  return std::make_unique<TiffBinaryArray>(tag, group, arrayCfg, nullptr, 0);
1508
488
}
tiffimage_int.cpp:std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffBinaryArray1<Exiv2::Internal::canonPiCfg>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1506
144
TiffComponent::UniquePtr newTiffBinaryArray1(uint16_t tag, IfdId group) {
1507
144
  return std::make_unique<TiffBinaryArray>(tag, group, arrayCfg, nullptr, 0);
1508
144
}
tiffimage_int.cpp:std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffBinaryArray1<Exiv2::Internal::canonTiCfg>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1506
348
TiffComponent::UniquePtr newTiffBinaryArray1(uint16_t tag, IfdId group) {
1507
348
  return std::make_unique<TiffBinaryArray>(tag, group, arrayCfg, nullptr, 0);
1508
348
}
tiffimage_int.cpp:std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffBinaryArray1<Exiv2::Internal::canonPrCfg>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1506
103
TiffComponent::UniquePtr newTiffBinaryArray1(uint16_t tag, IfdId group) {
1507
103
  return std::make_unique<TiffBinaryArray>(tag, group, arrayCfg, nullptr, 0);
1508
103
}
tiffimage_int.cpp:std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffBinaryArray1<Exiv2::Internal::canonAfMiAdjCfg>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1506
618
TiffComponent::UniquePtr newTiffBinaryArray1(uint16_t tag, IfdId group) {
1507
618
  return std::make_unique<TiffBinaryArray>(tag, group, arrayCfg, nullptr, 0);
1508
618
}
tiffimage_int.cpp:std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffBinaryArray1<Exiv2::Internal::canonVigCor2Cfg>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1506
101
TiffComponent::UniquePtr newTiffBinaryArray1(uint16_t tag, IfdId group) {
1507
101
  return std::make_unique<TiffBinaryArray>(tag, group, arrayCfg, nullptr, 0);
1508
101
}
tiffimage_int.cpp:std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffBinaryArray1<Exiv2::Internal::canonLiOpCfg>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1506
289
TiffComponent::UniquePtr newTiffBinaryArray1(uint16_t tag, IfdId group) {
1507
289
  return std::make_unique<TiffBinaryArray>(tag, group, arrayCfg, nullptr, 0);
1508
289
}
tiffimage_int.cpp:std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffBinaryArray1<Exiv2::Internal::canonAmCfg>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1506
291
TiffComponent::UniquePtr newTiffBinaryArray1(uint16_t tag, IfdId group) {
1507
291
  return std::make_unique<TiffBinaryArray>(tag, group, arrayCfg, nullptr, 0);
1508
291
}
tiffimage_int.cpp:std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffBinaryArray1<Exiv2::Internal::canonMeCfg>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1506
101
TiffComponent::UniquePtr newTiffBinaryArray1(uint16_t tag, IfdId group) {
1507
101
  return std::make_unique<TiffBinaryArray>(tag, group, arrayCfg, nullptr, 0);
1508
101
}
tiffimage_int.cpp:std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffBinaryArray1<Exiv2::Internal::canonFilCfg>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1506
53
TiffComponent::UniquePtr newTiffBinaryArray1(uint16_t tag, IfdId group) {
1507
53
  return std::make_unique<TiffBinaryArray>(tag, group, arrayCfg, nullptr, 0);
1508
53
}
tiffimage_int.cpp:std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffBinaryArray1<Exiv2::Internal::canonHdrCfg>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1506
431
TiffComponent::UniquePtr newTiffBinaryArray1(uint16_t tag, IfdId group) {
1507
431
  return std::make_unique<TiffBinaryArray>(tag, group, arrayCfg, nullptr, 0);
1508
431
}
tiffimage_int.cpp:std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffBinaryArray1<Exiv2::Internal::canonAfCCfg>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1506
135
TiffComponent::UniquePtr newTiffBinaryArray1(uint16_t tag, IfdId group) {
1507
135
  return std::make_unique<TiffBinaryArray>(tag, group, arrayCfg, nullptr, 0);
1508
135
}
tiffimage_int.cpp:std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffBinaryArray1<Exiv2::Internal::canonRawBCfg>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1506
93
TiffComponent::UniquePtr newTiffBinaryArray1(uint16_t tag, IfdId group) {
1507
93
  return std::make_unique<TiffBinaryArray>(tag, group, arrayCfg, nullptr, 0);
1508
93
}
tiffimage_int.cpp:std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffBinaryArray1<Exiv2::Internal::sony1MCsoCfg>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1506
193
TiffComponent::UniquePtr newTiffBinaryArray1(uint16_t tag, IfdId group) {
1507
193
  return std::make_unique<TiffBinaryArray>(tag, group, arrayCfg, nullptr, 0);
1508
193
}
tiffimage_int.cpp:std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffBinaryArray1<Exiv2::Internal::sony1MCsnCfg>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1506
111
TiffComponent::UniquePtr newTiffBinaryArray1(uint16_t tag, IfdId group) {
1507
111
  return std::make_unique<TiffBinaryArray>(tag, group, arrayCfg, nullptr, 0);
1508
111
}
1509
1510
//! Function to create and initialize a new complex binary array entry
1511
template <size_t N, const ArraySet (&arraySet)[N], CfgSelFct cfgSelFct>
1512
8.26k
TiffComponent::UniquePtr newTiffBinaryArray2(uint16_t tag, IfdId group) {
1513
8.26k
  static_assert(N > 0, "Passed zero length newTiffBinaryArray2");
1514
8.26k
  return std::make_unique<TiffBinaryArray>(tag, group, arraySet, N, cfgSelFct);
1515
8.26k
}
tiffimage_int.cpp:_ZN5Exiv28Internal19newTiffBinaryArray2ILm6ETnRAT__KNS0_8ArraySetEL_ZNS0_L10nikonSiSetEEXadL_ZNS0_13nikonSelectorEtPKhmPNS0_13TiffComponentEEEEENSt3__110unique_ptrIS8_NSA_14default_deleteIS8_EEEEtNS_5IfdIdE
Line
Count
Source
1512
439
TiffComponent::UniquePtr newTiffBinaryArray2(uint16_t tag, IfdId group) {
1513
439
  static_assert(N > 0, "Passed zero length newTiffBinaryArray2");
1514
439
  return std::make_unique<TiffBinaryArray>(tag, group, arraySet, N, cfgSelFct);
1515
439
}
tiffimage_int.cpp:_ZN5Exiv28Internal19newTiffBinaryArray2ILm6ETnRAT__KNS0_8ArraySetEL_ZNS0_L10nikonCbSetEEXadL_ZNS0_13nikonSelectorEtPKhmPNS0_13TiffComponentEEEEENSt3__110unique_ptrIS8_NSA_14default_deleteIS8_EEEEtNS_5IfdIdE
Line
Count
Source
1512
389
TiffComponent::UniquePtr newTiffBinaryArray2(uint16_t tag, IfdId group) {
1513
389
  static_assert(N > 0, "Passed zero length newTiffBinaryArray2");
1514
389
  return std::make_unique<TiffBinaryArray>(tag, group, arraySet, N, cfgSelFct);
1515
389
}
tiffimage_int.cpp:_ZN5Exiv28Internal19newTiffBinaryArray2ILm4ETnRAT__KNS0_8ArraySetEL_ZNS0_L10nikonLdSetEEXadL_ZNS0_13nikonSelectorEtPKhmPNS0_13TiffComponentEEEEENSt3__110unique_ptrIS8_NSA_14default_deleteIS8_EEEEtNS_5IfdIdE
Line
Count
Source
1512
456
TiffComponent::UniquePtr newTiffBinaryArray2(uint16_t tag, IfdId group) {
1513
456
  static_assert(N > 0, "Passed zero length newTiffBinaryArray2");
1514
456
  return std::make_unique<TiffBinaryArray>(tag, group, arraySet, N, cfgSelFct);
1515
456
}
tiffimage_int.cpp:_ZN5Exiv28Internal19newTiffBinaryArray2ILm5ETnRAT__KNS0_8ArraySetEL_ZNS0_L10nikonFlSetEEXadL_ZNS0_13nikonSelectorEtPKhmPNS0_13TiffComponentEEEEENSt3__110unique_ptrIS8_NSA_14default_deleteIS8_EEEEtNS_5IfdIdE
Line
Count
Source
1512
4.23k
TiffComponent::UniquePtr newTiffBinaryArray2(uint16_t tag, IfdId group) {
1513
4.23k
  static_assert(N > 0, "Passed zero length newTiffBinaryArray2");
1514
4.23k
  return std::make_unique<TiffBinaryArray>(tag, group, arraySet, N, cfgSelFct);
1515
4.23k
}
tiffimage_int.cpp:_ZN5Exiv28Internal19newTiffBinaryArray2ILm2ETnRAT__KNS0_8ArraySetEL_ZNS0_L11nikonAf2SetEEXadL_ZNS0_13nikonSelectorEtPKhmPNS0_13TiffComponentEEEEENSt3__110unique_ptrIS8_NSA_14default_deleteIS8_EEEEtNS_5IfdIdE
Line
Count
Source
1512
235
TiffComponent::UniquePtr newTiffBinaryArray2(uint16_t tag, IfdId group) {
1513
235
  static_assert(N > 0, "Passed zero length newTiffBinaryArray2");
1514
235
  return std::make_unique<TiffBinaryArray>(tag, group, arraySet, N, cfgSelFct);
1515
235
}
tiffimage_int.cpp:_ZN5Exiv28Internal19newTiffBinaryArray2ILm1ETnRAT__KNS0_8ArraySetEL_ZNS0_L12sony2010eSetEEXadL_ZNS0_17sony2010eSelectorEtPKhmPNS0_13TiffComponentEEEEENSt3__110unique_ptrIS8_NSA_14default_deleteIS8_EEEEtNS_5IfdIdE
Line
Count
Source
1512
184
TiffComponent::UniquePtr newTiffBinaryArray2(uint16_t tag, IfdId group) {
1513
184
  static_assert(N > 0, "Passed zero length newTiffBinaryArray2");
1514
184
  return std::make_unique<TiffBinaryArray>(tag, group, arraySet, N, cfgSelFct);
1515
184
}
tiffimage_int.cpp:_ZN5Exiv28Internal19newTiffBinaryArray2ILm1ETnRAT__KNS0_8ArraySetEL_ZNS0_L10sony2FpSetEEXadL_ZNS0_15sony2FpSelectorEtPKhmPNS0_13TiffComponentEEEEENSt3__110unique_ptrIS8_NSA_14default_deleteIS8_EEEEtNS_5IfdIdE
Line
Count
Source
1512
638
TiffComponent::UniquePtr newTiffBinaryArray2(uint16_t tag, IfdId group) {
1513
638
  static_assert(N > 0, "Passed zero length newTiffBinaryArray2");
1514
638
  return std::make_unique<TiffBinaryArray>(tag, group, arraySet, N, cfgSelFct);
1515
638
}
tiffimage_int.cpp:_ZN5Exiv28Internal19newTiffBinaryArray2ILm1ETnRAT__KNS0_8ArraySetEL_ZNS0_L13sonyMisc2bSetEEXadL_ZNS0_18sonyMisc2bSelectorEtPKhmPNS0_13TiffComponentEEEEENSt3__110unique_ptrIS8_NSA_14default_deleteIS8_EEEEtNS_5IfdIdE
Line
Count
Source
1512
274
TiffComponent::UniquePtr newTiffBinaryArray2(uint16_t tag, IfdId group) {
1513
274
  static_assert(N > 0, "Passed zero length newTiffBinaryArray2");
1514
274
  return std::make_unique<TiffBinaryArray>(tag, group, arraySet, N, cfgSelFct);
1515
274
}
tiffimage_int.cpp:_ZN5Exiv28Internal19newTiffBinaryArray2ILm1ETnRAT__KNS0_8ArraySetEL_ZNS0_L13sonyMisc3cSetEEXadL_ZNS0_18sonyMisc3cSelectorEtPKhmPNS0_13TiffComponentEEEEENSt3__110unique_ptrIS8_NSA_14default_deleteIS8_EEEEtNS_5IfdIdE
Line
Count
Source
1512
851
TiffComponent::UniquePtr newTiffBinaryArray2(uint16_t tag, IfdId group) {
1513
851
  static_assert(N > 0, "Passed zero length newTiffBinaryArray2");
1514
851
  return std::make_unique<TiffBinaryArray>(tag, group, arraySet, N, cfgSelFct);
1515
851
}
tiffimage_int.cpp:_ZN5Exiv28Internal19newTiffBinaryArray2ILm2ETnRAT__KNS0_8ArraySetEL_ZNS0_L10sony1CsSetEEXadL_ZNS0_14sonyCsSelectorEtPKhmPNS0_13TiffComponentEEEEENSt3__110unique_ptrIS8_NSA_14default_deleteIS8_EEEEtNS_5IfdIdE
Line
Count
Source
1512
252
TiffComponent::UniquePtr newTiffBinaryArray2(uint16_t tag, IfdId group) {
1513
252
  static_assert(N > 0, "Passed zero length newTiffBinaryArray2");
1514
252
  return std::make_unique<TiffBinaryArray>(tag, group, arraySet, N, cfgSelFct);
1515
252
}
tiffimage_int.cpp:_ZN5Exiv28Internal19newTiffBinaryArray2ILm2ETnRAT__KNS0_8ArraySetEL_ZNS0_L10sony2CsSetEEXadL_ZNS0_14sonyCsSelectorEtPKhmPNS0_13TiffComponentEEEEENSt3__110unique_ptrIS8_NSA_14default_deleteIS8_EEEEtNS_5IfdIdE
Line
Count
Source
1512
310
TiffComponent::UniquePtr newTiffBinaryArray2(uint16_t tag, IfdId group) {
1513
310
  static_assert(N > 0, "Passed zero length newTiffBinaryArray2");
1514
310
  return std::make_unique<TiffBinaryArray>(tag, group, arraySet, N, cfgSelFct);
1515
310
}
1516
1517
//! Function to create and initialize a new TIFF entry for a thumbnail (data)
1518
template <uint16_t szTag, IfdId szGroup>
1519
19.4k
TiffComponent::UniquePtr newTiffThumbData(uint16_t tag, IfdId group) {
1520
19.4k
  return std::make_unique<TiffDataEntry>(tag, group, szTag, szGroup);
1521
19.4k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffThumbData<(unsigned short)279, (Exiv2::IfdId)2>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1519
322
TiffComponent::UniquePtr newTiffThumbData(uint16_t tag, IfdId group) {
1520
322
  return std::make_unique<TiffDataEntry>(tag, group, szTag, szGroup);
1521
322
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffThumbData<(unsigned short)514, (Exiv2::IfdId)2>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1519
14.4k
TiffComponent::UniquePtr newTiffThumbData(uint16_t tag, IfdId group) {
1520
14.4k
  return std::make_unique<TiffDataEntry>(tag, group, szTag, szGroup);
1521
14.4k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffThumbData<(unsigned short)514, (Exiv2::IfdId)65>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1519
294
TiffComponent::UniquePtr newTiffThumbData(uint16_t tag, IfdId group) {
1520
294
  return std::make_unique<TiffDataEntry>(tag, group, szTag, szGroup);
1521
294
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffThumbData<(unsigned short)3, (Exiv2::IfdId)117>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1519
1.49k
TiffComponent::UniquePtr newTiffThumbData(uint16_t tag, IfdId group) {
1520
1.49k
  return std::make_unique<TiffDataEntry>(tag, group, szTag, szGroup);
1521
1.49k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffThumbData<(unsigned short)3, (Exiv2::IfdId)116>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1519
1.43k
TiffComponent::UniquePtr newTiffThumbData(uint16_t tag, IfdId group) {
1520
1.43k
  return std::make_unique<TiffDataEntry>(tag, group, szTag, szGroup);
1521
1.43k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffThumbData<(unsigned short)514, (Exiv2::IfdId)119>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1519
801
TiffComponent::UniquePtr newTiffThumbData(uint16_t tag, IfdId group) {
1520
801
  return std::make_unique<TiffDataEntry>(tag, group, szTag, szGroup);
1521
801
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffThumbData<(unsigned short)137, (Exiv2::IfdId)124>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1519
89
TiffComponent::UniquePtr newTiffThumbData(uint16_t tag, IfdId group) {
1520
89
  return std::make_unique<TiffDataEntry>(tag, group, szTag, szGroup);
1521
89
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffThumbData<(unsigned short)137, (Exiv2::IfdId)57>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1519
554
TiffComponent::UniquePtr newTiffThumbData(uint16_t tag, IfdId group) {
1520
554
  return std::make_unique<TiffDataEntry>(tag, group, szTag, szGroup);
1521
554
}
1522
1523
//! Function to create and initialize a new TIFF entry for a thumbnail (size)
1524
template <uint16_t dtTag, IfdId dtGroup>
1525
11.0k
TiffComponent::UniquePtr newTiffThumbSize(uint16_t tag, IfdId group) {
1526
11.0k
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1527
11.0k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffThumbSize<(unsigned short)273, (Exiv2::IfdId)2>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1525
357
TiffComponent::UniquePtr newTiffThumbSize(uint16_t tag, IfdId group) {
1526
357
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1527
357
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffThumbSize<(unsigned short)513, (Exiv2::IfdId)2>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1525
8.35k
TiffComponent::UniquePtr newTiffThumbSize(uint16_t tag, IfdId group) {
1526
8.35k
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1527
8.35k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffThumbSize<(unsigned short)513, (Exiv2::IfdId)65>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1525
424
TiffComponent::UniquePtr newTiffThumbSize(uint16_t tag, IfdId group) {
1526
424
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1527
424
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffThumbSize<(unsigned short)4, (Exiv2::IfdId)117>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1525
653
TiffComponent::UniquePtr newTiffThumbSize(uint16_t tag, IfdId group) {
1526
653
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1527
653
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffThumbSize<(unsigned short)4, (Exiv2::IfdId)116>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1525
631
TiffComponent::UniquePtr newTiffThumbSize(uint16_t tag, IfdId group) {
1526
631
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1527
631
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffThumbSize<(unsigned short)513, (Exiv2::IfdId)119>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1525
544
TiffComponent::UniquePtr newTiffThumbSize(uint16_t tag, IfdId group) {
1526
544
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1527
544
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffThumbSize<(unsigned short)136, (Exiv2::IfdId)124>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1525
63
TiffComponent::UniquePtr newTiffThumbSize(uint16_t tag, IfdId group) {
1526
63
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1527
63
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffThumbSize<(unsigned short)136, (Exiv2::IfdId)57>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1525
39
TiffComponent::UniquePtr newTiffThumbSize(uint16_t tag, IfdId group) {
1526
39
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1527
39
}
1528
1529
//! Function to create and initialize a new TIFF entry for image data
1530
template <uint16_t szTag, IfdId szGroup>
1531
70.7k
TiffComponent::UniquePtr newTiffImageData(uint16_t tag, IfdId group) {
1532
70.7k
  return std::make_unique<TiffImageEntry>(tag, group, szTag, szGroup);
1533
70.7k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageData<(unsigned short)279, (Exiv2::IfdId)1>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1531
3.27k
TiffComponent::UniquePtr newTiffImageData(uint16_t tag, IfdId group) {
1532
3.27k
  return std::make_unique<TiffImageEntry>(tag, group, szTag, szGroup);
1533
3.27k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageData<(unsigned short)325, (Exiv2::IfdId)1>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1531
623
TiffComponent::UniquePtr newTiffImageData(uint16_t tag, IfdId group) {
1532
623
  return std::make_unique<TiffImageEntry>(tag, group, szTag, szGroup);
1533
623
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageData<(unsigned short)514, (Exiv2::IfdId)1>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1531
12.3k
TiffComponent::UniquePtr newTiffImageData(uint16_t tag, IfdId group) {
1532
12.3k
  return std::make_unique<TiffImageEntry>(tag, group, szTag, szGroup);
1533
12.3k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageData<(unsigned short)279, (Exiv2::IfdId)9>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1531
1.17k
TiffComponent::UniquePtr newTiffImageData(uint16_t tag, IfdId group) {
1532
1.17k
  return std::make_unique<TiffImageEntry>(tag, group, szTag, szGroup);
1533
1.17k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageData<(unsigned short)325, (Exiv2::IfdId)9>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1531
289
TiffComponent::UniquePtr newTiffImageData(uint16_t tag, IfdId group) {
1532
289
  return std::make_unique<TiffImageEntry>(tag, group, szTag, szGroup);
1533
289
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageData<(unsigned short)514, (Exiv2::IfdId)9>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1531
11.5k
TiffComponent::UniquePtr newTiffImageData(uint16_t tag, IfdId group) {
1532
11.5k
  return std::make_unique<TiffImageEntry>(tag, group, szTag, szGroup);
1533
11.5k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageData<(unsigned short)279, (Exiv2::IfdId)10>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1531
1.19k
TiffComponent::UniquePtr newTiffImageData(uint16_t tag, IfdId group) {
1532
1.19k
  return std::make_unique<TiffImageEntry>(tag, group, szTag, szGroup);
1533
1.19k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageData<(unsigned short)325, (Exiv2::IfdId)10>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1531
630
TiffComponent::UniquePtr newTiffImageData(uint16_t tag, IfdId group) {
1532
630
  return std::make_unique<TiffImageEntry>(tag, group, szTag, szGroup);
1533
630
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageData<(unsigned short)514, (Exiv2::IfdId)10>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1531
9.01k
TiffComponent::UniquePtr newTiffImageData(uint16_t tag, IfdId group) {
1532
9.01k
  return std::make_unique<TiffImageEntry>(tag, group, szTag, szGroup);
1533
9.01k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageData<(unsigned short)279, (Exiv2::IfdId)11>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1531
1.15k
TiffComponent::UniquePtr newTiffImageData(uint16_t tag, IfdId group) {
1532
1.15k
  return std::make_unique<TiffImageEntry>(tag, group, szTag, szGroup);
1533
1.15k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageData<(unsigned short)325, (Exiv2::IfdId)11>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1531
563
TiffComponent::UniquePtr newTiffImageData(uint16_t tag, IfdId group) {
1532
563
  return std::make_unique<TiffImageEntry>(tag, group, szTag, szGroup);
1533
563
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageData<(unsigned short)514, (Exiv2::IfdId)11>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1531
8.77k
TiffComponent::UniquePtr newTiffImageData(uint16_t tag, IfdId group) {
1532
8.77k
  return std::make_unique<TiffImageEntry>(tag, group, szTag, szGroup);
1533
8.77k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageData<(unsigned short)279, (Exiv2::IfdId)12>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1531
820
TiffComponent::UniquePtr newTiffImageData(uint16_t tag, IfdId group) {
1532
820
  return std::make_unique<TiffImageEntry>(tag, group, szTag, szGroup);
1533
820
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageData<(unsigned short)325, (Exiv2::IfdId)12>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1531
343
TiffComponent::UniquePtr newTiffImageData(uint16_t tag, IfdId group) {
1532
343
  return std::make_unique<TiffImageEntry>(tag, group, szTag, szGroup);
1533
343
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageData<(unsigned short)514, (Exiv2::IfdId)12>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1531
4.34k
TiffComponent::UniquePtr newTiffImageData(uint16_t tag, IfdId group) {
1532
4.34k
  return std::make_unique<TiffImageEntry>(tag, group, szTag, szGroup);
1533
4.34k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageData<(unsigned short)279, (Exiv2::IfdId)13>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1531
243
TiffComponent::UniquePtr newTiffImageData(uint16_t tag, IfdId group) {
1532
243
  return std::make_unique<TiffImageEntry>(tag, group, szTag, szGroup);
1533
243
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageData<(unsigned short)325, (Exiv2::IfdId)13>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1531
678
TiffComponent::UniquePtr newTiffImageData(uint16_t tag, IfdId group) {
1532
678
  return std::make_unique<TiffImageEntry>(tag, group, szTag, szGroup);
1533
678
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageData<(unsigned short)514, (Exiv2::IfdId)13>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1531
1.50k
TiffComponent::UniquePtr newTiffImageData(uint16_t tag, IfdId group) {
1532
1.50k
  return std::make_unique<TiffImageEntry>(tag, group, szTag, szGroup);
1533
1.50k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageData<(unsigned short)279, (Exiv2::IfdId)14>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1531
305
TiffComponent::UniquePtr newTiffImageData(uint16_t tag, IfdId group) {
1532
305
  return std::make_unique<TiffImageEntry>(tag, group, szTag, szGroup);
1533
305
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageData<(unsigned short)325, (Exiv2::IfdId)14>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1531
524
TiffComponent::UniquePtr newTiffImageData(uint16_t tag, IfdId group) {
1532
524
  return std::make_unique<TiffImageEntry>(tag, group, szTag, szGroup);
1533
524
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageData<(unsigned short)514, (Exiv2::IfdId)14>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1531
2.37k
TiffComponent::UniquePtr newTiffImageData(uint16_t tag, IfdId group) {
1532
2.37k
  return std::make_unique<TiffImageEntry>(tag, group, szTag, szGroup);
1533
2.37k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageData<(unsigned short)279, (Exiv2::IfdId)15>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1531
417
TiffComponent::UniquePtr newTiffImageData(uint16_t tag, IfdId group) {
1532
417
  return std::make_unique<TiffImageEntry>(tag, group, szTag, szGroup);
1533
417
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageData<(unsigned short)325, (Exiv2::IfdId)15>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1531
549
TiffComponent::UniquePtr newTiffImageData(uint16_t tag, IfdId group) {
1532
549
  return std::make_unique<TiffImageEntry>(tag, group, szTag, szGroup);
1533
549
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageData<(unsigned short)514, (Exiv2::IfdId)15>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1531
2.71k
TiffComponent::UniquePtr newTiffImageData(uint16_t tag, IfdId group) {
1532
2.71k
  return std::make_unique<TiffImageEntry>(tag, group, szTag, szGroup);
1533
2.71k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageData<(unsigned short)279, (Exiv2::IfdId)16>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1531
349
TiffComponent::UniquePtr newTiffImageData(uint16_t tag, IfdId group) {
1532
349
  return std::make_unique<TiffImageEntry>(tag, group, szTag, szGroup);
1533
349
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageData<(unsigned short)325, (Exiv2::IfdId)16>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1531
228
TiffComponent::UniquePtr newTiffImageData(uint16_t tag, IfdId group) {
1532
228
  return std::make_unique<TiffImageEntry>(tag, group, szTag, szGroup);
1533
228
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageData<(unsigned short)514, (Exiv2::IfdId)16>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1531
712
TiffComponent::UniquePtr newTiffImageData(uint16_t tag, IfdId group) {
1532
712
  return std::make_unique<TiffImageEntry>(tag, group, szTag, szGroup);
1533
712
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageData<(unsigned short)279, (Exiv2::IfdId)17>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1531
254
TiffComponent::UniquePtr newTiffImageData(uint16_t tag, IfdId group) {
1532
254
  return std::make_unique<TiffImageEntry>(tag, group, szTag, szGroup);
1533
254
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageData<(unsigned short)325, (Exiv2::IfdId)17>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1531
399
TiffComponent::UniquePtr newTiffImageData(uint16_t tag, IfdId group) {
1532
399
  return std::make_unique<TiffImageEntry>(tag, group, szTag, szGroup);
1533
399
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageData<(unsigned short)514, (Exiv2::IfdId)17>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1531
305
TiffComponent::UniquePtr newTiffImageData(uint16_t tag, IfdId group) {
1532
305
  return std::make_unique<TiffImageEntry>(tag, group, szTag, szGroup);
1533
305
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageData<(unsigned short)325, (Exiv2::IfdId)2>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1531
224
TiffComponent::UniquePtr newTiffImageData(uint16_t tag, IfdId group) {
1532
224
  return std::make_unique<TiffImageEntry>(tag, group, szTag, szGroup);
1533
224
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageData<(unsigned short)279, (Exiv2::IfdId)18>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1531
79
TiffComponent::UniquePtr newTiffImageData(uint16_t tag, IfdId group) {
1532
79
  return std::make_unique<TiffImageEntry>(tag, group, szTag, szGroup);
1533
79
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageData<(unsigned short)325, (Exiv2::IfdId)18>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1531
73
TiffComponent::UniquePtr newTiffImageData(uint16_t tag, IfdId group) {
1532
73
  return std::make_unique<TiffImageEntry>(tag, group, szTag, szGroup);
1533
73
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageData<(unsigned short)514, (Exiv2::IfdId)18>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1531
323
TiffComponent::UniquePtr newTiffImageData(uint16_t tag, IfdId group) {
1532
323
  return std::make_unique<TiffImageEntry>(tag, group, szTag, szGroup);
1533
323
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageData<(unsigned short)279, (Exiv2::IfdId)3>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1531
81
TiffComponent::UniquePtr newTiffImageData(uint16_t tag, IfdId group) {
1532
81
  return std::make_unique<TiffImageEntry>(tag, group, szTag, szGroup);
1533
81
}
Unexecuted instantiation: std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageData<(unsigned short)325, (Exiv2::IfdId)3>(unsigned short, Exiv2::IfdId)
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageData<(unsigned short)514, (Exiv2::IfdId)3>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1531
292
TiffComponent::UniquePtr newTiffImageData(uint16_t tag, IfdId group) {
1532
292
  return std::make_unique<TiffImageEntry>(tag, group, szTag, szGroup);
1533
292
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageData<(unsigned short)279, (Exiv2::IfdId)4>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1531
102
TiffComponent::UniquePtr newTiffImageData(uint16_t tag, IfdId group) {
1532
102
  return std::make_unique<TiffImageEntry>(tag, group, szTag, szGroup);
1533
102
}
Unexecuted instantiation: std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageData<(unsigned short)325, (Exiv2::IfdId)4>(unsigned short, Exiv2::IfdId)
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageData<(unsigned short)514, (Exiv2::IfdId)4>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1531
81
TiffComponent::UniquePtr newTiffImageData(uint16_t tag, IfdId group) {
1532
81
  return std::make_unique<TiffImageEntry>(tag, group, szTag, szGroup);
1533
81
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageData<(unsigned short)258, (Exiv2::IfdId)99>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1531
1.87k
TiffComponent::UniquePtr newTiffImageData(uint16_t tag, IfdId group) {
1532
1.87k
  return std::make_unique<TiffImageEntry>(tag, group, szTag, szGroup);
1533
1.87k
}
1534
1535
//! Function to create and initialize a new TIFF entry for image data (size)
1536
template <uint16_t dtTag, IfdId dtGroup>
1537
81.7k
TiffComponent::UniquePtr newTiffImageSize(uint16_t tag, IfdId group) {
1538
  // Todo: Same as newTiffThumbSize - consolidate (rename)?
1539
81.7k
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1540
81.7k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageSize<(unsigned short)273, (Exiv2::IfdId)1>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1537
3.25k
TiffComponent::UniquePtr newTiffImageSize(uint16_t tag, IfdId group) {
1538
  // Todo: Same as newTiffThumbSize - consolidate (rename)?
1539
3.25k
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1540
3.25k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageSize<(unsigned short)324, (Exiv2::IfdId)1>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1537
1.77k
TiffComponent::UniquePtr newTiffImageSize(uint16_t tag, IfdId group) {
1538
  // Todo: Same as newTiffThumbSize - consolidate (rename)?
1539
1.77k
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1540
1.77k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageSize<(unsigned short)513, (Exiv2::IfdId)1>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1537
11.8k
TiffComponent::UniquePtr newTiffImageSize(uint16_t tag, IfdId group) {
1538
  // Todo: Same as newTiffThumbSize - consolidate (rename)?
1539
11.8k
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1540
11.8k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageSize<(unsigned short)273, (Exiv2::IfdId)9>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1537
1.38k
TiffComponent::UniquePtr newTiffImageSize(uint16_t tag, IfdId group) {
1538
  // Todo: Same as newTiffThumbSize - consolidate (rename)?
1539
1.38k
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1540
1.38k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageSize<(unsigned short)324, (Exiv2::IfdId)9>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1537
749
TiffComponent::UniquePtr newTiffImageSize(uint16_t tag, IfdId group) {
1538
  // Todo: Same as newTiffThumbSize - consolidate (rename)?
1539
749
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1540
749
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageSize<(unsigned short)513, (Exiv2::IfdId)9>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1537
11.6k
TiffComponent::UniquePtr newTiffImageSize(uint16_t tag, IfdId group) {
1538
  // Todo: Same as newTiffThumbSize - consolidate (rename)?
1539
11.6k
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1540
11.6k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageSize<(unsigned short)273, (Exiv2::IfdId)10>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1537
1.50k
TiffComponent::UniquePtr newTiffImageSize(uint16_t tag, IfdId group) {
1538
  // Todo: Same as newTiffThumbSize - consolidate (rename)?
1539
1.50k
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1540
1.50k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageSize<(unsigned short)324, (Exiv2::IfdId)10>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1537
1.36k
TiffComponent::UniquePtr newTiffImageSize(uint16_t tag, IfdId group) {
1538
  // Todo: Same as newTiffThumbSize - consolidate (rename)?
1539
1.36k
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1540
1.36k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageSize<(unsigned short)513, (Exiv2::IfdId)10>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1537
11.3k
TiffComponent::UniquePtr newTiffImageSize(uint16_t tag, IfdId group) {
1538
  // Todo: Same as newTiffThumbSize - consolidate (rename)?
1539
11.3k
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1540
11.3k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageSize<(unsigned short)273, (Exiv2::IfdId)11>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1537
1.63k
TiffComponent::UniquePtr newTiffImageSize(uint16_t tag, IfdId group) {
1538
  // Todo: Same as newTiffThumbSize - consolidate (rename)?
1539
1.63k
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1540
1.63k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageSize<(unsigned short)324, (Exiv2::IfdId)11>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1537
1.02k
TiffComponent::UniquePtr newTiffImageSize(uint16_t tag, IfdId group) {
1538
  // Todo: Same as newTiffThumbSize - consolidate (rename)?
1539
1.02k
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1540
1.02k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageSize<(unsigned short)513, (Exiv2::IfdId)11>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1537
8.31k
TiffComponent::UniquePtr newTiffImageSize(uint16_t tag, IfdId group) {
1538
  // Todo: Same as newTiffThumbSize - consolidate (rename)?
1539
8.31k
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1540
8.31k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageSize<(unsigned short)273, (Exiv2::IfdId)12>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1537
1.08k
TiffComponent::UniquePtr newTiffImageSize(uint16_t tag, IfdId group) {
1538
  // Todo: Same as newTiffThumbSize - consolidate (rename)?
1539
1.08k
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1540
1.08k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageSize<(unsigned short)324, (Exiv2::IfdId)12>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1537
632
TiffComponent::UniquePtr newTiffImageSize(uint16_t tag, IfdId group) {
1538
  // Todo: Same as newTiffThumbSize - consolidate (rename)?
1539
632
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1540
632
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageSize<(unsigned short)513, (Exiv2::IfdId)12>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1537
5.68k
TiffComponent::UniquePtr newTiffImageSize(uint16_t tag, IfdId group) {
1538
  // Todo: Same as newTiffThumbSize - consolidate (rename)?
1539
5.68k
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1540
5.68k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageSize<(unsigned short)273, (Exiv2::IfdId)13>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1537
368
TiffComponent::UniquePtr newTiffImageSize(uint16_t tag, IfdId group) {
1538
  // Todo: Same as newTiffThumbSize - consolidate (rename)?
1539
368
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1540
368
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageSize<(unsigned short)324, (Exiv2::IfdId)13>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1537
326
TiffComponent::UniquePtr newTiffImageSize(uint16_t tag, IfdId group) {
1538
  // Todo: Same as newTiffThumbSize - consolidate (rename)?
1539
326
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1540
326
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageSize<(unsigned short)513, (Exiv2::IfdId)13>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1537
2.87k
TiffComponent::UniquePtr newTiffImageSize(uint16_t tag, IfdId group) {
1538
  // Todo: Same as newTiffThumbSize - consolidate (rename)?
1539
2.87k
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1540
2.87k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageSize<(unsigned short)273, (Exiv2::IfdId)14>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1537
492
TiffComponent::UniquePtr newTiffImageSize(uint16_t tag, IfdId group) {
1538
  // Todo: Same as newTiffThumbSize - consolidate (rename)?
1539
492
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1540
492
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageSize<(unsigned short)324, (Exiv2::IfdId)14>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1537
474
TiffComponent::UniquePtr newTiffImageSize(uint16_t tag, IfdId group) {
1538
  // Todo: Same as newTiffThumbSize - consolidate (rename)?
1539
474
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1540
474
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageSize<(unsigned short)513, (Exiv2::IfdId)14>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1537
2.31k
TiffComponent::UniquePtr newTiffImageSize(uint16_t tag, IfdId group) {
1538
  // Todo: Same as newTiffThumbSize - consolidate (rename)?
1539
2.31k
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1540
2.31k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageSize<(unsigned short)273, (Exiv2::IfdId)15>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1537
672
TiffComponent::UniquePtr newTiffImageSize(uint16_t tag, IfdId group) {
1538
  // Todo: Same as newTiffThumbSize - consolidate (rename)?
1539
672
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1540
672
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageSize<(unsigned short)324, (Exiv2::IfdId)15>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1537
1.01k
TiffComponent::UniquePtr newTiffImageSize(uint16_t tag, IfdId group) {
1538
  // Todo: Same as newTiffThumbSize - consolidate (rename)?
1539
1.01k
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1540
1.01k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageSize<(unsigned short)513, (Exiv2::IfdId)15>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1537
3.63k
TiffComponent::UniquePtr newTiffImageSize(uint16_t tag, IfdId group) {
1538
  // Todo: Same as newTiffThumbSize - consolidate (rename)?
1539
3.63k
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1540
3.63k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageSize<(unsigned short)273, (Exiv2::IfdId)16>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1537
247
TiffComponent::UniquePtr newTiffImageSize(uint16_t tag, IfdId group) {
1538
  // Todo: Same as newTiffThumbSize - consolidate (rename)?
1539
247
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1540
247
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageSize<(unsigned short)324, (Exiv2::IfdId)16>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1537
555
TiffComponent::UniquePtr newTiffImageSize(uint16_t tag, IfdId group) {
1538
  // Todo: Same as newTiffThumbSize - consolidate (rename)?
1539
555
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1540
555
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageSize<(unsigned short)513, (Exiv2::IfdId)16>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1537
1.59k
TiffComponent::UniquePtr newTiffImageSize(uint16_t tag, IfdId group) {
1538
  // Todo: Same as newTiffThumbSize - consolidate (rename)?
1539
1.59k
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1540
1.59k
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageSize<(unsigned short)273, (Exiv2::IfdId)17>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1537
248
TiffComponent::UniquePtr newTiffImageSize(uint16_t tag, IfdId group) {
1538
  // Todo: Same as newTiffThumbSize - consolidate (rename)?
1539
248
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1540
248
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageSize<(unsigned short)324, (Exiv2::IfdId)17>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1537
322
TiffComponent::UniquePtr newTiffImageSize(uint16_t tag, IfdId group) {
1538
  // Todo: Same as newTiffThumbSize - consolidate (rename)?
1539
322
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1540
322
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageSize<(unsigned short)513, (Exiv2::IfdId)17>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1537
792
TiffComponent::UniquePtr newTiffImageSize(uint16_t tag, IfdId group) {
1538
  // Todo: Same as newTiffThumbSize - consolidate (rename)?
1539
792
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1540
792
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageSize<(unsigned short)324, (Exiv2::IfdId)2>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1537
249
TiffComponent::UniquePtr newTiffImageSize(uint16_t tag, IfdId group) {
1538
  // Todo: Same as newTiffThumbSize - consolidate (rename)?
1539
249
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1540
249
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageSize<(unsigned short)273, (Exiv2::IfdId)18>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1537
229
TiffComponent::UniquePtr newTiffImageSize(uint16_t tag, IfdId group) {
1538
  // Todo: Same as newTiffThumbSize - consolidate (rename)?
1539
229
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1540
229
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageSize<(unsigned short)324, (Exiv2::IfdId)18>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1537
248
TiffComponent::UniquePtr newTiffImageSize(uint16_t tag, IfdId group) {
1538
  // Todo: Same as newTiffThumbSize - consolidate (rename)?
1539
248
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1540
248
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageSize<(unsigned short)513, (Exiv2::IfdId)18>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1537
496
TiffComponent::UniquePtr newTiffImageSize(uint16_t tag, IfdId group) {
1538
  // Todo: Same as newTiffThumbSize - consolidate (rename)?
1539
496
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1540
496
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageSize<(unsigned short)273, (Exiv2::IfdId)3>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1537
205
TiffComponent::UniquePtr newTiffImageSize(uint16_t tag, IfdId group) {
1538
  // Todo: Same as newTiffThumbSize - consolidate (rename)?
1539
205
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1540
205
}
Unexecuted instantiation: std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageSize<(unsigned short)324, (Exiv2::IfdId)3>(unsigned short, Exiv2::IfdId)
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageSize<(unsigned short)513, (Exiv2::IfdId)3>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1537
252
TiffComponent::UniquePtr newTiffImageSize(uint16_t tag, IfdId group) {
1538
  // Todo: Same as newTiffThumbSize - consolidate (rename)?
1539
252
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1540
252
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageSize<(unsigned short)273, (Exiv2::IfdId)4>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1537
204
TiffComponent::UniquePtr newTiffImageSize(uint16_t tag, IfdId group) {
1538
  // Todo: Same as newTiffThumbSize - consolidate (rename)?
1539
204
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1540
204
}
Unexecuted instantiation: std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageSize<(unsigned short)324, (Exiv2::IfdId)4>(unsigned short, Exiv2::IfdId)
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageSize<(unsigned short)513, (Exiv2::IfdId)4>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1537
265
TiffComponent::UniquePtr newTiffImageSize(uint16_t tag, IfdId group) {
1538
  // Todo: Same as newTiffThumbSize - consolidate (rename)?
1539
265
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1540
265
}
std::__1::unique_ptr<Exiv2::Internal::TiffComponent, std::__1::default_delete<Exiv2::Internal::TiffComponent> > Exiv2::Internal::newTiffImageSize<(unsigned short)257, (Exiv2::IfdId)99>(unsigned short, Exiv2::IfdId)
Line
Count
Source
1537
318
TiffComponent::UniquePtr newTiffImageSize(uint16_t tag, IfdId group) {
1538
  // Todo: Same as newTiffThumbSize - consolidate (rename)?
1539
318
  return std::make_unique<TiffSizeEntry>(tag, group, dtTag, dtGroup);
1540
318
}
1541
1542
}  // namespace Internal
1543
}  // namespace Exiv2
1544
1545
#endif  // #ifndef TIFFCOMPOSITE_INT_HPP_