51 lines
1.5 KiB
C++
51 lines
1.5 KiB
C++
#include <string>
|
|
#include <fstream>
|
|
#include <cstdarg>
|
|
|
|
#include "vtr_util.h"
|
|
#include "vtr_log.h"
|
|
#include "log.h"
|
|
|
|
namespace vtr {
|
|
PrintHandlerInfo printf = log_print_info;
|
|
PrintHandlerInfo printf_info = log_print_info;
|
|
PrintHandlerWarning printf_warning = log_print_warning;
|
|
PrintHandlerError printf_error = log_print_error;
|
|
PrintHandlerDirect printf_direct = log_print_direct;
|
|
|
|
void set_log_file(const char* filename) {
|
|
log_set_output_file(filename);
|
|
}
|
|
|
|
} // namespace vtr
|
|
|
|
void add_warnings_to_suppress(std::string function_name) {
|
|
warnings_to_suppress.insert(function_name);
|
|
}
|
|
|
|
void set_noisy_warn_log_file(std::string log_file_name) {
|
|
std::ofstream log;
|
|
log.open(log_file_name, std::ifstream::out | std::ifstream::trunc);
|
|
log.close();
|
|
noisy_warn_log_file = log_file_name;
|
|
}
|
|
|
|
void print_or_suppress_warning(const char* pszFileName, unsigned int lineNum, const char* pszFuncName, const char* pszMessage, ...) {
|
|
std::string function_name(pszFuncName);
|
|
|
|
va_list va_args;
|
|
va_start(va_args, pszMessage);
|
|
std::string msg = vtr::vstring_fmt(pszMessage, va_args);
|
|
va_end(va_args);
|
|
|
|
auto result = warnings_to_suppress.find(function_name);
|
|
if (result == warnings_to_suppress.end()) {
|
|
vtr::printf_warning(pszFileName, lineNum, msg.data());
|
|
} else if (!noisy_warn_log_file.empty()) {
|
|
std::ofstream log;
|
|
log.open(noisy_warn_log_file.data(), std::ios_base::app);
|
|
log << "Warning:\n\tfile: " << pszFileName << "\n\tline: " << lineNum << "\n\tmessage: " << msg << std::endl;
|
|
log.close();
|
|
}
|
|
}
|