From db3864b3d4feee78010fe9a54d71e89406fceafc Mon Sep 17 00:00:00 2001
From: Beman const
) ReversibleValue
.
reverse_value(x)
ReversibleValue
The returned value is the value of x
with the
order of its constituent bytes reversed.
endian
After compiling and executing endian_example.cpp, +
After compiling and executing endian_example.cpp,
a hex dump of test.dat
shows:
01020304 00000010 01000000 04030201@@ -617,7 +616,7 @@ differs from endian representation size. Vicente Botet and other reviewers suggested supporting floating point types.
Last revised: -28 May, 2013
+29 May, 2013© Copyright Beman Dawes, 2006-2009, 2013
Distributed under the Boost Software License, Version 1.0. See www.boost.org/ LICENSE_1_0.txt
diff --git a/include/boost/endian/types.hpp b/include/boost/endian/types.hpp index 308a374..a78d443 100644 --- a/include/boost/endian/types.hpp +++ b/include/boost/endian/types.hpp @@ -319,7 +319,7 @@ namespace endian } const char* data() const BOOST_NOEXCEPT { return m_value; } private: - char m_value[n_bits/8]; + char m_value[n_bits/8]; }; // unaligned float big endian specialization @@ -344,7 +344,7 @@ namespace endian } const char* data() const BOOST_NOEXCEPT { return m_value; } private: - char m_value[sizeof(value_type)]; + char m_value[sizeof(value_type)]; }; // unaligned double big endian specialization @@ -369,7 +369,7 @@ namespace endian } const char* data() const BOOST_NOEXCEPT { return m_value; } private: - char m_value[sizeof(value_type)]; + char m_value[sizeof(value_type)]; }; // unaligned float little endian specialization @@ -394,7 +394,7 @@ namespace endian } const char* data() const BOOST_NOEXCEPT { return m_value; } private: - char m_value[sizeof(value_type)]; + char m_value[sizeof(value_type)]; }; // unaligned double little endian specialization @@ -419,7 +419,7 @@ namespace endian } const char* data() const BOOST_NOEXCEPT { return m_value; } private: - char m_value[sizeof(value_type)]; + char m_value[sizeof(value_type)]; }; // unaligned little endian specialization @@ -453,7 +453,7 @@ namespace endian } const char* data() const BOOST_NOEXCEPT { return m_value; } private: - char m_value[n_bits/8]; + char m_value[n_bits/8]; }; // unaligned native endian specialization @@ -485,7 +485,7 @@ namespace endian # endif const char* data() const BOOST_NOEXCEPT { return m_value; } private: - char m_value[n_bits/8]; + char m_value[n_bits/8]; }; // align::yes specializations; only n_bits == 16/32/64 supported @@ -526,7 +526,7 @@ namespace endian } const char* data() const BOOST_NOEXCEPT {return reinterpret_cast(&m_value);} private: - T m_value; + T m_value; }; // aligned little endian specialization @@ -565,7 +565,7 @@ namespace endian } const char* data() const BOOST_NOEXCEPT {return reinterpret_cast (&m_value);} private: - T m_value; + T m_value; }; } // namespace endian diff --git a/test/endian_test.cpp b/test/endian_test.cpp index 745cc2e..f728b65 100644 --- a/test/endian_test.cpp +++ b/test/endian_test.cpp @@ -559,74 +559,74 @@ namespace void check_representation_and_range_and_ops() { // aligned floating point types - float big_float32_expected = std::numeric_limits ::max(); + float big_float32_expected = (std::numeric_limits ::max) (); boost::endian::big_endian(big_float32_expected); - big_float32_t big_float32(std::numeric_limits ::max()); + big_float32_t big_float32((std::numeric_limits ::max) ()); VERIFY(std::memcmp(big_float32.data(), reinterpret_cast (&big_float32_expected), sizeof(float)) == 0); - float little_float32_expected = std::numeric_limits ::max(); + float little_float32_expected = (std::numeric_limits ::max) (); boost::endian::little_endian(little_float32_expected); - little_float32_t little_float32(std::numeric_limits ::max()); + little_float32_t little_float32((std::numeric_limits ::max) ()); VERIFY(std::memcmp(little_float32.data(), reinterpret_cast (&little_float32_expected), sizeof(float)) == 0); - double big_float64_expected = std::numeric_limits ::max(); + double big_float64_expected = (std::numeric_limits ::max) (); boost::endian::big_endian(big_float64_expected); - big_float64_t big_float64(std::numeric_limits ::max()); + big_float64_t big_float64((std::numeric_limits ::max) ()); VERIFY(std::memcmp(big_float64.data(), reinterpret_cast (&big_float64_expected), sizeof(double)) == 0); - double little_float64_expected = std::numeric_limits ::max(); + double little_float64_expected = (std::numeric_limits ::max) (); boost::endian::little_endian(little_float64_expected); - little_float64_t little_float64(std::numeric_limits ::max()); + little_float64_t little_float64((std::numeric_limits ::max) ()); VERIFY(std::memcmp(little_float64.data(), reinterpret_cast (&little_float64_expected), sizeof(double)) == 0); - VERIFY_VALUE_AND_OPS( big_float32_t, float, std::numeric_limits ::max() ); - VERIFY_VALUE_AND_OPS( big_float32_t, float, std::numeric_limits ::min() ); - VERIFY_VALUE_AND_OPS( big_float64_t, double, std::numeric_limits ::max() ); - VERIFY_VALUE_AND_OPS( big_float64_t, double, std::numeric_limits ::min() ); + VERIFY_VALUE_AND_OPS( big_float32_t, float, (std::numeric_limits ::max) () ); + VERIFY_VALUE_AND_OPS( big_float32_t, float, (std::numeric_limits ::min) () ); + VERIFY_VALUE_AND_OPS( big_float64_t, double, (std::numeric_limits ::max) () ); + VERIFY_VALUE_AND_OPS( big_float64_t, double, (std::numeric_limits ::min) () ); - VERIFY_VALUE_AND_OPS( little_float32_t, float, std::numeric_limits ::max() ); - VERIFY_VALUE_AND_OPS( little_float32_t, float, std::numeric_limits ::min() ); - VERIFY_VALUE_AND_OPS( little_float64_t, double, std::numeric_limits ::max() ); - VERIFY_VALUE_AND_OPS( little_float64_t, double, std::numeric_limits ::min() ); + VERIFY_VALUE_AND_OPS( little_float32_t, float, (std::numeric_limits ::max) () ); + VERIFY_VALUE_AND_OPS( little_float32_t, float, (std::numeric_limits ::min) () ); + VERIFY_VALUE_AND_OPS( little_float64_t, double, (std::numeric_limits ::max) () ); + VERIFY_VALUE_AND_OPS( little_float64_t, double, (std::numeric_limits ::min) () ); // unaligned floating point types - float big_float32un_expected = std::numeric_limits ::max(); + float big_float32un_expected = (std::numeric_limits ::max) (); boost::endian::big_endian(big_float32un_expected); - big_float32un_t big_float32un(std::numeric_limits ::max()); + big_float32un_t big_float32un((std::numeric_limits ::max) ()); VERIFY(std::memcmp(big_float32un.data(), reinterpret_cast (&big_float32un_expected), sizeof(float)) == 0); - float little_float32un_expected = std::numeric_limits ::max(); + float little_float32un_expected = (std::numeric_limits ::max) (); boost::endian::little_endian(little_float32un_expected); - little_float32un_t little_float32un(std::numeric_limits ::max()); + little_float32un_t little_float32un((std::numeric_limits ::max) ()); VERIFY(std::memcmp(little_float32un.data(), reinterpret_cast (&little_float32un_expected), sizeof(float)) == 0); - double big_float64un_expected = std::numeric_limits ::max(); + double big_float64un_expected = (std::numeric_limits ::max) (); boost::endian::big_endian(big_float64un_expected); - big_float64un_t big_float64un(std::numeric_limits ::max()); + big_float64un_t big_float64un((std::numeric_limits ::max) ()); VERIFY(std::memcmp(big_float64un.data(), reinterpret_cast (&big_float64un_expected), sizeof(double)) == 0); - double little_float64un_expected = std::numeric_limits ::max(); + double little_float64un_expected = (std::numeric_limits ::max) (); boost::endian::little_endian(little_float64un_expected); - little_float64un_t little_float64un(std::numeric_limits ::max()); + little_float64un_t little_float64un((std::numeric_limits ::max) ()); VERIFY(std::memcmp(little_float64un.data(), reinterpret_cast (&little_float64un_expected), sizeof(double)) == 0); - VERIFY_VALUE_AND_OPS( big_float32un_t, float, std::numeric_limits ::max() ); - VERIFY_VALUE_AND_OPS( big_float32un_t, float, std::numeric_limits ::min() ); - VERIFY_VALUE_AND_OPS( big_float64un_t, double, std::numeric_limits ::max() ); - VERIFY_VALUE_AND_OPS( big_float64un_t, double, std::numeric_limits ::min() ); + VERIFY_VALUE_AND_OPS( big_float32un_t, float, (std::numeric_limits ::max) () ); + VERIFY_VALUE_AND_OPS( big_float32un_t, float, (std::numeric_limits ::min) () ); + VERIFY_VALUE_AND_OPS( big_float64un_t, double, (std::numeric_limits ::max) () ); + VERIFY_VALUE_AND_OPS( big_float64un_t, double, (std::numeric_limits ::min) () ); - VERIFY_VALUE_AND_OPS( little_float32un_t, float, std::numeric_limits ::max() ); - VERIFY_VALUE_AND_OPS( little_float32un_t, float, std::numeric_limits ::min() ); - VERIFY_VALUE_AND_OPS( little_float64un_t, double, std::numeric_limits ::max() ); - VERIFY_VALUE_AND_OPS( little_float64un_t, double, std::numeric_limits ::min() ); + VERIFY_VALUE_AND_OPS( little_float32un_t, float, (std::numeric_limits ::max) () ); + VERIFY_VALUE_AND_OPS( little_float32un_t, float, (std::numeric_limits ::min) () ); + VERIFY_VALUE_AND_OPS( little_float64un_t, double, (std::numeric_limits ::max) () ); + VERIFY_VALUE_AND_OPS( little_float64un_t, double, (std::numeric_limits ::min) () ); float a = 1.0F; big_float32_t b(1.0F); diff --git a/test/intrinsic_test.cpp b/test/intrinsic_test.cpp index fc22e12..4042106 100644 --- a/test/intrinsic_test.cpp +++ b/test/intrinsic_test.cpp @@ -5,8 +5,7 @@ #include "test.hpp" #include -#include -//#include +#include typedef unsigned short uint16_t; typedef unsigned int uint32_t; @@ -18,11 +17,11 @@ int main() #ifndef BOOST_ENDIAN_NO_INTRINSICS uint16_t x2 = 0x1122U; - assert(BOOST_ENDIAN_INTRINSIC_BYTE_SWAP_2(x2) == 0x2211U); + BOOST_ASSERT(BOOST_ENDIAN_INTRINSIC_BYTE_SWAP_2(x2) == 0x2211U); uint32_t x4 = 0x11223344UL; - assert(BOOST_ENDIAN_INTRINSIC_BYTE_SWAP_4(x4) == 0x44332211UL); + BOOST_ASSERT(BOOST_ENDIAN_INTRINSIC_BYTE_SWAP_4(x4) == 0x44332211UL); uint64_t x8 = 0x1122334455667788U; - assert(BOOST_ENDIAN_INTRINSIC_BYTE_SWAP_8(x8) == 0x8877665544332211ULL); + BOOST_ASSERT(BOOST_ENDIAN_INTRINSIC_BYTE_SWAP_8(x8) == 0x8877665544332211ULL); #endif return 0; }