Skip to content

Commit 6e9eca4

Browse files
authored
Merge pull request #2177 from neheb/1
clang-tidy and manual stuff
2 parents 04e5f28 + 262d0ee commit 6e9eca4

23 files changed

+115
-150
lines changed

include/exiv2/error.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,7 @@ class EXIV2API Error : public std::exception {
262262
}
263263

264264
//! Virtual destructor. (Needed because of throw())
265-
~Error() noexcept override;
265+
~Error() noexcept override = default;
266266
//@}
267267

268268
//! @name Accessors

samples/geotag.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -123,30 +123,30 @@ class Position {
123123
virtual ~Position() = default;
124124

125125
// instance methods
126-
bool good() const {
126+
[[nodiscard]] bool good() const {
127127
return time_ || lon_ || lat_ || ele_;
128128
}
129129
std::string getTimeString() {
130130
if (times_.empty())
131131
times_ = getExifTime(time_);
132132
return times_;
133133
}
134-
time_t getTime() const {
134+
[[nodiscard]] time_t getTime() const {
135135
return time_;
136136
}
137-
std::string toString() const;
137+
[[nodiscard]] std::string toString() const;
138138

139139
// getters/setters
140-
double lat() const {
140+
[[nodiscard]] double lat() const {
141141
return lat_;
142142
}
143-
double lon() const {
143+
[[nodiscard]] double lon() const {
144144
return lon_;
145145
}
146-
double ele() const {
146+
[[nodiscard]] double ele() const {
147147
return ele_;
148148
}
149-
int delta() const {
149+
[[nodiscard]] int delta() const {
150150
return delta_;
151151
}
152152
void delta(int delta) {

samples/ini-test.cpp

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,15 @@ int main() {
2525
if (reader.ParseError() < 0) {
2626
std::cerr << "Can't load '" << ini << "'" << std::endl;
2727
return EXIT_FAILURE;
28-
} else {
29-
std::cout << "Config loaded from : '" << ini << "' "
30-
<< "version=" << reader.GetInteger("protocol", "version", -1)
31-
<< ", name=" << reader.Get("user", "name", "UNKNOWN")
32-
<< ", email=" << reader.Get("user", "email", "UNKNOWN") << ", pi=" << reader.GetReal("user", "pi", -1)
33-
<< ", active=" << reader.GetBoolean("user", "active", true) << std::endl;
34-
35-
std::cout << "169=" << reader.Get("canon", "169", "UNDEFINED")
36-
<< ", 170=" << reader.Get("canon", "170", "UNDEFINED") << std::endl;
3728
}
29+
std::cout << "Config loaded from : '" << ini << "' "
30+
<< "version=" << reader.GetInteger("protocol", "version", -1)
31+
<< ", name=" << reader.Get("user", "name", "UNKNOWN")
32+
<< ", email=" << reader.Get("user", "email", "UNKNOWN") << ", pi=" << reader.GetReal("user", "pi", -1)
33+
<< ", active=" << reader.GetBoolean("user", "active", true) << std::endl;
34+
35+
std::cout << "169=" << reader.Get("canon", "169", "UNDEFINED") << ", 170=" << reader.Get("canon", "170", "UNDEFINED")
36+
<< std::endl;
3837

3938
return EXIT_SUCCESS;
4039
}

src/basicio.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -619,19 +619,19 @@ class EXIV2API BlockMap {
619619
size_ = num;
620620
}
621621

622-
bool isNone() const {
622+
[[nodiscard]] bool isNone() const {
623623
return type_ == bNone;
624624
}
625625

626-
bool isKnown() const {
626+
[[nodiscard]] bool isKnown() const {
627627
return type_ == bKnown;
628628
}
629629

630-
byte* getData() const {
630+
[[nodiscard]] byte* getData() const {
631631
return data_;
632632
}
633633

634-
size_t getSize() const {
634+
[[nodiscard]] size_t getSize() const {
635635
return size_;
636636
}
637637

@@ -1525,7 +1525,7 @@ HttpIo::HttpIo(const std::string& url, size_t blockSize) {
15251525
class CurlIo::CurlImpl : public Impl {
15261526
public:
15271527
//! Constructor
1528-
CurlImpl(const std::string& path, size_t blockSize);
1528+
CurlImpl(const std::string& url, size_t blockSize);
15291529
//! Destructor. Cleans up the curl pointer and releases all managed memory.
15301530
~CurlImpl() override;
15311531

src/bmffimage.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -527,7 +527,7 @@ void BmffImage::parseXmp(uint64_t length, uint64_t start) {
527527
long restore = io_->tell();
528528
io_->seek(static_cast<long>(start), BasicIo::beg);
529529

530-
size_t lengthSizeT = static_cast<size_t>(length);
530+
auto lengthSizeT = static_cast<size_t>(length);
531531
DataBuf xmp(lengthSizeT + 1);
532532
xmp.write_uint8(lengthSizeT, 0); // ensure xmp is null terminated!
533533
if (io_->read(xmp.data(), lengthSizeT) != lengthSizeT)

src/convert.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@
2626
#endif
2727

2828
#ifdef EXV_HAVE_ICONV
29-
#include <errno.h>
3029
#include <iconv.h>
30+
#include <cerrno>
3131
#endif
3232

3333
// Adobe XMP Toolkit
@@ -262,7 +262,7 @@ class Converter {
262262
//! @name Accessors
263263
//@{
264264
//! Get the value of the erase flag, see also setErase(bool on).
265-
bool erase() const {
265+
[[nodiscard]] bool erase() const {
266266
return erase_;
267267
}
268268
//@}
@@ -1527,7 +1527,7 @@ bool asciiToUtf8(std::string& /*str*/) {
15271527
return true;
15281528
}
15291529

1530-
using ConvFct = bool (*)(std::string& str);
1530+
using ConvFct = std::function<bool(std::string&)>;
15311531

15321532
struct ConvFctList {
15331533
bool operator==(const std::pair<const char*, const char*>& fromTo) const {

src/cr2image.cpp

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
// *****************************************************************************
1818
// class member definitions
1919
namespace Exiv2 {
20-
using namespace Internal;
2120

2221
Cr2Image::Cr2Image(BasicIo::UniquePtr io, bool /*create*/) :
2322
Image(ImageType::cr2, mdExif | mdIptc | mdXmp, std::move(io)) {
@@ -87,7 +86,7 @@ void Cr2Image::writeMetadata() {
8786
if (isCr2Type(*io_, false)) {
8887
pData = io_->mmap(true);
8988
size = io_->size();
90-
Cr2Header cr2Header;
89+
Internal::Cr2Header cr2Header;
9190
if (0 == cr2Header.read(pData, 16)) {
9291
bo = cr2Header.byteOrder();
9392
}
@@ -101,9 +100,9 @@ void Cr2Image::writeMetadata() {
101100
} // Cr2Image::writeMetadata
102101

103102
ByteOrder Cr2Parser::decode(ExifData& exifData, IptcData& iptcData, XmpData& xmpData, const byte* pData, size_t size) {
104-
Cr2Header cr2Header;
105-
return TiffParserWorker::decode(exifData, iptcData, xmpData, pData, size, Tag::root, TiffMapping::findDecoder,
106-
&cr2Header);
103+
Internal::Cr2Header cr2Header;
104+
return Internal::TiffParserWorker::decode(exifData, iptcData, xmpData, pData, size, Internal::Tag::root,
105+
Internal::TiffMapping::findDecoder, &cr2Header);
107106
}
108107

109108
WriteMethod Cr2Parser::encode(BasicIo& io, const byte* pData, size_t size, ByteOrder byteOrder,
@@ -113,20 +112,20 @@ WriteMethod Cr2Parser::encode(BasicIo& io, const byte* pData, size_t size, ByteO
113112

114113
// Delete IFDs which do not occur in TIFF images
115114
static constexpr auto filteredIfds = std::array{
116-
panaRawId,
115+
Internal::panaRawId,
117116
};
118117
for (auto&& filteredIfd : filteredIfds) {
119118
#ifdef EXIV2_DEBUG_MESSAGES
120119
std::cerr << "Warning: Exif IFD " << filteredIfd << " not encoded\n";
121120
#endif
122-
ed.erase(std::remove_if(ed.begin(), ed.end(), FindExifdatum(filteredIfd)), ed.end());
121+
ed.erase(std::remove_if(ed.begin(), ed.end(), Internal::FindExifdatum(filteredIfd)), ed.end());
123122
}
124123

125-
Cr2Header header(byteOrder);
126-
OffsetWriter offsetWriter;
127-
offsetWriter.setOrigin(OffsetWriter::cr2RawIfdOffset, Cr2Header::offset2addr(), byteOrder);
128-
return TiffParserWorker::encode(io, pData, size, ed, iptcData, xmpData, Tag::root, TiffMapping::findEncoder, &header,
129-
&offsetWriter);
124+
auto header = Internal::Cr2Header(byteOrder);
125+
Internal::OffsetWriter offsetWriter;
126+
offsetWriter.setOrigin(Internal::OffsetWriter::cr2RawIfdOffset, Internal::Cr2Header::offset2addr(), byteOrder);
127+
return Internal::TiffParserWorker::encode(io, pData, size, ed, iptcData, xmpData, Internal::Tag::root,
128+
Internal::TiffMapping::findEncoder, &header, &offsetWriter);
130129
}
131130

132131
// *************************************************************************
@@ -146,7 +145,7 @@ bool isCr2Type(BasicIo& iIo, bool advance) {
146145
if (iIo.error() || iIo.eof()) {
147146
return false;
148147
}
149-
Cr2Header header;
148+
Internal::Cr2Header header;
150149
bool rc = header.read(buf, len);
151150
if (!advance || !rc) {
152151
iIo.seek(-len, BasicIo::cur);

src/crwimage.cpp

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
// *****************************************************************************
1919
// class member definitions
2020
namespace Exiv2 {
21-
using namespace Internal;
2221

2322
CrwImage::CrwImage(BasicIo::UniquePtr io, bool /*create*/) : Image(ImageType::crw, mdExif | mdComment, std::move(io)) {
2423
} // CrwImage::CrwImage
@@ -102,12 +101,12 @@ void CrwImage::writeMetadata() {
102101

103102
void CrwParser::decode(CrwImage* pCrwImage, const byte* pData, size_t size) {
104103
// Parse the image, starting with a CIFF header component
105-
CiffHeader header;
104+
Internal::CiffHeader header;
106105
header.read(pData, size);
107106
header.decode(*pCrwImage);
108107

109108
// a hack to get absolute offset of preview image inside CRW structure
110-
CiffComponent* preview = header.findComponent(0x2007, 0x0000);
109+
auto preview = header.findComponent(0x2007, 0x0000);
111110
if (preview) {
112111
(pCrwImage->exifData())["Exif.Image2.JPEGInterchangeFormat"] = uint32_t(preview->pData() - pData);
113112
(pCrwImage->exifData())["Exif.Image2.JPEGInterchangeFormatLength"] = static_cast<uint32_t>(preview->size());
@@ -116,14 +115,14 @@ void CrwParser::decode(CrwImage* pCrwImage, const byte* pData, size_t size) {
116115

117116
void CrwParser::encode(Blob& blob, const byte* pData, size_t size, const CrwImage* pCrwImage) {
118117
// Parse image, starting with a CIFF header component
119-
CiffHeader header;
118+
Internal::CiffHeader header;
120119
if (size != 0) {
121120
header.read(pData, size);
122121
}
123122

124123
// Encode Exif tags from image into the CRW parse tree and write the
125124
// structure to the binary image blob
126-
CrwMap::encode(&header, *pCrwImage);
125+
Internal::CrwMap::encode(&header, *pCrwImage);
127126
header.write(blob);
128127
}
129128

@@ -147,7 +146,7 @@ bool isCrwType(BasicIo& iIo, bool advance) {
147146
if (!(('I' == tmpBuf[0] && 'I' == tmpBuf[1]) || ('M' == tmpBuf[0] && 'M' == tmpBuf[1]))) {
148147
result = false;
149148
}
150-
if (result && std::memcmp(tmpBuf + 6, CiffHeader::signature(), 8) != 0) {
149+
if (result && std::memcmp(tmpBuf + 6, Internal::CiffHeader::signature(), 8) != 0) {
151150
result = false;
152151
}
153152
if (!advance || !result)

src/crwimage_int.cpp

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,7 @@ class RotationMap {
2222

2323
private:
2424
//! Helper structure for the mapping list
25-
struct OmList {
26-
uint16_t orientation; //!< Exif orientation value
27-
int32_t degrees; //!< CRW Rotation degrees
28-
};
25+
using OmList = std::pair<uint16_t, int32_t>;
2926
// DATA
3027
static const OmList omList_[];
3128
}; // class RotationMap
@@ -350,7 +347,7 @@ size_t CiffDirectory::doWrite(Blob& blob, ByteOrder byteOrder, size_t offset) {
350347
for (auto&& component : components_) {
351348
dirOffset = component->write(blob, byteOrder, dirOffset);
352349
}
353-
const uint32_t dirStart = static_cast<uint32_t>(dirOffset);
350+
const auto dirStart = static_cast<uint32_t>(dirOffset);
354351

355352
// Number of directory entries
356353
byte buf[4];
@@ -520,7 +517,7 @@ CiffComponent* CiffDirectory::doFindComponent(uint16_t crwTagId, uint16_t crwDir
520517
void CiffHeader::add(uint16_t crwTagId, uint16_t crwDir, DataBuf&& buf) {
521518
CrwDirs crwDirs;
522519
CrwMap::loadStack(crwDirs, crwDir);
523-
[[maybe_unused]] uint16_t rootDirectory = crwDirs.top().crwDir_;
520+
[[maybe_unused]] auto [rootDirectory, _] = crwDirs.top();
524521
crwDirs.pop();
525522
if (!pRootDir_) {
526523
pRootDir_ = std::make_unique<CiffDirectory>();
@@ -553,18 +550,18 @@ CiffComponent* CiffDirectory::doAdd(CrwDirs& crwDirs, uint16_t crwTagId) {
553550
set value
554551
*/
555552
if (!crwDirs.empty()) {
556-
CrwSubDir csd = crwDirs.top();
553+
auto [dir, parent] = crwDirs.top();
557554
crwDirs.pop();
558555
// Find the directory
559556
for (auto&& component : components_) {
560-
if (component->tag() == csd.crwDir_) {
557+
if (component->tag() == dir) {
561558
cc_ = component;
562559
break;
563560
}
564561
}
565562
if (!cc_) {
566563
// Directory doesn't exist yet, add it
567-
m_ = std::make_unique<CiffDirectory>(csd.crwDir_, csd.parent_);
564+
m_ = std::make_unique<CiffDirectory>(dir, parent);
568565
cc_ = m_.get();
569566
add(std::move(m_));
570567
}
@@ -592,7 +589,6 @@ void CiffHeader::remove(uint16_t crwTagId, uint16_t crwDir) {
592589
if (pRootDir_) {
593590
CrwDirs crwDirs;
594591
CrwMap::loadStack(crwDirs, crwDir);
595-
[[maybe_unused]] uint16_t rootDirectory = crwDirs.top().crwDir_;
596592
crwDirs.pop();
597593
pRootDir_->remove(crwDirs, crwTagId);
598594
}
@@ -608,11 +604,11 @@ void CiffComponent::doRemove(CrwDirs& /*crwDirs*/, uint16_t /*crwTagId*/) {
608604

609605
void CiffDirectory::doRemove(CrwDirs& crwDirs, uint16_t crwTagId) {
610606
if (!crwDirs.empty()) {
611-
CrwSubDir csd = crwDirs.top();
607+
auto [dir, _] = crwDirs.top();
612608
crwDirs.pop();
613609
// Find the directory
614610
for (auto i = components_.begin(); i != components_.end(); ++i) {
615-
if ((*i)->tag() == csd.crwDir_) {
611+
if ((*i)->tag() == dir) {
616612
// Recursive call to next lower level directory
617613
(*i)->remove(crwDirs, crwTagId);
618614
if ((*i)->empty())
@@ -743,8 +739,8 @@ void CrwMap::decodeArray(const CiffComponent& ciffComponent, const CrwMapping* p
743739
if (ifdId == canonSiId) {
744740
// Exif.Photo.FNumber
745741
float f = fnumber(canonEv(aperture));
746-
Rational r = floatToRationalCast(f);
747-
URational ur(r.first, r.second);
742+
auto [r, s] = floatToRationalCast(f);
743+
auto ur = URational(r, s);
748744
URationalValue fn;
749745
fn.value_.push_back(ur);
750746
image.exifData().add(ExifKey("Exif.Photo.FNumber"), &fn);
@@ -835,9 +831,10 @@ void CrwMap::decodeBasic(const CiffComponent& ciffComponent, const CrwMapping* p
835831

836832
void CrwMap::loadStack(CrwDirs& crwDirs, uint16_t crwDir) {
837833
for (auto&& crw : crwSubDir_) {
838-
if (crw.crwDir_ == crwDir) {
834+
auto&& [dir, parent] = crw;
835+
if (dir == crwDir) {
839836
crwDirs.push(crw);
840-
crwDir = crw.parent_;
837+
crwDir = parent;
841838
}
842839
}
843840
} // CrwMap::loadStack

src/crwimage_int.hpp

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ namespace Exiv2::Internal {
2020
class CiffHeader;
2121
class CiffComponent;
2222
struct CrwMapping;
23-
struct CrwSubDir;
23+
using CrwSubDir = std::pair<uint16_t, uint16_t>;
2424

2525
// *****************************************************************************
2626
// type definitions
@@ -486,12 +486,6 @@ class CiffHeader {
486486

487487
}; // class CiffHeader
488488

489-
//! Structure for the CIFF directory hierarchy
490-
struct CrwSubDir {
491-
uint16_t crwDir_; //!< Directory tag
492-
uint16_t parent_; //!< Parent directory tag
493-
}; // struct CrwSubDir
494-
495489
/*!
496490
@brief Structure for a mapping table for conversion of CIFF entries to
497491
image metadata and vice versa.

0 commit comments

Comments
 (0)