00001
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef __MYGUI_EXCEPTION_H__
00024 #define __MYGUI_EXCEPTION_H__
00025
00026 #include "MyGUI_Prerequest.h"
00027 #include <exception>
00028 #include <string>
00029
00030 namespace MyGUI
00031 {
00032
00033 class MYGUI_EXPORT Exception : public std::exception
00034 {
00035 protected:
00036 std::string mDescription;
00037 std::string mSource;
00038 std::string mFile;
00039 long mLine;
00040 mutable std::string mFullDesc;
00041
00042 public:
00043 Exception(const std::string& _description, const std::string& _source, const char* _file, long _line );
00044
00045 Exception(const Exception& _rhs);
00046
00047
00048 ~Exception() throw() { }
00049
00050 Exception& operator = (const Exception& _rhs);
00051
00052 virtual const std::string& getFullDescription() const;
00053
00054 virtual const std::string &getSource() const { return mSource; }
00055
00056 virtual const std::string &getFile() const { return mFile; }
00057
00058 virtual long getLine() const { return mLine; }
00059
00060 virtual const std::string& getDescription() const { return mDescription; }
00061
00062
00063 const char* what() const throw() { return getFullDescription().c_str(); }
00064
00065 };
00066
00067 }
00068
00069 #endif // __MYGUI_EXCEPTION_H__