libsemigroups  v3.0.0
C++ library for semigroups and monoids
Loading...
Searching...
No Matches
exception.hpp
1//
2// libsemigroups - C++ library for semigroups and monoids
3// Copyright (C) 2019-2025 James D. Mitchell
4//
5// This program is free software: you can redistribute it and/or modify
6// it under the terms of the GNU General Public License as published by
7// the Free Software Foundation, either version 3 of the License, or
8// (at your option) any later version.
9//
10// This program is distributed in the hope that it will be useful,
11// but WITHOUT ANY WARRANTY; without even the implied warranty of
12// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13// GNU General Public License for more details.
14//
15// You should have received a copy of the GNU General Public License
16// along with this program. If not, see <http://www.gnu.org/licenses/>.
17//
18
19#ifndef LIBSEMIGROUPS_EXCEPTION_HPP_
20#define LIBSEMIGROUPS_EXCEPTION_HPP_
21
22#include <exception>
23#include <stdexcept> // for std::runtime_error
24#include <string> // for std::string
25
26#include "detail/fmt.hpp"
27#include "detail/formatters.hpp"
28
29namespace libsemigroups {
39
86} // namespace libsemigroups
87
95#define LIBSEMIGROUPS_EXCEPTION(...) \
96 { \
97 throw LibsemigroupsException( \
98 __FILE__, __LINE__, __func__, fmt::format(__VA_ARGS__)); \
99 }
100
101#endif // LIBSEMIGROUPS_EXCEPTION_HPP_
Namespace for everything in the libsemigroups library.
Definition action.hpp:44
LibsemigroupsException(std::string const &fname, int linenum, std::string const &funcname, std::string const &msg)
Create an exception.
LibsemigroupsException(LibsemigroupsException const &)=default
Default copy constructor.
LibsemigroupsException(LibsemigroupsException &&)=default
Default move constructor.
LibsemigroupsException & operator=(LibsemigroupsException const &)=default
Default copy assignment operator.
LibsemigroupsException & operator=(LibsemigroupsException &&)=default
Default move assignment operator.