]> git.lyx.org Git - lyx.git/blob - src/support/ExceptionMessage.h
* get rid of support::absolutePath()
[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         WarningException
29 };
30
31
32 class ExceptionMessage: public std::exception {
33 public:
34         ExceptionMessage(ExceptionType type, docstring const & title,
35                 docstring const & details)
36         : type_(type), title_(title), details_(details),
37           message_(to_utf8(title_ + docstring::value_type('\n') + details_)) {}
38
39         virtual const char * what() const throw() { return message_.c_str(); }
40         virtual ~ExceptionMessage() throw() {}
41
42         ExceptionType type_;
43         docstring title_;
44         docstring details_;
45         // Needed because we may not return a temporary in what().
46         std::string message_;
47 };
48
49 } // namespace support
50 } // namespace lyx
51
52 #endif // LYX_MESSAGE_H