OGS 6.2.1-76-gbb689931b
Error.h
Go to the documentation of this file.
1 
10 #pragma once
11 
12 #ifdef OGS_FATAL_ABORT
13 
14 #include <cstdlib>
15 #include <logog/include/logog.hpp>
16 
17 namespace BaseLib
18 {
19 namespace detail
20 {
21 template <typename Msg>
22 [[noreturn]]
23  bool error_impl(Msg&& msg)
24 {
25  ERR("%s", msg.data());
26  std::abort();
27 }
28 
29 } // namespace detail
30 
31 } // namespace BaseLib
32 
33 #else // OGS_FATAL_ABORT
34 
35 #include <stdexcept>
36 
37 namespace BaseLib
38 {
39 namespace detail
40 {
41 template <typename Msg>
42 [[noreturn]]
43  bool error_impl(Msg&& msg)
44 {
45  throw std::runtime_error(std::forward<Msg>(msg));
46 }
47 
48 } // namespace detail
49 
50 } // namespace BaseLib
51 
52 #endif // OGS_FATAL_ABORT
53 
54 #include "FileTools.h"
55 #include "StringTools.h"
56 
57 #define OGS_STR(x) #x
58 #define OGS_STRINGIFY(x) OGS_STR(x)
59 #define OGS_LOCATION \
60  (" at " + BaseLib::extractBaseName(__FILE__) + \
61  ", line " OGS_STRINGIFY(__LINE__))
62 
63 #define OGS_FATAL(fmt, ...) \
64  BaseLib::detail::error_impl(BaseLib::format(fmt, ##__VA_ARGS__) + \
65  OGS_LOCATION)
Definition of string helper functions.
bool error_impl(Msg &&msg)
Definition: Error.h:43
Build information.
Filename manipulation routines.