derive U32/S32 from signed/unsigned instead of long (for 64 bit systems)
[swftools.git] / lib / types.h
1 #ifndef __rfxtypes_h__
2 #define __rfxtypes_h__
3
4 #ifndef TRUE
5 #define TRUE (1)
6 #endif
7 #ifndef FALSE
8 #define FALSE (0)
9 #endif
10
11 /* little/big endian stuff */
12
13 #define PUT8(ptr,x) {((U8*)(ptr))[0]=x;}
14 #define PUT16(ptr,x) {((U8*)(ptr))[0]=(U8)(x);((U8*)(ptr))[1]=(U8)((x)>>8);}
15 #define PUT32(ptr,x) {((U8*)(ptr))[0]=(U8)(x);((U8*)(ptr))[1]=(U8)((x)>>8);((U8*)(ptr))[2]=(U8)((x)>>16);((U8*)(ptr))[3]=(U8)((x)>>24);}
16 #define GET16(ptr) (((U16)(((U8*)(ptr))[0]))+(((U16)(((U8*)(ptr))[1]))<<8))
17 #define GET32(ptr) (((U16)(((U8*)(ptr))[0]))+(((U16)(((U8*)(ptr))[1]))<<8)+(((U16)(((U8*)(ptr))[2]))<<16)+(((U16)(((U8*)(ptr))[3]))<<24))
18
19 #ifdef WORDS_BIGENDIAN
20 #define SWAP16(s) ((((s)>>8)&0x00ff)|(((s)<<8)&0xff00))
21 #define SWAP32(s) (SWAP16(((s)>>16)&0x0000ffff)|((SWAP16(s)<<16)&0xffff0000))
22 #define REVERSESWAP16(x) (x)
23 #define REVERSESWAP32(x) (x)
24 #else
25 #define SWAP16(x) (x)
26 #define SWAP32(x) (x)
27 #define REVERSESWAP16(s) ((((s)>>8)&0x00ff)|(((s)<<8)&0xff00))
28 #define REVERSESWAP32(s) (REVERSESWAP16(((s)>>16)&0x0000ffff)|((REVERSESWAP16(s)<<16)&0xffff0000))
29 #endif
30
31 // SWF Types
32
33 typedef         unsigned long long  U64;
34 typedef         signed long long    S64;
35 typedef         unsigned            U32;
36 typedef         signed              S32;
37 typedef         unsigned short      U16;
38 typedef         signed short        S16;
39 typedef         unsigned char       U8;
40 typedef         signed char         S8;
41
42 #endif