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
void WriteCommaSeparated(std::stringstream *sstream, const Transform3< S > &p)
Eigen::Transform< S, 3, Eigen::Isometry > Transform3
FailedAtThisConfiguration(const std::string &message)
FCL_EXPORT void ThrowFailedAtThisConfiguration(const std::string &message, const char *func, const char *file, int line)
const char * what() const noexcept final
void ThrowDetailedConfiguration(const Shape1 &s1, const Transform3< S > &X_FS1, const Shape2 &s2, const Transform3< S > &X_FS2, const Solver &solver, const std::exception &e)