00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef BT_GEN_MINMAX_H
00016 #define BT_GEN_MINMAX_H
00017
00018 #include "btScalar.h"
00019
00020 template <class T>
00021 SIMD_FORCE_INLINE const T& btMin(const T& a, const T& b)
00022 {
00023 return a < b ? a : b;
00024 }
00025
00026 template <class T>
00027 SIMD_FORCE_INLINE const T& btMax(const T& a, const T& b)
00028 {
00029 return a > b ? a : b;
00030 }
00031
00032 template <class T>
00033 SIMD_FORCE_INLINE const T& btClamped(const T& a, const T& lb, const T& ub)
00034 {
00035 return a < lb ? lb : (ub < a ? ub : a);
00036 }
00037
00038 template <class T>
00039 SIMD_FORCE_INLINE void btSetMin(T& a, const T& b)
00040 {
00041 if (b < a) {
00042 a = b;
00043 }
00044 }
00045
00046 template <class T>
00047 SIMD_FORCE_INLINE void btSetMax(T& a, const T& b)
00048 {
00049 if (a < b) {
00050 a = b;
00051 }
00052 }
00053
00054 template <class T>
00055 SIMD_FORCE_INLINE void btClamp(T& a, const T& lb, const T& ub)
00056 {
00057 if (a < lb) {
00058 a = lb;
00059 }
00060 else if (ub < a) {
00061 a = ub;
00062 }
00063 }
00064
00065 #endif //BT_GEN_MINMAX_H