#pragma once #include #include #include #include #include #include #include "error.h" #include "locator.h" // #include "source.h" #include "katom_list.h" extern int verbose_level; extern bool show_verbose_location; std::ostream& operator<<(std::ostream& os, const std::variant& arg); void display_location(int log_level, std::source_location location); namespace K { template struct log { log(int log_level, Ts&&... ts, const std::source_location& location = std::source_location::current()) { if (verbose_level >= log_level) { display_location(log_level, location); if (verbose_level > 1 && sizeof...(ts) > 0) { std::cout << ": "; } else if (verbose_level == 1) { std::cout << command_name << ": "; } if (log_level > 0) { ((std::cout << std::forward(ts) << " "), ...); std::cout << '\n'; } } } }; template log(int log_level, Ts&&...) -> log; } /* void log(int level = 3, const std::source_location location = std::source_location::current()); template void log(Args... args, int level = 3, const std::source_location location = std::source_location::current()); */ /* void log(std::vector> args={}, int level=3, const std::source_location location = std::source_location::current()); void xlog(std::vector> args={}, int verbose_override=1, const std::source_location location = std::source_location::current()); */ void warning(const std::string& message, const Locator& loc);