MyGUI  3.0.1
MyGUI_Exception.h
Go to the documentation of this file.
1 
7 /*
8  This file is part of MyGUI.
9 
10  MyGUI is free software: you can redistribute it and/or modify
11  it under the terms of the GNU Lesser General Public License as published by
12  the Free Software Foundation, either version 3 of the License, or
13  (at your option) any later version.
14 
15  MyGUI is distributed in the hope that it will be useful,
16  but WITHOUT ANY WARRANTY; without even the implied warranty of
17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  GNU Lesser General Public License for more details.
19 
20  You should have received a copy of the GNU Lesser General Public License
21  along with MyGUI. If not, see <http://www.gnu.org/licenses/>.
22 */
23 #ifndef __MYGUI_EXCEPTION_H__
24 #define __MYGUI_EXCEPTION_H__
25 
26 #include "MyGUI_Prerequest.h"
27 #include <exception>
28 #include <string>
29 
30 namespace MyGUI
31 {
32 
33  class MYGUI_EXPORT Exception : public std::exception
34  {
35  protected:
36  std::string mDescription;
37  std::string mSource;
38  std::string mFile;
39  long mLine;
40  mutable std::string mFullDesc;
41 
42  public:
43  Exception(const std::string& _description, const std::string& _source, const char* _file, long _line );
44 
45  Exception(const Exception& _rhs);
46 
47  // Needed for compatibility with std::exception
48  ~Exception() throw() { }
49 
50  Exception& operator = (const Exception& _rhs);
51 
52  virtual const std::string& getFullDescription() const;
53 
54  virtual const std::string &getSource() const { return mSource; }
55 
56  virtual const std::string &getFile() const { return mFile; }
57 
58  virtual long getLine() const { return mLine; }
59 
60  virtual const std::string& getDescription() const { return mDescription; }
61 
62  // Override std::exception::what
63  const char* what() const throw() { return getFullDescription().c_str(); }
64 
65  };
66 
67 } // namespace MyGUI
68 
69 #endif // __MYGUI_EXCEPTION_H__