26#ifndef UTILS_FMT_dot_HH
27#define UTILS_FMT_dot_HH
29#if defined(__llvm__) || defined(__clang__)
30#pragma clang diagnostic ignored "-Wduplicate-enum"
35#ifndef DOXYGEN_SHOULD_SKIP_THIS
36#include "Utils/3rd/fmt/printf.h"
37#include "Utils/3rd/fmt/chrono.h"
38#include "Utils/3rd/fmt/ostream.h"
39#include "Utils/3rd/fmt/color.h"
40#include "Utils/3rd/fmt/std.h"
43#ifndef DOXYGEN_SHOULD_SKIP_THIS
47 #define __FILENAME__ (strrchr(__FILE__, '/') ? strrchr("/" __FILE__, '/') + 1 : __FILE__)
51 #define UTILS_ERROR0(MSG) \
52 throw Utils::Runtime_Error( MSG, __FILENAME__, __LINE__ )
56 #define UTILS_ASSERT0(COND,MSG) if ( !(COND) ) UTILS_ERROR0( MSG )
60 #define UTILS_WARNING0(COND,MSG) if ( !(COND) ) std::cerr << MSG
64 #define UTILS_ERROR(...) \
65 throw Utils::Runtime_Error( fmt::format(__VA_ARGS__), __FILENAME__, __LINE__ )
69 #define UTILS_ASSERT(COND,...) if ( !(COND) ) UTILS_ERROR( __VA_ARGS__ )
73 #define UTILS_WARNING(COND,...) if ( !(COND) ) fmt::print( __VA_ARGS__ )
77 #ifndef UTILS_ASSERT0_DEBUG
78 #define UTILS_ASSERT0_DEBUG(COND,MSG)
80 #ifndef UTILS_ASSERT_DEBUG
81 #define UTILS_ASSERT_DEBUG(COND,...)
84 #ifndef UTILS_ASSERT0_DEBUG
85 #define UTILS_ASSERT0_DEBUG(COND,MSG) UTILS_ASSERT0(COND,MSG)
87 #ifndef UTILS_ASSERT_DEBUG
88 #define UTILS_ASSERT_DEBUG(COND,...) UTILS_ASSERT(COND,__VA_ARGS__)
99 using std::runtime_error;
138 : std::runtime_error( fmt::format(
"\n{}\nOn File:{}:{}\n", reason, file, line ) )
150 char const *
what() const noexcept override;
172 using std::string_view;
174 string fmt_table_row(
unsigned width, string_view L, string_view R, string_view F, string_view title, string_view align );
175 string fmt_table_row(
unsigned width, string_view L, string_view C, string_view R, string_view F, std::initializer_list<string_view> names, string_view align );
176 string fmt_table_row(
unsigned width, string_view L, string_view C, string_view R, string_view F,
unsigned N );
178 inline string fmt_table_row (
unsigned width, string_view title =
"", string_view align =
"^", string_view fill =
" " ) {
return fmt_table_row( width,
"│",
"│\n", fill, title, align ); }
179 inline string fmt_table_top_row (
unsigned width, string_view title =
"", string_view align =
"^", string_view fill =
"─" ) {
return fmt_table_row( width,
"┌",
"┐\n", fill, title, align ); }
180 inline string fmt_table_middle_row (
unsigned width, string_view title =
"", string_view align =
"^", string_view fill =
"─" ) {
return fmt_table_row( width,
"├",
"┤\n", fill, title, align ); }
181 inline string fmt_table_bottom_row (
unsigned width, string_view title =
"", string_view align =
"^", string_view fill =
"─" ) {
return fmt_table_row( width,
"└",
"┘\n", fill, title, align ); }
183 inline string fmt_table_row (
unsigned width, std::initializer_list<string_view> names, string_view align =
"<", string_view fill =
" " ) {
return fmt_table_row( width,
"│",
"│",
"│\n", fill, names, align ); }
184 inline string fmt_table_top_row (
unsigned width, std::initializer_list<string_view> names, string_view align =
"<", string_view fill =
"─" ) {
return fmt_table_row( width,
"┌",
"─",
"┐\n", fill, names, align ); }
185 inline string fmt_table_middle_row (
unsigned width, std::initializer_list<string_view> names, string_view align =
"<", string_view fill =
"─" ) {
return fmt_table_row( width,
"├",
"┼",
"┤\n", fill, names, align ); }
186 inline string fmt_table_bottom_row (
unsigned width, std::initializer_list<string_view> names, string_view align =
"<", string_view fill =
"─" ) {
return fmt_table_row( width,
"└",
"─",
"┘\n", fill, names, align ); }
188 inline string fmt_table_row (
unsigned width,
unsigned N, string_view fill =
" " ) {
return fmt_table_row( width,
"│",
"│",
"│\n", fill, N ); }
Runtime_Error(string_view reason, string_view file, int line)
Constructs a Runtime_Error instance with a given reason.
Definition Utils_fmt.hh:133
char const * what() const noexcept override
Returns a C-style string describing the error.
Definition SystemUtils.cc:39
string fmt_table_bottom_row(unsigned width, string_view title="", string_view align="^", string_view fill="─")
Definition Utils_fmt.hh:181
string fmt_table_vdots()
Definition Utils_fmt.hh:170
string fmt_table_cross()
Definition Utils_fmt.hh:165
string fmt_table_middle_bottom()
Definition Utils_fmt.hh:159
string fmt_table_right_middle()
Definition Utils_fmt.hh:162
string fmt_table_row(unsigned const width, string_view const L, string_view const R, string_view const F, string_view const title, string_view const align)
Definition Utils_fmt.cc:29
string fmt_table_left_bottom()
Definition Utils_fmt.hh:155
string fmt_table_left_top()
Definition Utils_fmt.hh:153
string fmt_table_right_bottom()
Definition Utils_fmt.hh:163
string fmt_table_middle_middle()
Definition Utils_fmt.hh:158
string fmt_table_middle_top()
Definition Utils_fmt.hh:157
string fmt_table_middle_row(unsigned width, string_view title="", string_view align="^", string_view fill="─")
Definition Utils_fmt.hh:180
string fmt_table_right_top()
Definition Utils_fmt.hh:161
string fmt_table_bar()
Definition Utils_fmt.hh:167
string fmt_table_left_middle()
Definition Utils_fmt.hh:154
string fmt_table_top_row(unsigned width, string_view title="", string_view align="^", string_view fill="─")
Definition Utils_fmt.hh:179
string fmt_table_vbar()
Definition Utils_fmt.hh:168
string fmt_table_dot()
Definition Utils_fmt.hh:169