#ifndef _UTIL_H_ #define _UTIL_H_ /*--------------------------------------------------------------------------------*/ /* Macros and Defines */ /*--------------------------------------------------------------------------------*/ /** * Convert a symbol to a string and add a 'NewLine'. */ #define STR_NL(x) STR1_NL(x) #define STR1_NL(x) (STR2_NL(x)"\n") #define STR2_NL(x) #x /** * Convert a symbol to a string. */ #define STR(x) STR1(x) #define STR1(x) STR2(x) #define STR2(x) #x /** * Concatenate two symbols. */ #define CONCAT(a, b) CONCAT1(a, b) #define CONCAT1(a, b) CONCAT2(a, b) #define CONCAT2(a, b) a##b /** * Place curly braces around a varaible number of macro arguments. */ #define CURLY(...) {__VA_ARGS__} /** * Place parenthesis around a variable number of macro arguments. */ #define PAREN(...) (__VA_ARGS__) /* Standard min/max macros. */ #define MIN(x,y) (((x) < (y)) ? (x) : (y) ) #define MAX(x,y) (((x) > (y)) ? (x) : (y) ) /** * Bound value using low and high limits. * * Evaluate to a number in the range, endpoint inclusive. */ #define BOUND(low, high, value) \ MAX(MIN(high, value), low) #endif /* _UTIL_H_ */