/////////////////////////////////////////////////////////////////////////////// // /// \file check_byteswap.h /// \brief Byteswapping needed by the checks // // This code has been put into the public domain. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // /////////////////////////////////////////////////////////////////////////////// #ifndef LZMA_CHECK_BYTESWAP_H #define LZMA_CHECK_BYTESWAP_H #ifdef HAVE_CONFIG_H # include #endif // byteswap.h is a GNU extension. It contains inline assembly versions // for byteswapping. When byteswap.h is not available, we use generic code. #ifdef HAVE_BYTESWAP_H # include #else # define bswap_32(num) \ ( (((num) << 24) ) \ | (((num) << 8) & UINT32_C(0x00FF0000)) \ | (((num) >> 8) & UINT32_C(0x0000FF00)) \ | (((num) >> 24) ) ) # define bswap_64(num) \ ( (((num) << 56) ) \ | (((num) << 40) & UINT64_C(0x00FF000000000000)) \ | (((num) << 24) & UINT64_C(0x0000FF0000000000)) \ | (((num) << 8) & UINT64_C(0x000000FF00000000)) \ | (((num) >> 8) & UINT64_C(0x00000000FF000000)) \ | (((num) >> 24) & UINT64_C(0x0000000000FF0000)) \ | (((num) >> 40) & UINT64_C(0x000000000000FF00)) \ | (((num) >> 56) ) ) #endif #endif