clang_format
This commit is contained in:
		
							parent
							
								
									724713ac80
								
							
						
					
					
						commit
						05cac05c06
					
				| @ -11,168 +11,165 @@ | |||||||
| #include "spdlog/details/pattern_formatter.h" | #include "spdlog/details/pattern_formatter.h" | ||||||
| 
 | 
 | ||||||
| namespace spdlog { | namespace spdlog { | ||||||
| 	namespace sinks { | namespace sinks { | ||||||
| 
 | 
 | ||||||
| 		template<typename ConsoleMutex> | template<typename ConsoleMutex> | ||||||
| 		SPDLOG_INLINE wincolor_sink<ConsoleMutex>::wincolor_sink(HANDLE out_handle, color_mode mode) | SPDLOG_INLINE wincolor_sink<ConsoleMutex>::wincolor_sink(HANDLE out_handle, color_mode mode) | ||||||
| 			: out_handle_(out_handle) |     : out_handle_(out_handle) | ||||||
| 			, mutex_(ConsoleMutex::mutex()) |     , mutex_(ConsoleMutex::mutex()) | ||||||
| 			, formatter_(details::make_unique<spdlog::pattern_formatter>()) |     , formatter_(details::make_unique<spdlog::pattern_formatter>()) | ||||||
| 		{ | { | ||||||
| 			// check if out_handle is points to the actual console. 
 |     // check if out_handle is points to the actual console.
 | ||||||
| 			// ::GetConsoleMode() should return 0 if it is redirected or not valid console handle.
 |     // ::GetConsoleMode() should return 0 if it is redirected or not valid console handle.
 | ||||||
| 			DWORD console_mode;			 |     DWORD console_mode; | ||||||
| 			in_console_ = ::GetConsoleMode(out_handle, &console_mode) != 0; |     in_console_ = ::GetConsoleMode(out_handle, &console_mode) != 0; | ||||||
| 			set_color_mode(mode); |     set_color_mode(mode); | ||||||
| 			colors_[level::trace] = WHITE; |     colors_[level::trace] = WHITE; | ||||||
| 			colors_[level::debug] = CYAN; |     colors_[level::debug] = CYAN; | ||||||
| 			colors_[level::info] = GREEN; |     colors_[level::info] = GREEN; | ||||||
| 			colors_[level::warn] = YELLOW | BOLD; |     colors_[level::warn] = YELLOW | BOLD; | ||||||
| 			colors_[level::err] = RED | BOLD;                         // red bold
 |     colors_[level::err] = RED | BOLD;                         // red bold
 | ||||||
| 			colors_[level::critical] = BACKGROUND_RED | WHITE | BOLD; // white bold on red background
 |     colors_[level::critical] = BACKGROUND_RED | WHITE | BOLD; // white bold on red background
 | ||||||
| 			colors_[level::off] = 0; |     colors_[level::off] = 0; | ||||||
| 		} | } | ||||||
| 
 | 
 | ||||||
| 		template<typename ConsoleMutex> | template<typename ConsoleMutex> | ||||||
| 		SPDLOG_INLINE wincolor_sink<ConsoleMutex>::~wincolor_sink() | SPDLOG_INLINE wincolor_sink<ConsoleMutex>::~wincolor_sink() | ||||||
| 		{ | { | ||||||
| 			this->flush(); |     this->flush(); | ||||||
| 		} | } | ||||||
| 
 | 
 | ||||||
| 		// change the color for the given level
 | // change the color for the given level
 | ||||||
| 		template<typename ConsoleMutex> | template<typename ConsoleMutex> | ||||||
| 		void SPDLOG_INLINE wincolor_sink<ConsoleMutex>::set_color(level::level_enum level, WORD color) | void SPDLOG_INLINE wincolor_sink<ConsoleMutex>::set_color(level::level_enum level, WORD color) | ||||||
| 		{ | { | ||||||
| 			std::lock_guard<mutex_t> lock(mutex_); |     std::lock_guard<mutex_t> lock(mutex_); | ||||||
| 			colors_[level] = color; |     colors_[level] = color; | ||||||
| 		} | } | ||||||
| 
 | 
 | ||||||
| 		template<typename ConsoleMutex> | template<typename ConsoleMutex> | ||||||
| 		void SPDLOG_INLINE wincolor_sink<ConsoleMutex>::log(const details::log_msg &msg) | void SPDLOG_INLINE wincolor_sink<ConsoleMutex>::log(const details::log_msg &msg) | ||||||
| 		{ | { | ||||||
| 			std::lock_guard<mutex_t> lock(mutex_); |     std::lock_guard<mutex_t> lock(mutex_); | ||||||
| 			fmt::memory_buffer formatted; |     fmt::memory_buffer formatted; | ||||||
| 			formatter_->format(msg, formatted); |     formatter_->format(msg, formatted); | ||||||
| 			if (!in_console_) |     if (!in_console_) | ||||||
| 			{ |     { | ||||||
| 				write_to_file_(formatted); |         write_to_file_(formatted); | ||||||
| 				return; |         return; | ||||||
| 			} |     } | ||||||
| 			 |  | ||||||
| 			if (should_do_colors_ && msg.color_range_end > msg.color_range_start) |  | ||||||
| 			{ |  | ||||||
| 				// before color range
 |  | ||||||
| 				print_range_(formatted, 0, msg.color_range_start); |  | ||||||
| 
 | 
 | ||||||
| 				// in color range
 |     if (should_do_colors_ && msg.color_range_end > msg.color_range_start) | ||||||
| 				auto orig_attribs = set_console_attribs(colors_[msg.level]); |     { | ||||||
| 				print_range_(formatted, msg.color_range_start, msg.color_range_end); |         // before color range
 | ||||||
| 				::SetConsoleTextAttribute(out_handle_, |         print_range_(formatted, 0, msg.color_range_start); | ||||||
| 					orig_attribs); // reset to orig colors
 |  | ||||||
| 								   // after color range
 |  | ||||||
| 				print_range_(formatted, msg.color_range_end, formatted.size()); |  | ||||||
| 			} |  | ||||||
| 			else // print without colors if color range is invalid (or color is disabled)
 |  | ||||||
| 			{ |  | ||||||
| 				print_range_(formatted, 0, formatted.size()); |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 
 | 
 | ||||||
|  |         // in color range
 | ||||||
|  |         auto orig_attribs = set_console_attribs(colors_[msg.level]); | ||||||
|  |         print_range_(formatted, msg.color_range_start, msg.color_range_end); | ||||||
|  |         ::SetConsoleTextAttribute(out_handle_, | ||||||
|  |             orig_attribs); // reset to orig colors
 | ||||||
|  |                            // after color range
 | ||||||
|  |         print_range_(formatted, msg.color_range_end, formatted.size()); | ||||||
|  |     } | ||||||
|  |     else // print without colors if color range is invalid (or color is disabled)
 | ||||||
|  |     { | ||||||
|  |         print_range_(formatted, 0, formatted.size()); | ||||||
|  |     } | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
| 		template<typename ConsoleMutex> | template<typename ConsoleMutex> | ||||||
| 		void SPDLOG_INLINE wincolor_sink<ConsoleMutex>::flush() | void SPDLOG_INLINE wincolor_sink<ConsoleMutex>::flush() | ||||||
| 		{ | { | ||||||
| 			// windows console always flushed?
 |     // windows console always flushed?
 | ||||||
| 		} | } | ||||||
| 
 | 
 | ||||||
| 		template<typename ConsoleMutex> | template<typename ConsoleMutex> | ||||||
| 		void SPDLOG_INLINE wincolor_sink<ConsoleMutex>::set_pattern(const std::string &pattern) | void SPDLOG_INLINE wincolor_sink<ConsoleMutex>::set_pattern(const std::string &pattern) | ||||||
| 		{ | { | ||||||
| 			std::lock_guard<mutex_t> lock(mutex_); |     std::lock_guard<mutex_t> lock(mutex_); | ||||||
| 			formatter_ = std::unique_ptr<spdlog::formatter>(new pattern_formatter(pattern)); |     formatter_ = std::unique_ptr<spdlog::formatter>(new pattern_formatter(pattern)); | ||||||
| 		} | } | ||||||
| 
 | 
 | ||||||
| 		template<typename ConsoleMutex> | template<typename ConsoleMutex> | ||||||
| 		void SPDLOG_INLINE wincolor_sink<ConsoleMutex>::set_formatter(std::unique_ptr<spdlog::formatter> sink_formatter) | void SPDLOG_INLINE wincolor_sink<ConsoleMutex>::set_formatter(std::unique_ptr<spdlog::formatter> sink_formatter) | ||||||
| 		{ | { | ||||||
| 			std::lock_guard<mutex_t> lock(mutex_); |     std::lock_guard<mutex_t> lock(mutex_); | ||||||
| 			formatter_ = std::move(sink_formatter); |     formatter_ = std::move(sink_formatter); | ||||||
| 		} | } | ||||||
| 
 | 
 | ||||||
| 		template<typename ConsoleMutex> | template<typename ConsoleMutex> | ||||||
| 		void SPDLOG_INLINE wincolor_sink<ConsoleMutex>::set_color_mode(color_mode mode) | void SPDLOG_INLINE wincolor_sink<ConsoleMutex>::set_color_mode(color_mode mode) | ||||||
| 		{ | { | ||||||
| 			switch (mode) |     switch (mode) | ||||||
| 			{ |     { | ||||||
| 			case color_mode::always: |     case color_mode::always: | ||||||
| 			case color_mode::automatic: |     case color_mode::automatic: | ||||||
| 				should_do_colors_ = true; |         should_do_colors_ = true; | ||||||
| 				break; |         break; | ||||||
| 			case color_mode::never: |     case color_mode::never: | ||||||
| 				should_do_colors_ = false; |         should_do_colors_ = false; | ||||||
| 				break; |         break; | ||||||
| 			default: |     default: | ||||||
| 				should_do_colors_ = true; |         should_do_colors_ = true; | ||||||
| 			} |     } | ||||||
| 		} | } | ||||||
| 
 | 
 | ||||||
| 		// set color and return the orig console attributes (for resetting later)
 | // set color and return the orig console attributes (for resetting later)
 | ||||||
| 		template<typename ConsoleMutex> | template<typename ConsoleMutex> | ||||||
| 		WORD SPDLOG_INLINE wincolor_sink<ConsoleMutex>::set_console_attribs(WORD attribs) | WORD SPDLOG_INLINE wincolor_sink<ConsoleMutex>::set_console_attribs(WORD attribs) | ||||||
| 		{ | { | ||||||
| 			in_console_ |     in_console_ CONSOLE_SCREEN_BUFFER_INFO orig_buffer_info; | ||||||
| 			CONSOLE_SCREEN_BUFFER_INFO orig_buffer_info; |     ::GetConsoleScreenBufferInfo(out_handle_, &orig_buffer_info); | ||||||
| 			::GetConsoleScreenBufferInfo(out_handle_, &orig_buffer_info); |     WORD back_color = orig_buffer_info.wAttributes; | ||||||
| 			WORD back_color = orig_buffer_info.wAttributes; |     // retrieve the current background color
 | ||||||
| 			// retrieve the current background color
 |     back_color &= static_cast<WORD>(~(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY)); | ||||||
| 			back_color &= static_cast<WORD>(~(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY)); |     // keep the background color unchanged
 | ||||||
| 			// keep the background color unchanged
 |     ::SetConsoleTextAttribute(out_handle_, attribs | back_color); | ||||||
| 			::SetConsoleTextAttribute(out_handle_, attribs | back_color); |     return orig_buffer_info.wAttributes; // return orig attribs
 | ||||||
| 			return orig_buffer_info.wAttributes; // return orig attribs
 | } | ||||||
| 		} |  | ||||||
| 
 | 
 | ||||||
| 		// print a range of formatted message to console
 | // print a range of formatted message to console
 | ||||||
| 		template<typename ConsoleMutex> | template<typename ConsoleMutex> | ||||||
| 		void SPDLOG_INLINE wincolor_sink<ConsoleMutex>::print_range_(const fmt::memory_buffer &formatted, size_t start, size_t end) | void SPDLOG_INLINE wincolor_sink<ConsoleMutex>::print_range_(const fmt::memory_buffer &formatted, size_t start, size_t end) | ||||||
| 		{ | { | ||||||
| 			auto size = static_cast<DWORD>(end - start); |     auto size = static_cast<DWORD>(end - start); | ||||||
| 			::WriteConsoleA(out_handle_, formatted.data() + start, size, nullptr, nullptr); |     ::WriteConsoleA(out_handle_, formatted.data() + start, size, nullptr, nullptr); | ||||||
| 		} | } | ||||||
| 
 | 
 | ||||||
|  | template<typename ConsoleMutex> | ||||||
|  | void SPDLOG_INLINE wincolor_sink<ConsoleMutex>::write_to_file_(const fmt::memory_buffer &formatted) | ||||||
|  | { | ||||||
|  |     auto size = static_cast<DWORD>(formatted.size()); | ||||||
|  |     if (size == 0) | ||||||
|  |     { | ||||||
|  |         return; | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
| 		template<typename ConsoleMutex> |     DWORD total_written = 0; | ||||||
| 		void SPDLOG_INLINE wincolor_sink<ConsoleMutex>::write_to_file_(const fmt::memory_buffer &formatted) |     do | ||||||
| 		{ |     { | ||||||
| 			auto size = static_cast<DWORD>(formatted.size()); |         DWORD bytes_written = 0; | ||||||
| 			if (size == 0) |         bool ok = WriteFile(out_handle_, formatted.data(), size, &bytes_written, nullptr) != 0; | ||||||
| 			{ |         if (!ok || bytes_written == 0) | ||||||
| 				return; |         { | ||||||
| 			} |             throw spdlog_ex("wincolor_sink: write_to_file_ failed. GetLastError(): " + std::to_string(::GetLastError())); | ||||||
|  |         } | ||||||
|  |         total_written += bytes_written; | ||||||
|  |     } while (total_written < size); | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
| 			DWORD total_written = 0; | // wincolor_stdout_sink
 | ||||||
| 			do | template<typename ConsoleMutex> | ||||||
| 			{  | SPDLOG_INLINE wincolor_stdout_sink<ConsoleMutex>::wincolor_stdout_sink(color_mode mode) | ||||||
| 				DWORD bytes_written = 0; |     : wincolor_sink<ConsoleMutex>(::GetStdHandle(STD_OUTPUT_HANDLE), mode) | ||||||
| 				bool ok = WriteFile(out_handle_, formatted.data(), size, &bytes_written, nullptr) != 0; | {} | ||||||
| 				if (!ok || bytes_written == 0) |  | ||||||
| 				{ |  | ||||||
| 					throw spdlog_ex("wincolor_sink: write_to_file_ failed. GetLastError(): " + std::to_string(::GetLastError())); |  | ||||||
| 				}				 |  | ||||||
| 				total_written += bytes_written; |  | ||||||
| 			} while (total_written < size); |  | ||||||
| 		} |  | ||||||
| 
 | 
 | ||||||
| 		// wincolor_stdout_sink
 | // wincolor_stderr_sink
 | ||||||
| 		template<typename ConsoleMutex> | template<typename ConsoleMutex> | ||||||
| 		SPDLOG_INLINE wincolor_stdout_sink<ConsoleMutex>::wincolor_stdout_sink(color_mode mode) | SPDLOG_INLINE wincolor_stderr_sink<ConsoleMutex>::wincolor_stderr_sink(color_mode mode) | ||||||
| 			: wincolor_sink<ConsoleMutex>(::GetStdHandle(STD_OUTPUT_HANDLE), mode) |     : wincolor_sink<ConsoleMutex>(::GetStdHandle(STD_ERROR_HANDLE), mode) | ||||||
| 		{} | {} | ||||||
| 
 | 
 | ||||||
| 		// wincolor_stderr_sink
 | } // namespace sinks
 | ||||||
| 		template<typename ConsoleMutex> |  | ||||||
| 		SPDLOG_INLINE wincolor_stderr_sink<ConsoleMutex>::wincolor_stderr_sink(color_mode mode) |  | ||||||
| 			: wincolor_sink<ConsoleMutex>(::GetStdHandle(STD_ERROR_HANDLE), mode) |  | ||||||
| 		{} |  | ||||||
| 
 |  | ||||||
| 	} // namespace sinks
 |  | ||||||
| } // namespace spdlog
 | } // namespace spdlog
 | ||||||
| @ -49,8 +49,8 @@ protected: | |||||||
|     using mutex_t = typename ConsoleMutex::mutex_t; |     using mutex_t = typename ConsoleMutex::mutex_t; | ||||||
|     HANDLE out_handle_; |     HANDLE out_handle_; | ||||||
|     mutex_t &mutex_; |     mutex_t &mutex_; | ||||||
| 	bool in_console_; |     bool in_console_; | ||||||
|     bool should_do_colors_;	 |     bool should_do_colors_; | ||||||
|     std::unique_ptr<spdlog::formatter> formatter_; |     std::unique_ptr<spdlog::formatter> formatter_; | ||||||
|     std::unordered_map<level::level_enum, WORD, level::level_hasher> colors_; |     std::unordered_map<level::level_enum, WORD, level::level_hasher> colors_; | ||||||
| 
 | 
 | ||||||
| @ -59,9 +59,8 @@ protected: | |||||||
|     // print a range of formatted message to console
 |     // print a range of formatted message to console
 | ||||||
|     void print_range_(const fmt::memory_buffer &formatted, size_t start, size_t end); |     void print_range_(const fmt::memory_buffer &formatted, size_t start, size_t end); | ||||||
| 
 | 
 | ||||||
| 	//in case we are redirected to file (not in console mode)
 |     // in case we are redirected to file (not in console mode)
 | ||||||
| 	void write_to_file_(const fmt::memory_buffer &formatted); |     void write_to_file_(const fmt::memory_buffer &formatted); | ||||||
| 	 |  | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| template<typename ConsoleMutex> | template<typename ConsoleMutex> | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user