00001 00010 /***************************************************************************** 00011 ** Ifdefs 00012 *****************************************************************************/ 00013 00014 #ifndef ECL_EXCEPTIONS_EXCEPTION_HPP_ 00015 #define ECL_EXCEPTIONS_EXCEPTION_HPP_ 00016 00017 /***************************************************************************** 00018 ** Disable check 00019 *****************************************************************************/ 00020 00021 #include <ecl/config/ecl.hpp> 00022 #ifndef ECL_DISABLE_EXCEPTIONS 00023 00024 /***************************************************************************** 00025 ** Includes 00026 *****************************************************************************/ 00027 00028 #include <exception> 00029 #include <string> 00030 #include "macros.hpp" 00031 00032 /***************************************************************************** 00033 ** Namespaces 00034 *****************************************************************************/ 00035 00036 namespace ecl { 00037 00038 /***************************************************************************** 00039 ** General exception 00040 *****************************************************************************/ 00049 class ecl_exceptions_PUBLIC Exception : public std::exception 00050 { 00051 public: 00055 virtual const char * what() const throw() = 0; 00056 virtual ~Exception() throw() {} 00058 protected: 00063 Exception() {} 00068 Exception(const char* loc ) : location(loc) {}; 00069 00070 std::string location; 00071 }; 00072 00073 }; // namespace ecl 00074 00075 #endif /* ECL_DISABLE_EXCEPTIONS */ 00076 #endif /*ECL_EXCEPTIONS_EXCEPTION_HPP_*/