mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-15 00:38:52 +00:00
Fix Mutate() methods of Array<scalar/struct> (override 5508) (#5526)
* Draft with Array specialization (#5508) * Array specialization + SFINAE to fold copy-paste (#5508) * Add implicit specialization of Array<scalar> and Array<struct> (#5508) - Tag dispatching is used for implicit specialization - Array<scalar> and Array<struct> have different iterators and accessors - Array<scalar> and Array<struct> have different Mutate() methods * Add implicit specialization of Array<scalar> and Array<struct> (#5508) - Tag dispatching is used for implicit specialization - Array<scalar> and Array<struct> have different iterators and accessors - Array<scalar> and Array<struct> have different Mutate() methods
This commit is contained in:
committed by
Wouter van Oortmerssen
parent
e365c502ff
commit
cbdf82e2fb
@@ -330,22 +330,20 @@ template<typename T> T EndianSwap(T t) {
|
||||
if (sizeof(T) == 1) { // Compile-time if-then's.
|
||||
return t;
|
||||
} else if (sizeof(T) == 2) {
|
||||
union { T t; uint16_t i; } u;
|
||||
u.t = t;
|
||||
union { T t; uint16_t i; } u = { t };
|
||||
u.i = FLATBUFFERS_BYTESWAP16(u.i);
|
||||
return u.t;
|
||||
} else if (sizeof(T) == 4) {
|
||||
union { T t; uint32_t i; } u;
|
||||
u.t = t;
|
||||
union { T t; uint32_t i; } u = { t };
|
||||
u.i = FLATBUFFERS_BYTESWAP32(u.i);
|
||||
return u.t;
|
||||
} else if (sizeof(T) == 8) {
|
||||
union { T t; uint64_t i; } u;
|
||||
u.t = t;
|
||||
union { T t; uint64_t i; } u = { t };
|
||||
u.i = FLATBUFFERS_BYTESWAP64(u.i);
|
||||
return u.t;
|
||||
} else {
|
||||
FLATBUFFERS_ASSERT(0);
|
||||
return t;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user