OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // This header defines cross-platform ByteSwap() implementations for 16, 32 and | 5 // This header defines cross-platform ByteSwap() implementations for 16, 32 and |
6 // 64-bit values, and NetToHostXX() / HostToNextXX() functions equivalent to | 6 // 64-bit values, and NetToHostXX() / HostToNextXX() functions equivalent to |
7 // the traditional ntohX() and htonX() functions. | 7 // the traditional ntohX() and htonX() functions. |
8 // Use the functions defined here rather than using the platform-specific | 8 // Use the functions defined here rather than using the platform-specific |
9 // functions directly. | 9 // functions directly. |
10 | 10 |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
62 return _byteswap_uint64(x); | 62 return _byteswap_uint64(x); |
63 #elif defined(OS_MACOSX) | 63 #elif defined(OS_MACOSX) |
64 return OSSwapInt64(x); | 64 return OSSwapInt64(x); |
65 #elif defined(OS_OPENBSD) | 65 #elif defined(OS_OPENBSD) |
66 return swap64(x); | 66 return swap64(x); |
67 #else | 67 #else |
68 return bswap_64(x); | 68 return bswap_64(x); |
69 #endif | 69 #endif |
70 } | 70 } |
71 | 71 |
72 // Converts the bytes in |x| from host order (endianness) to little endian, and | |
73 // returns the result. | |
74 inline uint16 ByteSwapToLE16(uint16 x) { | |
75 #if defined(ARCH_CPU_LITTLE_ENDIAN) | |
76 return x; | |
77 #else | |
78 return ByteSwap(x); | |
79 #endif | |
80 } | |
81 inline uint32 ByteSwapToLE32(uint32 x) { | |
82 #if defined(ARCH_CPU_LITTLE_ENDIAN) | |
83 return x; | |
84 #else | |
85 return ByteSwap(x); | |
86 #endif | |
87 } | |
88 inline uint64 ByteSwapToLE64(uint64 x) { | |
89 #if defined(ARCH_CPU_LITTLE_ENDIAN) | |
90 return x; | |
91 #else | |
92 return ByteSwap(x); | |
93 #endif | |
Ilya Sherman
2012/04/13 20:19:20
Hmm, why are you adding these functions rather tha
jwd
2012/04/13 20:33:44
We decided that we wanted the values in little-end
Ilya Sherman
2012/04/13 21:27:33
Ok, fair enough. Thanks :)
| |
94 } | |
95 | |
72 // Converts the bytes in |x| from network to host order (endianness), and | 96 // Converts the bytes in |x| from network to host order (endianness), and |
73 // returns the result. | 97 // returns the result. |
74 inline uint16 NetToHost16(uint16 x) { | 98 inline uint16 NetToHost16(uint16 x) { |
75 #if defined(ARCH_CPU_LITTLE_ENDIAN) | 99 #if defined(ARCH_CPU_LITTLE_ENDIAN) |
76 return ByteSwap(x); | 100 return ByteSwap(x); |
77 #else | 101 #else |
78 return x; | 102 return x; |
79 #endif | 103 #endif |
80 } | 104 } |
81 inline uint32 NetToHost32(uint32 x) { | 105 inline uint32 NetToHost32(uint32 x) { |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
114 return ByteSwap(x); | 138 return ByteSwap(x); |
115 #else | 139 #else |
116 return x; | 140 return x; |
117 #endif | 141 #endif |
118 } | 142 } |
119 | 143 |
120 } // namespace base | 144 } // namespace base |
121 | 145 |
122 | 146 |
123 #endif // BASE_SYS_BYTEORDER_H_ | 147 #endif // BASE_SYS_BYTEORDER_H_ |
OLD | NEW |