From f80dab367cb73b3e98f16248bbfe602136cbcd9a Mon Sep 17 00:00:00 2001 From: Max Horn Date: Thu, 23 Jun 2005 14:15:49 +0000 Subject: Moved endian macros to a separate header file svn-id: r18441 --- common/scummsys.h | 155 ++---------------------------------------------------- 1 file changed, 3 insertions(+), 152 deletions(-) (limited to 'common/scummsys.h') diff --git a/common/scummsys.h b/common/scummsys.h index b1d7c13166..a60025e0fc 100644 --- a/common/scummsys.h +++ b/common/scummsys.h @@ -19,8 +19,8 @@ * $Header$ * */ -#ifndef SCUMMSYS_H -#define SCUMMSYS_H +#ifndef COMMON_SCUMMSYS_H +#define COMMON_SCUMMSYS_H #if !defined(_STDAFX_H) && !defined(__PLAYSTATION2__) #error Included scummsys.h without including stdafx.h first! @@ -378,155 +378,6 @@ #endif -// -// Endian conversion functions, macros etc., follow from here! -// - -FORCEINLINE uint32 SWAP_BYTES_32(uint32 a) { - return ((a >> 24) & 0x000000FF) | - ((a >> 8) & 0x0000FF00) | - ((a << 8) & 0x00FF0000) | - ((a << 24) & 0xFF000000); -} - -FORCEINLINE uint16 SWAP_BYTES_16(uint16 a) { - return ((a >> 8) & 0x00FF) + ((a << 8) & 0xFF00); -} - - -#if defined(SCUMM_LITTLE_ENDIAN) - - #define PROTO_MKID(a) ((uint32) \ - (((a) >> 24) & 0x000000FF) | \ - (((a) >> 8) & 0x0000FF00) | \ - (((a) << 8) & 0x00FF0000) | \ - (((a) << 24) & 0xFF000000)) - #define PROTO_MKID_BE(a) ((uint32)(a)) - - #if defined(INVERSE_MKID) - # define MKID(a) PROTO_MKID_BE(a) - # define MKID_BE(a) PROTO_MKID(a) - #else - # define MKID(a) PROTO_MKID(a) - # define MKID_BE(a) PROTO_MKID_BE(a) - #endif - - #define READ_UINT32(a) READ_LE_UINT32(a) - - #define FROM_LE_32(a) ((uint32)(a)) - #define FROM_LE_16(a) ((uint16)(a)) - - #define TO_LE_32(a) ((uint32)(a)) - #define TO_LE_16(a) ((uint16)(a)) - - #define TO_BE_32(a) SWAP_BYTES_32(a) - #define TO_BE_16(a) SWAP_BYTES_16(a) - -#elif defined(SCUMM_BIG_ENDIAN) - - #define MKID(a) ((uint32)(a)) - #define MKID_BE(a) ((uint32)(a)) - //#define MKID_BE(a) SWAP_BYTES_32(a) - - #define READ_UINT32(a) READ_BE_UINT32(a) - - #define FROM_LE_32(a) SWAP_BYTES_32(a) - #define FROM_LE_16(a) SWAP_BYTES_16(a) +#include "common/endian.h" - #define TO_LE_32(a) SWAP_BYTES_32(a) - #define TO_LE_16(a) SWAP_BYTES_16(a) - - #define TO_BE_32(a) ((uint32)(a)) - #define TO_BE_16(a) ((uint16)(a)) - -#else - - #error No endianness defined - -#endif - - -#if defined(SCUMM_NEED_ALIGNMENT) || defined(SCUMM_BIG_ENDIAN) - FORCEINLINE uint16 READ_LE_UINT16(const void *ptr) { - const byte *b = (const byte *)ptr; - return (b[1] << 8) + b[0]; - } - FORCEINLINE uint32 READ_LE_UINT32(const void *ptr) { - const byte *b = (const byte *)ptr; - return (b[3] << 24) + (b[2] << 16) + (b[1] << 8) + (b[0]); - } - FORCEINLINE void WRITE_LE_UINT16(void *ptr, uint16 value) { - byte *b = (byte *)ptr; - b[0] = (byte)(value >> 0); - b[1] = (byte)(value >> 8); - } - FORCEINLINE void WRITE_LE_UINT32(void *ptr, uint32 value) { - byte *b = (byte *)ptr; - b[0] = (byte)(value >> 0); - b[1] = (byte)(value >> 8); - b[2] = (byte)(value >> 16); - b[3] = (byte)(value >> 24); - } -#else - FORCEINLINE uint16 READ_LE_UINT16(const void *ptr) { - return *(const uint16 *)(ptr); - } - FORCEINLINE uint32 READ_LE_UINT32(const void *ptr) { - return *(const uint32 *)(ptr); - } - FORCEINLINE void WRITE_LE_UINT16(void *ptr, uint16 value) { - *(uint16 *)(ptr) = value; - } - FORCEINLINE void WRITE_LE_UINT32(void *ptr, uint32 value) { - *(uint32 *)(ptr) = value; - } -#endif - - -#if defined(SCUMM_NEED_ALIGNMENT) || defined(SCUMM_LITTLE_ENDIAN) - FORCEINLINE uint16 READ_BE_UINT16(const void *ptr) { - const byte *b = (const byte *)ptr; - return (b[0] << 8) + b[1]; - } - FORCEINLINE uint32 READ_BE_UINT32(const void *ptr) { - const byte *b = (const byte*)ptr; - return (b[0] << 24) + (b[1] << 16) + (b[2] << 8) + (b[3]); - } - FORCEINLINE void WRITE_BE_UINT16(void *ptr, uint16 value) { - byte *b = (byte *)ptr; - b[0] = (byte)(value >> 8); - b[1] = (byte)(value >> 0); - } - FORCEINLINE void WRITE_BE_UINT32(void *ptr, uint32 value) { - byte *b = (byte *)ptr; - b[0] = (byte)(value >> 24); - b[1] = (byte)(value >> 16); - b[2] = (byte)(value >> 8); - b[3] = (byte)(value >> 0); - } -#else - FORCEINLINE uint16 READ_BE_UINT16(const void *ptr) { - return *(const uint16 *)(ptr); - } - FORCEINLINE uint32 READ_BE_UINT32(const void *ptr) { - return *(const uint32 *)(ptr); - } - FORCEINLINE void WRITE_BE_UINT16(void *ptr, uint16 value) { - *(uint16 *)(ptr) = value; - } - FORCEINLINE void WRITE_BE_UINT32(void *ptr, uint32 value) { - *(uint32 *)(ptr) = value; - } -#endif - -FORCEINLINE uint32 READ_LE_UINT24(const void *ptr) { - const byte *b = (const byte *)ptr; - return (b[2] << 16) + (b[1] << 8) + (b[0]); -} - -FORCEINLINE uint32 READ_BE_UINT24(const void *ptr) { - const byte *b = (const byte*)ptr; - return (b[0] << 16) + (b[1] << 8) + (b[2]); -} - #endif -- cgit v1.2.3