35#define _WHERE_ __FILE__, __LINE__
40const std::string IDS_ERROR =
"RBT_ERROR";
41const std::string IDS_OK =
"RBT_OK";
42const std::string IDS_INVALID_REQUEST =
"RBT_INVALID_REQUEST";
43const std::string IDS_BAD_ARGUMENT =
"RBT_BAD_ARGUMENT";
44const std::string IDS_ASSERT =
"RBT_ASSERT";
45const std::string IDS_BAD_RECEPTOR_FILE =
"BAD_RECEPTOR_FILE";
49template <
class X,
class A>
inline void Assert(A assertion) {
59class Error :
public std::exception {
67 : m_strName(IDS_OK), m_strFile(
""), m_strMessage(
""), m_nLine(0),
72 Error(
const std::string &strFile,
int nLine,
73 const std::string &strMessage =
"")
74 :
Error(IDS_ERROR, strFile, nLine, strMessage) {}
79 virtual const char *what()
const noexcept {
return m_strWhat.c_str(); }
82 std::string File()
const {
return m_strFile; }
83 int Line()
const {
return m_nLine; }
84 std::string Message()
const {
return m_strMessage; }
85 std::string Name()
const {
return m_strName; }
86 bool isOK()
const {
return m_bOK; }
89 void AddMessage(
const std::string &strMessage) {
90 m_strMessage += strMessage;
91 m_strWhat +=
"\n" + strMessage;
98 Error(
const std::string &strName,
const std::string &strFile,
int nLine,
99 const std::string &strMessage =
"")
100 : m_strName(strName), m_strFile(strFile), m_strMessage(strMessage),
101 m_nLine(nLine), m_bOK(
false) {
102 std::ostringstream oss;
105 oss <<
" at " << File() <<
", line " << Line();
106 if (!Message().empty())
107 oss << std::endl << Message();
109 m_strWhat = oss.str();
115 std::string m_strName;
116 std::string m_strFile;
117 std::string m_strMessage;
118 std::string m_strWhat;
131 const std::string &strMessage =
"")
132 :
Error(IDS_INVALID_REQUEST, strFile, nLine, strMessage) {}
138 const std::string &strMessage =
"")
139 :
Error(IDS_BAD_ARGUMENT, strFile, nLine, strMessage) {}
146 Assertion() :
Error(IDS_ASSERT,
"unspecified file", 0,
"Assertion failed") {}
153 const std::string &strMessage =
"")
154 :
Error(IDS_BAD_RECEPTOR_FILE, strFile, nLine, strMessage) {}