sigx++ 2.0.1
|
00001 #ifndef _SIGX_BAD_DISPATCHER_HPP_ 00002 #define _SIGX_BAD_DISPATCHER_HPP_ 00003 00004 /* 00005 * Copyright 2006 Klaus Triendl 00006 * 00007 * This library is free software; you can redistribute it and/or 00008 * modify it under the terms of the GNU Library General Public 00009 * License as published by the Free Software Foundation; either 00010 * version 2 of the License, or (at your option) any later version. 00011 * 00012 * This library is distributed in the hope that it will be useful, 00013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00015 * Library General Public License for more details. 00016 * 00017 * You should have received a copy of the GNU Library General Public 00018 * License along with this library; if not, write to the Free 00019 * Software Foundation, 51 Franklin Street, Fifth Floor, 00020 * Boston, MA 02110-1301, USA. 00021 */ 00022 00023 #include <exception> 00024 00025 00026 namespace sigx 00027 { 00028 00029 class bad_dispatcher: public std::exception//, public operator_new 00030 { 00031 public: 00032 bad_dispatcher(): std::exception() 00033 {} 00034 00035 // virtuals from std::exception 00036 virtual const char* what() const throw(); 00037 }; 00038 00039 00043 template<typename T_return> 00044 struct bad_dispatcher_catcher 00045 { 00046 T_return operator ()() const 00047 { 00048 try 00049 { throw; } 00050 catch (const ::sigx::bad_dispatcher&) 00051 {} 00052 return T_return(); 00053 } 00054 }; 00055 00056 00057 } // namespace sigx 00058 00059 00060 #endif // end file guard