diff --git a/include/exiv2/asfvideo.hpp b/include/exiv2/asfvideo.hpp index a8b3824a1f..3719c7e92d 100644 --- a/include/exiv2/asfvideo.hpp +++ b/include/exiv2/asfvideo.hpp @@ -39,7 +39,7 @@ class EXIV2API AsfVideo : public Image { method to get a temporary reference. */ - explicit AsfVideo(BasicIo::UniquePtr io); + explicit AsfVideo(std::unique_ptr io); //@} //! @name Manipulators @@ -99,7 +99,7 @@ class EXIV2API AsfVideo : public Image { uint64_t remaining_size_{}; public: - explicit HeaderReader(const BasicIo::UniquePtr& io); + explicit HeaderReader(const std::unique_ptr& io); [[nodiscard]] uint64_t getSize() const { return size_; @@ -178,7 +178,7 @@ class EXIV2API AsfVideo : public Image { Caller owns the returned object and the auto-pointer ensures that it will be deleted. */ -EXIV2API Image::UniquePtr newAsfInstance(BasicIo::UniquePtr io, bool create); +EXIV2API Image::UniquePtr newAsfInstance(std::unique_ptr io, bool create); //! Check if the file iIo is a Windows Asf Video. EXIV2API bool isAsfType(BasicIo& iIo, bool advance); diff --git a/include/exiv2/basicio.hpp b/include/exiv2/basicio.hpp index a96a166528..d8d9a05320 100644 --- a/include/exiv2/basicio.hpp +++ b/include/exiv2/basicio.hpp @@ -3,8 +3,6 @@ #ifndef EXIV2_BASICIO_HPP #define EXIV2_BASICIO_HPP -#include "config.h" - // ***************************************************************************** #include "exiv2lib_export.h" diff --git a/include/exiv2/bmffimage.hpp b/include/exiv2/bmffimage.hpp index 849d728747..f00cb54505 100644 --- a/include/exiv2/bmffimage.hpp +++ b/include/exiv2/bmffimage.hpp @@ -3,8 +3,6 @@ #ifndef EXIV2_BMFFIMAGE_HPP #define EXIV2_BMFFIMAGE_HPP -#include "config.h" - // ***************************************************************************** #include "exiv2lib_export.h" @@ -57,7 +55,7 @@ class EXIV2API BmffImage : public Image { @param create Specifies if an existing image should be read (false) or if a new file should be created (true). */ - BmffImage(BasicIo::UniquePtr io, bool create, size_t max_box_depth = 1000); + BmffImage(std::unique_ptr io, bool create, size_t max_box_depth = 1000); //@} //@{ @@ -170,7 +168,7 @@ class EXIV2API BmffImage : public Image { Caller owns the returned object and the auto-pointer ensures that it will be deleted. */ -EXIV2API Image::UniquePtr newBmffInstance(BasicIo::UniquePtr io, bool create); +EXIV2API Image::UniquePtr newBmffInstance(std::unique_ptr io, bool create); //! Check if the file iIo is a BMFF image. EXIV2API bool isBmffType(BasicIo& iIo, bool advance); diff --git a/include/exiv2/bmpimage.hpp b/include/exiv2/bmpimage.hpp index a607f94afd..5501a2c3f0 100644 --- a/include/exiv2/bmpimage.hpp +++ b/include/exiv2/bmpimage.hpp @@ -40,7 +40,7 @@ class EXIV2API BmpImage : public Image { instance after it is passed to this method. Use the Image::io() method to get a temporary reference. */ - explicit BmpImage(BasicIo::UniquePtr io); + explicit BmpImage(std::unique_ptr io); //@} //! @name Manipulators @@ -76,7 +76,7 @@ class EXIV2API BmpImage : public Image { Caller owns the returned object and the auto-pointer ensures that it will be deleted. */ -EXIV2API Image::UniquePtr newBmpInstance(BasicIo::UniquePtr io, bool create); +EXIV2API Image::UniquePtr newBmpInstance(std::unique_ptr io, bool create); //! Check if the file iIo is a Windows Bitmap image. EXIV2API bool isBmpType(BasicIo& iIo, bool advance); diff --git a/include/exiv2/cr2image.hpp b/include/exiv2/cr2image.hpp index 4a3151dd88..7ab762f628 100644 --- a/include/exiv2/cr2image.hpp +++ b/include/exiv2/cr2image.hpp @@ -43,7 +43,7 @@ class EXIV2API Cr2Image : public Image { @param create Specifies if an existing image should be read (false) or if a new file should be created (true). */ - Cr2Image(BasicIo::UniquePtr io, bool create); + Cr2Image(std::unique_ptr io, bool create); //@} //! @name Manipulators @@ -104,7 +104,7 @@ class EXIV2API Cr2Parser { Caller owns the returned object and the auto-pointer ensures that it will be deleted. */ -EXIV2API Image::UniquePtr newCr2Instance(BasicIo::UniquePtr io, bool create); +EXIV2API Image::UniquePtr newCr2Instance(std::unique_ptr io, bool create); //! Check if the file iIo is a CR2 image. EXIV2API bool isCr2Type(BasicIo& iIo, bool advance); diff --git a/include/exiv2/crwimage.hpp b/include/exiv2/crwimage.hpp index 2d3c26352c..16d541cddc 100644 --- a/include/exiv2/crwimage.hpp +++ b/include/exiv2/crwimage.hpp @@ -52,7 +52,7 @@ class EXIV2API CrwImage : public Image { @param create Specifies if an existing image should be read (false) or if a new file should be created (true). */ - CrwImage(BasicIo::UniquePtr io, bool create); + CrwImage(std::unique_ptr io, bool create); //@} //! @name Manipulators @@ -123,7 +123,7 @@ class EXIV2API CrwParser { Caller owns the returned object and the auto-pointer ensures that it will be deleted. */ -EXIV2API Image::UniquePtr newCrwInstance(BasicIo::UniquePtr io, bool create); +EXIV2API Image::UniquePtr newCrwInstance(std::unique_ptr io, bool create); //! Check if the file iIo is a CRW image. EXIV2API bool isCrwType(BasicIo& iIo, bool advance); diff --git a/include/exiv2/datasets.hpp b/include/exiv2/datasets.hpp index ce959962ac..f103597f4c 100644 --- a/include/exiv2/datasets.hpp +++ b/include/exiv2/datasets.hpp @@ -13,6 +13,8 @@ // included header files #include "metadatum.hpp" +#include + // ***************************************************************************** // namespace extensions namespace Exiv2 { diff --git a/include/exiv2/epsimage.hpp b/include/exiv2/epsimage.hpp index 27fb2db723..032778b089 100644 --- a/include/exiv2/epsimage.hpp +++ b/include/exiv2/epsimage.hpp @@ -54,7 +54,7 @@ class EXIV2API EpsImage : public Image { @param create Specifies if an existing image should be read (false) or if a new file should be created (true). */ - EpsImage(BasicIo::UniquePtr io, bool create); + EpsImage(std::unique_ptr io, bool create); //@} //! @name Manipulators @@ -84,7 +84,7 @@ class EXIV2API EpsImage : public Image { Caller owns the returned object and the auto-pointer ensures that it will be deleted. */ -EXIV2API Image::UniquePtr newEpsInstance(BasicIo::UniquePtr io, bool create); +EXIV2API Image::UniquePtr newEpsInstance(std::unique_ptr io, bool create); //! Check if the file iIo is a EPS image. EXIV2API bool isEpsType(BasicIo& iIo, bool advance); diff --git a/include/exiv2/exif.hpp b/include/exiv2/exif.hpp index 480c3f2185..ea9f4d2a13 100644 --- a/include/exiv2/exif.hpp +++ b/include/exiv2/exif.hpp @@ -13,12 +13,9 @@ // ***************************************************************************** #include "exiv2lib_export.h" -#include "config.h" - // included header files #include "config.h" #include "metadatum.hpp" -#include "tags.hpp" // + standard includes #include @@ -33,6 +30,8 @@ namespace Exiv2 { // ***************************************************************************** // class declarations class ExifData; +class ExifKey; +enum class IfdId : uint32_t; // ***************************************************************************** // class definitions @@ -63,7 +62,7 @@ class EXIV2API Exifdatum : public Metadatum { //! Copy constructor Exifdatum(const Exifdatum& rhs); //! Destructor - ~Exifdatum() override = default; + ~Exifdatum() override; //@} //! @name Manipulators @@ -180,7 +179,7 @@ class EXIV2API Exifdatum : public Metadatum { [[nodiscard]] int64_t toInt64(size_t n = 0) const override; [[nodiscard]] float toFloat(size_t n = 0) const override; [[nodiscard]] Rational toRational(size_t n = 0) const override; - [[nodiscard]] Value::UniquePtr getValue() const override; + [[nodiscard]] std::unique_ptr getValue() const override; [[nodiscard]] const Value& value() const override; //! Return the size of the data area. [[nodiscard]] size_t sizeDataArea() const; @@ -201,8 +200,8 @@ class EXIV2API Exifdatum : public Metadatum { private: // DATA - ExifKey::UniquePtr key_; //!< Key - Value::UniquePtr value_; //!< Value + std::unique_ptr key_; //!< Key + std::unique_ptr value_; //!< Value }; // class Exifdatum diff --git a/include/exiv2/gifimage.hpp b/include/exiv2/gifimage.hpp index 443c256d2e..704e50172c 100644 --- a/include/exiv2/gifimage.hpp +++ b/include/exiv2/gifimage.hpp @@ -35,7 +35,7 @@ class EXIV2API GifImage : public Image { instance after it is passed to this method. Use the Image::io() method to get a temporary reference. */ - explicit GifImage(BasicIo::UniquePtr io); + explicit GifImage(std::unique_ptr io); //@} //! @name Manipulators @@ -80,7 +80,7 @@ class EXIV2API GifImage : public Image { Caller owns the returned object and the auto-pointer ensures that it will be deleted. */ -EXIV2API Image::UniquePtr newGifInstance(BasicIo::UniquePtr io, bool create); +EXIV2API Image::UniquePtr newGifInstance(std::unique_ptr io, bool create); //! Check if the file iIo is a GIF image. EXIV2API bool isGifType(BasicIo& iIo, bool advance); diff --git a/include/exiv2/image.hpp b/include/exiv2/image.hpp index 00bfe40c6c..44bfe2e4a0 100644 --- a/include/exiv2/image.hpp +++ b/include/exiv2/image.hpp @@ -3,15 +3,12 @@ #ifndef EXIV2_IMAGE_HPP #define EXIV2_IMAGE_HPP -#include "config.h" - // ***************************************************************************** #include "exiv2lib_export.h" // included header files #include "config.h" -#include "basicio.hpp" #include "exif.hpp" #include "image_types.hpp" #include "iptc.hpp" @@ -20,6 +17,7 @@ // ***************************************************************************** // namespace extensions namespace Exiv2 { +class BasicIo; // ***************************************************************************** // class definitions @@ -63,9 +61,9 @@ class EXIV2API Image { metadata types and an auto-pointer that owns an IO instance. See subclass constructor doc. */ - Image(ImageType type, uint16_t supportedMetadata, BasicIo::UniquePtr io); + Image(ImageType type, uint16_t supportedMetadata, std::unique_ptr io); //! Virtual Destructor - virtual ~Image() = default; + virtual ~Image(); //@} //! @name Manipulators @@ -475,7 +473,7 @@ class EXIV2API Image { protected: // DATA - BasicIo::UniquePtr io_; //!< Image data IO pointer + std::unique_ptr io_; //!< Image data IO pointer ExifData exifData_; //!< Exif data container IptcData iptcData_; //!< IPTC data container XmpData xmpData_; //!< XMP data container @@ -509,7 +507,7 @@ class EXIV2API Image { }; // class Image //! Type for function pointer that creates new Image instances -using NewInstanceFct = Image::UniquePtr (*)(BasicIo::UniquePtr io, bool create); +using NewInstanceFct = Image::UniquePtr (*)(std::unique_ptr io, bool create); //! Type for function pointer that checks image types using IsThisTypeFct = bool (*)(BasicIo& iIo, bool advance); @@ -536,9 +534,9 @@ class EXIV2API ImageFactory { @throw Error If the file is not found or it is unable to connect to the server to read the remote file. */ - static BasicIo::UniquePtr createIo(const std::string& path, bool useCurl = true); + static std::unique_ptr createIo(const std::string& path, bool useCurl = true); #ifdef _WIN32 - static BasicIo::UniquePtr createIo(const std::wstring& path); + static std::unique_ptr createIo(const std::wstring& path); #endif /*! @brief Create an Image subclass of the appropriate type by reading @@ -586,7 +584,7 @@ class EXIV2API ImageFactory { determined, the pointer is 0. @throw Error If opening the BasicIo fails */ - static Image::UniquePtr open(BasicIo::UniquePtr io); + static Image::UniquePtr open(std::unique_ptr io); /*! @brief Create an Image subclass of the requested type by creating a new image file. If the file already exists, it will be overwritten. @@ -622,7 +620,7 @@ class EXIV2API ImageFactory { type. If the image type is not supported, the pointer is 0. */ - static Image::UniquePtr create(ImageType type, BasicIo::UniquePtr io); + static Image::UniquePtr create(ImageType type, std::unique_ptr io); /*! @brief Returns the image type of the provided file. @param path %Image file. The contents of the file are tested to diff --git a/include/exiv2/iptc.hpp b/include/exiv2/iptc.hpp index 8202325521..350864aae2 100644 --- a/include/exiv2/iptc.hpp +++ b/include/exiv2/iptc.hpp @@ -50,7 +50,7 @@ class EXIV2API Iptcdatum : public Metadatum { //! Copy constructor Iptcdatum(const Iptcdatum& rhs); //! Destructor - ~Iptcdatum() override = default; + ~Iptcdatum() override; //@} //! @name Manipulators @@ -127,14 +127,14 @@ class EXIV2API Iptcdatum : public Metadatum { [[nodiscard]] int64_t toInt64(size_t n = 0) const override; [[nodiscard]] float toFloat(size_t n = 0) const override; [[nodiscard]] Rational toRational(size_t n = 0) const override; - [[nodiscard]] Value::UniquePtr getValue() const override; + [[nodiscard]] std::unique_ptr getValue() const override; [[nodiscard]] const Value& value() const override; //@} private: // DATA - IptcKey::UniquePtr key_; //!< Key - Value::UniquePtr value_; //!< Value + IptcKey::UniquePtr key_; //!< Key + std::unique_ptr value_; //!< Value }; // class Iptcdatum diff --git a/include/exiv2/jp2image.hpp b/include/exiv2/jp2image.hpp index 6ee14ec933..f559eb1351 100644 --- a/include/exiv2/jp2image.hpp +++ b/include/exiv2/jp2image.hpp @@ -36,7 +36,7 @@ class EXIV2API Jp2Image : public Image { @param create Specifies if an existing image should be read (false) or if a new file should be created (true). */ - Jp2Image(BasicIo::UniquePtr io, bool create); + Jp2Image(std::unique_ptr io, bool create); //@} //! @name Manipulators @@ -97,7 +97,7 @@ class EXIV2API Jp2Image : public Image { Caller owns the returned object and the auto-pointer ensures that it will be deleted. */ -EXIV2API Image::UniquePtr newJp2Instance(BasicIo::UniquePtr io, bool create); +EXIV2API Image::UniquePtr newJp2Instance(std::unique_ptr io, bool create); //! Check if the file iIo is a JPEG-2000 image. EXIV2API bool isJp2Type(BasicIo& iIo, bool advance); diff --git a/include/exiv2/jpgimage.hpp b/include/exiv2/jpgimage.hpp index 3278e6f4bb..eaab3dd6d8 100644 --- a/include/exiv2/jpgimage.hpp +++ b/include/exiv2/jpgimage.hpp @@ -6,12 +6,12 @@ #include "exiv2lib_export.h" // included header files -#include "error.hpp" #include "image.hpp" // ***************************************************************************** // namespace extensions namespace Exiv2 { +enum class ErrorCode; // ***************************************************************************** // class definitions @@ -48,7 +48,7 @@ class EXIV2API JpegBase : public Image { valid image of the calling subclass. @param dataSize Size of initData in bytes. */ - JpegBase(ImageType type, BasicIo::UniquePtr io, bool create, const byte initData[], size_t dataSize); + JpegBase(ImageType type, std::unique_ptr io, bool create, const byte initData[], size_t dataSize); //@} //! @name Accessors @@ -151,7 +151,7 @@ class EXIV2API JpegImage : public JpegBase { @param create Specifies if an existing image should be read (false) or if a new file should be created (true). */ - JpegImage(BasicIo::UniquePtr io, bool create); + JpegImage(std::unique_ptr io, bool create); //@} //! @name Accessors //@{ @@ -215,7 +215,7 @@ class EXIV2API ExvImage : public JpegBase { @param create Specifies if an existing image should be read (false) or if a new file should be created (true). */ - ExvImage(BasicIo::UniquePtr io, bool create); + ExvImage(std::unique_ptr io, bool create); //@} //! @name Accessors //@{ @@ -249,7 +249,7 @@ class EXIV2API ExvImage : public JpegBase { Caller owns the returned object and the auto-pointer ensures that it will be deleted. */ -EXIV2API Image::UniquePtr newJpegInstance(BasicIo::UniquePtr io, bool create); +EXIV2API Image::UniquePtr newJpegInstance(std::unique_ptr io, bool create); //! Check if the file iIo is a JPEG image. EXIV2API bool isJpegType(BasicIo& iIo, bool advance); /*! @@ -257,7 +257,7 @@ EXIV2API bool isJpegType(BasicIo& iIo, bool advance); Caller owns the returned object and the auto-pointer ensures that it will be deleted. */ -EXIV2API Image::UniquePtr newExvInstance(BasicIo::UniquePtr io, bool create); +EXIV2API Image::UniquePtr newExvInstance(std::unique_ptr io, bool create); //! Check if the file iIo is an EXV file EXIV2API bool isExvType(BasicIo& iIo, bool advance); diff --git a/include/exiv2/matroskavideo.hpp b/include/exiv2/matroskavideo.hpp index 1101bafa80..9b0ed37528 100644 --- a/include/exiv2/matroskavideo.hpp +++ b/include/exiv2/matroskavideo.hpp @@ -112,7 +112,7 @@ class EXIV2API MatroskaVideo : public Image { instance after it is passed to this method. Use the Image::io() method to get a temporary reference. */ - explicit MatroskaVideo(BasicIo::UniquePtr io); + explicit MatroskaVideo(std::unique_ptr io); //@} //! @name Manipulators @@ -180,7 +180,7 @@ class EXIV2API MatroskaVideo : public Image { Caller owns the returned object and the auto-pointer ensures that it will be deleted. */ -EXIV2API Image::UniquePtr newMkvInstance(BasicIo::UniquePtr io, bool create); +EXIV2API Image::UniquePtr newMkvInstance(std::unique_ptr io, bool create); //! Check if the file iIo is a Matroska Video. EXIV2API bool isMkvType(BasicIo& iIo, bool advance); diff --git a/include/exiv2/metadatum.hpp b/include/exiv2/metadatum.hpp index 5bc3cdf2d1..db8f672523 100644 --- a/include/exiv2/metadatum.hpp +++ b/include/exiv2/metadatum.hpp @@ -7,7 +7,10 @@ #include "exiv2lib_export.h" // included header files -#include "value.hpp" +#include "types.hpp" + +#include +#include // ***************************************************************************** // namespace extensions @@ -15,6 +18,7 @@ namespace Exiv2 { // ***************************************************************************** // class declarations class ExifData; +class Value; // ***************************************************************************** // class definitions @@ -236,7 +240,7 @@ class EXIV2API Metadatum { @return An auto-pointer containing a pointer to a copy (clone) of the value, 0 if the value is not set. */ - [[nodiscard]] virtual Value::UniquePtr getValue() const = 0; + [[nodiscard]] virtual std::unique_ptr getValue() const = 0; /*! @brief Return a constant reference to the value. diff --git a/include/exiv2/mrwimage.hpp b/include/exiv2/mrwimage.hpp index 589eba43a7..06d078635a 100644 --- a/include/exiv2/mrwimage.hpp +++ b/include/exiv2/mrwimage.hpp @@ -38,7 +38,7 @@ class EXIV2API MrwImage : public Image { @param create Specifies if an existing image should be read (false) or if a new file should be created (true). */ - MrwImage(BasicIo::UniquePtr io, bool create); + MrwImage(std::unique_ptr io, bool create); //@} //! @name Manipulators @@ -84,7 +84,7 @@ class EXIV2API MrwImage : public Image { Caller owns the returned object and the auto-pointer ensures that it will be deleted. */ -EXIV2API Image::UniquePtr newMrwInstance(BasicIo::UniquePtr io, bool create); +EXIV2API Image::UniquePtr newMrwInstance(std::unique_ptr io, bool create); //! Check if the file iIo is a MRW image. EXIV2API bool isMrwType(BasicIo& iIo, bool advance); diff --git a/include/exiv2/orfimage.hpp b/include/exiv2/orfimage.hpp index 9a4f02ba16..3a6aaea622 100644 --- a/include/exiv2/orfimage.hpp +++ b/include/exiv2/orfimage.hpp @@ -38,7 +38,7 @@ class EXIV2API OrfImage : public TiffImage { @param create Specifies if an existing image should be read (false) or if a new file should be created (true). */ - OrfImage(BasicIo::UniquePtr io, bool create); + OrfImage(std::unique_ptr io, bool create); //@} //! @name Manipulators @@ -92,7 +92,7 @@ class EXIV2API OrfParser { Caller owns the returned object and the auto-pointer ensures that it will be deleted. */ -EXIV2API Image::UniquePtr newOrfInstance(BasicIo::UniquePtr io, bool create); +EXIV2API Image::UniquePtr newOrfInstance(std::unique_ptr io, bool create); //! Check if the file iIo is an ORF image. EXIV2API bool isOrfType(BasicIo& iIo, bool advance); diff --git a/include/exiv2/pgfimage.hpp b/include/exiv2/pgfimage.hpp index c6d9137820..e6b5d8cc65 100644 --- a/include/exiv2/pgfimage.hpp +++ b/include/exiv2/pgfimage.hpp @@ -38,7 +38,7 @@ class EXIV2API PgfImage : public Image { @param create Specifies if an existing image should be read (false) or if a new file should be created (true). */ - PgfImage(BasicIo::UniquePtr io, bool create); + PgfImage(std::unique_ptr io, bool create); //@} //! @name Manipulators @@ -84,7 +84,7 @@ class EXIV2API PgfImage : public Image { Caller owns the returned object and the auto-pointer ensures that it will be deleted. */ -EXIV2API Image::UniquePtr newPgfInstance(BasicIo::UniquePtr io, bool create); +EXIV2API Image::UniquePtr newPgfInstance(std::unique_ptr io, bool create); //! Check if the file iIo is a PGF image. EXIV2API bool isPgfType(BasicIo& iIo, bool advance); diff --git a/include/exiv2/pngimage.hpp b/include/exiv2/pngimage.hpp index cdfb8c04f0..536d8af4b0 100644 --- a/include/exiv2/pngimage.hpp +++ b/include/exiv2/pngimage.hpp @@ -38,7 +38,7 @@ class EXIV2API PngImage : public Image { @param create Specifies if an existing image should be read (false) or if a new file should be created (true). */ - PngImage(BasicIo::UniquePtr io, bool create); + PngImage(std::unique_ptr io, bool create); //@} //! @name Manipulators @@ -85,7 +85,7 @@ class EXIV2API PngImage : public Image { Caller owns the returned object and the auto-pointer ensures that it will be deleted. */ -EXIV2API Image::UniquePtr newPngInstance(BasicIo::UniquePtr io, bool create); +EXIV2API Image::UniquePtr newPngInstance(std::unique_ptr io, bool create); //! Check if the file iIo is a PNG image. EXIV2API bool isPngType(BasicIo& iIo, bool advance); diff --git a/include/exiv2/preview.hpp b/include/exiv2/preview.hpp index c9c0b9c79e..46f910d0a6 100644 --- a/include/exiv2/preview.hpp +++ b/include/exiv2/preview.hpp @@ -8,11 +8,16 @@ // ***************************************************************************** #include "exiv2lib_export.h" -#include "image.hpp" +#include "types.hpp" + +#include +#include // ***************************************************************************** // namespace extensions namespace Exiv2 { +class Image; +struct DataBuf; // ***************************************************************************** // class definitions diff --git a/include/exiv2/psdimage.hpp b/include/exiv2/psdimage.hpp index a603cc9aa2..2d218f026b 100644 --- a/include/exiv2/psdimage.hpp +++ b/include/exiv2/psdimage.hpp @@ -34,7 +34,7 @@ class EXIV2API PsdImage : public Image { instance after it is passed to this method. Use the Image::io() method to get a temporary reference. */ - explicit PsdImage(BasicIo::UniquePtr io); + explicit PsdImage(std::unique_ptr io); //@} //! @name Manipulators @@ -96,7 +96,7 @@ class EXIV2API PsdImage : public Image { Caller owns the returned object and the auto-pointer ensures that it will be deleted. */ -EXIV2API Image::UniquePtr newPsdInstance(BasicIo::UniquePtr io, bool create); +EXIV2API Image::UniquePtr newPsdInstance(std::unique_ptr io, bool create); //! Check if the file iIo is a Photoshop image. EXIV2API bool isPsdType(BasicIo& iIo, bool advance); diff --git a/include/exiv2/quicktimevideo.hpp b/include/exiv2/quicktimevideo.hpp index fcd798aa81..c946068ad6 100644 --- a/include/exiv2/quicktimevideo.hpp +++ b/include/exiv2/quicktimevideo.hpp @@ -51,7 +51,7 @@ class EXIV2API QuickTimeVideo : public Image { instance after it is passed to this method. Use the Image::io() method to get a temporary reference. */ - explicit QuickTimeVideo(BasicIo::UniquePtr io, size_t max_recursion_depth = 1000); + explicit QuickTimeVideo(std::unique_ptr io, size_t max_recursion_depth = 1000); //@} //! @name Manipulators @@ -216,7 +216,7 @@ class EXIV2API QuickTimeVideo : public Image { Caller owns the returned object and the auto-pointer ensures that it will be deleted. */ -EXIV2API Image::UniquePtr newQTimeInstance(BasicIo::UniquePtr io, bool create); +EXIV2API Image::UniquePtr newQTimeInstance(std::unique_ptr io, bool create); //! Check if the file iIo is a Quick Time Video. EXIV2API bool isQTimeType(BasicIo& iIo, bool advance); diff --git a/include/exiv2/rafimage.hpp b/include/exiv2/rafimage.hpp index 3d4593fb76..a01a193dfc 100644 --- a/include/exiv2/rafimage.hpp +++ b/include/exiv2/rafimage.hpp @@ -38,7 +38,7 @@ class EXIV2API RafImage : public Image { @param create Specifies if an existing image should be read (false) or if a new file should be created (true). */ - RafImage(BasicIo::UniquePtr io, bool create); + RafImage(std::unique_ptr io, bool create); //@} //! @name Manipulators @@ -85,7 +85,7 @@ class EXIV2API RafImage : public Image { Caller owns the returned object and the auto-pointer ensures that it will be deleted. */ -EXIV2API Image::UniquePtr newRafInstance(BasicIo::UniquePtr io, bool create); +EXIV2API Image::UniquePtr newRafInstance(std::unique_ptr io, bool create); //! Check if the file iIo is a RAF image. EXIV2API bool isRafType(BasicIo& iIo, bool advance); diff --git a/include/exiv2/riffvideo.hpp b/include/exiv2/riffvideo.hpp index 8ddad17d30..587a7d5ab4 100644 --- a/include/exiv2/riffvideo.hpp +++ b/include/exiv2/riffvideo.hpp @@ -29,7 +29,7 @@ class EXIV2API RiffVideo : public Image { instance after it is passed to this method. Use the Image::io() method to get a temporary reference. */ - explicit RiffVideo(BasicIo::UniquePtr io); + explicit RiffVideo(std::unique_ptr io); //@} //! @name Manipulators @@ -49,7 +49,7 @@ class EXIV2API RiffVideo : public Image { uint64_t size_ = 0; public: - explicit HeaderReader(const BasicIo::UniquePtr& io); + explicit HeaderReader(const std::unique_ptr& io); [[nodiscard]] uint64_t getSize() const { return size_; @@ -178,7 +178,7 @@ class EXIV2API RiffVideo : public Image { Caller owns the returned object and the auto-pointer ensures that it will be deleted. */ -EXIV2API Image::UniquePtr newRiffInstance(BasicIo::UniquePtr io, bool create); +EXIV2API Image::UniquePtr newRiffInstance(std::unique_ptr io, bool create); //! Check if the file iIo is a Riff Video. EXIV2API bool isRiffType(BasicIo& iIo, bool advance); diff --git a/include/exiv2/rw2image.hpp b/include/exiv2/rw2image.hpp index 06e040f2d5..8f573eb4e9 100644 --- a/include/exiv2/rw2image.hpp +++ b/include/exiv2/rw2image.hpp @@ -36,7 +36,7 @@ class EXIV2API Rw2Image : public Image { instance after it is passed to this method. Use the Image::io() method to get a temporary reference. */ - explicit Rw2Image(BasicIo::UniquePtr io); + explicit Rw2Image(std::unique_ptr io); //@} //! @name Manipulators @@ -99,7 +99,7 @@ class EXIV2API Rw2Parser { Caller owns the returned object and the auto-pointer ensures that it will be deleted. */ -EXIV2API Image::UniquePtr newRw2Instance(BasicIo::UniquePtr io, bool create); +EXIV2API Image::UniquePtr newRw2Instance(std::unique_ptr io, bool create); //! Check if the file iIo is a RW2 image. EXIV2API bool isRw2Type(BasicIo& iIo, bool advance); diff --git a/include/exiv2/tgaimage.hpp b/include/exiv2/tgaimage.hpp index edea1f3f16..d1fa94d3f5 100644 --- a/include/exiv2/tgaimage.hpp +++ b/include/exiv2/tgaimage.hpp @@ -34,7 +34,7 @@ class EXIV2API TgaImage : public Image { instance after it is passed to this method. Use the Image::io() method to get a temporary reference. */ - explicit TgaImage(BasicIo::UniquePtr io); + explicit TgaImage(std::unique_ptr io); //@} //! @name Manipulators @@ -79,7 +79,7 @@ class EXIV2API TgaImage : public Image { Caller owns the returned object and the auto-pointer ensures that it will be deleted. */ -EXIV2API Image::UniquePtr newTgaInstance(BasicIo::UniquePtr io, bool create); +EXIV2API Image::UniquePtr newTgaInstance(std::unique_ptr io, bool create); //! Check if the file iIo is a Targa v2 image. EXIV2API bool isTgaType(BasicIo& iIo, bool advance); diff --git a/include/exiv2/tiffimage.hpp b/include/exiv2/tiffimage.hpp index 9d11b20981..51f78376e2 100644 --- a/include/exiv2/tiffimage.hpp +++ b/include/exiv2/tiffimage.hpp @@ -12,6 +12,7 @@ // ***************************************************************************** // namespace extensions namespace Exiv2 { +class BasicIo; // ***************************************************************************** // class definitions @@ -38,7 +39,7 @@ class EXIV2API TiffImage : public Image { @param create Specifies if an existing image should be read (false) or if a new file should be created (true). */ - TiffImage(BasicIo::UniquePtr io, bool create); + TiffImage(std::unique_ptr io, bool create); //@} //! @name Manipulators @@ -152,7 +153,7 @@ class EXIV2API TiffParser { Caller owns the returned object and the auto-pointer ensures that it will be deleted. */ -EXIV2API Image::UniquePtr newTiffInstance(BasicIo::UniquePtr io, bool create); +EXIV2API Image::UniquePtr newTiffInstance(std::unique_ptr io, bool create); //! Check if the file iIo is a TIFF image. EXIV2API bool isTiffType(BasicIo& iIo, bool advance); diff --git a/include/exiv2/webpimage.hpp b/include/exiv2/webpimage.hpp index 1d5eec24fb..46d6d5611a 100644 --- a/include/exiv2/webpimage.hpp +++ b/include/exiv2/webpimage.hpp @@ -33,7 +33,7 @@ class EXIV2API WebPImage : public Image { instance after it is passed to this method. Use the Image::io() method to get a temporary reference. */ - explicit WebPImage(BasicIo::UniquePtr io); + explicit WebPImage(std::unique_ptr io); //@} //! @name Manipulators @@ -94,7 +94,7 @@ class EXIV2API WebPImage : public Image { Caller owns the returned object and the auto-pointer ensures that it will be deleted. */ -EXIV2API Image::UniquePtr newWebPInstance(BasicIo::UniquePtr io, bool create); +EXIV2API Image::UniquePtr newWebPInstance(std::unique_ptr io, bool create); //! Check if the file iIo is a WebP Video. EXIV2API bool isWebPType(BasicIo& iIo, bool advance); diff --git a/include/exiv2/xmp_exiv2.hpp b/include/exiv2/xmp_exiv2.hpp index 7a17267e46..a5928027fc 100644 --- a/include/exiv2/xmp_exiv2.hpp +++ b/include/exiv2/xmp_exiv2.hpp @@ -106,7 +106,7 @@ class EXIV2API Xmpdatum : public Metadatum { [[nodiscard]] int64_t toInt64(size_t n = 0) const override; [[nodiscard]] float toFloat(size_t n = 0) const override; [[nodiscard]] Rational toRational(size_t n = 0) const override; - [[nodiscard]] Value::UniquePtr getValue() const override; + [[nodiscard]] std::unique_ptr getValue() const override; [[nodiscard]] const Value& value() const override; //@} diff --git a/include/exiv2/xmpsidecar.hpp b/include/exiv2/xmpsidecar.hpp index 332be68129..dab8eca275 100644 --- a/include/exiv2/xmpsidecar.hpp +++ b/include/exiv2/xmpsidecar.hpp @@ -35,7 +35,7 @@ class EXIV2API XmpSidecar : public Image { @param create Specifies if an existing image should be read (false) or if a new image should be created (true). */ - XmpSidecar(BasicIo::UniquePtr io, bool create); + XmpSidecar(std::unique_ptr io, bool create); //@} //! @name Manipulators @@ -67,7 +67,7 @@ class EXIV2API XmpSidecar : public Image { Caller owns the returned object and the auto-pointer ensures that it will be deleted. */ -EXIV2API Image::UniquePtr newXmpInstance(BasicIo::UniquePtr io, bool create); +EXIV2API Image::UniquePtr newXmpInstance(std::unique_ptr io, bool create); //! Check if the file iIo is an XMP sidecar file. EXIV2API bool isXmpType(BasicIo& iIo, bool advance); diff --git a/src/bmffimage.cpp b/src/bmffimage.cpp index dae309dff1..a857560ac8 100644 --- a/src/bmffimage.cpp +++ b/src/bmffimage.cpp @@ -10,7 +10,7 @@ #include "futils.hpp" #include "image.hpp" #include "image_int.hpp" -#include "safe_op.hpp" +#include "tags.hpp" #include "tiffcomposite_int.hpp" #include "tiffimage_int.hpp" #include "types.hpp" @@ -18,6 +18,7 @@ #ifdef EXV_HAVE_BROTLI #include // for JXL brob +#include "safe_op.hpp" #endif // + standard includes diff --git a/src/bmpimage.cpp b/src/bmpimage.cpp index c6681c9fa0..1b889ac2ec 100644 --- a/src/bmpimage.cpp +++ b/src/bmpimage.cpp @@ -7,6 +7,7 @@ #include "bmpimage.hpp" #include "basicio.hpp" +#include "config.h" #include "error.hpp" #include "futils.hpp" #include "image.hpp" diff --git a/src/canonmn_int.cpp b/src/canonmn_int.cpp index 630217436b..f2538cf5d5 100644 --- a/src/canonmn_int.cpp +++ b/src/canonmn_int.cpp @@ -13,6 +13,7 @@ #include "i18n.h" // NLS support. #include "image_int.hpp" #include "makernote_int.hpp" +#include "tags.hpp" #include "tags_int.hpp" #include "types.hpp" #include "utils.hpp" diff --git a/src/convert.cpp b/src/convert.cpp index 3f4ed29dfa..bb2e23c15b 100644 --- a/src/convert.cpp +++ b/src/convert.cpp @@ -7,17 +7,17 @@ 20-May-08, vn: added actual conversion logic */ // ***************************************************************************** -#include "config.h" - // included header files #include "convert.hpp" +#include "config.h" #include "error.hpp" #include "exif.hpp" -#include "futils.hpp" #include "image_int.hpp" #include "iptc.hpp" #include "properties.hpp" +#include "tags.hpp" #include "types.hpp" +#include "value.hpp" #include "xmp_exiv2.hpp" // + standard includes @@ -25,6 +25,9 @@ #include #ifdef EXV_HAVE_ICONV +#ifndef SUPPRESS_WARNINGS +#include "futils.hpp" +#endif #include #elif defined _WIN32 #include diff --git a/src/cr2header_int.cpp b/src/cr2header_int.cpp index abb1cf6e45..b784defe81 100644 --- a/src/cr2header_int.cpp +++ b/src/cr2header_int.cpp @@ -2,11 +2,13 @@ #include "cr2header_int.hpp" +#include "tags.hpp" #include "tiffimage_int.hpp" #include "types.hpp" #include #include +#include namespace Exiv2::Internal { Cr2Header::Cr2Header(ByteOrder byteOrder) : TiffHeaderBase(42, 16, byteOrder, 0x00000010) { diff --git a/src/cr2image.cpp b/src/cr2image.cpp index 091603d069..eb66494d10 100644 --- a/src/cr2image.cpp +++ b/src/cr2image.cpp @@ -3,11 +3,13 @@ // included header files #include "cr2image.hpp" +#include "basicio.hpp" #include "config.h" #include "cr2header_int.hpp" #include "error.hpp" #include "futils.hpp" #include "image.hpp" +#include "tags.hpp" #include "tiffcomposite_int.hpp" #include "tiffimage_int.hpp" diff --git a/src/crwimage.cpp b/src/crwimage.cpp index a1acf6c7e5..3b7ff6663a 100644 --- a/src/crwimage.cpp +++ b/src/crwimage.cpp @@ -5,14 +5,16 @@ History: 28-Aug-05, ahu: created */ // included header files -#include "config.h" - #include "crwimage.hpp" +#include "basicio.hpp" +#include "config.h" #include "crwimage_int.hpp" #include "error.hpp" #include "futils.hpp" #include "tags.hpp" +#include + #ifdef EXIV2_DEBUG_MESSAGES #include #endif diff --git a/src/crwimage_int.cpp b/src/crwimage_int.cpp index 4ca559b543..af6525cedb 100644 --- a/src/crwimage_int.cpp +++ b/src/crwimage_int.cpp @@ -1,14 +1,13 @@ // SPDX-License-Identifier: GPL-2.0-or-later - -#include "config.h" - -#include "canonmn_int.hpp" #include "crwimage_int.hpp" +#include "canonmn_int.hpp" +#include "config.h" #include "enforce.hpp" #include "error.hpp" #include "i18n.h" // NLS support. #include "image.hpp" #include "image_int.hpp" +#include "tags.hpp" #include "tags_int.hpp" #include diff --git a/src/crwimage_int.hpp b/src/crwimage_int.hpp index e7025cf2cd..5cd355bab0 100644 --- a/src/crwimage_int.hpp +++ b/src/crwimage_int.hpp @@ -5,7 +5,6 @@ // ***************************************************************************** // included header files -#include "tags.hpp" #include "types.hpp" // + standard includes @@ -18,6 +17,8 @@ // ***************************************************************************** // namespace extensions namespace Exiv2 { +enum class IfdId : uint32_t; +class ExifData; class Image; namespace Internal { diff --git a/src/datasets.cpp b/src/datasets.cpp index 3d257b2208..551d0ad4c0 100644 --- a/src/datasets.cpp +++ b/src/datasets.cpp @@ -9,9 +9,8 @@ #include "datasets.hpp" #include "error.hpp" #include "i18n.h" // NLS support. -#include "types.hpp" - #include "image_int.hpp" +#include "types.hpp" #include diff --git a/src/easyaccess.cpp b/src/easyaccess.cpp index a6172b2395..fc3598cab9 100644 --- a/src/easyaccess.cpp +++ b/src/easyaccess.cpp @@ -1,8 +1,12 @@ // SPDX-License-Identifier: GPL-2.0-or-later // included header files #include "easyaccess.hpp" + +#include "tags.hpp" #include "utils.hpp" +#include "value.hpp" +#include #include // ***************************************************************************** diff --git a/src/epsimage.cpp b/src/epsimage.cpp index d139fc12bc..ac5b54ca1d 100644 --- a/src/epsimage.cpp +++ b/src/epsimage.cpp @@ -8,11 +8,11 @@ */ // ***************************************************************************** // included header files -#include "config.h" +#include "epsimage.hpp" #include "basicio.hpp" +#include "config.h" #include "enforce.hpp" -#include "epsimage.hpp" #include "error.hpp" #include "futils.hpp" #include "image.hpp" @@ -22,6 +22,7 @@ #include #include #include +#include #include #include diff --git a/src/exif.cpp b/src/exif.cpp index ad489238a2..3faffdb3be 100644 --- a/src/exif.cpp +++ b/src/exif.cpp @@ -163,6 +163,8 @@ Exifdatum::Exifdatum(const Exifdatum& rhs) { value_ = rhs.value_->clone(); // deep copy } +Exifdatum::~Exifdatum() = default; + std::ostream& Exifdatum::write(std::ostream& os, const ExifData* pMetadata) const { if (value().count() == 0) return os; diff --git a/src/fujimn_int.cpp b/src/fujimn_int.cpp index 7a3e25e671..e05d42f35d 100644 --- a/src/fujimn_int.cpp +++ b/src/fujimn_int.cpp @@ -10,6 +10,7 @@ // included header files #include "fujimn_int.hpp" #include "i18n.h" // NLS support. +#include "tags.hpp" #include "tags_int.hpp" #include "types.hpp" diff --git a/src/gifimage.cpp b/src/gifimage.cpp index e00f43a106..2f243b647e 100644 --- a/src/gifimage.cpp +++ b/src/gifimage.cpp @@ -2,7 +2,7 @@ // included header files #include "gifimage.hpp" - +#include "basicio.hpp" #include "config.h" #include "error.hpp" #include "futils.hpp" diff --git a/src/http.cpp b/src/http.cpp index 6a93026e8a..a45c865f77 100644 --- a/src/http.cpp +++ b/src/http.cpp @@ -1,13 +1,13 @@ // SPDX-License-Identifier: GPL-2.0-or-later +#include "http.hpp" #include "config.h" - #include "futils.hpp" -#include "http.hpp" #include #include #include +#include #include //////////////////////////////////////// diff --git a/src/image.cpp b/src/image.cpp index eaa78c8fd4..6dfd8a82bc 100644 --- a/src/image.cpp +++ b/src/image.cpp @@ -3,6 +3,7 @@ // included header files #include "image.hpp" +#include "basicio.hpp" #include "config.h" #include "enforce.hpp" #include "error.hpp" @@ -32,6 +33,7 @@ #include "psdimage.hpp" #include "rafimage.hpp" #include "rw2image.hpp" +#include "tags.hpp" #include "tags_int.hpp" #include "tgaimage.hpp" #include "tiffimage.hpp" @@ -138,6 +140,8 @@ Image::Image(ImageType type, uint16_t supportedMetadata, BasicIo::UniquePtr io) io_(std::move(io)), imageType_(type), supportedMetadata_(supportedMetadata) { } +Image::~Image() = default; + void Image::printStructure(std::ostream&, PrintStructureOption, size_t /*depth*/) { throw Error(ErrorCode::kerUnsupportedImageType, io_->path()); } diff --git a/src/image_int.cpp b/src/image_int.cpp index 255015bf6b..6ae8f92189 100644 --- a/src/image_int.cpp +++ b/src/image_int.cpp @@ -1,7 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-or-later -#include "config.h" - #include "image_int.hpp" #include diff --git a/src/iptc.cpp b/src/iptc.cpp index 6066cc2785..340ae5b6a0 100644 --- a/src/iptc.cpp +++ b/src/iptc.cpp @@ -1,10 +1,8 @@ // SPDX-License-Identifier: GPL-2.0-or-later -#include "config.h" - // included header files #include "iptc.hpp" - +#include "config.h" #include "datasets.hpp" #include "enforce.hpp" #include "error.hpp" @@ -67,6 +65,8 @@ Iptcdatum::Iptcdatum(const Iptcdatum& rhs) { value_ = rhs.value_->clone(); // deep copy } +Iptcdatum::~Iptcdatum() = default; + size_t Iptcdatum::copy(byte* buf, ByteOrder byteOrder) const { return value_ ? value_->copy(buf, byteOrder) : 0; } diff --git a/src/jp2image.cpp b/src/jp2image.cpp index a538db8d7f..e4942a609a 100644 --- a/src/jp2image.cpp +++ b/src/jp2image.cpp @@ -18,6 +18,7 @@ #include #include +#include #include #ifdef EXIV2_DEBUG_MESSAGES diff --git a/src/jpgimage.cpp b/src/jpgimage.cpp index 5863d6bf97..a08f0ecebb 100644 --- a/src/jpgimage.cpp +++ b/src/jpgimage.cpp @@ -1,17 +1,16 @@ // SPDX-License-Identifier: GPL-2.0-or-later // included header files +#include "jpgimage.hpp" +#include "basicio.hpp" #include "config.h" - #include "enforce.hpp" #include "error.hpp" #include "futils.hpp" #include "helper_functions.hpp" #include "i18n.h" // NLS support. #include "image_int.hpp" -#include "jpgimage.hpp" #include "photoshop.hpp" -#include "safe_op.hpp" #include "tags_int.hpp" #include diff --git a/src/makernote_int.cpp b/src/makernote_int.cpp index 84fdf0736e..7701787175 100644 --- a/src/makernote_int.cpp +++ b/src/makernote_int.cpp @@ -5,16 +5,18 @@ History: 11-Apr-06, ahu: created */ // included header files -#include "config.h" - #include "makernote_int.hpp" +#include "config.h" #include "safe_op.hpp" +#include "tags.hpp" #include "tiffcomposite_int.hpp" #include "tiffimage_int.hpp" #include "tiffvisitor_int.hpp" #include "utils.hpp" +#include "value.hpp" // + standard includes +#include #include #ifdef EXV_ENABLE_FILESYSTEM diff --git a/src/makernote_int.hpp b/src/makernote_int.hpp index 6b948874e6..5bdfa46582 100644 --- a/src/makernote_int.hpp +++ b/src/makernote_int.hpp @@ -5,12 +5,14 @@ // ***************************************************************************** // included header files -#include "tags.hpp" +#include "types.hpp" #include // namespace extensions -namespace Exiv2::Internal { +namespace Exiv2 { +enum class IfdId : uint32_t; +namespace Internal { class IoWrapper; class TiffComponent; // ***************************************************************************** @@ -673,6 +675,7 @@ int nikonSelector(uint16_t tag, const byte* pData, size_t size, TiffComponent* p */ DataBuf nikonCrypt(uint16_t tag, const byte* pData, size_t size, TiffComponent* pRoot); -} // namespace Exiv2::Internal +} // namespace Internal +} // namespace Exiv2 #endif // EXIV2_MAKERNOTE_INT_HPP diff --git a/src/matroskavideo.cpp b/src/matroskavideo.cpp index 3c74841ebf..7359130e98 100644 --- a/src/matroskavideo.cpp +++ b/src/matroskavideo.cpp @@ -19,14 +19,13 @@ */ // ***************************************************************************** // included header files -#include "config.h" - +#include "matroskavideo.hpp" #include "basicio.hpp" +#include "config.h" #include "enforce.hpp" #include "error.hpp" #include "futils.hpp" #include "helper_functions.hpp" -#include "matroskavideo.hpp" // + standard includes #include diff --git a/src/minoltamn_int.cpp b/src/minoltamn_int.cpp index 10523e5f0b..504ae7f7b0 100644 --- a/src/minoltamn_int.cpp +++ b/src/minoltamn_int.cpp @@ -6,6 +6,7 @@ #include "i18n.h" // NLS support. #include "image_int.hpp" #include "makernote_int.hpp" +#include "tags.hpp" #include "tags_int.hpp" #include "value.hpp" diff --git a/src/mrwimage.cpp b/src/mrwimage.cpp index 6e8a17d4b4..2b5fdf66ec 100644 --- a/src/mrwimage.cpp +++ b/src/mrwimage.cpp @@ -9,9 +9,11 @@ #include "error.hpp" #include "futils.hpp" #include "image.hpp" +#include "tags.hpp" #include "tiffimage.hpp" #include +#include #ifdef EXIV2_DEBUG_MESSAGES #include diff --git a/src/nikonmn_int.cpp b/src/nikonmn_int.cpp index c8674e14ef..96958aa988 100644 --- a/src/nikonmn_int.cpp +++ b/src/nikonmn_int.cpp @@ -1,14 +1,13 @@ // SPDX-License-Identifier: GPL-2.0-or-later -#include "config.h" - // included header files #include "nikonmn_int.hpp" - +#include "config.h" #include "exif.hpp" #include "i18n.h" // NLS support. #include "image_int.hpp" #include "makernote_int.hpp" +#include "tags.hpp" #include "tags_int.hpp" #include "utils.hpp" #include "value.hpp" diff --git a/src/olympusmn_int.cpp b/src/olympusmn_int.cpp index e03f262684..4428962d74 100644 --- a/src/olympusmn_int.cpp +++ b/src/olympusmn_int.cpp @@ -8,12 +8,11 @@ #include "i18n.h" // NLS support. #include "image_int.hpp" #include "makernote_int.hpp" +#include "tags.hpp" #include "tags_int.hpp" #include "utils.hpp" #include "value.hpp" -#include - // ***************************************************************************** // class member definitions namespace Exiv2::Internal { diff --git a/src/orfimage.cpp b/src/orfimage.cpp index ed60f95a00..946324afb1 100644 --- a/src/orfimage.cpp +++ b/src/orfimage.cpp @@ -9,6 +9,7 @@ #include "futils.hpp" #include "image.hpp" #include "orfimage_int.hpp" +#include "tags.hpp" #include "tiffcomposite_int.hpp" #include "tiffimage.hpp" #include "tiffimage_int.hpp" diff --git a/src/pgfimage.cpp b/src/pgfimage.cpp index 1657ed4014..394cf1d9e0 100644 --- a/src/pgfimage.cpp +++ b/src/pgfimage.cpp @@ -11,7 +11,8 @@ #include "image.hpp" #include -#include +#include +#include #ifdef EXIV2_DEBUG_MESSAGES #include diff --git a/src/photoshop.cpp b/src/photoshop.cpp index fbb6f7fc87..c7845c4fd8 100644 --- a/src/photoshop.cpp +++ b/src/photoshop.cpp @@ -6,6 +6,8 @@ #include "image.hpp" #include "safe_op.hpp" +#include + #ifdef EXIV2_DEBUG_MESSAGES #include #endif diff --git a/src/pngchunk_int.cpp b/src/pngchunk_int.cpp index 975fbb524c..3169438b20 100644 --- a/src/pngchunk_int.cpp +++ b/src/pngchunk_int.cpp @@ -1,6 +1,7 @@ // SPDX-License-Identifier: GPL-2.0-or-later // included header files +#include "pngchunk_int.hpp" #include "config.h" #ifdef EXV_HAVE_LIBZ @@ -14,7 +15,6 @@ #include "image_int.hpp" #include "iptc.hpp" #include "photoshop.hpp" -#include "pngchunk_int.hpp" #include "safe_op.hpp" #include "tiffimage.hpp" diff --git a/src/pngchunk_int.hpp b/src/pngchunk_int.hpp index 51e1ee50b0..432dec1dd2 100644 --- a/src/pngchunk_int.hpp +++ b/src/pngchunk_int.hpp @@ -5,11 +5,15 @@ // ***************************************************************************** // included header files -#include "pngimage.hpp" +#include "types.hpp" // ***************************************************************************** // namespace extensions -namespace Exiv2::Internal { +namespace Exiv2 { +struct DataBuf; +class Image; +class PngImage; +namespace Internal { // ***************************************************************************** // class definitions @@ -136,6 +140,7 @@ class PngChunk { }; // class PngChunk -} // namespace Exiv2::Internal +} // namespace Internal +} // namespace Exiv2 #endif // #ifndef PNGCHUNK_INT_HPP_ diff --git a/src/pngimage.cpp b/src/pngimage.cpp index 63e3a58fca..f213c824b2 100644 --- a/src/pngimage.cpp +++ b/src/pngimage.cpp @@ -20,6 +20,7 @@ #include "utils.hpp" #include +#include #include namespace { diff --git a/src/preview.cpp b/src/preview.cpp index b281253d12..b9bb99cb59 100644 --- a/src/preview.cpp +++ b/src/preview.cpp @@ -2,7 +2,7 @@ // included header files #include "preview.hpp" - +#include "basicio.hpp" #include "config.h" #include "enforce.hpp" #include "futils.hpp" @@ -10,11 +10,14 @@ #include "photoshop.hpp" #include "properties.hpp" #include "safe_op.hpp" +#include "tags.hpp" #include "tiffimage.hpp" #include "tiffimage_int.hpp" +#include "value.hpp" #include #include +#include namespace { using namespace Exiv2; diff --git a/src/properties.cpp b/src/properties.cpp index b68d6eb601..29586672ea 100644 --- a/src/properties.cpp +++ b/src/properties.cpp @@ -1,13 +1,12 @@ // SPDX-License-Identifier: GPL-2.0-or-later -#include "config.h" - // included header files #include "properties.hpp" - +#include "config.h" #include "error.hpp" #include "i18n.h" // NLS support. #include "image_int.hpp" +#include "tags.hpp" #include "tags_int.hpp" #include "types.hpp" #include "value.hpp" diff --git a/src/quicktimevideo.cpp b/src/quicktimevideo.cpp index 365472f68c..583f595937 100644 --- a/src/quicktimevideo.cpp +++ b/src/quicktimevideo.cpp @@ -19,16 +19,15 @@ */ // ***************************************************************************** // included header files -#include "config.h" - +#include "quicktimevideo.hpp" #include "basicio.hpp" +#include "config.h" #include "enforce.hpp" #include "error.hpp" #include "futils.hpp" #include "helper_functions.hpp" #include "image_int.hpp" #include "properties.hpp" -#include "quicktimevideo.hpp" #include "safe_op.hpp" #include "tags.hpp" #include "tags_int.hpp" diff --git a/src/rafimage.cpp b/src/rafimage.cpp index 39b95e53e1..db2d7f9626 100644 --- a/src/rafimage.cpp +++ b/src/rafimage.cpp @@ -12,6 +12,7 @@ #include "image_int.hpp" #include "jpgimage.hpp" #include "safe_op.hpp" +#include "tags.hpp" #include "tiffimage.hpp" #include diff --git a/src/riffvideo.cpp b/src/riffvideo.cpp index f90d2f09bf..40f523bf96 100644 --- a/src/riffvideo.cpp +++ b/src/riffvideo.cpp @@ -8,6 +8,8 @@ // included header files #include "riffvideo.hpp" +#include "basicio.hpp" +#include "config.h" #include "enforce.hpp" #include "error.hpp" #include "futils.hpp" diff --git a/src/rw2image.cpp b/src/rw2image.cpp index e00106ac62..c9e0c6c89d 100644 --- a/src/rw2image.cpp +++ b/src/rw2image.cpp @@ -2,20 +2,23 @@ // included header files #include "rw2image.hpp" - +#include "basicio.hpp" #include "config.h" #include "error.hpp" #include "futils.hpp" #include "image.hpp" #include "preview.hpp" #include "rw2image_int.hpp" +#include "tags.hpp" #include "tiffcomposite_int.hpp" #include "tiffimage_int.hpp" // + standard includes #include + #ifdef EXIV2_DEBUG_MESSAGES #include +#include "value.hpp" #endif // ***************************************************************************** diff --git a/src/sonymn_int.cpp b/src/sonymn_int.cpp index 570aed2aad..665c230384 100644 --- a/src/sonymn_int.cpp +++ b/src/sonymn_int.cpp @@ -8,6 +8,7 @@ #include "i18n.h" // NLS support. #include "image_int.hpp" #include "minoltamn_int.hpp" +#include "tags.hpp" #include "tags_int.hpp" #include "tiffcomposite_int.hpp" #include "utils.hpp" diff --git a/src/sonymn_int.hpp b/src/sonymn_int.hpp index 6c2621b172..d2e6be1210 100644 --- a/src/sonymn_int.hpp +++ b/src/sonymn_int.hpp @@ -9,7 +9,11 @@ // ***************************************************************************** // namespace extensions -namespace Exiv2::Internal { +namespace Exiv2 { +class ExifData; +class Value; +struct TagInfo; +namespace Internal { // ***************************************************************************** // class definitions @@ -125,6 +129,7 @@ class SonyMakerNote { DataBuf sonyTagDecipher(uint16_t, const byte*, size_t, TiffComponent*); DataBuf sonyTagEncipher(uint16_t, const byte*, size_t, TiffComponent*); -} // namespace Exiv2::Internal +} // namespace Internal +} // namespace Exiv2 #endif // #ifndef SONYMN_INT_HPP_ diff --git a/src/tags_int.cpp b/src/tags_int.cpp index 021bca91d2..1cad89d8e6 100644 --- a/src/tags_int.cpp +++ b/src/tags_int.cpp @@ -6,6 +6,7 @@ #include "convert.hpp" #include "enforce.hpp" #include "i18n.h" // NLS support. +#include "tags.hpp" #include "canonmn_int.hpp" #include "casiomn_int.hpp" diff --git a/src/tags_int.hpp b/src/tags_int.hpp index 81bef9ada4..e20c1b6983 100644 --- a/src/tags_int.hpp +++ b/src/tags_int.hpp @@ -5,7 +5,8 @@ // ***************************************************************************** // included header files -#include "tags.hpp" +#include "types.hpp" +#include "value.hpp" #include "i18n.h" @@ -13,8 +14,11 @@ // namespace extensions namespace Exiv2 { +enum class IfdId : uint32_t; +enum class SectionId; class ExifData; -class Value; +struct GroupInfo; +struct TagInfo; namespace Internal { // ***************************************************************************** diff --git a/src/tgaimage.cpp b/src/tgaimage.cpp index 388b9822b7..f6556b979c 100644 --- a/src/tgaimage.cpp +++ b/src/tgaimage.cpp @@ -9,6 +9,8 @@ #include "futils.hpp" #include "image.hpp" +#include + #ifdef EXIV2_DEBUG_MESSAGES #include #endif diff --git a/src/tiffcomposite_int.cpp b/src/tiffcomposite_int.cpp index 3ab2d659cb..45007c1a1d 100644 --- a/src/tiffcomposite_int.cpp +++ b/src/tiffcomposite_int.cpp @@ -1,16 +1,15 @@ // SPDX-License-Identifier: GPL-2.0-or-later // included header files -#include "config.h" - #include "tiffcomposite_int.hpp" - #include "basicio.hpp" +#include "config.h" #include "enforce.hpp" #include "error.hpp" #include "image_int.hpp" #include "makernote_int.hpp" #include "safe_op.hpp" #include "sonymn_int.hpp" +#include "tags.hpp" #include "tags_int.hpp" #include "tiffimage_int.hpp" #include "tiffvisitor_int.hpp" @@ -95,6 +94,25 @@ TiffBinaryArray::TiffBinaryArray(uint16_t tag, IfdId group, const ArraySet* arra // We'll figure out the correct cfg later } +TiffBinaryArray::TiffBinaryArray(const TiffBinaryArray& rhs) : + TiffEntryBase(rhs), + cfgSelFct_(rhs.cfgSelFct_), + arraySet_(rhs.arraySet_), + arrayCfg_(rhs.arrayCfg_), + arrayDef_(rhs.arrayDef_), + defSize_(rhs.defSize_), + setSize_(rhs.setSize_), + origData_(rhs.origData_), + origSize_(rhs.origSize_), + pRoot_(rhs.pRoot_) { +} + +TiffEntryBase::TiffEntryBase(uint16_t tag, IfdId group, TiffType tiffType) : + TiffComponent(tag, group), tiffType_(tiffType) { +} + +TiffEntryBase::~TiffEntryBase() = default; + TiffEntryBase::TiffEntryBase(const TiffEntryBase& rhs) : TiffComponent(rhs), tiffType_(rhs.tiffType_), @@ -113,17 +131,18 @@ TiffDirectory::TiffDirectory(const TiffDirectory& rhs) : TiffComponent(rhs), has TiffSubIfd::TiffSubIfd(const TiffSubIfd& rhs) : TiffEntryBase(rhs), newGroup_(rhs.newGroup_) { } -TiffBinaryArray::TiffBinaryArray(const TiffBinaryArray& rhs) : - TiffEntryBase(rhs), - cfgSelFct_(rhs.cfgSelFct_), - arraySet_(rhs.arraySet_), - arrayCfg_(rhs.arrayCfg_), - arrayDef_(rhs.arrayDef_), - defSize_(rhs.defSize_), - setSize_(rhs.setSize_), - origData_(rhs.origData_), - origSize_(rhs.origSize_), - pRoot_(rhs.pRoot_) { +TiffDataEntryBase::TiffDataEntryBase(uint16_t tag, IfdId group, uint16_t szTag, IfdId szGroup) : + TiffEntryBase(tag, group), szTag_(szTag), szGroup_(szGroup) { +} + +TiffDataEntryBase::~TiffDataEntryBase() = default; + +TiffSizeEntry::TiffSizeEntry(uint16_t tag, IfdId group, uint16_t dtTag, IfdId dtGroup) : + TiffEntryBase(tag, group), dtTag_(dtTag), dtGroup_(dtGroup) { +} + +TiffMnEntry::TiffMnEntry(uint16_t tag, IfdId group, IfdId mnGroup) : + TiffEntryBase(tag, group, ttUndefined), mnGroup_(mnGroup) { } TiffComponent::UniquePtr TiffComponent::clone() const { diff --git a/src/tiffcomposite_int.hpp b/src/tiffcomposite_int.hpp index 420d1076ca..7bbd3d3aff 100644 --- a/src/tiffcomposite_int.hpp +++ b/src/tiffcomposite_int.hpp @@ -13,6 +13,7 @@ // namespace extensions namespace Exiv2 { class BasicIo; +class Value; namespace Internal { // ***************************************************************************** @@ -383,12 +384,10 @@ class TiffEntryBase : public TiffComponent { //! @name Creators //@{ //! Default constructor. - constexpr TiffEntryBase(uint16_t tag, IfdId group, TiffType tiffType = ttUndefined) : - TiffComponent(tag, group), tiffType_(tiffType) { - } + TiffEntryBase(uint16_t tag, IfdId group, TiffType tiffType = ttUndefined); //! Virtual destructor. - ~TiffEntryBase() override = default; + ~TiffEntryBase() override; //@} //! @name NOT implemented @@ -593,9 +592,7 @@ class TiffDataEntryBase : public TiffEntryBase { //! @name Creators //@{ //! Constructor - constexpr TiffDataEntryBase(uint16_t tag, IfdId group, uint16_t szTag, IfdId szGroup) : - TiffEntryBase(tag, group), szTag_(szTag), szGroup_(szGroup) { - } + TiffDataEntryBase(uint16_t tag, IfdId group, uint16_t szTag, IfdId szGroup); //@} ~TiffDataEntryBase() override; @@ -777,10 +774,7 @@ class TiffSizeEntry : public TiffEntryBase { //! @name Creators //@{ //! Constructor - constexpr TiffSizeEntry(uint16_t tag, IfdId group, uint16_t dtTag, IfdId dtGroup) : - TiffEntryBase(tag, group), dtTag_(dtTag), dtGroup_(dtGroup) { - } - + TiffSizeEntry(uint16_t tag, IfdId group, uint16_t dtTag, IfdId dtGroup); //@} //! @name Accessors @@ -1012,9 +1006,7 @@ class TiffMnEntry : public TiffEntryBase { //! @name Creators //@{ //! Default constructor - constexpr TiffMnEntry(uint16_t tag, IfdId group, IfdId mnGroup) : - TiffEntryBase(tag, group, ttUndefined), mnGroup_(mnGroup) { - } + TiffMnEntry(uint16_t tag, IfdId group, IfdId mnGroup); protected: //! @name Protected Manipulators diff --git a/src/tifffwd_int.hpp b/src/tifffwd_int.hpp index c14f756a48..a8083c8fe3 100644 --- a/src/tifffwd_int.hpp +++ b/src/tifffwd_int.hpp @@ -5,7 +5,7 @@ // ***************************************************************************** // included header files -#include "tags.hpp" +#include "types.hpp" // + standard includes #include @@ -16,6 +16,7 @@ // ***************************************************************************** // Exiv2 namespace extensions namespace Exiv2 { +enum class IfdId : uint32_t; class Exifdatum; namespace Internal { diff --git a/src/tiffimage.cpp b/src/tiffimage.cpp index e2743015a8..ed3b3bd7f3 100644 --- a/src/tiffimage.cpp +++ b/src/tiffimage.cpp @@ -8,9 +8,11 @@ #include "error.hpp" #include "futils.hpp" #include "image.hpp" +#include "tags.hpp" #include "tiffcomposite_int.hpp" #include "tiffimage_int.hpp" #include "types.hpp" +#include "value.hpp" #include #include diff --git a/src/tiffimage_int.cpp b/src/tiffimage_int.cpp index 60bc023959..a835c5ca46 100644 --- a/src/tiffimage_int.cpp +++ b/src/tiffimage_int.cpp @@ -1,16 +1,17 @@ // SPDX-License-Identifier: GPL-2.0-or-later -#include "config.h" - +#include "tiffimage_int.hpp" #include "basicio.hpp" +#include "config.h" #include "error.hpp" #include "i18n.h" // NLS support. #include "image_int.hpp" #include "makernote_int.hpp" #include "sonymn_int.hpp" +#include "tags.hpp" #include "tiffcomposite_int.hpp" -#include "tiffimage_int.hpp" #include "tiffvisitor_int.hpp" +#include "value.hpp" #ifdef EXIV2_DEBUG_MESSAGES #include "tags_int.hpp" @@ -25,6 +26,9 @@ #define EXV_COMPLEX_BINARY_ARRAY(arraySet, cfgSelFct) &newTiffBinaryArray2 namespace Exiv2::Internal { +bool FindExifdatum::operator()(const Exiv2::Exifdatum& md) const { + return ifdId_ == md.ifdId(); +} //! Constant for non-encrypted binary arrays constexpr CryptFct notEncrypted = nullptr; diff --git a/src/tiffimage_int.hpp b/src/tiffimage_int.hpp index c7586dbfb6..f4bf05e508 100644 --- a/src/tiffimage_int.hpp +++ b/src/tiffimage_int.hpp @@ -5,15 +5,16 @@ // ***************************************************************************** // included header files -#include "exif.hpp" #include "tifffwd_int.hpp" +#include #include // ***************************************************************************** // namespace extensions namespace Exiv2 { class BasicIo; +class ExifData; class IptcData; class XmpData; @@ -348,9 +349,7 @@ class FindExifdatum { explicit FindExifdatum(Exiv2::IfdId ifdId) : ifdId_(ifdId) { } //! Returns true if IFD id matches. - bool operator()(const Exiv2::Exifdatum& md) const { - return ifdId_ == md.ifdId(); - } + bool operator()(const Exiv2::Exifdatum& md) const; private: Exiv2::IfdId ifdId_; diff --git a/src/tiffvisitor_int.cpp b/src/tiffvisitor_int.cpp index 9f3b769917..7c59309633 100644 --- a/src/tiffvisitor_int.cpp +++ b/src/tiffvisitor_int.cpp @@ -1,10 +1,9 @@ // SPDX-License-Identifier: GPL-2.0-or-later -#include "config.h" - // included header files #include "tiffvisitor_int.hpp" // see bug #487 +#include "config.h" #include "enforce.hpp" #include "exif.hpp" #include "image_int.hpp" @@ -13,6 +12,7 @@ #include "photoshop.hpp" #include "safe_op.hpp" #include "sonymn_int.hpp" +#include "tags.hpp" #include "tags_int.hpp" #include "tiffcomposite_int.hpp" #include "tiffimage_int.hpp" @@ -344,8 +344,6 @@ static const TagInfo* findTag(const TagInfo* pList, uint16_t tag) { return pList->tag_ != 0xffff ? pList : nullptr; } -TiffDataEntryBase::~TiffDataEntryBase() = default; - void TiffDecoder::decodeCanonAFInfo(const TiffEntryBase* object) { // report Exif.Canon.AFInfo as usual TiffDecoder::decodeStdTiffEntry(object); diff --git a/src/tiffvisitor_int.hpp b/src/tiffvisitor_int.hpp index 1a814553fb..2bb0132ce4 100644 --- a/src/tiffvisitor_int.hpp +++ b/src/tiffvisitor_int.hpp @@ -10,6 +10,7 @@ #include "tiffcomposite_int.hpp" #include +#include // ***************************************************************************** // namespace extensions diff --git a/src/types.cpp b/src/types.cpp index e40430e92f..cb110c26bb 100644 --- a/src/types.cpp +++ b/src/types.cpp @@ -1,13 +1,9 @@ // SPDX-License-Identifier: GPL-2.0-or-later -#include "config.h" - // included header files #include "types.hpp" - +#include "config.h" #include "enforce.hpp" -#include "futils.hpp" -#include "i18n.h" // for _exvGettext #include "utils.hpp" // + standard includes @@ -18,10 +14,12 @@ #include #include +#ifdef EXV_ENABLE_NLS +#include "futils.hpp" + #include namespace fs = std::filesystem; -#ifdef EXV_ENABLE_NLS #include #endif diff --git a/src/value.cpp b/src/value.cpp index 2c01fee9b4..db0ae1603c 100644 --- a/src/value.cpp +++ b/src/value.cpp @@ -1,16 +1,13 @@ // SPDX-License-Identifier: GPL-2.0-or-later -#include "config.h" - // included header files #include "value.hpp" - +#include "config.h" #include "convert.hpp" #include "enforce.hpp" #include "error.hpp" -#include "types.hpp" - #include "image_int.hpp" +#include "types.hpp" // + standard includes #include diff --git a/src/version.cpp b/src/version.cpp index 42a5303724..e0b888a503 100644 --- a/src/version.cpp +++ b/src/version.cpp @@ -1,25 +1,23 @@ // SPDX-License-Identifier: GPL-2.0-or-later +#include "version.hpp" #include "config.h" - -#ifdef EXV_USE_CURL -#include -#endif - #include "futils.hpp" #include "makernote_int.hpp" -#include "version.hpp" + +// + standard includes +#include +#include +#include // Adobe XMP Toolkit #ifdef EXV_HAVE_XMP_TOOLKIT #include "properties.hpp" -#include "xmp_exiv2.hpp" #endif -// + standard includes -#include -#include -#include +#ifdef EXV_USE_CURL +#include +#endif // #1147 #ifndef _WIN32 diff --git a/src/webpimage.cpp b/src/webpimage.cpp index fa63d9c7b0..cd89c1b30f 100644 --- a/src/webpimage.cpp +++ b/src/webpimage.cpp @@ -18,6 +18,7 @@ #include "types.hpp" #include +#include #include namespace { diff --git a/src/xmp.cpp b/src/xmp.cpp index 1a92dc9ac7..79859ca824 100644 --- a/src/xmp.cpp +++ b/src/xmp.cpp @@ -6,7 +6,6 @@ #include "error.hpp" #include "properties.hpp" #include "types.hpp" -#include "utils.hpp" #include "value.hpp" #include "xmp_exiv2.hpp" @@ -17,6 +16,7 @@ // Adobe XMP Toolkit #ifdef EXV_HAVE_XMP_TOOLKIT #include +#include "utils.hpp" #define TXMP_STRING_TYPE std::string #ifdef EXV_ADOBE_XMPSDK #include diff --git a/src/xmpsidecar.cpp b/src/xmpsidecar.cpp index 8001b1a3ee..94623f94b7 100644 --- a/src/xmpsidecar.cpp +++ b/src/xmpsidecar.cpp @@ -9,8 +9,11 @@ #include "image.hpp" #include "properties.hpp" #include "utils.hpp" +#include "value.hpp" #include "xmp_exiv2.hpp" +#include + #ifdef EXIV2_DEBUG_MESSAGES #include #endif diff --git a/unitTests/test_asfvideo.cpp b/unitTests/test_asfvideo.cpp index 37b962b912..3980a1ca74 100644 --- a/unitTests/test_asfvideo.cpp +++ b/unitTests/test_asfvideo.cpp @@ -3,6 +3,7 @@ #include #include +#include using namespace Exiv2; diff --git a/unitTests/test_bmpimage.cpp b/unitTests/test_bmpimage.cpp index 6d3250105d..a6fc5b6534 100644 --- a/unitTests/test_bmpimage.cpp +++ b/unitTests/test_bmpimage.cpp @@ -3,6 +3,7 @@ #include #include +#include #include using namespace Exiv2; diff --git a/unitTests/test_jp2image.cpp b/unitTests/test_jp2image.cpp index faacb64b4b..c52fd3f390 100644 --- a/unitTests/test_jp2image.cpp +++ b/unitTests/test_jp2image.cpp @@ -1,5 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later +#include #include #include diff --git a/unitTests/test_matroskavideo.cpp b/unitTests/test_matroskavideo.cpp index 3dd1fafd7f..525116a42b 100644 --- a/unitTests/test_matroskavideo.cpp +++ b/unitTests/test_matroskavideo.cpp @@ -2,6 +2,7 @@ #include +#include #include using namespace Exiv2; diff --git a/unitTests/test_pngimage.cpp b/unitTests/test_pngimage.cpp index 5f8f568b57..49c7731b74 100644 --- a/unitTests/test_pngimage.cpp +++ b/unitTests/test_pngimage.cpp @@ -1,5 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later +#include #include #include "pngchunk_int.hpp" // This is not part of the public API diff --git a/unitTests/test_riffVideo.cpp b/unitTests/test_riffVideo.cpp index 243e86dbe8..d92d3ddaf9 100644 --- a/unitTests/test_riffVideo.cpp +++ b/unitTests/test_riffVideo.cpp @@ -2,6 +2,7 @@ #include +#include #include using namespace Exiv2;