Storm 1.14.0.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
ExceptionMacros.h
Go to the documentation of this file.
1#pragma once
2
3#include <exception>
4#include <sstream>
5
6// Exceptions must be catchable across shared library boundaries even with hidden visibility.
7#define STORM_EXCEPTION_EXPORT_ATTRIBUTE __attribute__((visibility("default")))
8
13#define STORM_NEW_EXCEPTION(exception_name) \
14 class STORM_EXCEPTION_EXPORT_ATTRIBUTE exception_name : public BaseException { \
15 public: \
16 exception_name() : BaseException() {} \
17 exception_name(char const* cstr) : BaseException(cstr) {} \
18 exception_name(exception_name const& cp) : BaseException(cp) {} \
19 ~exception_name() throw() {} \
20 virtual std::string type() const override { \
21 return #exception_name; \
22 } \
23 template<typename T> \
24 exception_name& operator<<(T const& var) { \
25 this->stream << var; \
26 return *this; \
27 } \
28 };