@@ -196,6 +196,9 @@ bool Image::isLittleEndianPlatform() {
196196}
197197
198198uint64_t Image::byteSwap (uint64_t value, bool bSwap) {
199+ #ifdef __cpp_lib_byteswap
200+ return bSwap ? std::byteswap (value) : value;
201+ #else
199202 uint64_t result = 0 ;
200203 auto source_value = reinterpret_cast <byte*>(&value);
201204 auto destination_value = reinterpret_cast <byte*>(&result);
@@ -204,22 +207,31 @@ uint64_t Image::byteSwap(uint64_t value, bool bSwap) {
204207 destination_value[i] = source_value[8 - i - 1 ];
205208
206209 return bSwap ? result : value;
210+ #endif
207211}
208212
209213uint32_t Image::byteSwap (uint32_t value, bool bSwap) {
214+ #ifdef __cpp_lib_byteswap
215+ return bSwap ? std::byteswap (value) : value;
216+ #else
210217 uint32_t result = 0 ;
211218 result |= (value & 0x000000FFU ) << 24 ;
212219 result |= (value & 0x0000FF00U ) << 8 ;
213220 result |= (value & 0x00FF0000U ) >> 8 ;
214221 result |= (value & 0xFF000000U ) >> 24 ;
215222 return bSwap ? result : value;
223+ #endif
216224}
217225
218226uint16_t Image::byteSwap (uint16_t value, bool bSwap) {
227+ #ifdef __cpp_lib_byteswap
228+ return bSwap ? std::byteswap (value) : value;
229+ #else
219230 uint16_t result = 0 ;
220231 result |= (value & 0x00FFU ) << 8 ;
221232 result |= (value & 0xFF00U ) >> 8 ;
222233 return bSwap ? result : value;
234+ #endif
223235}
224236
225237uint16_t Image::byteSwap2 (const DataBuf& buf, size_t offset, bool bSwap) {
0 commit comments