mirror of
https://github.com/jorio/Pomme.git
synced 2025-02-18 13:30:25 +00:00
Fix ByteswapX utility functions, add signed versions
This commit is contained in:
parent
79ee6c1163
commit
6399e16cc6
@ -28,24 +28,44 @@ int ByteswapStructs(const char* format, int structSize, int structCount, void* b
|
|||||||
|
|
||||||
int ByteswapInts(int intSize, int intCount, void* buffer);
|
int ByteswapInts(int intSize, int intCount, void* buffer);
|
||||||
|
|
||||||
static inline uint16_t Byteswap16(const void* p)
|
static inline uint16_t Byteswap16(const void* data)
|
||||||
{
|
{
|
||||||
uint16_t v;
|
const uint8_t* p = (uint8_t*) data;
|
||||||
v =
|
return ( p[0] << 8 )
|
||||||
(*(const uint8_t*) p)
|
| ( p[1] );
|
||||||
| ((*(const uint8_t*) p + 1) << 8);
|
|
||||||
return v;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline uint32_t Byteswap32(const void* p)
|
static inline int16_t Byteswap16Signed(const void* data)
|
||||||
{
|
{
|
||||||
uint32_t v;
|
return (int16_t) Byteswap16(data);
|
||||||
v =
|
}
|
||||||
(*(const uint8_t*) p)
|
|
||||||
| ((*(const uint8_t*) p + 1) << 8)
|
static inline int32_t Byteswap16SignedRW(void* data)
|
||||||
| ((*(const uint8_t*) p + 2) << 16)
|
{
|
||||||
| ((*(const uint8_t*) p + 3) << 24);
|
int16_t result = Byteswap16Signed(data);
|
||||||
return v;
|
*(int16_t*) data = result;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline uint32_t Byteswap32(const void* data)
|
||||||
|
{
|
||||||
|
const uint8_t* p = (uint8_t*) data;
|
||||||
|
return ( p[0] << 24 )
|
||||||
|
| ( p[1] << 16 )
|
||||||
|
| ( p[2] << 8 )
|
||||||
|
| ( p[3] );
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int32_t Byteswap32Signed(const void* data)
|
||||||
|
{
|
||||||
|
return (int32_t) Byteswap32(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int32_t Byteswap32SignedRW(void* data)
|
||||||
|
{
|
||||||
|
int32_t result = Byteswap32Signed(data);
|
||||||
|
*(int32_t*) data = result;
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
Loading…
x
Reference in New Issue
Block a user