byteswap.hh (2777:599e7940aba5) byteswap.hh (2778:1bd913a180a1)
1/*
2 * Copyright (c) 2004 The Regents of The University of Michigan
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

--- 35 unchanged lines hidden (view full) ---

44// If this is a linux system, lets used the optimized definitions if they exist.
45// If one doesn't exist, we pretty much get what is listed below, so it all
46// works out
47#include <byteswap.h>
48#else
49#include <machine/endian.h>
50#endif
51
1/*
2 * Copyright (c) 2004 The Regents of The University of Michigan
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

--- 35 unchanged lines hidden (view full) ---

44// If this is a linux system, lets used the optimized definitions if they exist.
45// If one doesn't exist, we pretty much get what is listed below, so it all
46// works out
47#include <byteswap.h>
48#else
49#include <machine/endian.h>
50#endif
51
52#if defined(__APPLE__)
53#include <libkern/OSByteOrder.h>
54#endif
55
52//These functions actually perform the swapping for parameters
53//of various bit lengths
54static inline uint64_t
55swap_byte64(uint64_t x)
56{
57#if defined(linux)
58 return bswap_64(x);
56//These functions actually perform the swapping for parameters
57//of various bit lengths
58static inline uint64_t
59swap_byte64(uint64_t x)
60{
61#if defined(linux)
62 return bswap_64(x);
63#elif defined(__APPLE__)
64 return OSSwapInt64(x);
59#else
60 return (uint64_t)((((uint64_t)(x) & 0xff) << 56) |
61 ((uint64_t)(x) & 0xff00ULL) << 40 |
62 ((uint64_t)(x) & 0xff0000ULL) << 24 |
63 ((uint64_t)(x) & 0xff000000ULL) << 8 |
64 ((uint64_t)(x) & 0xff00000000ULL) >> 8 |
65 ((uint64_t)(x) & 0xff0000000000ULL) >> 24 |
66 ((uint64_t)(x) & 0xff000000000000ULL) >> 40 |
67 ((uint64_t)(x) & 0xff00000000000000ULL) >> 56) ;
68#endif
69}
70
71static inline uint32_t
72swap_byte32(uint32_t x)
73{
74#if defined(linux)
75 return bswap_32(x);
65#else
66 return (uint64_t)((((uint64_t)(x) & 0xff) << 56) |
67 ((uint64_t)(x) & 0xff00ULL) << 40 |
68 ((uint64_t)(x) & 0xff0000ULL) << 24 |
69 ((uint64_t)(x) & 0xff000000ULL) << 8 |
70 ((uint64_t)(x) & 0xff00000000ULL) >> 8 |
71 ((uint64_t)(x) & 0xff0000000000ULL) >> 24 |
72 ((uint64_t)(x) & 0xff000000000000ULL) >> 40 |
73 ((uint64_t)(x) & 0xff00000000000000ULL) >> 56) ;
74#endif
75}
76
77static inline uint32_t
78swap_byte32(uint32_t x)
79{
80#if defined(linux)
81 return bswap_32(x);
82#elif defined(__APPLE__)
83 return OSSwapInt32(x);
76#else
77 return (uint32_t)(((uint32_t)(x) & 0xff) << 24 |
78 ((uint32_t)(x) & 0xff00) << 8 | ((uint32_t)(x) & 0xff0000) >> 8 |
79 ((uint32_t)(x) & 0xff000000) >> 24);
80#endif
81}
82
83static inline uint16_t
84swap_byte16(uint16_t x)
85{
86#if defined(linux)
87 return bswap_16(x);
84#else
85 return (uint32_t)(((uint32_t)(x) & 0xff) << 24 |
86 ((uint32_t)(x) & 0xff00) << 8 | ((uint32_t)(x) & 0xff0000) >> 8 |
87 ((uint32_t)(x) & 0xff000000) >> 24);
88#endif
89}
90
91static inline uint16_t
92swap_byte16(uint16_t x)
93{
94#if defined(linux)
95 return bswap_16(x);
96#elif defined(__APPLE__)
97 return OSSwapInt16(x);
88#else
89 return (uint16_t)(((uint16_t)(x) & 0xff) << 8 |
90 ((uint16_t)(x) & 0xff00) >> 8);
91#endif
92}
93
94// This function lets the compiler figure out how to call the
95// swap_byte functions above for different data types. Since the

--- 69 unchanged lines hidden ---
98#else
99 return (uint16_t)(((uint16_t)(x) & 0xff) << 8 |
100 ((uint16_t)(x) & 0xff00) >> 8);
101#endif
102}
103
104// This function lets the compiler figure out how to call the
105// swap_byte functions above for different data types. Since the

--- 69 unchanged lines hidden ---