#pragma once #if defined (QT_DEBUG) || defined (DEBUG) || defined (_DEBUG) #ifdef INIT_FILELOG std::wstring_convert, wchar_t> converter; FILE* fileLog; errno_t lfResult; bool writable = false; void inline initializeFileLogging() { lfResult = fopen_s(&fileLog, "log.txt", "w"); if (!lfResult) writable = true; else writable = false; } #else extern std::wstring_convert, wchar_t> converter; extern errno_t lfResult; extern FILE* fileLog; extern bool writable; extern bool initializeFileLogging(); #endif #define initialize_file_log() initializeFileLogging() template std::bitset varToBitset(T info) { std::bitset content(info); return content; } #ifndef _WIN32 #define log_debugcpp(str) do { \ std::cout << "[DEBUG]" << "(" << __FILE__ << ":" << __LINE__ << "): " << str << std::endl; \ } while (0) #define log_wdebugcpp(str) do { \ std::wcout << "[DEBUG]" << "(" << __FILE__ << ":" << __LINE__ << "): " << str << std::endl; \ } while (0) #else #include #include #define WIDE2(x) L##x #define WIDE1(x) WIDE2(x) #define WFILE WIDE1(__FILE__) #define log_debugcpp(str) { \ OutputDebugStringA(std::string("[DEBUG] (" + std::string(__FILE__) + ":" + std::to_string(__LINE__) + "): " + std::string(str) + "\n").c_str()); \ } while (0) #define log_wdebugcpp(str) do { \ OutputDebugStringW(std::wstring(L"[DEBUG] (" + std::wstring(WFILE) + L":" + std::to_wstring(__LINE__) + L"): " + std::wstring(str) +L"\n").c_str()); \ } while (0) #endif #define log_to_file_simple(fmt) log_to_file(fmt, "") #define log_to_file(fmt, cnt...) do { \ if(writable) fprintf_s(fileLog, fmt, cnt); \ } while (0) #define print_as_binary(len, type, info) varToBitset(info) #define close_file_log_buffer() do { \ fclose(fileLog); \ } while (0) #else #define log_debugcpp(str) #define log_wdebugcpp(str) #define print_as_binary(len, type, info) #define log_to_file_simple(fmt) #define log_to_file(fmt, cnt...) #define initialize_file_log() false #define close_file_log_buffer() #endif /* Here as a quick reference, in case smthn similar is needed again */ /* typedef void (EndpointWidget::*epwMuteFunc)(bool muted); */ /* Typedef void (EndpointWidget::*epwMainVolumeFunc)(float newValue); */ /* typedef void (EndpointWidget::*epwChannelVolumeFunc)(uint32_t channel, float newValue); */ /* typedef void (EndpointWidget::*epwToggleFrontFunc)(bool active); */