37 #ifndef FCL_FAILED_AT_THIS_CONFIGURATION_H
38 #define FCL_FAILED_AT_THIS_CONFIGURATION_H
48 #include "fcl/export.h"
66 :
public std::exception {
69 : std::exception(), message_(message) {}
71 const char*
what() const noexcept final {
return message_.c_str(); }
87 const std::string& message,
const char* func,
const char* file,
int line);
108 template <
typename S>
110 const auto& m = p.matrix();
111 std::stringstream& ss = *sstream;
112 for (
int row = 0; row < 4; ++row) {
113 for (
int col = 0; col < 4; ++col) {
141 template <
typename Shape1,
typename Shape2,
typename Solver,
typename S>
144 const Solver& solver,
const std::exception& e) {
145 std::stringstream ss;
146 const int digits = 20;
147 ss << std::setprecision(digits);
148 ss <<
"Error with configuration"
149 <<
"\n Original error message: " << e.what()
150 <<
"\n Shape 1:\n" << s1.representation(digits)
153 ss <<
"\n Shape 2:\n" << s2.representation(digits)
156 ss <<
"\n Solver: " << solver;
157 throw std::logic_error(ss.str());
163 #define FCL_THROW_FAILED_AT_THIS_CONFIGURATION(message) \
164 ::fcl::detail::ThrowFailedAtThisConfiguration(message, __func__, __FILE__, \
167 #endif // FCL_FAILED_AT_THIS_CONFIGURATION_H