00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef ERROR_H
00023 #define ERROR_H
00024
00025 #ifndef BASE_H
00026 # error "You have to include base.h only (not the error.h file)"
00027 #endif
00028
00029 #include <string>
00030
00031 void MissedAssertion (const char *filename, unsigned long line,
00032 const char *message);
00033 void WakeUpDebugger();
00034
00035
00036 #undef assert
00037 # define assert(COND) \
00038 if (!(COND)) MissedAssertion (__FILE__, __LINE__, #COND);
00039
00040
00041 #define FORCE_ASSERT(COND) \
00042 if (!(COND)) MissedAssertion (__FILE__, __LINE__, #COND);
00043
00044 void TriggerError (const char *filename, unsigned long line,
00045 const std::string &txt);
00046
00047 #define Error(txt) TriggerError(__FILE__, __LINE__, txt)
00048
00049
00050 class CError : public std::exception
00051 {
00052 protected:
00053 std::string m_filename, m_txt;
00054 unsigned long m_line;
00055
00056 public:
00057 CError (const char *filename, unsigned long line, const std::string &txt);
00058 ~CError() throw();
00059 virtual const char* what() const throw();
00060 std::ostream& operator<< (std::ostream &os) const;
00061 };
00062
00063 #endif