//These functions actually perform the swapping for parameters
//of various bit lengths
-static inline uint64_t
+inline uint64_t
swap_byte64(uint64_t x)
{
#if defined(linux)
#endif
}
-static inline uint32_t
+inline uint32_t
swap_byte32(uint32_t x)
{
#if defined(linux)
#endif
}
-static inline uint16_t
+inline uint16_t
swap_byte16(uint16_t x)
{
#if defined(linux)
// sizeof() values are known at compile time, it should inline to a
// direct call to the right swap_byteNN() function.
template <typename T>
-static inline T swap_byte(T x) {
+inline T swap_byte(T x) {
if (sizeof(T) == 8)
return swap_byte64((uint64_t)x);
else if (sizeof(T) == 4)
}
template<>
-static inline Twin64_t swap_byte<Twin64_t>(Twin64_t x)
+inline Twin64_t swap_byte<Twin64_t>(Twin64_t x)
{
x.a = swap_byte(x.a);
x.b = swap_byte(x.b);
}
template<>
-static inline Twin32_t swap_byte<Twin32_t>(Twin32_t x)
+inline Twin32_t swap_byte<Twin32_t>(Twin32_t x)
{
x.a = swap_byte(x.a);
x.b = swap_byte(x.b);
//The conversion functions with fixed endianness on both ends don't need to
//be in a namespace
-template <typename T> static inline T betole(T value) {return swap_byte(value);}
-template <typename T> static inline T letobe(T value) {return swap_byte(value);}
+template <typename T> inline T betole(T value) {return swap_byte(value);}
+template <typename T> inline T letobe(T value) {return swap_byte(value);}
//For conversions not involving the guest system, we can define the functions
//conditionally based on the BYTE_ORDER macro and outside of the namespaces
#if defined(_BIG_ENDIAN) || !defined(_LITTLE_ENDIAN) && BYTE_ORDER == BIG_ENDIAN
const ByteOrder HostByteOrder = BigEndianByteOrder;
-template <typename T> static inline T htole(T value) {return swap_byte(value);}
-template <typename T> static inline T letoh(T value) {return swap_byte(value);}
-template <typename T> static inline T htobe(T value) {return value;}
-template <typename T> static inline T betoh(T value) {return value;}
+template <typename T> inline T htole(T value) {return swap_byte(value);}
+template <typename T> inline T letoh(T value) {return swap_byte(value);}
+template <typename T> inline T htobe(T value) {return value;}
+template <typename T> inline T betoh(T value) {return value;}
#elif defined(_LITTLE_ENDIAN) || BYTE_ORDER == LITTLE_ENDIAN
const ByteOrder HostByteOrder = LittleEndianByteOrder;
-template <typename T> static inline T htole(T value) {return value;}
-template <typename T> static inline T letoh(T value) {return value;}
-template <typename T> static inline T htobe(T value) {return swap_byte(value);}
-template <typename T> static inline T betoh(T value) {return swap_byte(value);}
+template <typename T> inline T htole(T value) {return value;}
+template <typename T> inline T letoh(T value) {return value;}
+template <typename T> inline T htobe(T value) {return swap_byte(value);}
+template <typename T> inline T betoh(T value) {return swap_byte(value);}
#else
#error Invalid Endianess
#endif
{
const bool ByteOrderDiffers = (HostByteOrder != BigEndianByteOrder);
template <typename T>
- static inline T gtole(T value) {return betole(value);}
+ inline T gtole(T value) {return betole(value);}
template <typename T>
- static inline T letog(T value) {return letobe(value);}
+ inline T letog(T value) {return letobe(value);}
template <typename T>
- static inline T gtobe(T value) {return value;}
+ inline T gtobe(T value) {return value;}
template <typename T>
- static inline T betog(T value) {return value;}
+ inline T betog(T value) {return value;}
template <typename T>
- static inline T htog(T value) {return htobe(value);}
+ inline T htog(T value) {return htobe(value);}
template <typename T>
- static inline T gtoh(T value) {return betoh(value);}
+ inline T gtoh(T value) {return betoh(value);}
}
namespace LittleEndianGuest
{
const bool ByteOrderDiffers = (HostByteOrder != LittleEndianByteOrder);
template <typename T>
- static inline T gtole(T value) {return value;}
+ inline T gtole(T value) {return value;}
template <typename T>
- static inline T letog(T value) {return value;}
+ inline T letog(T value) {return value;}
template <typename T>
- static inline T gtobe(T value) {return letobe(value);}
+ inline T gtobe(T value) {return letobe(value);}
template <typename T>
- static inline T betog(T value) {return betole(value);}
+ inline T betog(T value) {return betole(value);}
template <typename T>
- static inline T htog(T value) {return htole(value);}
+ inline T htog(T value) {return htole(value);}
template <typename T>
- static inline T gtoh(T value) {return letoh(value);}
+ inline T gtoh(T value) {return letoh(value);}
}
#endif // __SIM_BYTE_SWAP_HH__