From c4eedd6ae487f8b5a2bb9658ec6d8c07a52eea8e Mon Sep 17 00:00:00 2001 From: Rosen Penev Date: Tue, 29 Mar 2022 18:47:04 -0700 Subject: [PATCH] nodiscard addition Signed-off-by: Rosen Penev --- include/exiv2/basicio.hpp | 48 +++++++++++++-------------- include/exiv2/bmffimage.hpp | 10 +++--- include/exiv2/bmpimage.hpp | 2 +- include/exiv2/cr2image.hpp | 6 ++-- include/exiv2/crwimage.hpp | 6 ++-- include/exiv2/datasets.hpp | 20 +++++------ include/exiv2/epsimage.hpp | 2 +- include/exiv2/error.hpp | 6 ++-- include/exiv2/exif.hpp | 64 ++++++++++++++++++------------------ include/exiv2/gifimage.hpp | 2 +- include/exiv2/image.hpp | 34 +++++++++---------- include/exiv2/iptc.hpp | 56 +++++++++++++++---------------- include/exiv2/jp2image.hpp | 2 +- include/exiv2/jpgimage.hpp | 6 ++-- include/exiv2/properties.hpp | 18 +++++----- samples/prevtest.cpp | 2 ++ samples/write-test.cpp | 2 ++ 17 files changed, 145 insertions(+), 141 deletions(-) diff --git a/include/exiv2/basicio.hpp b/include/exiv2/basicio.hpp index 42480d51..daada21b 100644 --- a/include/exiv2/basicio.hpp +++ b/include/exiv2/basicio.hpp @@ -201,25 +201,25 @@ class EXIV2API BasicIo { @return Offset from the start of IO if successful;
-1 if failure; */ - virtual long tell() const = 0; + [[nodiscard]] virtual long tell() const = 0; /*! @brief Get the current size of the IO source in bytes. @return Size of the IO source in bytes;
-1 if failure; */ - virtual size_t size() const = 0; + [[nodiscard]] virtual size_t size() const = 0; //! Returns true if the IO source is open, otherwise false. - virtual bool isopen() const = 0; + [[nodiscard]] virtual bool isopen() const = 0; //! Returns 0 if the IO source is in a valid state, otherwise nonzero. - virtual int error() const = 0; + [[nodiscard]] virtual int error() const = 0; //! Returns true if the IO position has reached the end, otherwise false. - virtual bool eof() const = 0; + [[nodiscard]] virtual bool eof() const = 0; /*! @brief Return the path to the IO resource. Often used to form comprehensive error messages where only a BasicIo instance is available. */ - virtual const std::string &path() const noexcept = 0; + [[nodiscard]] virtual const std::string &path() const noexcept = 0; /*! @brief Mark all the bNone blocks to bKnow. This avoids allocating memory @@ -442,22 +442,22 @@ class EXIV2API FileIo : public BasicIo { @return Offset from the start of the file if successful;
-1 if failure; */ - long tell() const override; + [[nodiscard]] long tell() const override; /*! @brief Flush any buffered writes and get the current file size in bytes. @return Size of the file in bytes;
-1 if failure; */ - size_t size() const override; + [[nodiscard]] size_t size() const override; //! Returns true if the file is open, otherwise false. - bool isopen() const override; + [[nodiscard]] bool isopen() const override; //! Returns 0 if the file is in a valid state, otherwise nonzero. - int error() const override; + [[nodiscard]] int error() const override; //! Returns true if the file position has reached the end, otherwise false. - bool eof() const override; + [[nodiscard]] bool eof() const override; //! Returns the path of the file - const std::string &path() const noexcept override; + [[nodiscard]] const std::string &path() const noexcept override; /*! @brief Mark all the bNone blocks to bKnow. This avoids allocating memory @@ -624,21 +624,21 @@ class EXIV2API MemIo : public BasicIo { @brief Get the current IO position. @return Offset from the start of the memory block */ - long tell() const override; + [[nodiscard]] long tell() const override; /*! @brief Get the current memory buffer size in bytes. @return Size of the in memory data in bytes;
-1 if failure; */ - size_t size() const override; + [[nodiscard]] size_t size() const override; //! Always returns true - bool isopen() const override; + [[nodiscard]] bool isopen() const override; //! Always returns 0 - int error() const override; + [[nodiscard]] int error() const override; //! Returns true if the IO position has reached the end, otherwise false. - bool eof() const override; + [[nodiscard]] bool eof() const override; //! Returns a dummy path, indicating that memory access is used - const std::string &path() const noexcept override; + [[nodiscard]] const std::string &path() const noexcept override; /*! @brief Mark all the bNone blocks to bKnow. This avoids allocating memory @@ -868,21 +868,21 @@ class EXIV2API RemoteIo : public BasicIo { @brief Get the current IO position. @return Offset from the start of the memory block */ - long tell() const override; + [[nodiscard]] long tell() const override; /*! @brief Get the current memory buffer size in bytes. @return Size of the in memory data in bytes;
-1 if failure; */ - size_t size() const override; + [[nodiscard]] size_t size() const override; //! Returns true if the memory area is allocated. - bool isopen() const override; + [[nodiscard]] bool isopen() const override; //! Always returns 0 - int error() const override; + [[nodiscard]] int error() const override; //! Returns true if the IO position has reached the end, otherwise false. - bool eof() const override; + [[nodiscard]] bool eof() const override; //! Returns the URL of the file. - const std::string &path() const noexcept override; + [[nodiscard]] const std::string &path() const noexcept override; /*! @brief Mark all the bNone blocks to bKnow. This avoids allocating memory diff --git a/include/exiv2/bmffimage.hpp b/include/exiv2/bmffimage.hpp index 42cfe2ac..94984a9e 100644 --- a/include/exiv2/bmffimage.hpp +++ b/include/exiv2/bmffimage.hpp @@ -26,7 +26,7 @@ struct Iloc { uint32_t start_; uint32_t length_; - std::string toString() const; + [[nodiscard]] std::string toString() const; }; // class Iloc // ***************************************************************************** @@ -105,9 +105,9 @@ class EXIV2API BmffImage : public Image { //! @name Accessors //@{ - std::string mimeType() const override /* override */; - uint32_t pixelWidth() const override; - uint32_t pixelHeight() const override; + [[nodiscard]] std::string mimeType() const override /* override */; + [[nodiscard]] uint32_t pixelWidth() const override; + [[nodiscard]] uint32_t pixelHeight() const override; //@} const Exiv2::ByteOrder endian_{Exiv2::bigEndian}; @@ -123,7 +123,7 @@ class EXIV2API BmffImage : public Image { @warning This function should only be called by readMetadata() */ long boxHandler(std::ostream& out, Exiv2::PrintStructureOption option, const long pbox_end, int depth); - std::string indent(int i) const { + [[nodiscard]] std::string indent(int i) const { return std::string(2 * i, ' '); } diff --git a/include/exiv2/bmpimage.hpp b/include/exiv2/bmpimage.hpp index eb535227..3d3b1b9a 100644 --- a/include/exiv2/bmpimage.hpp +++ b/include/exiv2/bmpimage.hpp @@ -70,7 +70,7 @@ class EXIV2API BmpImage : public Image { //! @name Accessors //@{ - std::string mimeType() const override; + [[nodiscard]] std::string mimeType() const override; //@} }; // class BmpImage diff --git a/include/exiv2/cr2image.hpp b/include/exiv2/cr2image.hpp index efd948e2..fdf93a3e 100644 --- a/include/exiv2/cr2image.hpp +++ b/include/exiv2/cr2image.hpp @@ -66,9 +66,9 @@ class EXIV2API Cr2Image : public Image { //! @name Accessors //@{ - std::string mimeType() const override; - uint32_t pixelWidth() const override; - uint32_t pixelHeight() const override; + [[nodiscard]] std::string mimeType() const override; + [[nodiscard]] uint32_t pixelWidth() const override; + [[nodiscard]] uint32_t pixelHeight() const override; //@} //! @name NOT implemented diff --git a/include/exiv2/crwimage.hpp b/include/exiv2/crwimage.hpp index 7ce322a0..09f8278c 100644 --- a/include/exiv2/crwimage.hpp +++ b/include/exiv2/crwimage.hpp @@ -68,9 +68,9 @@ class EXIV2API CrwImage : public Image { //! @name Accessors //@{ - std::string mimeType() const override; - uint32_t pixelWidth() const override; - uint32_t pixelHeight() const override; + [[nodiscard]] std::string mimeType() const override; + [[nodiscard]] uint32_t pixelWidth() const override; + [[nodiscard]] uint32_t pixelHeight() const override; //@} //! @name NOT Implemented diff --git a/include/exiv2/datasets.hpp b/include/exiv2/datasets.hpp index e76e20a8..898724ac 100644 --- a/include/exiv2/datasets.hpp +++ b/include/exiv2/datasets.hpp @@ -272,21 +272,21 @@ class EXIV2API IptcKey : public Key { //! @name Accessors //@{ - std::string key() const override; - const char* familyName() const override; + [[nodiscard]] std::string key() const override; + [[nodiscard]] const char* familyName() const override; /*! @brief Return the name of the group (the second part of the key). For IPTC keys, the group name is the record name. */ - std::string groupName() const override; - std::string tagName() const override; - std::string tagLabel() const override; - uint16_t tag() const override; - UniquePtr clone() const; + [[nodiscard]] std::string groupName() const override; + [[nodiscard]] std::string tagName() const override; + [[nodiscard]] std::string tagLabel() const override; + [[nodiscard]] uint16_t tag() const override; + [[nodiscard]] UniquePtr clone() const; //! Return the name of the record - std::string recordName() const; + [[nodiscard]] std::string recordName() const; //! Return the record id - uint16_t record() const; + [[nodiscard]] uint16_t record() const; //@} protected: @@ -309,7 +309,7 @@ class EXIV2API IptcKey : public Key { private: //! Internal virtual copy constructor. - IptcKey* clone_() const override; + [[nodiscard]] IptcKey* clone_() const override; uint16_t tag_; //!< Tag value uint16_t record_; //!< Record value diff --git a/include/exiv2/epsimage.hpp b/include/exiv2/epsimage.hpp index 83573ed2..9da714a1 100644 --- a/include/exiv2/epsimage.hpp +++ b/include/exiv2/epsimage.hpp @@ -70,7 +70,7 @@ class EXIV2API EpsImage : public Image { //! @name Accessors //@{ - std::string mimeType() const override; + [[nodiscard]] std::string mimeType() const override; //@} //! @name NOT Implemented diff --git a/include/exiv2/error.hpp b/include/exiv2/error.hpp index 90d18174..408eef0a 100644 --- a/include/exiv2/error.hpp +++ b/include/exiv2/error.hpp @@ -262,17 +262,17 @@ class EXIV2API Error : public std::exception { } //! Virtual destructor. (Needed because of throw()) - virtual ~Error() noexcept; + ~Error() noexcept override; //@} //! @name Accessors //@{ - ErrorCode code() const noexcept; + [[nodiscard]] ErrorCode code() const noexcept; /*! @brief Return the error message as a C-string. The pointer returned by what() is valid only as long as the BasicError object exists. */ - const char* what() const noexcept override; + [[nodiscard]] const char* what() const noexcept override; //@} private: diff --git a/include/exiv2/exif.hpp b/include/exiv2/exif.hpp index 9c212d34..c052513a 100644 --- a/include/exiv2/exif.hpp +++ b/include/exiv2/exif.hpp @@ -135,18 +135,18 @@ class EXIV2API Exifdatum : public Metadatum { //! @name Accessors //@{ //! Return the key of the %Exifdatum. - std::string key() const override; - const char* familyName() const override; - std::string groupName() const override; - std::string tagName() const override; - std::string tagLabel() const override; - uint16_t tag() const override; + [[nodiscard]] std::string key() const override; + [[nodiscard]] const char* familyName() const override; + [[nodiscard]] std::string groupName() const override; + [[nodiscard]] std::string tagName() const override; + [[nodiscard]] std::string tagLabel() const override; + [[nodiscard]] uint16_t tag() const override; //! Return the IFD id as an integer. (Do not use, this is meant for library internal use.) - int ifdId() const; + [[nodiscard]] int ifdId() const; //! Return the name of the IFD - const char* ifdName() const; + [[nodiscard]] const char* ifdName() const; //! Return the index (unique id of this key within the original IFD) - int idx() const; + [[nodiscard]] int idx() const; /*! @brief Write value to a data buffer and return the number of bytes written. @@ -161,25 +161,25 @@ class EXIV2API Exifdatum : public Metadatum { size_t copy(byte* buf, ByteOrder byteOrder) const override; std::ostream& write(std::ostream& os, const ExifData* pMetadata = nullptr) const override; //! Return the type id of the value - TypeId typeId() const override; + [[nodiscard]] TypeId typeId() const override; //! Return the name of the type - const char* typeName() const override; + [[nodiscard]] const char* typeName() const override; //! Return the size in bytes of one component of this type - size_t typeSize() const override; + [[nodiscard]] size_t typeSize() const override; //! Return the number of components in the value - size_t count() const override; + [[nodiscard]] size_t count() const override; //! Return the size of the value in bytes - size_t size() const override; + [[nodiscard]] size_t size() const override; //! Return the value as a string. - std::string toString() const override; - std::string toString(size_t n) const override; - int64_t toInt64(size_t n = 0) const override; - float toFloat(size_t n = 0) const override; - Rational toRational(size_t n = 0) const override; - Value::UniquePtr getValue() const override; - const Value& value() const override; + [[nodiscard]] std::string toString() const override; + [[nodiscard]] std::string toString(size_t n) const override; + [[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]] const Value& value() const override; //! Return the size of the data area. - size_t sizeDataArea() const; + [[nodiscard]] size_t sizeDataArea() const; /*! @brief Return a copy of the data area of the value. The caller owns this copy and %DataBuf ensures that it will be deleted. @@ -192,7 +192,7 @@ class EXIV2API Exifdatum : public Metadatum { %DataBuf if the value does not have a data area assigned or the value is not set. */ - DataBuf dataArea() const; + [[nodiscard]] DataBuf dataArea() const; //@} private: @@ -227,7 +227,7 @@ class EXIV2API ExifThumbC { @brief Return the thumbnail image in a %DataBuf. The caller owns the data buffer and %DataBuf ensures that it will be deleted. */ - DataBuf copy() const; + [[nodiscard]] DataBuf copy() const; /*! @brief Write the thumbnail image to a file. @@ -238,17 +238,17 @@ class EXIV2API ExifThumbC { @param path File name of the thumbnail without extension. @return The number of bytes written. */ - size_t writeFile(const std::string& path) const; + [[nodiscard]] size_t writeFile(const std::string& path) const; /*! @brief Return the MIME type of the thumbnail, either \c "image/tiff" or \c "image/jpeg". */ - const char* mimeType() const; + [[nodiscard]] const char* mimeType() const; /*! @brief Return the file extension for the format of the thumbnail (".tif" or ".jpg"). */ - const char* extension() const; + [[nodiscard]] const char* extension() const; //@} private: @@ -442,24 +442,24 @@ class EXIV2API ExifData { //! @name Accessors //@{ //! Begin of the metadata - const_iterator begin() const { + [[nodiscard]] const_iterator begin() const { return exifMetadata_.begin(); } //! End of the metadata - const_iterator end() const { + [[nodiscard]] const_iterator end() const { return exifMetadata_.end(); } /*! @brief Find the first Exifdatum with the given \em key, return a const iterator to it. */ - const_iterator findKey(const ExifKey& key) const; + [[nodiscard]] const_iterator findKey(const ExifKey& key) const; //! Return true if there is no Exif metadata - bool empty() const { + [[nodiscard]] bool empty() const { return exifMetadata_.empty(); } //! Get the number of metadata entries - size_t count() const { + [[nodiscard]] size_t count() const { return exifMetadata_.size(); } //@} diff --git a/include/exiv2/gifimage.hpp b/include/exiv2/gifimage.hpp index 2b805753..f0df8677 100644 --- a/include/exiv2/gifimage.hpp +++ b/include/exiv2/gifimage.hpp @@ -73,7 +73,7 @@ class EXIV2API GifImage : public Image { //! @name Accessors //@{ - std::string mimeType() const override; + [[nodiscard]] std::string mimeType() const override; //@} }; // class GifImage diff --git a/include/exiv2/image.hpp b/include/exiv2/image.hpp index 7bd19c6f..5ec73227 100644 --- a/include/exiv2/image.hpp +++ b/include/exiv2/image.hpp @@ -206,7 +206,7 @@ class EXIV2API Image { /*! @brief return iccProfile */ - virtual const DataBuf& iccProfile() const { + [[nodiscard]] virtual const DataBuf& iccProfile() const { return iccProfile_; } @@ -337,12 +337,12 @@ class EXIV2API Image { @brief Return the byte order in which the Exif metadata of the image is encoded. Initially, it is not set (\em invalidByteOrder). */ - ByteOrder byteOrder() const; + [[nodiscard]] ByteOrder byteOrder() const; /*! @brief Check if the Image instance is valid. Use after object construction. @return true if the Image is in a valid state. */ - bool good() const; + [[nodiscard]] bool good() const; /*! @brief Return the MIME type of the image. @@ -353,15 +353,15 @@ class EXIV2API Image { and thus they all have MIME type "image/tiff", although a more specific MIME type may exist (e.g., "image/x-nikon-nef"). */ - virtual std::string mimeType() const = 0; + [[nodiscard]] virtual std::string mimeType() const = 0; /*! @brief Return the pixel width of the image. */ - virtual uint32_t pixelWidth() const; + [[nodiscard]] virtual uint32_t pixelWidth() const; /*! @brief Return the pixel height of the image. */ - virtual uint32_t pixelHeight() const; + [[nodiscard]] virtual uint32_t pixelHeight() const; /*! @brief Returns an ExifData instance containing currently buffered Exif data. @@ -373,7 +373,7 @@ class EXIV2API Image { @return read only ExifData instance containing Exif values */ - virtual const ExifData& exifData() const; + [[nodiscard]] virtual const ExifData& exifData() const; /*! @brief Returns an IptcData instance containing currently buffered IPTC data. @@ -385,7 +385,7 @@ class EXIV2API Image { @return modifiable IptcData instance containing IPTC values */ - virtual const IptcData& iptcData() const; + [[nodiscard]] virtual const IptcData& iptcData() const; /*! @brief Returns an XmpData instance containing currently buffered XMP data. @@ -397,15 +397,15 @@ class EXIV2API Image { @return modifiable XmpData instance containing XMP values */ - virtual const XmpData& xmpData() const; + [[nodiscard]] virtual const XmpData& xmpData() const; /*! @brief Return a copy of the image comment. May be an empty string. */ - virtual std::string comment() const; + [[nodiscard]] virtual std::string comment() const; /*! @brief Return the raw XMP packet as a string. */ - virtual const std::string& xmpPacket() const; + [[nodiscard]] virtual const std::string& xmpPacket() const; /*! @brief Return a reference to the BasicIo instance being used for Io. @@ -420,23 +420,23 @@ class EXIV2API Image { Image class will not see those changes until the readMetadata() method is called. */ - virtual BasicIo& io() const; + [[nodiscard]] virtual BasicIo& io() const; /*! @brief Returns the access mode, i.e., the metadata functions, which this image supports for the metadata type \em metadataId. @param metadataId The metadata identifier. @return Access mode for the requested image type and metadata identifier. */ - AccessMode checkMode(MetadataId metadataId) const; + [[nodiscard]] AccessMode checkMode(MetadataId metadataId) const; /*! @brief Check if image supports a particular type of metadata. This method is deprecated. Use checkMode() instead. */ - bool supportsMetadata(MetadataId metadataId) const; + [[nodiscard]] bool supportsMetadata(MetadataId metadataId) const; //! Return the flag indicating the source when writing XMP metadata. - bool writeXmpFromPacket() const; + [[nodiscard]] bool writeXmpFromPacket() const; //! Return list of native previews. This is meant to be used only by the PreviewManager. - const NativePreviewList& nativePreviews() const; + [[nodiscard]] const NativePreviewList& nativePreviews() const; //@} //! set type support for this image format @@ -446,7 +446,7 @@ class EXIV2API Image { } //! set type support for this image format - ImageType imageType() const { + [[nodiscard]] ImageType imageType() const { return imageType_; } diff --git a/include/exiv2/iptc.hpp b/include/exiv2/iptc.hpp index 69f9e328..56dde0e5 100644 --- a/include/exiv2/iptc.hpp +++ b/include/exiv2/iptc.hpp @@ -94,39 +94,39 @@ class EXIV2API Iptcdatum : public Metadatum { is not necessarily unique, i.e., an IptcData object may contain multiple metadata with the same key. */ - std::string key() const override; + [[nodiscard]] std::string key() const override; /*! @brief Return the name of the record (deprecated) @return record name */ - std::string recordName() const; + [[nodiscard]] std::string recordName() const; /*! @brief Return the record id @return record id */ - uint16_t record() const; - const char* familyName() const override; - std::string groupName() const override; + [[nodiscard]] uint16_t record() const; + [[nodiscard]] const char* familyName() const override; + [[nodiscard]] std::string groupName() const override; /*! @brief Return the name of the tag (aka dataset) @return tag name */ - std::string tagName() const override; - std::string tagLabel() const override; + [[nodiscard]] std::string tagName() const override; + [[nodiscard]] std::string tagLabel() const override; //! Return the tag (aka dataset) number - uint16_t tag() const override; - TypeId typeId() const override; - const char* typeName() const override; - size_t typeSize() const override; - size_t count() const override; - size_t size() const override; - std::string toString() const override; - std::string toString(size_t n) const override; - int64_t toInt64(size_t n = 0) const override; - float toFloat(size_t n = 0) const override; - Rational toRational(size_t n = 0) const override; - Value::UniquePtr getValue() const override; - const Value& value() const override; + [[nodiscard]] uint16_t tag() const override; + [[nodiscard]] TypeId typeId() const override; + [[nodiscard]] const char* typeName() const override; + [[nodiscard]] size_t typeSize() const override; + [[nodiscard]] size_t count() const override; + [[nodiscard]] size_t size() const override; + [[nodiscard]] std::string toString() const override; + [[nodiscard]] std::string toString(size_t n) const override; + [[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]] const Value& value() const override; //@} private: @@ -224,38 +224,38 @@ class EXIV2API IptcData { //! @name Accessors //@{ //! Begin of the metadata - const_iterator begin() const { + [[nodiscard]] const_iterator begin() const { return iptcMetadata_.begin(); } //! End of the metadata - const_iterator end() const { + [[nodiscard]] const_iterator end() const { return iptcMetadata_.end(); } /*! @brief Find the first Iptcdatum with the given key, return a const iterator to it. */ - const_iterator findKey(const IptcKey& key) const; + [[nodiscard]] const_iterator findKey(const IptcKey& key) const; /*! @brief Find the first Iptcdatum with the given record and dataset number, return a const iterator to it. */ - const_iterator findId(uint16_t dataset, uint16_t record = IptcDataSets::application2) const; + [[nodiscard]] const_iterator findId(uint16_t dataset, uint16_t record = IptcDataSets::application2) const; //! Return true if there is no IPTC metadata - bool empty() const { + [[nodiscard]] bool empty() const { return count() == 0; } //! Get the number of metadata entries - size_t count() const { + [[nodiscard]] size_t count() const { return iptcMetadata_.size(); } //! @brief Return the exact size of all contained IPTC metadata - size_t size() const; + [[nodiscard]] size_t size() const; //! @brief Return the metadata charset name or 0 - const char* detectCharset() const; + [[nodiscard]] const char* detectCharset() const; //! @brief dump iptc formatted binary data (used by printStructure kpsRecursive) static void printStructure(std::ostream& out, const Slice& bytes, uint32_t depth); diff --git a/include/exiv2/jp2image.hpp b/include/exiv2/jp2image.hpp index 0955f8f0..1799311a 100644 --- a/include/exiv2/jp2image.hpp +++ b/include/exiv2/jp2image.hpp @@ -61,7 +61,7 @@ class EXIV2API Jp2Image : public Image { //! @name Accessors //@{ - std::string mimeType() const override; + [[nodiscard]] std::string mimeType() const override; //@} //! @name NOT Implemented diff --git a/include/exiv2/jpgimage.hpp b/include/exiv2/jpgimage.hpp index 4ffd0a8b..58a93b9d 100644 --- a/include/exiv2/jpgimage.hpp +++ b/include/exiv2/jpgimage.hpp @@ -241,7 +241,7 @@ class EXIV2API JpegBase : public Image { @return the next Jpeg segment marker if successful;
throws an Error if not successful */ - byte advanceToMarker(ErrorCode err) const; + [[nodiscard]] byte advanceToMarker(ErrorCode err) const; //@} DataBuf readNextSegment(byte marker); @@ -282,7 +282,7 @@ class EXIV2API JpegImage : public JpegBase { //@} //! @name Accessors //@{ - std::string mimeType() const override; + [[nodiscard]] std::string mimeType() const override; //@} // NOT Implemented @@ -343,7 +343,7 @@ class EXIV2API ExvImage : public JpegBase { //@} //! @name Accessors //@{ - std::string mimeType() const override; + [[nodiscard]] std::string mimeType() const override; //@} // NOT Implemented diff --git a/include/exiv2/properties.hpp b/include/exiv2/properties.hpp index 1c51c0cc..2823e597 100644 --- a/include/exiv2/properties.hpp +++ b/include/exiv2/properties.hpp @@ -254,28 +254,28 @@ class EXIV2API XmpKey : public Key { //! @name Accessors //@{ - std::string key() const override; - const char* familyName() const override; + [[nodiscard]] std::string key() const override; + [[nodiscard]] const char* familyName() const override; /*! @brief Return the name of the group (the second part of the key). For XMP keys, the group name is the schema prefix name. */ - std::string groupName() const override; - std::string tagName() const override; - std::string tagLabel() const override; + [[nodiscard]] std::string groupName() const override; + [[nodiscard]] std::string tagName() const override; + [[nodiscard]] std::string tagLabel() const override; //! Properties don't have a tag number. Return 0. - uint16_t tag() const override; + [[nodiscard]] uint16_t tag() const override; - UniquePtr clone() const; + [[nodiscard]] UniquePtr clone() const; // Todo: Should this be removed? What about tagLabel then? //! Return the schema namespace for the prefix of the key - std::string ns() const; + [[nodiscard]] std::string ns() const; //@} private: //! Internal virtual copy constructor. - XmpKey* clone_() const override; + [[nodiscard]] XmpKey* clone_() const override; // Pimpl idiom struct Impl; diff --git a/samples/prevtest.cpp b/samples/prevtest.cpp index 5354c5ba..4ef44141 100644 --- a/samples/prevtest.cpp +++ b/samples/prevtest.cpp @@ -30,6 +30,8 @@ int main(int argc, char* const argv[]) try { Exiv2::PreviewImage preview = loader.getPreviewImage(pos); auto s = preview.writeFile(filename + "_" + Exiv2::toString(pos.width_) + "x" + Exiv2::toString(pos.height_)); + if (s == 0) + return EXIT_FAILURE; } // Cleanup diff --git a/samples/write-test.cpp b/samples/write-test.cpp index 0ea614e9..d62c66da 100644 --- a/samples/write-test.cpp +++ b/samples/write-test.cpp @@ -149,6 +149,8 @@ void testCase(const std::string& file1, const std::string& file2, const std::str std::cerr << "---> Writing Exif thumbnail to file " << thumb << ".*\n"; ExifThumbC et2(ed2); auto s = et2.writeFile(thumb); + if (s == 0) + std::cerr << "---> Failed to write to file " << thumb << ".*\n"; } // *****************************************************************************