Go to the documentation of this file.
31 #ifndef GOOGLE_PROTOBUF_STUBS_PORT_H_
32 #define GOOGLE_PROTOBUF_STUBS_PORT_H_
43 #elif !defined(_MSC_VER)
49 #include <google/protobuf/port_def.inc>
51 #undef PROTOBUF_LITTLE_ENDIAN
57 #if !defined(PROTOBUF_DISABLE_LITTLE_ENDIAN_OPT_FOR_TEST)
58 #define PROTOBUF_LITTLE_ENDIAN 1
60 #if _MSC_VER >= 1300 && !defined(__INTEL_COMPILER)
63 #pragma runtime_checks("c", off)
66 #include <sys/param.h>
67 #if defined(__OpenBSD__)
70 #if ((defined(__LITTLE_ENDIAN__) && !defined(__BIG_ENDIAN__)) || \
71 (defined(__BYTE_ORDER) && __BYTE_ORDER == __LITTLE_ENDIAN) || \
72 (defined(BYTE_ORDER) && BYTE_ORDER == LITTLE_ENDIAN)) && \
73 !defined(PROTOBUF_DISABLE_LITTLE_ENDIAN_OPT_FOR_TEST)
74 #define PROTOBUF_LITTLE_ENDIAN 1
82 #elif defined(__APPLE__)
83 #include <libkern/OSByteOrder.h>
84 #elif defined(__GLIBC__) || defined(__BIONIC__) || defined(__CYGWIN__)
90 #if defined(_MSC_VER) && defined(PROTOBUF_USE_DLLS)
91 #ifdef LIBPROTOBUF_EXPORTS
92 #define LIBPROTOBUF_EXPORT __declspec(dllexport)
94 #define LIBPROTOBUF_EXPORT __declspec(dllimport)
96 #ifdef LIBPROTOC_EXPORTS
97 #define LIBPROTOC_EXPORT __declspec(dllexport)
99 #define LIBPROTOC_EXPORT __declspec(dllimport)
102 #define LIBPROTOBUF_EXPORT
103 #define LIBPROTOC_EXPORT
106 #define PROTOBUF_RUNTIME_DEPRECATED(message)
107 #define GOOGLE_PROTOBUF_RUNTIME_DEPRECATED(message)
112 #if (defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L || \
113 (defined(_MSC_VER) && _MSC_VER >= 1900))
120 #if LANG_CXX11 && !defined(__NVCC__)
121 #define PROTOBUF_CXX11 1
123 #define PROTOBUF_CXX11 0
127 #define PROTOBUF_FINAL final
129 #define PROTOBUF_FINAL
138 typedef signed __int8
int8;
139 typedef __int16
int16;
140 typedef __int32
int32;
141 typedef __int64
int64;
143 typedef unsigned __int8
uint8;
144 typedef unsigned __int16
uint16;
145 typedef unsigned __int32
uint32;
146 typedef unsigned __int64
uint64;
166 #if defined(ADDRESS_SANITIZER) || defined(THREAD_SANITIZER) ||\
167 defined(MEMORY_SANITIZER)
171 #endif // __cplusplus
172 uint16_t __sanitizer_unaligned_load16(
const void *
p);
173 uint32_t __sanitizer_unaligned_load32(
const void *
p);
174 uint64_t __sanitizer_unaligned_load64(
const void *
p);
175 void __sanitizer_unaligned_store16(
void *
p, uint16_t
v);
176 void __sanitizer_unaligned_store32(
void *
p, uint32_t
v);
177 void __sanitizer_unaligned_store64(
void *
p, uint64_t
v);
180 #endif // __cplusplus
183 return __sanitizer_unaligned_load16(
p);
187 return __sanitizer_unaligned_load32(
p);
191 return __sanitizer_unaligned_load64(
p);
195 __sanitizer_unaligned_store16(
p,
v);
199 __sanitizer_unaligned_store32(
p,
v);
203 __sanitizer_unaligned_store64(
p,
v);
206 #elif GOOGLE_PROTOBUF_USE_UNALIGNED
208 #define GOOGLE_UNALIGNED_LOAD16(_p) (*reinterpret_cast<const uint16 *>(_p))
209 #define GOOGLE_UNALIGNED_LOAD32(_p) (*reinterpret_cast<const uint32 *>(_p))
210 #define GOOGLE_UNALIGNED_LOAD64(_p) (*reinterpret_cast<const uint64 *>(_p))
212 #define GOOGLE_UNALIGNED_STORE16(_p, _val) (*reinterpret_cast<uint16 *>(_p) = (_val))
213 #define GOOGLE_UNALIGNED_STORE32(_p, _val) (*reinterpret_cast<uint32 *>(_p) = (_val))
214 #define GOOGLE_UNALIGNED_STORE64(_p, _val) (*reinterpret_cast<uint64 *>(_p) = (_val))
219 memcpy(&t,
p,
sizeof t);
225 memcpy(&t,
p,
sizeof t);
231 memcpy(&t,
p,
sizeof t);
236 memcpy(
p, &
v,
sizeof v);
240 memcpy(
p, &
v,
sizeof v);
244 memcpy(
p, &
v,
sizeof v);
248 #if defined(GOOGLE_PROTOBUF_OS_NACL) \
249 || (defined(__ANDROID__) && defined(__clang__) \
250 && (__clang_major__ == 3 && __clang_minor__ == 8) \
251 && (__clang_patchlevel__ < 275480))
252 # define GOOGLE_PROTOBUF_USE_PORTABLE_LOG2
255 #if defined(_MSC_VER)
256 #define GOOGLE_THREAD_LOCAL __declspec(thread)
258 #define GOOGLE_THREAD_LOCAL __thread
263 #define bswap_16(x) _byteswap_ushort(x)
264 #define bswap_32(x) _byteswap_ulong(x)
265 #define bswap_64(x) _byteswap_uint64(x)
267 #elif defined(__APPLE__)
269 #define bswap_16(x) OSSwapInt16(x)
270 #define bswap_32(x) OSSwapInt32(x)
271 #define bswap_64(x) OSSwapInt64(x)
273 #elif !defined(__GLIBC__) && !defined(__BIONIC__) && !defined(__CYGWIN__)
277 return static_cast<uint16>(((
x & 0xFF) << 8) | ((
x & 0xFF00) >> 8));
279 #define bswap_16(x) bswap_16(x)
284 return (((
x & 0xFF) << 24) |
285 ((
x & 0xFF00) << 8) |
286 ((
x & 0xFF0000) >> 8) |
287 ((
x & 0xFF000000) >> 24));
289 #define bswap_32(x) bswap_32(x)
294 return (((
x & PROTOBUF_ULONGLONG(0xFF)) << 56) |
295 ((
x & PROTOBUF_ULONGLONG(0xFF00)) << 40) |
296 ((
x & PROTOBUF_ULONGLONG(0xFF0000)) << 24) |
297 ((
x & PROTOBUF_ULONGLONG(0xFF000000)) << 8) |
298 ((
x & PROTOBUF_ULONGLONG(0xFF00000000)) >> 8) |
299 ((
x & PROTOBUF_ULONGLONG(0xFF0000000000)) >> 24) |
300 ((
x & PROTOBUF_ULONGLONG(0xFF000000000000)) >> 40) |
301 ((
x & PROTOBUF_ULONGLONG(0xFF00000000000000)) >> 56));
303 #define bswap_64(x) bswap_64(x)
314 #if defined(__GNUC__)
315 return 31 ^
static_cast<uint32>(__builtin_clz(
n));
316 #elif defined(_MSC_VER)
318 _BitScanReverse(&where,
n);
332 #if defined(__GNUC__) && !defined(GOOGLE_PROTOBUF_USE_PORTABLE_LOG2)
333 return 63 ^
static_cast<uint32>(__builtin_clzll(
n));
334 #elif defined(_MSC_VER) && defined(_M_X64)
336 _BitScanReverse64(&where,
n);
348 for (
int i = 4;
i >= 0; --
i) {
349 int shift = (1 <<
i);
377 #ifdef PROTOBUF_LITTLE_ENDIAN
434 #ifdef PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
435 #define GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER \
436 PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
438 #define GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER 0
441 #include <google/protobuf/port_undef.inc>
443 #endif // GOOGLE_PROTOBUF_STUBS_PORT_H_
static uint16 Load16(const void *p)
static uint16 bswap_16(uint16 x)
static uint16 FromHost16(uint16 x)
static uint32 ToHost32(uint32 x)
static uint32 Load32(const void *p)
static uint64 Load64(const void *p)
static int Log2FloorNonZero64_Portable(uint64 n)
static const int64 kint64min
static uint32 Log2FloorNonZero(uint32 n)
void GOOGLE_UNALIGNED_STORE16(void *p, uint16 v)
static int Log2FloorNonZero_Portable(uint32 n)
uint16 GOOGLE_UNALIGNED_LOAD16(const void *p)
static void Store16(void *p, uint16 v)
static uint32 Log2FloorNonZero64(uint64 n)
void GOOGLE_UNALIGNED_STORE32(void *p, uint32 v)
static uint64 FromHost64(uint64 x)
static uint32 FromHost32(uint32 x)
uint32 GOOGLE_UNALIGNED_LOAD32(const void *p)
static uint64 ToHost64(uint64 x)
static const uint32 kuint32max
uint64 GOOGLE_UNALIGNED_LOAD64(const void *p)
static uint16 ToHost16(uint16 x)
static const int32 kint32max
static bool IsLittleEndian()
static uint32 bswap_32(uint32 x)
static void Store64(void *p, uint64 v)
static void Store32(void *p, uint32 v)
void GOOGLE_UNALIGNED_STORE64(void *p, uint64 v)
static const int64 kint64max
static const uint64 kuint64max
GLsizei const GLfloat * value
static uint64 bswap_64(uint64 x)
static const int32 kint32min
libaditof
Author(s):
autogenerated on Wed May 21 2025 02:06:57