CuteHMI - CuteHMI (CuteHMI.2)
ExceptionMixin.hpp
1 #ifndef H_EXTENSIONS_CUTEHMI_2_INCLUDE_CUTEHMI_EXCEPTIONMIXIN_HPP
2 #define H_EXTENSIONS_CUTEHMI_2_INCLUDE_CUTEHMI_EXCEPTIONMIXIN_HPP
3 
4 #include "Exception.hpp"
5 
6 #include <QCoreApplication>
7 #include <QString>
8 
9 namespace cutehmi {
10 
15 template <class DERIVED>
17  public Exception
18 {
19  public:
20  explicit ExceptionMixin(const QString & what);
21 
22  void raise() const noexcept(false) override;
23 
24  Exception * clone() const override;
25 };
26 
27 template <class DERIVED>
29  Exception(what)
30 {
31 }
32 
33 template <class DERIVED>
34 void ExceptionMixin<DERIVED>::raise() const noexcept(false)
35 {
36  throw *(static_cast<const DERIVED *>(this));
37 }
38 
39 template <class DERIVED>
41 {
42  return new DERIVED(static_cast<const DERIVED &>(*this));
43 }
44 
45 }
46 
47 #endif
48 
49 //(c)C: Copyright © 2018-2019, Michał Policht <michal@policht.pl>. All rights reserved.
50 //(c)C: This file is a part of CuteHMI.
51 //(c)C: CuteHMI is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
52 //(c)C: CuteHMI is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
53 //(c)C: You should have received a copy of the GNU Lesser General Public License along with CuteHMI. If not, see <https://www.gnu.org/licenses/>.
cutehmi::Exception
Exception.
Definition: Exception.hpp:14
cutehmi::ExceptionMixin
Exception mixin.
Definition: ExceptionMixin.hpp:16
cutehmi::Exception::what
const char * what() const noexcept override
Definition: Exception.cpp:20
cutehmi
Definition: constants.hpp:6
QString
cutehmi::ExceptionMixin::clone
Exception * clone() const override
Definition: ExceptionMixin.hpp:40
cutehmi::ExceptionMixin::ExceptionMixin
ExceptionMixin(const QString &what)
Definition: ExceptionMixin.hpp:28