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 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 std::string location; 00070 }; 00071 00072 }; // namespace ecl 00073 00074 #endif /* ECL_DISABLE_EXCEPTIONS */ 00075 #endif /*ECL_EXCEPTIONS_EXCEPTION_HPP_*/