Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(299)

Side by Side Diff: base/sys_byteorder.h

Issue 1538743002: Switch to standard integer types in base/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: DEPS roll too Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « base/synchronization/waitable_event_win.cc ('k') | base/sys_info.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
11 #ifndef BASE_SYS_BYTEORDER_H_ 11 #ifndef BASE_SYS_BYTEORDER_H_
12 #define BASE_SYS_BYTEORDER_H_ 12 #define BASE_SYS_BYTEORDER_H_
13 13
14 #include "base/basictypes.h" 14 #include <stdint.h>
15
15 #include "build/build_config.h" 16 #include "build/build_config.h"
16 17
17 namespace base { 18 namespace base {
18 19
19 // Returns a value with all bytes in |x| swapped, i.e. reverses the endianness. 20 // Returns a value with all bytes in |x| swapped, i.e. reverses the endianness.
20 inline uint16 ByteSwap(uint16 x) { 21 inline uint16_t ByteSwap(uint16_t x) {
21 return ((x & 0x00ff) << 8) | ((x & 0xff00) >> 8); 22 return ((x & 0x00ff) << 8) | ((x & 0xff00) >> 8);
22 } 23 }
23 24
24 inline uint32 ByteSwap(uint32 x) { 25 inline uint32_t ByteSwap(uint32_t x) {
25 return ((x & 0x000000fful) << 24) | ((x & 0x0000ff00ul) << 8) | 26 return ((x & 0x000000fful) << 24) | ((x & 0x0000ff00ul) << 8) |
26 ((x & 0x00ff0000ul) >> 8) | ((x & 0xff000000ul) >> 24); 27 ((x & 0x00ff0000ul) >> 8) | ((x & 0xff000000ul) >> 24);
27 } 28 }
28 29
29 inline uint64 ByteSwap(uint64 x) { 30 inline uint64_t ByteSwap(uint64_t x) {
30 return ((x & 0x00000000000000ffull) << 56) | 31 return ((x & 0x00000000000000ffull) << 56) |
31 ((x & 0x000000000000ff00ull) << 40) | 32 ((x & 0x000000000000ff00ull) << 40) |
32 ((x & 0x0000000000ff0000ull) << 24) | 33 ((x & 0x0000000000ff0000ull) << 24) |
33 ((x & 0x00000000ff000000ull) << 8) | 34 ((x & 0x00000000ff000000ull) << 8) |
34 ((x & 0x000000ff00000000ull) >> 8) | 35 ((x & 0x000000ff00000000ull) >> 8) |
35 ((x & 0x0000ff0000000000ull) >> 24) | 36 ((x & 0x0000ff0000000000ull) >> 24) |
36 ((x & 0x00ff000000000000ull) >> 40) | 37 ((x & 0x00ff000000000000ull) >> 40) |
37 ((x & 0xff00000000000000ull) >> 56); 38 ((x & 0xff00000000000000ull) >> 56);
38 } 39 }
39 40
40 // Converts the bytes in |x| from host order (endianness) to little endian, and 41 // Converts the bytes in |x| from host order (endianness) to little endian, and
41 // returns the result. 42 // returns the result.
42 inline uint16 ByteSwapToLE16(uint16 x) { 43 inline uint16_t ByteSwapToLE16(uint16_t x) {
43 #if defined(ARCH_CPU_LITTLE_ENDIAN) 44 #if defined(ARCH_CPU_LITTLE_ENDIAN)
44 return x; 45 return x;
45 #else 46 #else
46 return ByteSwap(x); 47 return ByteSwap(x);
47 #endif 48 #endif
48 } 49 }
49 inline uint32 ByteSwapToLE32(uint32 x) { 50 inline uint32_t ByteSwapToLE32(uint32_t x) {
50 #if defined(ARCH_CPU_LITTLE_ENDIAN) 51 #if defined(ARCH_CPU_LITTLE_ENDIAN)
51 return x; 52 return x;
52 #else 53 #else
53 return ByteSwap(x); 54 return ByteSwap(x);
54 #endif 55 #endif
55 } 56 }
56 inline uint64 ByteSwapToLE64(uint64 x) { 57 inline uint64_t ByteSwapToLE64(uint64_t x) {
57 #if defined(ARCH_CPU_LITTLE_ENDIAN) 58 #if defined(ARCH_CPU_LITTLE_ENDIAN)
58 return x; 59 return x;
59 #else 60 #else
60 return ByteSwap(x); 61 return ByteSwap(x);
61 #endif 62 #endif
62 } 63 }
63 64
64 // Converts the bytes in |x| from network to host order (endianness), and 65 // Converts the bytes in |x| from network to host order (endianness), and
65 // returns the result. 66 // returns the result.
66 inline uint16 NetToHost16(uint16 x) { 67 inline uint16_t NetToHost16(uint16_t x) {
67 #if defined(ARCH_CPU_LITTLE_ENDIAN) 68 #if defined(ARCH_CPU_LITTLE_ENDIAN)
68 return ByteSwap(x); 69 return ByteSwap(x);
69 #else 70 #else
70 return x; 71 return x;
71 #endif 72 #endif
72 } 73 }
73 inline uint32 NetToHost32(uint32 x) { 74 inline uint32_t NetToHost32(uint32_t x) {
74 #if defined(ARCH_CPU_LITTLE_ENDIAN) 75 #if defined(ARCH_CPU_LITTLE_ENDIAN)
75 return ByteSwap(x); 76 return ByteSwap(x);
76 #else 77 #else
77 return x; 78 return x;
78 #endif 79 #endif
79 } 80 }
80 inline uint64 NetToHost64(uint64 x) { 81 inline uint64_t NetToHost64(uint64_t x) {
81 #if defined(ARCH_CPU_LITTLE_ENDIAN) 82 #if defined(ARCH_CPU_LITTLE_ENDIAN)
82 return ByteSwap(x); 83 return ByteSwap(x);
83 #else 84 #else
84 return x; 85 return x;
85 #endif 86 #endif
86 } 87 }
87 88
88 // Converts the bytes in |x| from host to network order (endianness), and 89 // Converts the bytes in |x| from host to network order (endianness), and
89 // returns the result. 90 // returns the result.
90 inline uint16 HostToNet16(uint16 x) { 91 inline uint16_t HostToNet16(uint16_t x) {
91 #if defined(ARCH_CPU_LITTLE_ENDIAN) 92 #if defined(ARCH_CPU_LITTLE_ENDIAN)
92 return ByteSwap(x); 93 return ByteSwap(x);
93 #else 94 #else
94 return x; 95 return x;
95 #endif 96 #endif
96 } 97 }
97 inline uint32 HostToNet32(uint32 x) { 98 inline uint32_t HostToNet32(uint32_t x) {
98 #if defined(ARCH_CPU_LITTLE_ENDIAN) 99 #if defined(ARCH_CPU_LITTLE_ENDIAN)
99 return ByteSwap(x); 100 return ByteSwap(x);
100 #else 101 #else
101 return x; 102 return x;
102 #endif 103 #endif
103 } 104 }
104 inline uint64 HostToNet64(uint64 x) { 105 inline uint64_t HostToNet64(uint64_t x) {
105 #if defined(ARCH_CPU_LITTLE_ENDIAN) 106 #if defined(ARCH_CPU_LITTLE_ENDIAN)
106 return ByteSwap(x); 107 return ByteSwap(x);
107 #else 108 #else
108 return x; 109 return x;
109 #endif 110 #endif
110 } 111 }
111 112
112 } // namespace base 113 } // namespace base
113 114
114 #endif // BASE_SYS_BYTEORDER_H_ 115 #endif // BASE_SYS_BYTEORDER_H_
OLDNEW
« no previous file with comments | « base/synchronization/waitable_event_win.cc ('k') | base/sys_info.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698