8 #include <Rhesus/Toolkit/Defines.h>
31 template<
typename T>
static inline T
Clamp(T val, T min, T max)
50 template<
typename T>
static inline T
Rescale(T val, T min0, T max0, T min1, T max1)
54 val = Clamp<T> (val, min0, max0);
55 return (val - min0) * (max1 - min1) / (max0 - min0) + min1;
63 template<
typename T>
static inline std::string
ToString(T val)
75 template<
typename T>
static inline int Sign(T val)
89 template<
typename T>
static inline T
Abs(T val)
104 template<
typename T>
static void MinMaxMean(T val[],
int n, T* minOut,
105 T* maxOut, T* meanOut)
115 T min = val[0], max = val[0];
117 for (
int i = 0; i < n; ++i)
138 template<
typename T>
static inline T
AddDeadband(T raw, T deadbandSize)
140 if (Util::Abs<T>(raw) < deadbandSize)
142 return Util::Sign<T>(raw) * Util::Rescale<T>(Util::Abs<T>(raw),
143 deadbandSize, 1, 0, 1);
155 if (Util::Abs<T>(val1) > Util::Abs<T>(val2))
167 static inline T
Max(T val1, T val2)
181 static inline T
Min(T val1, T val2)
197 if (fabs(val1) < fabs(val2))
211 T result = pow(val, power);
212 if (Sign<T> (val) == Sign<T> (result))
219 static inline T lexical_cast(std::string value)
222 std::stringstream sstream(value);
223 sstream >> std::boolalpha >> temp;
228 static inline std::string lexical_cast(T value)
230 return std::string(static_cast<std::ostringstream*>(&(std::ostringstream() << value))->str());
234 static inline T swap_endian(T u)
239 unsigned char u8[
sizeof(T)];
244 for (
size_t k = 0; k <
sizeof(T); k++)
245 dest.u8[k] = source.u8[
sizeof(T) - k - 1];
253 template<
class A,
class B>
267 template<
class A,
class B>
281 template<
class A,
class B>
312 static inline std::string Trim(std::string str)
314 int startIndex = -1, endIndex = str.size() - 1;
317 for (
unsigned int i = 0; i < str.size(); i++)
319 if (!isspace(str[i]))
326 if (startIndex == -1)
330 for (
int i = str.size() - 1; i >= 0; i--)
332 if (!isspace(str[i]))
339 return str.substr(startIndex, endIndex - startIndex + 1);
351 static void Die(
const char* message);
359 static bool Assert(
bool test,
const char* message);