00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef H_LIBTHROWABLE_USER_FAULT_TYPE
00021 #define H_LIBTHROWABLE_USER_FAULT_TYPE
00022 #include "libthrowable/util/util.h"
00023 #include "user_fault.h"
00024 namespace libthrowable {
00025 template<class UserFaultT, class TagT>
00030 class UserFaultType : public UserFaultT
00031 {
00032 public:
00033 explicit UserFaultType(const std::string& msg) throw()
00034 : UserFaultT(msg, TagT::name() + "\n message:\n" + util::addIndent(msg, 4)) {}
00035
00036 UserFaultType(const char *filename, int linenumber, const std::string& msg) throw()
00037 : UserFaultT(msg, UserFaultT::internalStrFromFilenameLinenumberAndMessage(TagT::name(), filename, linenumber, msg)) {}
00038
00039 UserFaultType(const char *filename, int linenumber, const char *function, const std::string& msg) throw()
00040 : UserFaultT(msg, UserFaultT::internalStrFromFilenameLinenumberFunctionAndMessage(TagT::name(), filename, linenumber, function, msg)) {}
00041
00042 virtual ~UserFaultType() throw() {}
00043
00044 protected:
00045 UserFaultType(const std::string& msg, const std::string& passUnmodifiedToException) throw()
00046 : UserFaultT(msg, passUnmodifiedToException) {}
00047 };
00048 }
00049 #endif