00001 /* 00002 LA: linear algebra C++ interface library 00003 Copyright (C) 2008 Jiri Pittner <jiri.pittner@jh-inst.cas.cz> or <jiri@pittnerovi.com> 00004 00005 This program is free software: you can redistribute it and/or modify 00006 it under the terms of the GNU General Public License as published by 00007 the Free Software Foundation, either version 3 of the License, or 00008 (at your option) any later version. 00009 00010 This program is distributed in the hope that it will be useful, 00011 but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00013 GNU General Public License for more details. 00014 00015 You should have received a copy of the GNU General Public License 00016 along with this program. If not, see <http://www.gnu.org/licenses/>. 00017 */ 00018 #ifndef _LAERROR_H_ 00019 #define _LAERROR_H_ 00020 #include <iostream> 00021 00022 namespace LA { 00023 00024 //exception class for laerror 00025 class LAerror 00026 { 00027 public: 00028 const char *msg; 00029 LAerror(const char *s) {msg=s;}; 00030 }; 00031 00032 #ifdef __GNUG__ 00033 #define laerror(X) { LA::laerror2(X, __PRETTY_FUNCTION__); } 00034 #else 00035 #define laerror(X) { LA::laerror2(X, __func__); } 00036 #endif 00037 00038 extern void laerror2(const char *, const char *); 00039 00040 inline std::ostream & operator<<(std::ostream &s, const LAerror &x) { 00041 s << x.msg; 00042 return s; 00043 } 00044 00045 }//namespace 00046 00047 #endif