diff options
author | Campbell Barton <ideasman42@gmail.com> | 2013-12-08 10:29:22 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2013-12-08 10:29:22 +0400 |
commit | c005fb407bbb7aac4cf138fbba903bbb2c821c93 (patch) | |
tree | a49185234ce1a01d26e8f1632e29323025322d17 /source/blender/blenlib/BLI_utildefines.h | |
parent | 8a9a060b673bb9b8c08967ccbd8009ca24cde4d1 (diff) |
Util-defines: avoid multiple calculation/access for MIN/MAX macros
Diffstat (limited to 'source/blender/blenlib/BLI_utildefines.h')
-rw-r--r-- | source/blender/blenlib/BLI_utildefines.h | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/source/blender/blenlib/BLI_utildefines.h b/source/blender/blenlib/BLI_utildefines.h index 9e1297658b8..ef2c61cc45a 100644 --- a/source/blender/blenlib/BLI_utildefines.h +++ b/source/blender/blenlib/BLI_utildefines.h @@ -48,11 +48,26 @@ #endif /* min/max */ +#if defined(__GNUC__) || defined(__clang__) + +#define MIN2(x, y) ({ \ + typeof(x) x_ = (x); \ + typeof(y) y_ = (y); \ + ((x_) < (y_) ? (x_) : (y_)); }) + +#define MAX2(x, y) ({ \ + typeof(x) x_ = (x); \ + typeof(y) y_ = (y); \ + ((x_) > (y_) ? (x_) : (y_)); }) + +#else #define MIN2(x, y) ((x) < (y) ? (x) : (y)) +#define MAX2(x, y) ((x) > (y) ? (x) : (y)) +#endif + #define MIN3(x, y, z) (MIN2(MIN2((x), (y)), (z))) #define MIN4(x, y, z, a) (MIN2(MIN2((x), (y)), MIN2((z), (a)))) -#define MAX2(x, y) ((x) > (y) ? (x) : (y)) #define MAX3(x, y, z) (MAX2(MAX2((x), (y)), (z))) #define MAX4(x, y, z, a) (MAX2(MAX2((x), (y)), MAX2((z), (a)))) |