Changeset View
Changeset View
Standalone View
Standalone View
source/blender/blenlib/BLI_utildefines.h
| Show First 20 Lines • Show All 134 Lines • ▼ Show 20 Lines | #define DO_MINMAX2(vec, min, max) { \ | ||||
| if ((min)[0] > (vec)[0] ) (min)[0] = (vec)[0]; \ | if ((min)[0] > (vec)[0] ) (min)[0] = (vec)[0]; \ | ||||
| if ((min)[1] > (vec)[1] ) (min)[1] = (vec)[1]; \ | if ((min)[1] > (vec)[1] ) (min)[1] = (vec)[1]; \ | ||||
| if ((max)[0] < (vec)[0] ) (max)[0] = (vec)[0]; \ | if ((max)[0] < (vec)[0] ) (max)[0] = (vec)[0]; \ | ||||
| if ((max)[1] < (vec)[1] ) (max)[1] = (vec)[1]; \ | if ((max)[1] < (vec)[1] ) (max)[1] = (vec)[1]; \ | ||||
| } (void)0 | } (void)0 | ||||
| /* some math and copy defines */ | /* some math and copy defines */ | ||||
| #define _VA_SWAP3(type, a, b) { \ | |||||
| #define SWAP(type, a, b) { \ | |||||
| type sw_ap; \ | |||||
| CHECK_TYPE(a, type); \ | CHECK_TYPE(a, type); \ | ||||
| CHECK_TYPE(b, type); \ | CHECK_TYPE(b, type); \ | ||||
| type SWAP = (a); \ | sw_ap = (a); \ | ||||
| (a) = (b); \ | (a) = (b); \ | ||||
| (b) = SWAP; \ | (b) = sw_ap; \ | ||||
| } (void)0 | } (void)0 | ||||
| #define _VA_SWAP2(a, b) { \ | |||||
| CHECK_TYPE_PAIR(a, b); \ | |||||
| struct { char a_[sizeof(a)]; } SWAP, *a_ = (void *)&(a), *b_ = (void *)&(b); \ | |||||
| SWAP = *a_; \ | |||||
| *a_ = *b_; \ | |||||
| *b_ = SWAP; \ | |||||
| } ((void)0) | |||||
| /* SWAP with two or three args (initial type argument is optional) */ | |||||
| #define SWAP(...) VA_NARGS_CALL_OVERLOAD(_VA_SWAP, __VA_ARGS__) | |||||
| /* swap with a temp value */ | /* swap with a temp value */ | ||||
| #define SWAP_TVAL(tval, a, b) { \ | #define SWAP_TVAL(tval, a, b) { \ | ||||
| CHECK_TYPE_PAIR(tval, a); \ | CHECK_TYPE_PAIR(tval, a); \ | ||||
| CHECK_TYPE_PAIR(tval, b); \ | CHECK_TYPE_PAIR(tval, b); \ | ||||
| (tval) = (a); \ | (tval) = (a); \ | ||||
| (a) = (b); \ | (a) = (b); \ | ||||
| (b) = (tval); \ | (b) = (tval); \ | ||||
| } (void)0 | } (void)0 | ||||
| ▲ Show 20 Lines • Show All 523 Lines • Show Last 20 Lines | |||||