/******************************************************************************* * * TRIQS: a Toolbox for Research in Interacting Quantum Systems * * Copyright (C) 2011 by M. Ferrero, O. Parcollet * * TRIQS is free software: you can redistribute it and/or modify it under the * terms of the GNU General Public License as published by the Free Software * Foundation, either version 3 of the License, or (at your option) any later * version. * * TRIQS is distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License along with * TRIQS. If not, see . * ******************************************************************************/ #ifndef TRIQS_EXCEPTIONS_H #define TRIQS_EXCEPTIONS_H #include "./stack_trace.hpp" #include #include #include namespace triqs { class exception : public std::exception { std::string acc, _trace; public: exception() throw() :std::exception() { _trace = utility::stack_trace();} virtual ~exception() throw() {} template exception & operator <<( T const & x) { std::stringstream f; f< runtime_error & operator <<( T && x) { exception::operator<<(x); return *this; } }; class keyboard_interrupt : public exception { public: keyboard_interrupt() throw() : exception() {} virtual ~keyboard_interrupt() throw() {} template keyboard_interrupt & operator <<( T && x) { exception::operator<<(x); return *this; } }; } #define TRIQS_ERROR(CLASS,NAME) throw CLASS()<<" Triqs "<