]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/endian/test/endian_reverse_test3.cpp
import quincy beta 17.1.0
[ceph.git] / ceph / src / boost / libs / endian / test / endian_reverse_test3.cpp
CommitLineData
20effc67
TL
1// Copyright 2020 Peter Dimov
2// Distributed under the Boost Software License, Version 1.0.
3// https://www.boost.org/LICENSE_1_0.txt
4
5#include <boost/endian/conversion.hpp>
6#include <boost/core/lightweight_test.hpp>
7#include <boost/config.hpp>
8#include <cstddef>
9
10template<class T> void test_reverse( T x )
11{
12 using boost::endian::endian_reverse;
13
14 T x2( x );
15
16 x2 = endian_reverse( endian_reverse( x2 ) );
17 BOOST_TEST( x == x2 );
18
19 x2 = boost::endian::native_to_little( boost::endian::little_to_native( x2 ) );
20 BOOST_TEST( x == x2 );
21
22 x2 = boost::endian::native_to_big( boost::endian::big_to_native( x2 ) );
23 BOOST_TEST( x == x2 );
24}
25
26template<class T> void test_reverse_inplace( T x )
27{
28 using boost::endian::endian_reverse_inplace;
29
30 T x2( x );
31
32 endian_reverse_inplace( x2 );
33 endian_reverse_inplace( x2 );
34 BOOST_TEST( x == x2 );
35
36 boost::endian::native_to_little_inplace( x2 );
37 boost::endian::little_to_native_inplace( x2 );
38 BOOST_TEST( x == x2 );
39
40 boost::endian::native_to_big_inplace( x2 );
41 boost::endian::big_to_native_inplace( x2 );
42 BOOST_TEST( x == x2 );
43}
44
45enum E1 { e1 };
46
47#if !defined(BOOST_NO_CXX11_SCOPED_ENUMS)
48
49enum E2: long { e2 };
50enum class E3 { e3 };
51enum class E4: long { e4 };
52
53#endif
54
55int main()
56{
57 test_reverse( 1 );
58
59#if !defined(BOOST_NO_CXX11_SCOPED_ENUMS)
60
61 test_reverse( E3::e3 );
62 test_reverse( E4::e4 );
63
64#endif
65
66 test_reverse_inplace( 1 );
67 test_reverse_inplace( true );
68
69 test_reverse_inplace( 1.0f );
70 test_reverse_inplace( 1.0 );
71
72 test_reverse_inplace( e1 );
73
74#if !defined(BOOST_NO_CXX11_SCOPED_ENUMS)
75
76 test_reverse_inplace( e2 );
77 test_reverse_inplace( E3::e3 );
78 test_reverse_inplace( E4::e4 );
79
80#endif
81
82 return boost::report_errors();
83}