#ifndef __rfxtypes_h__
#define __rfxtypes_h__
+#include "../config.h"
+
#ifndef TRUE
#define TRUE (1)
#endif
#define GET16(ptr) (((U16)(((U8*)(ptr))[0]))+(((U16)(((U8*)(ptr))[1]))<<8))
#define GET32(ptr) (((U16)(((U8*)(ptr))[0]))+(((U16)(((U8*)(ptr))[1]))<<8)+(((U16)(((U8*)(ptr))[2]))<<16)+(((U16)(((U8*)(ptr))[3]))<<24))
-#ifdef WORDS_BIGENDIAN
#define SWAP16(s) ((((s)>>8)&0x00ff)|(((s)<<8)&0xff00))
#define SWAP32(s) (SWAP16(((s)>>16)&0x0000ffff)|((SWAP16(s)<<16)&0xffff0000))
-#define REVERSESWAP16(x) (x)
-#define REVERSESWAP32(x) (x)
+
+#ifdef WORDS_BIGENDIAN
+#define LE_16_TO_NATIVE(s) SWAP16(s)
+#define LE_32_TO_NATIVE(s) SWAP32(s)
+#define BE_16_TO_NATIVE(x) (x)
+#define BE_32_TO_NATIVE(x) (x)
#else
-#define SWAP16(x) (x)
-#define SWAP32(x) (x)
-#define REVERSESWAP16(s) ((((s)>>8)&0x00ff)|(((s)<<8)&0xff00))
-#define REVERSESWAP32(s) (REVERSESWAP16(((s)>>16)&0x0000ffff)|((REVERSESWAP16(s)<<16)&0xffff0000))
+#define LE_16_TO_NATIVE(x) (x)
+#define LE_32_TO_NATIVE(x) (x)
+#define BE_16_TO_NATIVE(s) SWAP16(s)
+#define BE_32_TO_NATIVE(s) SWAP32(s)
#endif
// SWF Types
-typedef unsigned long U32;
-typedef signed long S32;
-typedef unsigned short U16;
-typedef signed short S16;
-typedef unsigned char U8;
-typedef signed char S8;
+#if SIZEOF_SIGNED_LONG_LONG != 8
+#error "no way to define 64 bit integer"
+#endif
+#if SIZEOF_SIGNED != 4
+#error "don't know how to define 32 bit integer"
+#endif
+#if SIZEOF_SIGNED_SHORT != 2
+#error "don't know how to define 16 bit integer"
+#endif
+#if SIZEOF_SIGNED_CHAR != 1
+#error "don't know how to define 8 bit integer"
+#endif
+
+typedef unsigned long long U64;
+typedef signed long long S64;
+typedef unsigned U32;
+typedef signed S32;
+typedef unsigned short U16;
+typedef signed short S16;
+typedef unsigned char U8;
+typedef signed char S8;
+
+#if SIZEOF_VOIDP == SIZEOF_SIGNED_LONG_LONG
+typedef unsigned long long ptroff_t;
+#elif SIZEOF_VOIDP == SIZEOF_SIGNED
+typedef unsigned ptroff_t;
+#else
+#error "Unknown pointer size"
+#endif
#endif