equal
deleted
inserted
replaced
17 |
17 |
18 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; } |
19 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; } |
20 |
20 |
21 |
21 |
22 static inline int clamp(int a, int min, int max) { if (a <= min) return min; if (a >= max) return max; return a; } |
22 static inline int clamp(int a, int min, int max) |
23 static inline int clamp2(int a, int min, int max) { if (a <= min) a=min; if (a >= max) a=max; return a; } |
23 { |
24 static inline bool int32_add_overflow(int32 a, int32 b) { return (int32)(a^b)>=0 && (int32)(a^(a+b))<0; } |
24 if (a <= min) return min; |
25 static inline bool int32_sub_overflow(int32 a, int32 b) { return (int32)(a^b)<0 && (int32)(a^(a-b))<0; } |
25 if (a >= max) return max; |
|
26 return a; |
|
27 } |
26 |
28 |
27 |
29 |
28 static inline int32 BIGMULSS(int32 a, int32 b, int shift) { |
30 static inline int32 BIGMULSS(int32 a, int32 b, int shift) { |
29 return (int32)(((int64)(a) * (int64)(b)) >> (shift)); |
31 return (int32)(((int64)(a) * (int64)(b)) >> (shift)); |
30 } |
32 } |
122 |
124 |
123 #define for_each_bit(_i,_b) \ |
125 #define for_each_bit(_i,_b) \ |
124 for(_i=0; _b!=0; _i++,_b>>=1) \ |
126 for(_i=0; _b!=0; _i++,_b>>=1) \ |
125 if (_b&1) |
127 if (_b&1) |
126 |
128 |
127 #define assert_array(i,j) assert(i < lengthof(j)) |
|
128 |
|
129 #define abs myabs |
129 #define abs myabs |
130 |
130 |
131 |
131 |
132 static inline int intxchg_(int *a, int b) { int t = *a; *a = b; return t; } |
132 static inline int intxchg_(int *a, int b) { int t = *a; *a = b; return t; } |
133 #define intxchg(a,b) intxchg_(&(a), (b)) |
|
134 #define intswap(a,b) ((b) = intxchg_(&(a), (b))) |
133 #define intswap(a,b) ((b) = intxchg_(&(a), (b))) |
135 |
134 |
136 static inline int myabs(int a) { if (a<0) a = -a; return a; } |
135 static inline int myabs(int a) { if (a<0) a = -a; return a; } |
137 static inline int64 myabs64(int64 a) { if (a<0) a = -a; return a; } |
136 static inline int64 myabs64(int64 a) { if (a<0) a = -a; return a; } |
138 |
137 |
144 |
143 |
145 |
144 |
146 |
145 |
147 #if defined(TTD_LITTLE_ENDIAN) |
146 #if defined(TTD_LITTLE_ENDIAN) |
148 # define READ_LE_UINT16(b) (*(const uint16*)(b)) |
147 # define READ_LE_UINT16(b) (*(const uint16*)(b)) |
149 # define ADD_WORD(x) (x)&0xFF, ((x) >> 8)&0xFF |
|
150 # define ADD_DWORD(x) (x)&0xFF, ((x) >> 8)&0xFF, ((x) >> 16)&0xFF, ((x) >> 24)&0xFF |
|
151 #elif defined(TTD_BIG_ENDIAN) |
148 #elif defined(TTD_BIG_ENDIAN) |
152 static inline uint16 READ_LE_UINT16(const void *b) { |
149 static inline uint16 READ_LE_UINT16(const void *b) { |
153 return ((const byte*)b)[0] + (((const byte*)b)[1] << 8); |
150 return ((const byte*)b)[0] + (((const byte*)b)[1] << 8); |
154 } |
151 } |
155 # define ADD_WORD(x) ((x) >> 8)&0xFF, (x)&0xFF |
|
156 # define ADD_DWORD(x) ((x) >> 24)&0xFF, ((x) >> 16)&0xFF, ((x) >> 8)&0xFF, (x)&0xFF |
|
157 #endif |
152 #endif |
158 |
153 |
159 static inline void WRITE_LE_UINT16(void *b, uint16 x) { |
154 static inline void WRITE_LE_UINT16(void *b, uint16 x) { |
160 ((byte*)b)[0] = (byte)x; |
155 ((byte*)b)[0] = (byte)x; |
161 ((byte*)b)[1] = (byte)(x >> 8); |
156 ((byte*)b)[1] = (byte)(x >> 8); |