Itasca C++ Interface
Loading...
Searching...
No Matches
baseexception.h
1#pragma once
2
3#include "basestring.h"
4
10class Exception : public std::exception {
11public:
12 template <typename... Args>
13 Exception(FormatCheck<std::type_identity_t<Args>...> s,Args&&... args) { message_ = std::vformat(s.get(),std::make_format_args(args...)); }
14 Exception(const string &s) : message_(s) { }
15 Exception(string &&s) : message_(std::move(s)) {}
16 Exception(const Exception &e) : message_(e.message_) { }
17 Exception(Exception &&e) : message_(std::move(e.message_)) { }
18 Exception &operator=(const Exception &e) { message_ = e.message_; return *this; }
19 Exception &operator=(Exception &&e) { message_ = std::move(e.message_); return *this; }
20
22 BASE_EXPORT const char *what() const throw() override { return message_.c_str(); }
23
25 void setMessage(const string &s) { message_ = s; }
26
27private:
28 string message_;
29};
30
32class QuitException : public Exception {
33 public:
34 BASE_EXPORT QuitException() : Exception("quit") { }
35};
36
39 public:
43 BASE_EXPORT InterruptException(bool safe,const string &state=string())
44 : Exception("Processing interrupted by user."), safe_(safe), state_(state) { }
45
47 BASE_EXPORT bool wasSafe() const { return safe_; }
52 BASE_EXPORT string state() const { return state_; }
53 private:
54 bool safe_;
55 string state_;
56};
57
58// EoF
includes std::string and additional functions not included in the standard.
Base exception class for all Itasca code.
Definition baseexception.h:10
BASE_EXPORT const char * what() const override
Returns the contents of the error message as a const char.
Definition baseexception.h:22
void setMessage(const string &s)
Allows the message carried by the exception to be replaced with a new one.
Definition baseexception.h:25
Exception thrown when interruption occurs, e.g. user press ESC key.
Definition baseexception.h:38
BASE_EXPORT string state() const
Definition baseexception.h:52
BASE_EXPORT bool wasSafe() const
returns TRUE if the interrupt was "Safe", in that the model was left in a repeatable and valid state.
Definition baseexception.h:47
BASE_EXPORT InterruptException(bool safe, const string &state=string())
Definition baseexception.h:43
Exception thrown when processing is done.
Definition baseexception.h:32
#define BASE_EXPORT
Definition basedef.h:25
Definition basestring.h:343