Skip to content

Commit

Permalink
get rid of EXV_CALL_MEMBER_FN
Browse files Browse the repository at this point in the history
std::invoke can be used.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
  • Loading branch information
neheb committed Mar 20, 2023
1 parent 22b1201 commit 3dd8d5d
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 15 deletions.
11 changes: 0 additions & 11 deletions include/exiv2/types.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,6 @@
#include <sstream>
#include <vector>

/*!
@brief Macro to make calls to member functions through a pointer more readable.
See the C++ FAQ LITE, item
<a href="http://www.parashift.com/c++-faq-lite/pointers-to-members.html#faq-33.5" title="[33.5] How can I avoid
syntax errors when calling a member function using a pointer-to-member-function?">[33.5] How can I avoid syntax errors
when calling a member function using a pointer-to-member-function?</a>.
*/
#define EXV_CALL_MEMBER_FN(object, ptrToMember) ((object).*(ptrToMember))

// *****************************************************************************

// *****************************************************************************
// namespace extensions
namespace Exiv2 {
Expand Down
5 changes: 3 additions & 2 deletions src/convert.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

// + standard includes
#include <algorithm>
#include <functional>
#include <iomanip>

#if defined _WIN32
Expand Down Expand Up @@ -499,15 +500,15 @@ Converter::Converter(IptcData& iptcData, XmpData& xmpData, const char* iptcChars
void Converter::cnvToXmp() {
for (auto&& c : conversion_) {
if ((c.metadataId_ == mdExif && exifData_) || (c.metadataId_ == mdIptc && iptcData_)) {
EXV_CALL_MEMBER_FN(*this, c.key1ToKey2_)(c.key1_, c.key2_);
std::invoke(c.key1ToKey2_, *this, c.key1_, c.key2_);
}
}
}

void Converter::cnvFromXmp() {
for (auto&& c : conversion_) {
if ((c.metadataId_ == mdExif && exifData_) || (c.metadataId_ == mdIptc && iptcData_)) {
EXV_CALL_MEMBER_FN(*this, c.key2ToKey1_)(c.key2_, c.key1_);
std::invoke(c.key2ToKey1_, *this, c.key2_, c.key1_);
}
}
}
Expand Down
5 changes: 3 additions & 2 deletions src/tiffvisitor_int.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
#include "tiffvisitor_int.hpp" // see bug #487
#include "value.hpp"

#include <functional>
#include <iostream>

// *****************************************************************************
Expand Down Expand Up @@ -420,7 +421,7 @@ void TiffDecoder::decodeTiffEntry(const TiffEntryBase* object) {
const DecoderFct decoderFct = findDecoderFct_(make_, object->tag(), object->group());
// skip decoding if decoderFct == 0
if (decoderFct) {
EXV_CALL_MEMBER_FN(*this, decoderFct)(object);
std::invoke(decoderFct, *this, object);
}
} // TiffDecoder::decodeTiffEntry

Expand Down Expand Up @@ -736,7 +737,7 @@ void TiffEncoder::encodeTiffComponent(TiffEntryBase* object, const Exifdatum* da
const EncoderFct fct = findEncoderFct_(make_, object->tag(), object->group());
if (fct) {
// If an encoding function is registered for the tag, use it
EXV_CALL_MEMBER_FN(*this, fct)(object, ed);
std::invoke(fct, *this, object, ed);
} else {
// Else use the encode function at the object (results in a double-dispatch
// to the appropriate encoding function of the encoder.
Expand Down

0 comments on commit 3dd8d5d

Please sign in to comment.