From 2420f8b8fdd2db84e053ebb2d7f6e4840171009e Mon Sep 17 00:00:00 2001 From: Hop311 Date: Wed, 3 May 2023 20:30:53 +0100 Subject: Moved simulation code to separate submodule --- extension/src/openvic2/Logger.hpp | 87 --------------------------------------- 1 file changed, 87 deletions(-) delete mode 100644 extension/src/openvic2/Logger.hpp (limited to 'extension/src/openvic2/Logger.hpp') diff --git a/extension/src/openvic2/Logger.hpp b/extension/src/openvic2/Logger.hpp deleted file mode 100644 index d097cc6..0000000 --- a/extension/src/openvic2/Logger.hpp +++ /dev/null @@ -1,87 +0,0 @@ -#pragma once - -#include -#include -#ifdef __cpp_lib_source_location -#include -#endif - -namespace OpenVic2 { - -#ifndef __cpp_lib_source_location -#include - // Implementation of std::source_location for compilers that do not support it - // Note: uses non-standard extensions that are supported by Clang, GCC, and MSVC - // https://clang.llvm.org/docs/LanguageExtensions.html#source-location-builtins - // https://stackoverflow.com/a/67970107 - class source_location { - std::string _file; - int _line; - std::string _function; - - public: - source_location(std::string f, int l, std::string n) : _file(f), - _line(l), - _function(n) {} - static source_location current(std::string f = __builtin_FILE(), int l = __builtin_LINE(), std::string n = __builtin_FUNCTION()) { - return source_location(f, l, n); - } - - inline char const* file_name() const { return _file.c_str(); } - inline int line() const { return _line; } - inline char const* function_name() const { return _function.c_str(); } - }; -#endif - - class Logger { - using log_func_t = std::function; - -#ifdef __cpp_lib_source_location - using source_location = std::source_location; -#else - using source_location = OpenVic2::source_location; -#endif - - static log_func_t info_func, error_func; - - static char const* get_filename(char const* filepath); - - template - struct log { - log(log_func_t log_func, Ts&&... ts, const source_location& location) { - if (log_func) { - std::stringstream stream; - stream << std::endl - << get_filename(location.file_name()) << "(" << location.line() << ") `" << location.function_name() << "`: "; - ((stream << std::forward(ts)), ...); - stream << std::endl; - log_func(stream.str()); - } - } - }; - - public: - static void set_info_func(log_func_t log_func); - static void set_error_func(log_func_t log_func); - - template - struct info { - info(Ts&&... ts, const source_location& location = source_location::current()) { - log { info_func, std::forward(ts)..., location }; - } - }; - - template - info(Ts&&...) -> info; - - template - struct error { - error(Ts&&... ts, const source_location& location = source_location::current()) { - log { error_func, std::forward(ts)..., location }; - } - }; - - template - error(Ts&&...) -> error; - }; -} -- cgit v1.2.3-56-ga3b1