]> git.lyx.org Git - lyx.git/blob - src/support/ExceptionMessage.h
Cmake build: Testing
[lyx.git] / src / support / ExceptionMessage.h
1 // -*- C++ -*-
2 /**
3  * \file ExceptionMessage.h
4  * This file is part of LyX, the document processor.
5  * Licence details can be found in the file COPYING.
6  *
7  * \author Abdelrazak Younes
8  *
9  * Full author contact details are available in file CREDITS.
10  *
11  * A store of the paths to the various different directoies used
12  * by LyX. These paths differ markedly from one OS to another,
13  * following the local Windows, MacOS X or Posix conventions.
14  */
15 #ifndef LYX_MESSAGE_H
16 #define LYX_MESSAGE_H
17
18 #include "support/docstring.h"
19
20 #include <exception>
21
22 namespace lyx {
23 namespace support {
24
25
26 enum ExceptionType {
27         ErrorException,
28         BufferException,
29         WarningException
30 };
31
32
33 class ExceptionMessage: public std::exception {
34 public:
35         ExceptionMessage(ExceptionType type, docstring const & title,
36                 docstring const & details)
37         : type_(type), title_(title), details_(details),
38           message_(to_utf8(title_ + docstring::value_type('\n') + details_)) {}
39
40         virtual const char * what() const throw() { return message_.c_str(); }
41         virtual ~ExceptionMessage() throw() {}
42
43         ExceptionType type_;
44         docstring title_;
45         docstring details_;
46         // Needed because we may not return a temporary in what().
47         std::string message_;
48 };
49
50 } // namespace support
51 } // namespace lyx
52
53 #endif // LYX_MESSAGE_H