24 #include <type_traits> 27 #define scast(x, y) static_cast<x>(y) 28 #define dcast(x, y) dynamic_cast<x>(y) 29 #define rcast(x, y) reinterpret_cast<x>(y) 33 #define DARK_BLUE(x) QString("<font color=#0000FF>") + x + QString("</font>") 34 #define LIGHT_BLUE(x) QString("<font color=#8888FF>") + x + QString("</font>") 36 #define CAR_RET QString("<br />") 37 #define BOLD(x) QString("<b>") + x + QString("</b>") 38 #define BLACK(x) QString("<font color=#000000>") + x + QString("</font>") 42 #define LINK(n, t, d, s) if(d) s=QString("<a href=\"t\">)") + LIGHT_BLUE(n) + QString("</a>"); \ 43 else s=QString("<a href=\"t\">)") + DARK_BLUE(n) + QString("</a>"); 45 #define SAYONARA_ORANGE_STR QString("#e8841a") 46 #define SAYONARA_ORANGE_COL QColor(232, 132, 26) 48 template<
typename TINT,
typename T>
49 typename std::enable_if<std::is_pointer<T>::value,
bool>::type
50 between( TINT idx,
const T& cont){
51 return (idx >= 0 && idx < static_cast<TINT>(cont->size()));
54 template<
typename TINT,
typename T>
55 typename std::enable_if<std::is_class<T>::value,
bool>::type
56 between( TINT idx,
const T& cont){
57 return (idx >= 0 && idx < static_cast<TINT>(cont.size()));
60 template<
typename TINT>
61 typename std::enable_if<std::is_integral<TINT>::value,
bool>::type
62 between( TINT idx, TINT max){
63 return (idx >= 0 && idx < max);