Moved spdlog::make_unique to spdlog::details::make_unique and prevent T to be array
This commit is contained in:
		
							parent
							
								
									e3a66473b2
								
							
						
					
					
						commit
						e8dae26176
					
				| @ -15,6 +15,7 @@ | ||||
| #include <stdexcept> | ||||
| #include <string> | ||||
| #include <unordered_map> | ||||
| #include <type_traits> | ||||
| 
 | ||||
| #if defined(SPDLOG_WCHAR_FILENAMES) || defined(SPDLOG_WCHAR_TO_UTF8_SUPPORT) | ||||
| #include <codecvt> | ||||
| @ -168,16 +169,19 @@ using filename_t = std::string; | ||||
|         err_handler_("Unknown exeption in logger");                                                                                        \ | ||||
|     } | ||||
| 
 | ||||
| //
 | ||||
| // make_unique support
 | ||||
| //
 | ||||
| 
 | ||||
| namespace details { | ||||
| // make_unique support for pre c++14
 | ||||
| 
 | ||||
| #if __cplusplus >= 201402L // C++14 and beyond
 | ||||
| using std::make_unique; | ||||
| #else | ||||
| template<typename T, typename... Args> | ||||
| std::unique_ptr<T> make_unique(Args &&... args) | ||||
| { | ||||
|     static_assert(!std::is_array<T>::value, "arrays to not supported" ); | ||||
|     return std::unique_ptr<T>(new T(std::forward<Args>(args)...)); | ||||
| } | ||||
| #endif | ||||
| } // namespace details
 | ||||
| } // namespace spdlog
 | ||||
|  | ||||
| @ -49,7 +49,7 @@ inline void spdlog::logger::set_formatter(std::unique_ptr<spdlog::formatter> f) | ||||
| 
 | ||||
| inline void spdlog::logger::set_pattern(std::string pattern, pattern_time_type time_type) | ||||
| { | ||||
|     auto new_formatter = spdlog::make_unique<spdlog::pattern_formatter>(std::move(pattern), time_type); | ||||
|     auto new_formatter = details::make_unique<spdlog::pattern_formatter>(std::move(pattern), time_type); | ||||
|     set_formatter(std::move(new_formatter)); | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -547,7 +547,7 @@ public: | ||||
| 
 | ||||
|     std::unique_ptr<formatter> clone() const override | ||||
|     { | ||||
|         return spdlog::make_unique<pattern_formatter>(pattern_, pattern_time_type_, eol_); | ||||
|         return details::make_unique<pattern_formatter>(pattern_, pattern_time_type_, eol_); | ||||
|     } | ||||
| 
 | ||||
|     void format(const details::log_msg &msg, fmt::memory_buffer &dest) override | ||||
| @ -592,141 +592,141 @@ private: | ||||
|         { | ||||
|         // logger name
 | ||||
|         case 'n': | ||||
|             formatters_.push_back(spdlog::make_unique<details::name_formatter>()); | ||||
|             formatters_.push_back(details::make_unique<details::name_formatter>()); | ||||
|             break; | ||||
| 
 | ||||
|         case 'l': | ||||
|             formatters_.push_back(spdlog::make_unique<details::level_formatter>()); | ||||
|             formatters_.push_back(details::make_unique<details::level_formatter>()); | ||||
|             break; | ||||
| 
 | ||||
|         case 'L': | ||||
|             formatters_.push_back(spdlog::make_unique<details::short_level_formatter>()); | ||||
|             formatters_.push_back(details::make_unique<details::short_level_formatter>()); | ||||
|             break; | ||||
| 
 | ||||
|         case ('t'): | ||||
|             formatters_.push_back(spdlog::make_unique<details::t_formatter>()); | ||||
|             formatters_.push_back(details::make_unique<details::t_formatter>()); | ||||
|             break; | ||||
| 
 | ||||
|         case ('v'): | ||||
|             formatters_.push_back(spdlog::make_unique<details::v_formatter>()); | ||||
|             formatters_.push_back(details::make_unique<details::v_formatter>()); | ||||
|             break; | ||||
| 
 | ||||
|         case ('a'): | ||||
|             formatters_.push_back(spdlog::make_unique<details::a_formatter>()); | ||||
|             formatters_.push_back(details::make_unique<details::a_formatter>()); | ||||
|             break; | ||||
| 
 | ||||
|         case ('A'): | ||||
|             formatters_.push_back(spdlog::make_unique<details::A_formatter>()); | ||||
|             formatters_.push_back(details::make_unique<details::A_formatter>()); | ||||
|             break; | ||||
| 
 | ||||
|         case ('b'): | ||||
|         case ('h'): | ||||
|             formatters_.push_back(spdlog::make_unique<details::b_formatter>()); | ||||
|             formatters_.push_back(details::make_unique<details::b_formatter>()); | ||||
|             break; | ||||
| 
 | ||||
|         case ('B'): | ||||
|             formatters_.push_back(spdlog::make_unique<details::B_formatter>()); | ||||
|             formatters_.push_back(details::make_unique<details::B_formatter>()); | ||||
|             break; | ||||
|         case ('c'): | ||||
|             formatters_.push_back(spdlog::make_unique<details::c_formatter>()); | ||||
|             formatters_.push_back(details::make_unique<details::c_formatter>()); | ||||
|             break; | ||||
| 
 | ||||
|         case ('C'): | ||||
|             formatters_.push_back(spdlog::make_unique<details::C_formatter>()); | ||||
|             formatters_.push_back(details::make_unique<details::C_formatter>()); | ||||
|             break; | ||||
| 
 | ||||
|         case ('Y'): | ||||
|             formatters_.push_back(spdlog::make_unique<details::Y_formatter>()); | ||||
|             formatters_.push_back(details::make_unique<details::Y_formatter>()); | ||||
|             break; | ||||
| 
 | ||||
|         case ('D'): | ||||
|         case ('x'): | ||||
|             formatters_.push_back(spdlog::make_unique<details::D_formatter>()); | ||||
|             formatters_.push_back(details::make_unique<details::D_formatter>()); | ||||
|             break; | ||||
| 
 | ||||
|         case ('m'): | ||||
|             formatters_.push_back(spdlog::make_unique<details::m_formatter>()); | ||||
|             formatters_.push_back(details::make_unique<details::m_formatter>()); | ||||
|             break; | ||||
| 
 | ||||
|         case ('d'): | ||||
|             formatters_.push_back(spdlog::make_unique<details::d_formatter>()); | ||||
|             formatters_.push_back(details::make_unique<details::d_formatter>()); | ||||
|             break; | ||||
| 
 | ||||
|         case ('H'): | ||||
|             formatters_.push_back(spdlog::make_unique<details::H_formatter>()); | ||||
|             formatters_.push_back(details::make_unique<details::H_formatter>()); | ||||
|             break; | ||||
| 
 | ||||
|         case ('I'): | ||||
|             formatters_.push_back(spdlog::make_unique<details::I_formatter>()); | ||||
|             formatters_.push_back(details::make_unique<details::I_formatter>()); | ||||
|             break; | ||||
| 
 | ||||
|         case ('M'): | ||||
|             formatters_.push_back(spdlog::make_unique<details::M_formatter>()); | ||||
|             formatters_.push_back(details::make_unique<details::M_formatter>()); | ||||
|             break; | ||||
| 
 | ||||
|         case ('S'): | ||||
|             formatters_.push_back(spdlog::make_unique<details::S_formatter>()); | ||||
|             formatters_.push_back(details::make_unique<details::S_formatter>()); | ||||
|             break; | ||||
| 
 | ||||
|         case ('e'): | ||||
|             formatters_.push_back(spdlog::make_unique<details::e_formatter>()); | ||||
|             formatters_.push_back(details::make_unique<details::e_formatter>()); | ||||
|             break; | ||||
| 
 | ||||
|         case ('f'): | ||||
|             formatters_.push_back(spdlog::make_unique<details::f_formatter>()); | ||||
|             formatters_.push_back(details::make_unique<details::f_formatter>()); | ||||
|             break; | ||||
|         case ('F'): | ||||
|             formatters_.push_back(spdlog::make_unique<details::F_formatter>()); | ||||
|             formatters_.push_back(details::make_unique<details::F_formatter>()); | ||||
|             break; | ||||
| 
 | ||||
|         case ('E'): | ||||
|             formatters_.push_back(spdlog::make_unique<details::E_formatter>()); | ||||
|             formatters_.push_back(details::make_unique<details::E_formatter>()); | ||||
|             break; | ||||
| 
 | ||||
|         case ('p'): | ||||
|             formatters_.push_back(spdlog::make_unique<details::p_formatter>()); | ||||
|             formatters_.push_back(details::make_unique<details::p_formatter>()); | ||||
|             break; | ||||
| 
 | ||||
|         case ('r'): | ||||
|             formatters_.push_back(spdlog::make_unique<details::r_formatter>()); | ||||
|             formatters_.push_back(details::make_unique<details::r_formatter>()); | ||||
|             break; | ||||
| 
 | ||||
|         case ('R'): | ||||
|             formatters_.push_back(spdlog::make_unique<details::R_formatter>()); | ||||
|             formatters_.push_back(details::make_unique<details::R_formatter>()); | ||||
|             break; | ||||
| 
 | ||||
|         case ('T'): | ||||
|         case ('X'): | ||||
|             formatters_.push_back(spdlog::make_unique<details::T_formatter>()); | ||||
|             formatters_.push_back(details::make_unique<details::T_formatter>()); | ||||
|             break; | ||||
| 
 | ||||
|         case ('z'): | ||||
|             formatters_.push_back(spdlog::make_unique<details::z_formatter>()); | ||||
|             formatters_.push_back(details::make_unique<details::z_formatter>()); | ||||
|             break; | ||||
| 
 | ||||
|         case ('+'): | ||||
|             formatters_.push_back(spdlog::make_unique<details::full_formatter>()); | ||||
|             formatters_.push_back(details::make_unique<details::full_formatter>()); | ||||
|             break; | ||||
| 
 | ||||
|         case ('P'): | ||||
|             formatters_.push_back(spdlog::make_unique<details::pid_formatter>()); | ||||
|             formatters_.push_back(details::make_unique<details::pid_formatter>()); | ||||
|             break; | ||||
| 
 | ||||
|         case ('i'): | ||||
|             formatters_.push_back(spdlog::make_unique<details::i_formatter>()); | ||||
|             formatters_.push_back(details::make_unique<details::i_formatter>()); | ||||
|             break; | ||||
| 
 | ||||
|         case ('^'): | ||||
|             formatters_.push_back(spdlog::make_unique<details::color_start_formatter>()); | ||||
|             formatters_.push_back(details::make_unique<details::color_start_formatter>()); | ||||
|             break; | ||||
| 
 | ||||
|         case ('$'): | ||||
|             formatters_.push_back(spdlog::make_unique<details::color_stop_formatter>()); | ||||
|             formatters_.push_back(details::make_unique<details::color_stop_formatter>()); | ||||
|             break; | ||||
| 
 | ||||
|         default: // Unknown flag appears as is
 | ||||
|             formatters_.push_back(spdlog::make_unique<details::ch_formatter>('%')); | ||||
|             formatters_.push_back(spdlog::make_unique<details::ch_formatter>(flag)); | ||||
|             formatters_.push_back(details::make_unique<details::ch_formatter>('%')); | ||||
|             formatters_.push_back(details::make_unique<details::ch_formatter>(flag)); | ||||
|             break; | ||||
|         } | ||||
|     } | ||||
| @ -757,7 +757,7 @@ private: | ||||
|             { | ||||
|                 if (!user_chars) | ||||
|                 { | ||||
|                     user_chars = spdlog::make_unique<details::aggregate_formatter>(); | ||||
|                     user_chars = details::make_unique<details::aggregate_formatter>(); | ||||
|                 } | ||||
|                 user_chars->add_ch(*it); | ||||
|             } | ||||
|  | ||||
| @ -113,7 +113,7 @@ public: | ||||
|     { | ||||
|         std::lock_guard<std::mutex> lock(flusher_mutex_); | ||||
|         std::function<void()> clbk = std::bind(®istry::flush_all, this); | ||||
|         periodic_flusher_ = spdlog::make_unique<periodic_worker>(clbk, interval); | ||||
|         periodic_flusher_ = details::make_unique<periodic_worker>(clbk, interval); | ||||
|     } | ||||
| 
 | ||||
|     void set_error_handler(log_err_handler handler) | ||||
|  | ||||
| @ -56,7 +56,7 @@ protected: | ||||
| 
 | ||||
|     virtual void set_pattern_(const std::string &pattern) | ||||
|     { | ||||
|         set_formatter_(spdlog::make_unique<spdlog::pattern_formatter>(pattern)); | ||||
|         set_formatter_(details::make_unique<spdlog::pattern_formatter>(pattern)); | ||||
|     } | ||||
| 
 | ||||
|     virtual void set_formatter_(std::unique_ptr<spdlog::formatter> sink_formatter) | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user