diff options
-rw-r--r-- | compat/warn.hpp | 67 |
1 files changed, 0 insertions, 67 deletions
diff --git a/compat/warn.hpp b/compat/warn.hpp deleted file mode 100644 index 7f3e21d0..00000000 --- a/compat/warn.hpp +++ /dev/null @@ -1,67 +0,0 @@ -#pragma once - -#include "macros.hpp" - -#include <sstream> -#include <iostream> -#include <locale> -#include <utility> - -#include <string> - -namespace warn_detail { -template<typename t> using basic_string_stream = std::basic_ostringstream<t, std::char_traits<t>, std::allocator<t>>; -using string_stream = basic_string_stream<wchar_t>; - -cc_forceinline void do_warn(string_stream&) {} - -template<typename x, typename... xs> -cc_forceinline void do_warn(string_stream& acc, const x& datum, const xs&... rest) -{ - acc << datum; - if (sizeof...(rest) > 0u) - acc << L' '; - do_warn(acc, rest...); -} - -template<typename... xs> -cc_noinline void warn_(const char* file, int line, const char* level, const xs&... seq) -{ - using namespace warn_detail; - string_stream stream; - - do_warn(stream, seq...); - - std::wcerr << L'[' << level << L' ' - << file << L':' << line - << L"] " - << std::boolalpha - << stream.str() - << L'\n'; - std::wcerr.flush(); -} - -} // ns warn_detail - -// todo add runtime loglevel - -#define otr_impl_warn_base(level, ...) \ - (warn_detail::warn_(__FILE__, __LINE__, (level), __VA_ARGS__)) - -#define dbg_warn(...) \ - otr_impl_warn_base("WARN", __VA_ARGS__) - -#define dbg_log(...) \ - otr_impl_warn_base("INFO", __VA_ARGS__) - -#define dbg_crit(...) \ - otr_impl_warn_base("CRIT", __VA_ARGS__) - -#include <cstdlib> - -#define dbg_fatal(...) \ - do \ - { \ - otr_impl_warn_base("FATAL", __VA_ARGS__); \ - std::abort(); \ - } while (0) |