| 8 | namespace PyMesh { |
| 9 | |
| 10 | class TetgenException : public PyMeshException { |
| 11 | public: |
| 12 | TetgenException(int error_code) : |
| 13 | PyMeshException(""), m_error_code(error_code) { |
| 14 | generate_err_msg(); |
| 15 | } |
| 16 | |
| 17 | virtual ~TetgenException() throw() {} |
| 18 | |
| 19 | virtual const char* what() const throw() { |
| 20 | return m_error_msg.c_str(); |
| 21 | } |
| 22 | |
| 23 | private: |
| 24 | void generate_err_msg() { |
| 25 | std::stringstream err_msg; |
| 26 | err_msg << "Tetgen Error (" << m_error_code << "): "; |
| 27 | switch (m_error_code) { |
| 28 | case 1: |
| 29 | err_msg << "Out of memory."; |
| 30 | break; |
| 31 | case 2: |
| 32 | err_msg << "Tetgen internal bug. Report it to Hang Si."; |
| 33 | break; |
| 34 | case 3: |
| 35 | err_msg << "Self-intersection."; |
| 36 | break; |
| 37 | case 4: |
| 38 | err_msg << "Very small input feature detected."; |
| 39 | break; |
| 40 | case 5: |
| 41 | err_msg << "Two very close faces detected."; |
| 42 | break; |
| 43 | case 10: |
| 44 | err_msg << "An input error detected."; |
| 45 | break; |
| 46 | default: |
| 47 | err_msg << "Unknow tetgen error"; |
| 48 | break; |
| 49 | } |
| 50 | m_error_msg = err_msg.str(); |
| 51 | } |
| 52 | |
| 53 | private: |
| 54 | int m_error_code; |
| 55 | std::string m_error_msg; |
| 56 | }; |
| 57 | |
| 58 | } |
| 59 | |