blob: 18e49f66cf6848eb3076266dabacf46c8e528622 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#pragma once
#include <bit>
#include <concepts>
template <std::integral T>
requires(sizeof(T) <= 8)
T to_little(T x)
{
if constexpr (std::endian::native == std::endian::little || sizeof(T) == 1) {
return x;
}
switch (sizeof(T)) {
case 2:
return __builtin_bswap16(x);
case 4:
return __builtin_bswap32(x);
case 8:
return __builtin_bswap64(x);
}
}
|