mirror of https://github.com/yaz0r/FITD.git
71 lines
1.2 KiB
C
71 lines
1.2 KiB
C
#ifndef _ENDIANESS_H_
|
|
#define _ENDIANESS_H_
|
|
|
|
#ifdef __GCC__
|
|
#define FORCEINLINE static inline
|
|
#else
|
|
#ifdef WIN32
|
|
#define FORCEINLINE __forceinline
|
|
#else
|
|
#define FORCEINLINE static inline
|
|
#endif
|
|
#endif
|
|
|
|
FORCEINLINE u16 READ_LE_U16(void *ptr)
|
|
{
|
|
#ifdef MACOSX
|
|
return (((u8*)ptr)[1]<<8)|((u8*)ptr)[0];
|
|
#else
|
|
return *(u16*)ptr;
|
|
#endif
|
|
}
|
|
|
|
FORCEINLINE s16 READ_LE_S16(void *ptr)
|
|
{
|
|
return (s16)READ_LE_U16(ptr);
|
|
}
|
|
|
|
FORCEINLINE u16 READ_BE_U16(void *ptr)
|
|
{
|
|
#ifdef MACOSX
|
|
return *(u16*)ptr;
|
|
#else
|
|
return (((u8*)ptr)[1]<<8)|((u8*)ptr)[0];
|
|
#endif
|
|
}
|
|
|
|
FORCEINLINE s16 READ_BE_S16(void *ptr)
|
|
{
|
|
return (s16)READ_BE_S16(ptr);
|
|
}
|
|
|
|
FORCEINLINE u32 READ_LE_U32(void *ptr)
|
|
{
|
|
#ifdef MACOSX
|
|
return (((u8*)ptr)[3]<<24)|(((u8*)ptr)[2]<<16)|(((u8*)ptr)[1]<<8)|((u8*)ptr)[0];
|
|
#else
|
|
return *(u32*)ptr;
|
|
#endif
|
|
}
|
|
|
|
FORCEINLINE s32 READ_LE_S32(void *ptr)
|
|
{
|
|
return (s32)READ_LE_U32(ptr);
|
|
}
|
|
|
|
FORCEINLINE u32 READ_BE_U32(void *ptr)
|
|
{
|
|
#ifdef MACOSX
|
|
return *(u32*)ptr;
|
|
#else
|
|
return (((u8*)ptr)[3]<<24)|(((u8*)ptr)[2]<<16)|(((u8*)ptr)[1]<<8)|((u8*)ptr)[0];
|
|
#endif
|
|
}
|
|
|
|
FORCEINLINE s32 READ_BE_S32(void *ptr)
|
|
{
|
|
return (s32)READ_LE_U32(ptr);
|
|
}
|
|
|
|
#endif
|