00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 00011 #include <opc/common/exception.h> 00012 00013 Common::Error::Error() 00014 : LineNum(0) 00015 , FileName() 00016 , Code(0) 00017 , Message() 00018 { 00019 } 00020 00021 Common::Error::Error(unsigned lineNum, const char* fileName, unsigned errorCode, const char* msg) 00022 : LineNum(lineNum) 00023 , FileName(fileName) 00024 , Code(errorCode) 00025 , Message(msg) 00026 { 00027 } 00028 00029 Common::Error::~Error() throw() 00030 { 00031 } 00032 00033 unsigned Common::Error::GetLineNum() const 00034 { 00035 return LineNum; 00036 } 00037 00038 std::string Common::Error::GetFileName() const 00039 { 00040 return FileName; 00041 } 00042 00043 unsigned Common::Error::GetCode() const 00044 { 00045 return Code; 00046 } 00047 00048 std::string Common::Error::GetMessage() const 00049 { 00050 return Message; 00051 } 00052 00053 Common::Error& Common::Error::AddError(const Error& subError) 00054 { 00055 SubErrors.push_back(subError); 00056 return *this; 00057 } 00058 00059 std::string Common::Error::GetFullMessage() const 00060 { 00061 std::string msg = FileName; 00062 msg += "(" + std::to_string(LineNum) + "):\n"; 00063 msg += Message; 00064 std::vector<Common::Error>::const_iterator it = SubErrors.begin(); 00065 00066 for (; it != SubErrors.end(); ++ it) 00067 { 00068 msg += "\n"; 00069 msg += it->GetMessage(); 00070 } 00071 return msg; 00072 } 00073 00074 const char* Common::Error::what() const throw() 00075 { 00076 return Message.c_str(); 00077 }