aligator  0.14.0
A primal-dual augmented Lagrangian-type solver for nonlinear trajectory optimization.
Loading...
Searching...
No Matches
exceptions.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <stdexcept>
4#include <string>
5#include <fmt/core.h>
6
7#define ALIGATOR_RUNTIME_ERROR(...) \
8 throw ::aligator::RuntimeError( \
9 ::aligator::detail::exception_msg(__FILE__, __LINE__, __VA_ARGS__))
10
11#define ALIGATOR_OUT_OF_RANGE_ERROR(...) \
12 throw ::std::out_of_range( \
13 ::aligator::detail::exception_msg(__FILE__, __LINE__, __VA_ARGS__))
14
15#define ALIGATOR_DOMAIN_ERROR(...) \
16 throw ::std::domain_error( \
17 ::aligator::detail::exception_msg(__FILE__, __LINE__, __VA_ARGS__))
18
19#define ALIGATOR_WARNING(loc, ...) \
20 ::aligator::detail::warning_call(loc, __FUNCTION__, __VA_ARGS__)
21
22namespace aligator {
23namespace detail {
24void warning_impl(const char *loc, const char *fun, fmt::string_view fstr,
25 fmt::format_args args);
26template <typename... T>
27void warning_call(const char *loc, const char *fun,
28 fmt::format_string<T...> fstr, T &&...args) {
29 warning_impl(loc, fun, fstr, fmt::make_format_args(args...));
30}
31template <typename T>
32void warning_call(const char *loc, const char *fun, T &&msg) {
33 warning_impl(loc, fun, msg, {});
34}
35
36std::string exception_msg_impl(const char *filename, int lineno,
37 fmt::string_view fstr, fmt::format_args args);
38template <typename... T>
39std::string exception_msg(const char *filename, int lineno,
40 fmt::format_string<T...> fstr, T &&...args) {
41 return exception_msg_impl(filename, lineno, fstr,
42 fmt::make_format_args(args...));
43}
44} // namespace detail
45
46class RuntimeError : public std::runtime_error {
47public:
48 explicit RuntimeError(const std::string &what)
49 : std::runtime_error(what) {}
50};
51
52} // namespace aligator
RuntimeError(const std::string &what)
std::string exception_msg_impl(const char *filename, int lineno, fmt::string_view fstr, fmt::format_args args)
std::string exception_msg(const char *filename, int lineno, fmt::format_string< T... > fstr, T &&...args)
void warning_impl(const char *loc, const char *fun, fmt::string_view fstr, fmt::format_args args)
void warning_call(const char *loc, const char *fun, fmt::format_string< T... > fstr, T &&...args)
Main package namespace.