44 armarx::LocalException(
"The following expression is not true, but needs to be: '" + expression +
"'"),
45 expression(expression)
48 std::string
name()
const override
50 return "armarx::exceptions::local::ExpressionException";
59 std::string expression;
70 #define ARMARX_CHECK_EXPRESSION(expression) \
72 throw ::armarx::exceptions::local::ExpressionException(#expression) \
73 <<"\n(at " << __FILE__ << ':' << __LINE__ << " in " \
74 << __FUNCTION__ << " in )\n"
80 #define ARMARX_CHECK(expression) ARMARX_CHECK_EXPRESSION(expression)
88 #define ARMARX_CHECK_BINARY_PREDICATE(lhs, rhs, cmp) \
89 if( !(lhs cmp rhs) ) \
90 throw ::armarx::exceptions::local::ExpressionException(#lhs " " #cmp " " #rhs) \
91 << "\n(lhs = " << lhs << ", rhs = " << rhs << ")" \
92 <<"\n(at " << __FILE__ << ':' << __LINE__ << " in " << __FUNCTION__ << " in )\n"
100 #define ARMARX_CHECK_LESS(lhs, rhs) ARMARX_CHECK_BINARY_PREDICATE(lhs, rhs, <)
107 #define ARMARX_CHECK_LESS_EQUAL(lhs, rhs) ARMARX_CHECK_BINARY_PREDICATE(lhs, rhs, <=)
114 #define ARMARX_CHECK_GREATER(lhs, rhs) ARMARX_CHECK_BINARY_PREDICATE(lhs, rhs, >)
121 #define ARMARX_CHECK_GREATER_EQUAL(lhs, rhs) ARMARX_CHECK_BINARY_PREDICATE(lhs, rhs, >=)
128 #define ARMARX_CHECK_EQUAL(lhs, rhs) ARMARX_CHECK_BINARY_PREDICATE(lhs, rhs, ==)
135 #define ARMARX_CHECK_NOT_EQUAL(lhs, rhs) ARMARX_CHECK_BINARY_PREDICATE(lhs, rhs, !=)
143 #define ARMARX_CHECK_POSITIVE(number) ARMARX_CHECK_GREATER(number, 0)
150 #define ARMARX_CHECK_NONNEGATIVE(number) ARMARX_CHECK_GREATER_EQUAL(number, 0)
157 #define ARMARX_CHECK_FITS_SIZE(number, size) \
158 ARMARX_CHECK_NONNEGATIVE(number); \
159 ARMARX_CHECK_LESS(size_t(number), size)
167 #define ARMARX_CHECK_CLOSE(lhs, rhs, prec) \
168 if( !(std::abs(lhs - rhs) <= prec) ) \
169 throw ::armarx::exceptions::local::ExpressionException("| " #lhs " - " #rhs "| <= " #prec) \
170 << "\n(lhs = " << lhs << ", rhs = " << rhs << ", prec = " << prec << ")" \
171 <<"\n(at " << __FILE__ << ':' << __LINE__ << " in " << __FUNCTION__ << " in )\n"
180 #define ARMARX_CHECK_FINITE(number) \
181 if( !(std::isfinite(number)) ) \
182 throw ::armarx::exceptions::local::ExpressionException("std::isfinite(" #number ")") \
183 << "\n(number = " << number << ")" \
184 <<"\n(at " << __FILE__ << ':' << __LINE__ << " in " << __FUNCTION__ << " in )\n"
192 #define ARMARX_CHECK_IS_NULL(ptr) \
194 throw ::armarx::exceptions::local::ExpressionException("ptr == nullptr") \
195 << "\n(ptr = " << ptr << ")" \
196 <<"\n(at " << __FILE__ << ':' << __LINE__ << " in " << __FUNCTION__ << " in )\n"
204 #define ARMARX_CHECK_NOT_NULL(ptr) \
206 throw ::armarx::exceptions::local::ExpressionException("ptr != nullptr") \
207 << "\n(ptr = nullptr)" \
208 <<"\n(at " << __FILE__ << ':' << __LINE__ << " in " << __FUNCTION__ << " in )\n"
210 #define ARMARX_CHECK_NULL(ptr) \
212 throw ::armarx::exceptions::local::ExpressionException("ptr == nullptr") \
213 << "\n(ptr = nullptr)" \
214 <<"\n(at " << __FILE__ << ':' << __LINE__ << " in " << __FUNCTION__ << " in )\n"
216 #define ARMARX_CHECK_EMPTY(c) \
218 throw ::armarx::exceptions::local::ExpressionException("c was expected to be empty") \
219 << "\n(c = " << c << ")" \
220 <<"\n(at " << __FILE__ << ':' << __LINE__ << " in " << __FUNCTION__ << " in )\n"
222 #define ARMARX_CHECK_NOT_EMPTY(c) \
224 throw ::armarx::exceptions::local::ExpressionException("c was not expected to be empty") \
225 <<"\n(at " << __FILE__ << ':' << __LINE__ << " in " << __FUNCTION__ << " in )\n"
227 #define ARMARX_CHECK_MULTIPLE_OF(val, mod) \
228 if( (val % mod) != 0 ) \
229 throw ::armarx::exceptions::local::ExpressionException("val was expected to be a multiple of mod") \
230 << "\n(val = " << val << ", mod = " << mod << ")" \
231 <<"\n(at " << __FILE__ << ':' << __LINE__ << " in " << __FUNCTION__ << " in )\n"\
233 #define ARMARX_CHECK_NOT_MULTIPLE_OF(val, mod) \
234 if( (val % mod) == 0 ) \
235 throw ::armarx::exceptions::local::ExpressionException("val was not expected to be a multiple of mod") \
236 << "\n(val = " << val << ", mod = " << mod << ")" \
237 <<"\n(at " << __FILE__ << ':' << __LINE__ << " in " << __FUNCTION__ << " in )\n"
243 #define ARMARX_CHECK_AND_THROW(expression, ExceptionType) do { \
244 if( !(expression) ) \
245 throw ExceptionType(#expression); \
249 #define eigen_assert(expression) ARMARX_CHECK_EXPRESSION(expression)