43 lines
1022 B
C++
43 lines
1022 B
C++
|
|
/*
|
||
|
|
* Copyright 2014-2019, CNRS
|
||
|
|
* Copyright 2018-2019, INRIA
|
||
|
|
*/
|
||
|
|
|
||
|
|
#ifndef __eigenpy_exception_hpp__
|
||
|
|
#define __eigenpy_exception_hpp__
|
||
|
|
|
||
|
|
#include <exception>
|
||
|
|
#include <string>
|
||
|
|
|
||
|
|
#include "eigenpy/fwd.hpp"
|
||
|
|
|
||
|
|
namespace eigenpy {
|
||
|
|
/*
|
||
|
|
* Eigenpy exception. They can be catch with python (equivalent
|
||
|
|
* eigenpy.exception class).
|
||
|
|
*/
|
||
|
|
class Exception : public std::exception {
|
||
|
|
public:
|
||
|
|
Exception() : message() {}
|
||
|
|
Exception(const std::string &msg) : message(msg) {}
|
||
|
|
const char *what() const throw() { return this->getMessage().c_str(); }
|
||
|
|
~Exception() throw() {}
|
||
|
|
virtual const std::string &getMessage() const { return message; }
|
||
|
|
std::string copyMessage() const { return getMessage(); }
|
||
|
|
|
||
|
|
/* Call this static function to "enable" the translation of this C++ exception
|
||
|
|
* in Python. */
|
||
|
|
static void registerException();
|
||
|
|
|
||
|
|
private:
|
||
|
|
static void translateException(Exception const &e);
|
||
|
|
static PyObject *pyType;
|
||
|
|
|
||
|
|
protected:
|
||
|
|
std::string message;
|
||
|
|
};
|
||
|
|
|
||
|
|
} // namespace eigenpy
|
||
|
|
|
||
|
|
#endif // ifndef __eigenpy_exception_hpp__
|