Replace macro max and min, by some inline functions :
-To avoid having long operation repeated twice, peoples shouldn'tuse long operation into does macro but they do so... -To avoid double increment or thing like such. -Yes this involve some implicite cast sometime, but that still better then redo 10 dereference...
This commit is contained in:
@@ -286,14 +286,6 @@ typedef char bool;
|
||||
#define swap(a,b) if (a != b) ((a ^= b), (b ^= a), (a ^= b))
|
||||
#define swap_ptr(a,b) if ((a) != (b)) ((a) = (void*)((intptr_t)(a) ^ (intptr_t)(b)), (b) = (void*)((intptr_t)(a) ^ (intptr_t)(b)), (a) = (void*)((intptr_t)(a) ^ (intptr_t)(b)))
|
||||
|
||||
#ifndef max
|
||||
#define max(a,b) (((a) > (b)) ? (a) : (b))
|
||||
#endif
|
||||
|
||||
#ifndef min
|
||||
#define min(a,b) (((a) < (b)) ? (a) : (b))
|
||||
#endif
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// should not happen
|
||||
#ifndef NULL
|
||||
@@ -358,7 +350,7 @@ typedef char bool;
|
||||
#define TOUPPER(c) (toupper((unsigned char)(c)))
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// length of a static array
|
||||
// length of a static array (size_t)
|
||||
#define ARRAYLENGTH(A) ( sizeof(A)/sizeof((A)[0]) )
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
@@ -404,5 +396,35 @@ void SET_FUNCPOINTER(T1& var, T2 p)
|
||||
#define SET_FUNCPOINTER(var,p) (var) = (p)
|
||||
#endif
|
||||
|
||||
//#ifndef max
|
||||
//#define max(a,b) (((a) > (b)) ? (a) : (b))
|
||||
//wish we could have template in C
|
||||
static inline int max(int a, int b){ return (a > b) ? a : b; } //default is int
|
||||
static inline int8 i8max(int8 a, int8 b){ return (a > b) ? a : b; }
|
||||
static inline int16 i16max(int16 a, int16 b){ return (a > b) ? a : b; }
|
||||
static inline int32 i32max(int32 a, int32 b){ return (a > b) ? a : b; }
|
||||
static inline int64 i64max(int64 a, int64 b){ return (a > b) ? a : b; }
|
||||
static inline uint32 umax(uint32 a, uint32 b){ return (a > b) ? a : b; }
|
||||
static inline uint8 u8max(uint8 a, uint8 b){ return (a > b) ? a : b; }
|
||||
static inline uint16 u16max(uint16 a, uint16 b){ return (a > b) ? a : b; }
|
||||
static inline uint32 u32max(uint32 a, uint32 b){ return (a > b) ? a : b; }
|
||||
static inline uint64 u64max(uint64 a, uint64 b){ return (a > b) ? a : b; }
|
||||
static inline size_t zmax(size_t a, size_t b){ return (a > b) ? a : b; } //cause those varie
|
||||
//#endif
|
||||
|
||||
//#ifndef min
|
||||
//#define min(a,b) (((a) < (b)) ? (a) : (b))
|
||||
//#endif
|
||||
static inline int min(int a, int b){ return (a < b) ? a : b; } //default is int
|
||||
static inline int8 i8min(int8 a, int8 b){ return (a < b) ? a : b; }
|
||||
static inline int16 i16min(int16 a, int16 b){ return (a < b) ? a : b; }
|
||||
static inline int32 i32min(int32 a, int32 b){ return (a < b) ? a : b; }
|
||||
static inline int64 i64min(int64 a, int64 b){ return (a < b) ? a : b; }
|
||||
static inline uint32 umin(uint32 a, uint32 b){ return (a < b) ? a : b; }
|
||||
static inline uint8 u8min(uint8 a, uint8 b){ return (a < b) ? a : b; }
|
||||
static inline uint16 u16min(uint16 a, uint16 b){ return (a < b) ? a : b; }
|
||||
static inline uint32 u32min(uint32 a, uint32 b){ return (a < b) ? a : b; }
|
||||
static inline uint64 u64min(uint64 a, uint64 b){ return (a < b) ? a : b; }
|
||||
static inline size_t zmin(size_t a, size_t b){ return (a < b) ? a : b; }
|
||||
|
||||
#endif /* _CBASETYPES_H_ */
|
||||
|
||||
@@ -33,7 +33,7 @@ const char* mapindex_getmapname(const char* string, char* output) {
|
||||
if (len >= 4 && stricmp(&string[len-4], ".gat") == 0)
|
||||
len -= 4; // strip .gat extension
|
||||
|
||||
len = min(len, MAP_NAME_LENGTH-1);
|
||||
len = zmin(len, MAP_NAME_LENGTH-1);
|
||||
safestrncpy(dest, string, len+1);
|
||||
memset(&dest[len], '\0', MAP_NAME_LENGTH-len);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user