00001 00013 /***************************************************************************** 00014 ** Ifdefs 00015 *****************************************************************************/ 00016 00017 #ifndef ECL_EXCEPTIONS_POSIX_EXCEPTION_HPP_ 00018 #define ECL_EXCEPTIONS_POSIX_EXCEPTION_HPP_ 00019 00020 /***************************************************************************** 00021 ** Disable check 00022 *****************************************************************************/ 00023 00024 #include <ecl/config/ecl.hpp> 00025 #ifndef ECL_DISABLE_EXCEPTIONS 00026 00027 /***************************************************************************** 00028 ** Includes 00029 *****************************************************************************/ 00030 00031 #include <cstring> // strerror function 00032 #include <string> 00033 #include <errno.h> 00034 #include "standard_exception.hpp" 00035 00036 /***************************************************************************** 00037 ** Namespaces 00038 *****************************************************************************/ 00039 00040 namespace ecl { 00041 00042 /***************************************************************************** 00043 ** Interface [PosixErrorHandler] 00044 *****************************************************************************/ 00057 template <typename ThrowingClass> 00058 class ecl_exceptions_PUBLIC PosixErrorHandler { 00059 public: 00069 static StandardException GenerateStandardException(const char* loc) { 00070 return StandardException(loc, PosixError, std::string(strerror(errno))+"."); 00071 } 00072 virtual ~PosixErrorHandler() {} 00073 }; 00074 00075 }; // namespace ecl 00076 00077 #endif /* ECL_DISABLE_EXCEPTIONS */ 00078 #endif /* ECL_EXCEPTIONS_POSIX_EXCEPTION_HPP_ */