diff options
| author | Marshall Clow <mclow.lists@gmail.com> | 2019-07-23 04:20:19 +0000 |
|---|---|---|
| committer | Marshall Clow <mclow.lists@gmail.com> | 2019-07-23 04:20:19 +0000 |
| commit | 30f12a42474f5b8f0409f5aabd3c335fd415b926 (patch) | |
| tree | 0c7bf91eba01a681946e2b219f02832ad94a5b09 /libcxx/include/bit | |
| parent | 57d17ec2e17b8100ecf592d961e85fa867e9af77 (diff) | |
| download | bcm5719-llvm-30f12a42474f5b8f0409f5aabd3c335fd415b926.tar.gz bcm5719-llvm-30f12a42474f5b8f0409f5aabd3c335fd415b926.zip | |
Implement most of P1612R1: Relocate endian. Moves the std::endian functionality from 'type-traits' to 'bit'. No other change. The reason that this is 'partial' is that P1621 also recommends a feature-test macro, but I don't have the value for that one yet. In a month or so, I'll add that
llvm-svn: 366776
Diffstat (limited to 'libcxx/include/bit')
| -rw-r--r-- | libcxx/include/bit | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/libcxx/include/bit b/libcxx/include/bit index 1c0e8ad3ba8..8800b22b7bc 100644 --- a/libcxx/include/bit +++ b/libcxx/include/bit @@ -42,6 +42,13 @@ namespace std { template<class T> constexpr int popcount(T x) noexcept; // C++20 + // 20.15.9, endian + enum class endian { + little = see below, // C++20 + big = see below, // C++20 + native = see below // C++20 +}; + } // namespace std */ @@ -456,6 +463,20 @@ log2p1(_Tp __t) noexcept return __t == 0 ? 0 : __bit_log2(__t) + 1; } + +enum class endian +{ + little = 0xDEAD, + big = 0xFACE, +#if defined(_LIBCPP_LITTLE_ENDIAN) + native = little +#elif defined(_LIBCPP_BIG_ENDIAN) + native = big +#else + native = 0xCAFE +#endif +}; + #endif // _LIBCPP_STD_VER > 17 _LIBCPP_END_NAMESPACE_STD |

