From 28cdd8c3b09235dbf11d97ca448e618266004a78 Mon Sep 17 00:00:00 2001 From: staviq Date: Sat, 16 Sep 2023 22:36:04 +0200 Subject: [PATCH] formatting --- common/common.cpp | 4 +- common/log.h | 222 +++++++++++++++++++++++++++++++--------------- 2 files changed, 154 insertions(+), 72 deletions(-) diff --git a/common/common.cpp b/common/common.cpp index 6d655fd5548c5..49e47cc9fc3b0 100644 --- a/common/common.cpp +++ b/common/common.cpp @@ -550,7 +550,7 @@ bool gpt_params_parse(int argc, char ** argv, gpt_params & params) { } else if ( log_param_single_parse( argv[i] ) ) { // Do nothing, log_param_single_parse automatically does it's thing // and returns if a match was found and parsed. - } else if ( log_param_pair_parse( /*check_but_dont_parse*/ true, argv[i] ) ) { + } else if ( log_param_pair_parse( /*parse*/ false, argv[i] ) ) { // We have a matching known parameter requiring an argument, // now we need to check if there is anything after this argv // and flag invalid_param or parse it. @@ -558,7 +558,7 @@ bool gpt_params_parse(int argc, char ** argv, gpt_params & params) { invalid_param = true; break; } - if( !log_param_pair_parse( /*check_but_dont_parse*/ false, argv[i-1], argv[i]) ) { + if( !log_param_pair_parse( /*parse*/ true, argv[i-1], argv[i]) ) { invalid_param = true; break; } diff --git a/common/log.h b/common/log.h index bd5ac3a7c9ba9..5ed67a6646713 100644 --- a/common/log.h +++ b/common/log.h @@ -98,7 +98,7 @@ class LogStateWrapper void operator=(const LogTargetWrapper &) = delete; public: - LogTargetWrapper(FILE* handle) + LogTargetWrapper(FILE * handle) : _type(Type::Stream), _opened(true), _handle(handle) @@ -135,7 +135,7 @@ class LogStateWrapper }; public: - operator FILE*() + operator FILE * () { if(!_opened) { @@ -196,12 +196,27 @@ class LogStateWrapper std::atomic _current_target {&_null_target}; std::atomic _stored_target {&_null_target}; - LogTargetWrapper* log_set_target_impl(const std::string && filename) { return log_set_target_impl(filename); } - LogTargetWrapper* log_set_target_impl(const std::string & filename) { return log_add_select_target(new LogTargetWrapper(filename), true); } - LogTargetWrapper* log_set_target_impl(FILE* handle) { return log_add_select_target(new LogTargetWrapper(handle), true); } - LogTargetWrapper* log_set_target_impl(LogTargetWrapper * target) { return log_add_select_target(target); } + LogTargetWrapper * log_set_target_impl(const std::string && filename) + { + return log_set_target_impl(filename); + } + + LogTargetWrapper * log_set_target_impl(const std::string & filename) + { + return log_add_select_target(new LogTargetWrapper(filename), true); + } + + LogTargetWrapper * log_set_target_impl(FILE * handle) + { + return log_add_select_target(new LogTargetWrapper(handle), true); + } + + LogTargetWrapper * log_set_target_impl(LogTargetWrapper * target) + { + return log_add_select_target(target); + } - LogTargetWrapper* log_add_select_target(LogTargetWrapper* t, bool insert = false) + LogTargetWrapper * log_add_select_target(LogTargetWrapper * t, bool insert = false) { log_flush_all_targets(); std::lock_guard lock(_mutex); @@ -226,8 +241,8 @@ class LogStateWrapper for(auto t : _targets){ t->flush(); } } - FILE* log_handler_impl() { return *_current_target; } - FILE* log_tee_handler_impl() { return _stderr_target; } + FILE * log_handler_impl() { return *_current_target; } + FILE * log_tee_handler_impl() { return _stderr_target; } void log_disable_impl(bool threadsafe = true) { @@ -306,11 +321,11 @@ class LogStateWrapper return false; } - bool log_param_pair_parse_impl(bool check_but_dont_parse, const std::string & param, const std::string & next = std::string()) + bool log_param_pair_parse_impl(bool parse, const std::string & param, const std::string & next = std::string()) { if (param == "--log-file") { - if (!check_but_dont_parse) + if (parse) { log_flush_all_targets(); std::lock_guard lock(_mutex); @@ -364,20 +379,65 @@ class LogStateWrapper } public: - static LogTargetWrapper* log_set_target(const std::string && filename) { return log_set_target(filename); } - static LogTargetWrapper* log_set_target(const std::string & filename) { return instance().log_set_target_impl(filename); } - static LogTargetWrapper* log_set_target(FILE* handle) { return instance().log_set_target_impl(handle); } - static LogTargetWrapper* log_set_target(LogTargetWrapper * target) { return instance().log_set_target_impl(target); } - static FILE* log_handler() { return instance().log_handler_impl(); } - static FILE* log_tee_handler() { return instance().log_tee_handler_impl(); } - static void log_disable() { instance().log_disable_impl(); } - static void log_enable() { instance().log_enable_impl(); } - static bool log_param_single_parse(const std::string & param) { return instance().log_param_single_parse_impl(param); } - static bool log_param_pair_parse(bool check_but_dont_parse, const std::string & param, const std::string & next = std::string()) - { return instance().log_param_pair_parse_impl(check_but_dont_parse,param,next); } - static std::string log_filename_generator(const std::string & basename, const std::string & extension) - { return instance().log_filename_generator_impl(basename,extension); } - static std::string log_get_pid() { return instance().log_get_pid_impl(); } + static LogTargetWrapper * log_set_target(const std::string &&filename) + { + return log_set_target(filename); + } + + static LogTargetWrapper * log_set_target(const std::string &filename) + { + return instance().log_set_target_impl(filename); + } + + static LogTargetWrapper * log_set_target(FILE * handle) + { + return instance().log_set_target_impl(handle); + } + + static LogTargetWrapper * log_set_target(LogTargetWrapper * target) + { + return instance().log_set_target_impl(target); + } + + static FILE * log_handler() + { + return instance().log_handler_impl(); + } + + static FILE * log_tee_handler() + { + return instance().log_tee_handler_impl(); + } + + static void log_disable() + { + instance().log_disable_impl(); + } + + static void log_enable() + { + instance().log_enable_impl(); + } + + static bool log_param_single_parse(const std::string ¶m) + { + return instance().log_param_single_parse_impl(param); + } + + static bool log_param_pair_parse(bool parse, const std::string & param, const std::string & next = "") + { + return instance().log_param_pair_parse_impl(parse, param, next); + } + + static std::string log_filename_generator(const std::string & basename, const std::string & extension) + { + return instance().log_filename_generator_impl(basename, extension); + } + + static std::string log_get_pid() + { + return instance().log_get_pid_impl(); + } }; // Specifies a log target. @@ -434,7 +494,8 @@ class LogStateWrapper // invocation with log_filename_generator( "llama", "log" ) creates a string "llama..log" // where the number is a runtime id of the current thread. -#define log_filename_generator(log_file_basename, log_file_extension) LogStateWrapper::log_filename_generator(log_file_basename, log_file_extension) +#define log_filename_generator(log_file_basename, log_file_extension) \ + LogStateWrapper::log_filename_generator(log_file_basename, log_file_extension) // #ifndef LOG_DEFAULT_FILE_NAME // #define LOG_DEFAULT_FILE_NAME log_filename_generator("llama", "log") @@ -448,6 +509,13 @@ class LogStateWrapper #define LOG_TEE_TARGET_STRING LOG_STRINGIZE(LOG_TEE_TARGET) +#define LOG_TIMESTAMP \ + ( \ + std::chrono::duration_cast>( \ + std::chrono::system_clock::now().time_since_epoch() \ + ) \ + ).count() + // Allows disabling timestamps. // in order to disable, define LOG_NO_TIMESTAMPS // like so: @@ -458,10 +526,10 @@ class LogStateWrapper #ifndef LOG_NO_TIMESTAMPS #ifndef _MSC_VER #define LOG_TIMESTAMP_FMT "[%" PRIu64 "] " - #define LOG_TIMESTAMP_VAL , (std::chrono::duration_cast>(std::chrono::system_clock::now().time_since_epoch())).count() + #define LOG_TIMESTAMP_VAL , LOG_TIMESTAMP #else #define LOG_TIMESTAMP_FMT "[%" PRIu64 "] " - #define LOG_TIMESTAMP_VAL , (std::chrono::duration_cast>(std::chrono::system_clock::now().time_since_epoch())).count() + #define LOG_TIMESTAMP_VAL , LOG_TIMESTAMP #endif #else #define LOG_TIMESTAMP_FMT "%s" @@ -471,10 +539,10 @@ class LogStateWrapper #ifdef LOG_TEE_TIMESTAMPS #ifndef _MSC_VER #define LOG_TEE_TIMESTAMP_FMT "[%" PRIu64 "] " - #define LOG_TEE_TIMESTAMP_VAL , (std::chrono::duration_cast>(std::chrono::system_clock::now().time_since_epoch())).count() + #define LOG_TEE_TIMESTAMP_VAL , LOG_TIMESTAMP #else #define LOG_TEE_TIMESTAMP_FMT "[%" PRIu64 "] " - #define LOG_TEE_TIMESTAMP_VAL , (std::chrono::duration_cast>(std::chrono::system_clock::now().time_since_epoch())).count() + #define LOG_TEE_TIMESTAMP_VAL , LOG_TIMESTAMP #endif #else #define LOG_TEE_TIMESTAMP_FMT "%s" @@ -517,23 +585,37 @@ class LogStateWrapper // INTERNAL, DO NOT USE // USE LOG() INSTEAD // + +#define LOG_FPRINTF_PARAMS_IMPL_GNU(str) \ + LOG_TIMESTAMP_FMT LOG_FLF_FMT str "%s" LOG_TIMESTAMP_VAL LOG_FLF_VAL + +#define LOG_FPRINTF_PARAMS_IMPL_MSVC(str) \ + LOG_TIMESTAMP_FMT LOG_FLF_FMT str "%s" LOG_TIMESTAMP_VAL LOG_FLF_VAL "" + +#define LOG_FPRINTF_PARAMS_TEE_IMPL_GNU(str) \ + LOG_TEE_TIMESTAMP_FMT LOG_TEE_FLF_FMT str "%s" LOG_TEE_TIMESTAMP_VAL LOG_TEE_FLF_VAL + +#define LOG_FPRINTF_PARAMS_TEE_IMPL_MSVC(str) \ + LOG_TEE_TIMESTAMP_FMT LOG_TEE_FLF_FMT str "%s" LOG_TEE_TIMESTAMP_VAL LOG_TEE_FLF_VAL "" + + #ifndef _MSC_VER - #define LOG_IMPL(str, ...) \ - { \ - if (LOG_TARGET != nullptr) \ - { \ - fprintf(LOG_TARGET, LOG_TIMESTAMP_FMT LOG_FLF_FMT str "%s" LOG_TIMESTAMP_VAL LOG_FLF_VAL, __VA_ARGS__); \ - fflush(LOG_TARGET); \ - } \ + #define LOG_IMPL(str, ...) \ + { \ + if (LOG_TARGET != nullptr) \ + { \ + fprintf(LOG_TARGET, LOG_FPRINTF_PARAMS_IMPL_GNU(str), __VA_ARGS__); \ + fflush(LOG_TARGET); \ + } \ } #else - #define LOG_IMPL(str, ...) \ - { \ - if (LOG_TARGET != nullptr) \ - { \ - fprintf(LOG_TARGET, LOG_TIMESTAMP_FMT LOG_FLF_FMT str "%s" LOG_TIMESTAMP_VAL LOG_FLF_VAL "", ##__VA_ARGS__); \ - fflush(LOG_TARGET); \ - } \ + #define LOG_IMPL(str, ...) \ + { \ + if (LOG_TARGET != nullptr) \ + { \ + fprintf(LOG_TARGET, LOG_FPRINTF_PARAMS_IMPL_MSVC(str), ##__VA_ARGS__); \ + fflush(LOG_TARGET); \ + } \ } #endif @@ -541,32 +623,32 @@ class LogStateWrapper // USE LOG_TEE() INSTEAD // #ifndef _MSC_VER - #define LOG_TEE_IMPL(str, ...) \ - { \ - if (LOG_TARGET != nullptr) \ - { \ - fprintf(LOG_TARGET, LOG_TIMESTAMP_FMT LOG_FLF_FMT str "%s" LOG_TIMESTAMP_VAL LOG_FLF_VAL, __VA_ARGS__); \ - fflush(LOG_TARGET); \ - } \ - if (LOG_TARGET != stdout && LOG_TARGET != stderr && LOG_TEE_TARGET != nullptr) \ - { \ - fprintf(LOG_TEE_TARGET, LOG_TEE_TIMESTAMP_FMT LOG_TEE_FLF_FMT str "%s" LOG_TEE_TIMESTAMP_VAL LOG_TEE_FLF_VAL, __VA_ARGS__); \ - fflush(LOG_TEE_TARGET); \ - } \ + #define LOG_TEE_IMPL(str, ...) \ + { \ + if (LOG_TARGET != nullptr) \ + { \ + fprintf(LOG_TARGET, LOG_FPRINTF_PARAMS_IMPL_GNU(str), __VA_ARGS__); \ + fflush(LOG_TARGET); \ + } \ + if (LOG_TARGET != stdout && LOG_TARGET != stderr && LOG_TEE_TARGET != nullptr) \ + { \ + fprintf(LOG_TEE_TARGET, LOG_FPRINTF_PARAMS_TEE_IMPL_GNU(str), __VA_ARGS__); \ + fflush(LOG_TEE_TARGET); \ + } \ } #else - #define LOG_TEE_IMPL(str, ...) \ - { \ - if (LOG_TARGET != nullptr) \ - { \ - fprintf(LOG_TARGET, LOG_TIMESTAMP_FMT LOG_FLF_FMT str "%s" LOG_TIMESTAMP_VAL LOG_FLF_VAL "", ##__VA_ARGS__); \ - fflush(LOG_TARGET); \ - } \ - if (LOG_TARGET != stdout && LOG_TARGET != stderr && LOG_TEE_TARGET != nullptr) \ - { \ - fprintf(LOG_TEE_TARGET, LOG_TEE_TIMESTAMP_FMT LOG_TEE_FLF_FMT str "%s" LOG_TEE_TIMESTAMP_VAL LOG_TEE_FLF_VAL "", ##__VA_ARGS__); \ - fflush(LOG_TEE_TARGET); \ - } \ + #define LOG_TEE_IMPL(str, ...) \ + { \ + if (LOG_TARGET != nullptr) \ + { \ + fprintf(LOG_TARGET, LOG_FPRINTF_PARAMS_IMPL_MSVC(str), ##__VA_ARGS__); \ + fflush(LOG_TARGET); \ + } \ + if (LOG_TARGET != stdout && LOG_TARGET != stderr && LOG_TEE_TARGET != nullptr) \ + { \ + fprintf(LOG_TEE_TARGET, LOG_FPRINTF_PARAMS_TEE_IMPL_MSVC(str), ##__VA_ARGS__); \ + fflush(LOG_TEE_TARGET); \ + } \ } #endif @@ -793,13 +875,13 @@ inline void log_print_usage() printf(" --log-disable Disable trace logs\n"); printf(" --log-enable Enable trace logs\n"); printf(" --log-file Specify a log filename (without extension)\n"); - printf(" Log file will be tagged with unique ID and written as \"..log\"\n"); /* */ + printf(" Log file will be tagged with unique ID and written as \"..log\"\n"); } #define log_dump_cmdline(argc, argv) log_dump_cmdline_impl(argc, argv) // INTERNAL, DO NOT USE -inline void log_dump_cmdline_impl(int argc, char **argv) +inline void log_dump_cmdline_impl(int argc, char ** argv) { std::stringstream buf; for (int i = 0; i < argc; ++i)