diff --git a/include/boost/endian/converters.hpp b/include/boost/endian/converters.hpp index 110de01..94a4d63 100644 --- a/include/boost/endian/converters.hpp +++ b/include/boost/endian/converters.hpp @@ -44,11 +44,11 @@ namespace endian template inline T big(T x); - // Return: x if native endianness is big, otherwise reorder(x); + // Return: x if native endian order is big, otherwise reorder(x); template inline T little(T x); - // Return: x if native endianness is little, otherwise reorder(x); + // Return: x if native endian order is little, otherwise reorder(x); //----------------------------------- implementation -----------------------------------// // -- reorder implementation approach suggested by tymofey, with avoidance of @@ -120,7 +120,7 @@ namespace endian } template - inline T big(const T& x) + inline T big(T x) { # ifdef BOOST_BIG_ENDIAN return x; @@ -130,7 +130,7 @@ namespace endian } template - inline T little(const T& x) + inline T little(T x) { # ifdef BOOST_LITTLE_ENDIAN return x; diff --git a/include/boost/endian/integers.hpp b/include/boost/endian/integers.hpp index 52cfbeb..70bce7c 100644 --- a/include/boost/endian/integers.hpp +++ b/include/boost/endian/integers.hpp @@ -163,10 +163,10 @@ namespace boost // endian class template and specializations ---------------------------------------// - BOOST_SCOPED_ENUM_START(endianness) { big, little, native }; BOOST_SCOPED_ENUM_END + BOOST_SCOPED_ENUM_START(order) { big, little, native }; BOOST_SCOPED_ENUM_END BOOST_SCOPED_ENUM_START(alignment) { unaligned, aligned }; BOOST_SCOPED_ENUM_END - template class endian; @@ -177,8 +177,8 @@ namespace boost // unaligned big endian specialization template - class endian< endianness::big, T, n_bits, alignment::unaligned > - : cover_operators< endian< endianness::big, T, n_bits >, T > + class endian< order::big, T, n_bits, alignment::unaligned > + : cover_operators< endian< order::big, T, n_bits >, T > { BOOST_STATIC_ASSERT( (n_bits/8)*8 == n_bits ); public: @@ -210,8 +210,8 @@ namespace boost // unaligned little endian specialization template - class endian< endianness::little, T, n_bits, alignment::unaligned > - : cover_operators< endian< endianness::little, T, n_bits >, T > + class endian< order::little, T, n_bits, alignment::unaligned > + : cover_operators< endian< order::little, T, n_bits >, T > { BOOST_STATIC_ASSERT( (n_bits/8)*8 == n_bits ); public: @@ -243,8 +243,8 @@ namespace boost // unaligned native endian specialization template - class endian< endianness::native, T, n_bits, alignment::unaligned > - : cover_operators< endian< endianness::native, T, n_bits >, T > + class endian< order::native, T, n_bits, alignment::unaligned > + : cover_operators< endian< order::native, T, n_bits >, T > { BOOST_STATIC_ASSERT( (n_bits/8)*8 == n_bits ); public: @@ -274,8 +274,8 @@ namespace boost // aligned big endian specialization template - class endian< endianness::big, T, n_bits, alignment::aligned > - : cover_operators< endian< endianness::big, T, n_bits, alignment::aligned >, T > + class endian< order::big, T, n_bits, alignment::aligned > + : cover_operators< endian< order::big, T, n_bits, alignment::aligned >, T > { BOOST_STATIC_ASSERT( (n_bits/8)*8 == n_bits ); BOOST_STATIC_ASSERT( sizeof(T) == n_bits/8 ); @@ -303,8 +303,8 @@ namespace boost // aligned little endian specialization template - class endian< endianness::little, T, n_bits, alignment::aligned > - : cover_operators< endian< endianness::little, T, n_bits, alignment::aligned >, T > + class endian< order::little, T, n_bits, alignment::aligned > + : cover_operators< endian< order::little, T, n_bits, alignment::aligned >, T > { BOOST_STATIC_ASSERT( (n_bits/8)*8 == n_bits ); BOOST_STATIC_ASSERT( sizeof(T) == n_bits/8 ); @@ -333,64 +333,64 @@ namespace boost // naming convention typedefs ------------------------------------------------------// // unaligned big endian signed integer types - typedef endian< endianness::big, int_least8_t, 8 > big8_t; - typedef endian< endianness::big, int_least16_t, 16 > big16_t; - typedef endian< endianness::big, int_least32_t, 24 > big24_t; - typedef endian< endianness::big, int_least32_t, 32 > big32_t; - typedef endian< endianness::big, int_least64_t, 40 > big40_t; - typedef endian< endianness::big, int_least64_t, 48 > big48_t; - typedef endian< endianness::big, int_least64_t, 56 > big56_t; - typedef endian< endianness::big, int_least64_t, 64 > big64_t; + typedef endian< order::big, int_least8_t, 8 > big8_t; + typedef endian< order::big, int_least16_t, 16 > big16_t; + typedef endian< order::big, int_least32_t, 24 > big24_t; + typedef endian< order::big, int_least32_t, 32 > big32_t; + typedef endian< order::big, int_least64_t, 40 > big40_t; + typedef endian< order::big, int_least64_t, 48 > big48_t; + typedef endian< order::big, int_least64_t, 56 > big56_t; + typedef endian< order::big, int_least64_t, 64 > big64_t; // unaligned big endian unsigned integer types - typedef endian< endianness::big, uint_least8_t, 8 > ubig8_t; - typedef endian< endianness::big, uint_least16_t, 16 > ubig16_t; - typedef endian< endianness::big, uint_least32_t, 24 > ubig24_t; - typedef endian< endianness::big, uint_least32_t, 32 > ubig32_t; - typedef endian< endianness::big, uint_least64_t, 40 > ubig40_t; - typedef endian< endianness::big, uint_least64_t, 48 > ubig48_t; - typedef endian< endianness::big, uint_least64_t, 56 > ubig56_t; - typedef endian< endianness::big, uint_least64_t, 64 > ubig64_t; + typedef endian< order::big, uint_least8_t, 8 > ubig8_t; + typedef endian< order::big, uint_least16_t, 16 > ubig16_t; + typedef endian< order::big, uint_least32_t, 24 > ubig24_t; + typedef endian< order::big, uint_least32_t, 32 > ubig32_t; + typedef endian< order::big, uint_least64_t, 40 > ubig40_t; + typedef endian< order::big, uint_least64_t, 48 > ubig48_t; + typedef endian< order::big, uint_least64_t, 56 > ubig56_t; + typedef endian< order::big, uint_least64_t, 64 > ubig64_t; // unaligned little endian signed integer types - typedef endian< endianness::little, int_least8_t, 8 > little8_t; - typedef endian< endianness::little, int_least16_t, 16 > little16_t; - typedef endian< endianness::little, int_least32_t, 24 > little24_t; - typedef endian< endianness::little, int_least32_t, 32 > little32_t; - typedef endian< endianness::little, int_least64_t, 40 > little40_t; - typedef endian< endianness::little, int_least64_t, 48 > little48_t; - typedef endian< endianness::little, int_least64_t, 56 > little56_t; - typedef endian< endianness::little, int_least64_t, 64 > little64_t; + typedef endian< order::little, int_least8_t, 8 > little8_t; + typedef endian< order::little, int_least16_t, 16 > little16_t; + typedef endian< order::little, int_least32_t, 24 > little24_t; + typedef endian< order::little, int_least32_t, 32 > little32_t; + typedef endian< order::little, int_least64_t, 40 > little40_t; + typedef endian< order::little, int_least64_t, 48 > little48_t; + typedef endian< order::little, int_least64_t, 56 > little56_t; + typedef endian< order::little, int_least64_t, 64 > little64_t; // unaligned little endian unsigned integer types - typedef endian< endianness::little, uint_least8_t, 8 > ulittle8_t; - typedef endian< endianness::little, uint_least16_t, 16 > ulittle16_t; - typedef endian< endianness::little, uint_least32_t, 24 > ulittle24_t; - typedef endian< endianness::little, uint_least32_t, 32 > ulittle32_t; - typedef endian< endianness::little, uint_least64_t, 40 > ulittle40_t; - typedef endian< endianness::little, uint_least64_t, 48 > ulittle48_t; - typedef endian< endianness::little, uint_least64_t, 56 > ulittle56_t; - typedef endian< endianness::little, uint_least64_t, 64 > ulittle64_t; + typedef endian< order::little, uint_least8_t, 8 > ulittle8_t; + typedef endian< order::little, uint_least16_t, 16 > ulittle16_t; + typedef endian< order::little, uint_least32_t, 24 > ulittle24_t; + typedef endian< order::little, uint_least32_t, 32 > ulittle32_t; + typedef endian< order::little, uint_least64_t, 40 > ulittle40_t; + typedef endian< order::little, uint_least64_t, 48 > ulittle48_t; + typedef endian< order::little, uint_least64_t, 56 > ulittle56_t; + typedef endian< order::little, uint_least64_t, 64 > ulittle64_t; // unaligned native endian signed integer types - typedef endian< endianness::native, int_least8_t, 8 > native8_t; - typedef endian< endianness::native, int_least16_t, 16 > native16_t; - typedef endian< endianness::native, int_least32_t, 24 > native24_t; - typedef endian< endianness::native, int_least32_t, 32 > native32_t; - typedef endian< endianness::native, int_least64_t, 40 > native40_t; - typedef endian< endianness::native, int_least64_t, 48 > native48_t; - typedef endian< endianness::native, int_least64_t, 56 > native56_t; - typedef endian< endianness::native, int_least64_t, 64 > native64_t; + typedef endian< order::native, int_least8_t, 8 > native8_t; + typedef endian< order::native, int_least16_t, 16 > native16_t; + typedef endian< order::native, int_least32_t, 24 > native24_t; + typedef endian< order::native, int_least32_t, 32 > native32_t; + typedef endian< order::native, int_least64_t, 40 > native40_t; + typedef endian< order::native, int_least64_t, 48 > native48_t; + typedef endian< order::native, int_least64_t, 56 > native56_t; + typedef endian< order::native, int_least64_t, 64 > native64_t; // unaligned native endian unsigned integer types - typedef endian< endianness::native, uint_least8_t, 8 > unative8_t; - typedef endian< endianness::native, uint_least16_t, 16 > unative16_t; - typedef endian< endianness::native, uint_least32_t, 24 > unative24_t; - typedef endian< endianness::native, uint_least32_t, 32 > unative32_t; - typedef endian< endianness::native, uint_least64_t, 40 > unative40_t; - typedef endian< endianness::native, uint_least64_t, 48 > unative48_t; - typedef endian< endianness::native, uint_least64_t, 56 > unative56_t; - typedef endian< endianness::native, uint_least64_t, 64 > unative64_t; + typedef endian< order::native, uint_least8_t, 8 > unative8_t; + typedef endian< order::native, uint_least16_t, 16 > unative16_t; + typedef endian< order::native, uint_least32_t, 24 > unative24_t; + typedef endian< order::native, uint_least32_t, 32 > unative32_t; + typedef endian< order::native, uint_least64_t, 40 > unative40_t; + typedef endian< order::native, uint_least64_t, 48 > unative48_t; + typedef endian< order::native, uint_least64_t, 56 > unative56_t; + typedef endian< order::native, uint_least64_t, 64 > unative64_t; #define BOOST_HAS_INT16_T #define BOOST_HAS_INT32_T @@ -406,24 +406,24 @@ namespace boost // types are superior for this use case # if defined(BOOST_HAS_INT16_T) - typedef endian< endianness::big, int16_t, 16, alignment::aligned > aligned_big16_t; - typedef endian< endianness::big, uint16_t, 16, alignment::aligned > aligned_ubig16_t; - typedef endian< endianness::little, int16_t, 16, alignment::aligned > aligned_little16_t; - typedef endian< endianness::little, uint16_t, 16, alignment::aligned > aligned_ulittle16_t; + typedef endian< order::big, int16_t, 16, alignment::aligned > aligned_big16_t; + typedef endian< order::big, uint16_t, 16, alignment::aligned > aligned_ubig16_t; + typedef endian< order::little, int16_t, 16, alignment::aligned > aligned_little16_t; + typedef endian< order::little, uint16_t, 16, alignment::aligned > aligned_ulittle16_t; # endif # if defined(BOOST_HAS_INT32_T) - typedef endian< endianness::big, int32_t, 32, alignment::aligned > aligned_big32_t; - typedef endian< endianness::big, uint32_t, 32, alignment::aligned > aligned_ubig32_t; - typedef endian< endianness::little, int32_t, 32, alignment::aligned > aligned_little32_t; - typedef endian< endianness::little, uint32_t, 32, alignment::aligned > aligned_ulittle32_t; + typedef endian< order::big, int32_t, 32, alignment::aligned > aligned_big32_t; + typedef endian< order::big, uint32_t, 32, alignment::aligned > aligned_ubig32_t; + typedef endian< order::little, int32_t, 32, alignment::aligned > aligned_little32_t; + typedef endian< order::little, uint32_t, 32, alignment::aligned > aligned_ulittle32_t; # endif # if defined(BOOST_HAS_INT64_T) - typedef endian< endianness::big, int64_t, 64, alignment::aligned > aligned_big64_t; - typedef endian< endianness::big, uint64_t, 64, alignment::aligned > aligned_ubig64_t; - typedef endian< endianness::little, int64_t, 64, alignment::aligned > aligned_little64_t; - typedef endian< endianness::little, uint64_t, 64, alignment::aligned > aligned_ulittle64_t; + typedef endian< order::big, int64_t, 64, alignment::aligned > aligned_big64_t; + typedef endian< order::big, uint64_t, 64, alignment::aligned > aligned_ubig64_t; + typedef endian< order::little, int64_t, 64, alignment::aligned > aligned_little64_t; + typedef endian< order::little, uint64_t, 64, alignment::aligned > aligned_ulittle64_t; # endif } // namespace endian diff --git a/test/benchmark.cpp b/test/benchmark.cpp index 5d68286..3e66c9a 100644 --- a/test/benchmark.cpp +++ b/test/benchmark.cpp @@ -8,10 +8,10 @@ #define _CRT_SECURE_NO_WARNINGS #include -#include +#include #include #include -#include +#include #include #include @@ -34,15 +34,16 @@ namespace typedef void (*timee_func)(int32_t, int32_t&); #endif - endian::microsecond_t benchmark(timee_func timee, const char* msg, - endian::microsecond_t overhead = 0) + typedef boost::timer::nanosecond_type nanosecond_t; + nanosecond_t benchmark(timee_func timee, const char* msg, + nanosecond_t overhead = 0) { if (verbose) cout << "\nRunning benchmark..." << endl; int64_t sum = 0; - endian::times_t times; - endian::microsecond_t cpu_time; - endian::run_timer t(places); + boost::timer::cpu_times times; + nanosecond_t cpu_time; + boost::timer::auto_cpu_timer t(places); for (long long i = n; i; --i) { @@ -53,8 +54,9 @@ namespace timee(static_cast(i), y); sum += y; # endif - } - times = t.stop(); + } + t.stop(); + times = t.elapsed(); cpu_time = (times.system + times.user) - overhead; const long double sec = 1000000.0L; cout.setf(std::ios_base::fixed, std::ios_base::floatfield); @@ -192,7 +194,7 @@ int main(int argc, char * argv[]) { process_command_line(argc, argv); - endian::microsecond_t overhead; + nanosecond_t overhead; #ifndef BOOST_TWO_ARG overhead = benchmark(modify_noop, "modify no-op"); diff --git a/test/endian_test.cpp b/test/endian_test.cpp index 008b123..ccd6633 100644 --- a/test/endian_test.cpp +++ b/test/endian_test.cpp @@ -107,9 +107,9 @@ namespace # endif } - // detect_endianness -----------------------------------------------------// + // detect_order -----------------------------------------------------// - void detect_endianness() + void detect_order() { union View { @@ -146,7 +146,7 @@ namespace exit(1); } cout << "That should not matter and is presented for your information only.\n"; - } // detect_endianness + } // detect_order // check_data ------------------------------------------------------------// @@ -714,7 +714,7 @@ namespace void check_udt() { - typedef boost::endian::endian< endianness::big, MyInt, 32 > mybig32_t; + typedef boost::endian::endian< order::big, MyInt, 32 > mybig32_t; mybig32_t v(10); cout << "+v is " << +v << endl; @@ -765,7 +765,7 @@ int cpp_main( int argc, char * argv[] ) iterations = atol( argv[1] ); if ( iterations < 1 ) iterations = 1; - detect_endianness(); + detect_order(); check_size(); check_alignment(); check_representation_and_range_and_ops(); diff --git a/test/msvc10/converter_test/converter_test.vcxproj b/test/msvc10/converter_test/converter_test.vcxproj index bfd3d1c..dd244bc 100644 --- a/test/msvc10/converter_test/converter_test.vcxproj +++ b/test/msvc10/converter_test/converter_test.vcxproj @@ -32,9 +32,11 @@ + + @@ -74,6 +76,7 @@ + diff --git a/test/msvc10/endian.sln b/test/msvc10/endian.sln index 2861db2..cc263da 100644 --- a/test/msvc10/endian.sln +++ b/test/msvc10/endian.sln @@ -11,11 +11,9 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "scoped_enum_emulation_test" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "endian_example", "endian_example\endian_example.vcxproj", "{8638A3D8-D121-40BF-82E5-127F1B1B2CB2}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "conversion_test", "conversion_test\conversion_test.vcxproj", "{9FA33B0B-2B00-49E8-A892-E049D86076A9}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "benchmark", "benchmark\benchmark.vcxproj", "{C9FEAE75-4DD9-44F5-B302-9910559A91BE}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "conversion2_test", "conversion2_test\conversion2_test.vcxproj", "{6FAF820B-F436-46A2-A1DD-4A4B7025C3D0}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "converter_test", "converter_test\converter_test.vcxproj", "{EAE18F4D-AAF2-4C19-86FB-1144B5BD5993}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -43,18 +41,14 @@ Global {8638A3D8-D121-40BF-82E5-127F1B1B2CB2}.Debug|Win32.Build.0 = Debug|Win32 {8638A3D8-D121-40BF-82E5-127F1B1B2CB2}.Release|Win32.ActiveCfg = Release|Win32 {8638A3D8-D121-40BF-82E5-127F1B1B2CB2}.Release|Win32.Build.0 = Release|Win32 - {9FA33B0B-2B00-49E8-A892-E049D86076A9}.Debug|Win32.ActiveCfg = Debug|Win32 - {9FA33B0B-2B00-49E8-A892-E049D86076A9}.Debug|Win32.Build.0 = Debug|Win32 - {9FA33B0B-2B00-49E8-A892-E049D86076A9}.Release|Win32.ActiveCfg = Release|Win32 - {9FA33B0B-2B00-49E8-A892-E049D86076A9}.Release|Win32.Build.0 = Release|Win32 {C9FEAE75-4DD9-44F5-B302-9910559A91BE}.Debug|Win32.ActiveCfg = Debug|Win32 {C9FEAE75-4DD9-44F5-B302-9910559A91BE}.Debug|Win32.Build.0 = Debug|Win32 {C9FEAE75-4DD9-44F5-B302-9910559A91BE}.Release|Win32.ActiveCfg = Release|Win32 {C9FEAE75-4DD9-44F5-B302-9910559A91BE}.Release|Win32.Build.0 = Release|Win32 - {6FAF820B-F436-46A2-A1DD-4A4B7025C3D0}.Debug|Win32.ActiveCfg = Debug|Win32 - {6FAF820B-F436-46A2-A1DD-4A4B7025C3D0}.Debug|Win32.Build.0 = Debug|Win32 - {6FAF820B-F436-46A2-A1DD-4A4B7025C3D0}.Release|Win32.ActiveCfg = Release|Win32 - {6FAF820B-F436-46A2-A1DD-4A4B7025C3D0}.Release|Win32.Build.0 = Release|Win32 + {EAE18F4D-AAF2-4C19-86FB-1144B5BD5993}.Debug|Win32.ActiveCfg = Debug|Win32 + {EAE18F4D-AAF2-4C19-86FB-1144B5BD5993}.Debug|Win32.Build.0 = Debug|Win32 + {EAE18F4D-AAF2-4C19-86FB-1144B5BD5993}.Release|Win32.ActiveCfg = Release|Win32 + {EAE18F4D-AAF2-4C19-86FB-1144B5BD5993}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/test/scoped_enum_emulation_test.cpp b/test/scoped_enum_emulation_test.cpp index 16a0353..e50ea70 100644 --- a/test/scoped_enum_emulation_test.cpp +++ b/test/scoped_enum_emulation_test.cpp @@ -7,7 +7,9 @@ // See documentation at http://www.boost.org/libs/utility/scoped_enum_emulation.html -#include +// #include +// #include + #include #include