MCPcopy Create free account
hub / github.com/BehaviorTree/BehaviorTree.CPP / EndianSwap

Function EndianSwap

3rdparty/flatbuffers/flatbuffers/base.h:370–409  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

368#endif
369
370template<typename T> T EndianSwap(T t) {
371 #if defined(_MSC_VER)
372 #define FLATBUFFERS_BYTESWAP16 _byteswap_ushort
373 #define FLATBUFFERS_BYTESWAP32 _byteswap_ulong
374 #define FLATBUFFERS_BYTESWAP64 _byteswap_uint64
375 #elif defined(__ICCARM__)
376 #define FLATBUFFERS_BYTESWAP16 __REV16
377 #define FLATBUFFERS_BYTESWAP32 __REV
378 #define FLATBUFFERS_BYTESWAP64(x) \
379 ((__REV(static_cast<uint32_t>(x >> 32U))) | (static_cast<uint64_t>(__REV(static_cast<uint32_t>(x)))) << 32U)
380 #else
381 #if defined(__GNUC__) && __GNUC__ * 100 + __GNUC_MINOR__ < 408 && !defined(__clang__)
382 // __builtin_bswap16 was missing prior to GCC 4.8.
383 #define FLATBUFFERS_BYTESWAP16(x) \
384 static_cast<uint16_t>(__builtin_bswap32(static_cast<uint32_t>(x) << 16))
385 #else
386 #define FLATBUFFERS_BYTESWAP16 __builtin_bswap16
387 #endif
388 #define FLATBUFFERS_BYTESWAP32 __builtin_bswap32
389 #define FLATBUFFERS_BYTESWAP64 __builtin_bswap64
390 #endif
391 if (sizeof(T) == 1) { // Compile-time if-then's.
392 return t;
393 } else if (sizeof(T) == 2) {
394 union { T t; uint16_t i; } u = { t };
395 u.i = FLATBUFFERS_BYTESWAP16(u.i);
396 return u.t;
397 } else if (sizeof(T) == 4) {
398 union { T t; uint32_t i; } u = { t };
399 u.i = FLATBUFFERS_BYTESWAP32(u.i);
400 return u.t;
401 } else if (sizeof(T) == 8) {
402 union { T t; uint64_t i; } u = { t };
403 u.i = FLATBUFFERS_BYTESWAP64(u.i);
404 return u.t;
405 } else {
406 FLATBUFFERS_ASSERT(0);
407 return t;
408 }
409}
410
411#if defined(_MSC_VER)
412 #pragma warning(pop)

Callers 1

EndianScalarFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected