From 676aac180745f9dcff8b475160bb9c8beb4ea71f Mon Sep 17 00:00:00 2001 From: Rosen Penev Date: Wed, 12 Jul 2023 08:56:50 -0700 Subject: [PATCH] remove endian handling There's std::endian now. Signed-off-by: Rosen Penev --- include/exiv2/config.h | 14 -------------- src/bmffimage.cpp | 3 ++- src/image.cpp | 11 ++--------- src/jp2image.cpp | 3 ++- src/pgfimage.cpp | 4 +++- 5 files changed, 9 insertions(+), 26 deletions(-) diff --git a/include/exiv2/config.h b/include/exiv2/config.h index e55bd28bbb..d509df7743 100644 --- a/include/exiv2/config.h +++ b/include/exiv2/config.h @@ -31,20 +31,6 @@ #endif #endif -#ifndef __LITTLE_ENDIAN__ -#if defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) -#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ -#define __LITTLE_ENDIAN__ 1 -#endif -#endif -#endif - -#ifndef __LITTLE_ENDIAN__ -#if defined(_WIN32) || defined(__CYGWIN__) -#define __LITTLE_ENDIAN__ 1 -#endif -#endif - /* If you're using Solaris and the Solaris Studio compiler you must -library=stdcxx4 along with these inclusions below diff --git a/src/bmffimage.cpp b/src/bmffimage.cpp index 185672b9b8..895290b57a 100644 --- a/src/bmffimage.cpp +++ b/src/bmffimage.cpp @@ -21,6 +21,7 @@ #endif // + standard includes +#include #include #include #include @@ -92,7 +93,7 @@ std::string BmffImage::toAscii(uint32_t n) { return '_'; // show 0 as _ return '.'; // others . }); - if (!isBigEndianPlatform()) + if (std::endian::native == std::endian::little) std::reverse(result.begin(), result.end()); return result; } diff --git a/src/image.cpp b/src/image.cpp index e4607c9b56..323d2e0928 100644 --- a/src/image.cpp +++ b/src/image.cpp @@ -168,14 +168,6 @@ bool Image::isPrintICC(uint16_t type, Exiv2::PrintStructureOption option) { return type == 0x8773 && option == kpsIccProfile; } -bool Image::isBigEndianPlatform() { - return std::endian::native == std::endian::big; -} - -bool Image::isLittleEndianPlatform() { - return std::endian::native == std::endian::little; -} - uint64_t Image::byteSwap(uint64_t value, bool bSwap) { uint64_t result = 0; auto source_value = reinterpret_cast(&value); @@ -509,7 +501,8 @@ void Image::printTiffStructure(BasicIo& io, std::ostream& out, Exiv2::PrintStruc // read header (we already know for certain that we have a Tiff file) io.readOrThrow(dir.data(), 8, ErrorCode::kerCorruptedMetadata); auto c = dir.read_uint8(0); - bool bSwap = (c == 'M' && isLittleEndianPlatform()) || (c == 'I' && isBigEndianPlatform()); + bool bSwap = (c == 'M' && std::endian::native == std::endian::little) || + (c == 'I' && std::endian::native == std::endian::big); size_t start = byteSwap4(dir, 4, bSwap); printIFDStructure(io, out, option, start + offset, bSwap, c, depth); } diff --git a/src/jp2image.cpp b/src/jp2image.cpp index 0fbd4d22f9..38af2f6990 100644 --- a/src/jp2image.cpp +++ b/src/jp2image.cpp @@ -18,6 +18,7 @@ #include #include +#include #include namespace Exiv2 { @@ -101,7 +102,7 @@ Jp2Image::Jp2Image(BasicIo::UniquePtr io, bool create) : Image(ImageType::jp2, m std::string Jp2Image::toAscii(uint32_t n) { const auto p = reinterpret_cast(&n); std::string result(p, p + 4); - if (!isBigEndianPlatform()) + if (std::endian::native == std::endian::little) std::reverse(result.begin(), result.end()); return result; } diff --git a/src/pgfimage.cpp b/src/pgfimage.cpp index 11b7890e7d..aff5e51a44 100644 --- a/src/pgfimage.cpp +++ b/src/pgfimage.cpp @@ -10,6 +10,7 @@ #include "futils.hpp" #include "image.hpp" +#include #include // Signature from front of PGF file @@ -54,7 +55,8 @@ static uint32_t byteSwap_(Exiv2::DataBuf& buf, size_t offset, bool bSwap) { } PgfImage::PgfImage(BasicIo::UniquePtr io, bool create) : - Image(ImageType::pgf, mdExif | mdIptc | mdXmp | mdComment, std::move(io)), bSwap_(isBigEndianPlatform()) { + Image(ImageType::pgf, mdExif | mdIptc | mdXmp | mdComment, std::move(io)), + bSwap_(std::endian::native == std::endian::big) { if (create && io_->open() == 0) { #ifdef EXIV2_DEBUG_MESSAGES std::cerr << "Exiv2::PgfImage:: Creating PGF image to memory\n";