macros.h
changeset 236 da0ae9d977e0
parent 222 b88456001397
child 239 23958632a582
equal deleted inserted replaced
235:74233a1c6a53 236:da0ae9d977e0
    11 #undef max
    11 #undef max
    12 #endif
    12 #endif
    13 
    13 
    14 static INLINE int min(int a, int b) { if (a <= b) return a; return b; }
    14 static INLINE int min(int a, int b) { if (a <= b) return a; return b; }
    15 static INLINE int max(int a, int b) { if (a >= b) return a; return b; }
    15 static INLINE int max(int a, int b) { if (a >= b) return a; return b; }
       
    16 static INLINE int64 max64(int64 a, int64 b) { if (a >= b) return a; return b; }
    16 
    17 
    17 static INLINE uint minu(uint a, uint b) { if (a <= b) return a; return b; }
    18 static INLINE uint minu(uint a, uint b) { if (a <= b) return a; return b; }
    18 static INLINE uint maxu(uint a, uint b) { if (a >= b) return a; return b; }
    19 static INLINE uint maxu(uint a, uint b) { if (a >= b) return a; return b; }
    19 
    20 
    20 
    21 
    45 }
    46 }
    46 
    47 
    47 
    48 
    48 static INLINE int32 BIGMULSS(int32 a, int32 b, int shift) {
    49 static INLINE int32 BIGMULSS(int32 a, int32 b, int shift) {
    49 	return (int32)(((int64)(a) * (int64)(b)) >> (shift));
    50 	return (int32)(((int64)(a) * (int64)(b)) >> (shift));
       
    51 }
       
    52 
       
    53 static INLINE int64 BIGMULSS64(int64 a, int64 b, int shift) {
       
    54 	return ((a) * (b)) >> (shift);
    50 }
    55 }
    51 
    56 
    52 static INLINE uint32 BIGMULUS(uint32 a, uint32 b, int shift) {
    57 static INLINE uint32 BIGMULUS(uint32 a, uint32 b, int shift) {
    53 	return (uint32)(((uint64)(a) * (uint64)(b)) >> (shift));
    58 	return (uint32)(((uint64)(a) * (uint64)(b)) >> (shift));
    54 }
    59 }
   192 static INLINE int intxchg_(int *a, int b) { int t = *a; *a = b; return t; }
   197 static INLINE int intxchg_(int *a, int b) { int t = *a; *a = b; return t; }
   193 #define intxchg(a,b) intxchg_(&(a), (b))
   198 #define intxchg(a,b) intxchg_(&(a), (b))
   194 #define intswap(a,b) ((b) = intxchg_(&(a), (b)))
   199 #define intswap(a,b) ((b) = intxchg_(&(a), (b)))
   195 
   200 
   196 static INLINE int myabs(int a) { if (a<0) a = -a; return a; }
   201 static INLINE int myabs(int a) { if (a<0) a = -a; return a; }
       
   202 static INLINE int64 myabs64(int64 a) { if (a<0) a = -a; return a; }
   197 
   203 
   198 static INLINE void swap_byte(byte *a, byte *b) { byte t = *a; *a = *b; *b = t; }
   204 static INLINE void swap_byte(byte *a, byte *b) { byte t = *a; *a = *b; *b = t; }
   199 static INLINE void swap_uint16(uint16 *a, uint16 *b) { uint16 t = *a; *a = *b; *b = t; }
   205 static INLINE void swap_uint16(uint16 *a, uint16 *b) { uint16 t = *a; *a = *b; *b = t; }
   200 static INLINE void swap_int16(int16 *a, int16 *b) { int16 t = *a; *a = *b; *b = t; }
   206 static INLINE void swap_int16(int16 *a, int16 *b) { int16 t = *a; *a = *b; *b = t; }
   201 static INLINE void swap_tile(TileIndex *a, TileIndex *b) { TileIndex t = *a; *a = *b; *b = t; }
   207 static INLINE void swap_tile(TileIndex *a, TileIndex *b) { TileIndex t = *a; *a = *b; *b = t; }