MSXException.hh 982 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #ifndef MSXEXCEPTION_HH
  2. #define MSXEXCEPTION_HH
  3. #include "strCat.hh"
  4. #include <string>
  5. namespace openmsx {
  6. class MSXException
  7. {
  8. public:
  9. explicit MSXException() = default;
  10. explicit MSXException(std::string message_)
  11. : message(std::move(message_)) {}
  12. template<typename... Args>
  13. explicit MSXException(Args&&... args)
  14. : message(strCat(std::forward<Args>(args)...))
  15. {
  16. }
  17. const std::string& getMessage() const & { return message; }
  18. std::string getMessage() && { return std::move(message); }
  19. private:
  20. std::string message;
  21. };
  22. class FatalError
  23. {
  24. public:
  25. explicit FatalError(std::string message_)
  26. : message(std::move(message_)) {}
  27. template<typename... Args>
  28. explicit FatalError(Args&&... args)
  29. : message(strCat(std::forward<Args>(args)...))
  30. {
  31. }
  32. const std::string& getMessage() const & { return message; }
  33. std::string getMessage() && { return std::move(message); }
  34. private:
  35. std::string message;
  36. };
  37. } // namespace openmsx
  38. #endif