HAxis sos
This commit is contained in:
		
							
								
								
									
										106
									
								
								Source/UnrealProject/External/timer
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										106
									
								
								Source/UnrealProject/External/timer
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,106 @@ | ||||
| /////////////////////////////////////////////////////////////////////////////////////////////////////////////// | ||||
| //                                                                                                           // | ||||
| //  Copyright (c) 2012-2015, Jan de Graaf (jan@jlib.nl)                                                      // | ||||
| //                                                                                                           // | ||||
| //  Permission to use, copy, modify, and/or distribute this software for any purpose with or                 // | ||||
| //  without fee is hereby granted, provided that the above copyright notice and this permission              // | ||||
| //  notice appear in all copies.                                                                             // | ||||
| //                                                                                                           // | ||||
| //  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS             // | ||||
| //  SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL              // | ||||
| //  THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES          // | ||||
| //  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE     // | ||||
| //  OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.  // | ||||
| //                                                                                                           // | ||||
| /////////////////////////////////////////////////////////////////////////////////////////////////////////////// | ||||
|  | ||||
| #ifndef _JLIB_HEADER_TIMER | ||||
| #define _JLIB_HEADER_TIMER | ||||
|  | ||||
| /* | ||||
|  | ||||
| Template chrono timer class | ||||
|  | ||||
| Wraps std chrono basic time functions in a timer object. | ||||
|  | ||||
| */ | ||||
|  | ||||
| #include <chrono> | ||||
|  | ||||
| namespace jlib | ||||
| { | ||||
| 	class timer | ||||
| 	{ | ||||
| 	public: | ||||
| 		// Constructors | ||||
| 		timer() : m_start(std::chrono::high_resolution_clock::now()) {} | ||||
| 		template<typename rep, typename period> timer(std::chrono::duration<rep, period> duration) : m_start(std::chrono::high_resolution_clock::now()) | ||||
| 		{ | ||||
| 			m_start -= duration; | ||||
| 		} | ||||
| 		template<typename rep, typename period> timer& operator=(std::chrono::duration<rep, period> duration) | ||||
| 		{ | ||||
| 			restart(); | ||||
| 			m_start -= duration; | ||||
| 			return *this; | ||||
| 		} | ||||
|  | ||||
| 		inline void restart() | ||||
| 		{ | ||||
| 			m_start = std::chrono::high_resolution_clock::now(); | ||||
| 		} | ||||
|  | ||||
| 		template<typename dur> inline dur duration() const | ||||
| 		{ | ||||
| 			return std::chrono::duration_cast<dur>(std::chrono::high_resolution_clock::now() - m_start); | ||||
| 		} | ||||
|  | ||||
| 		// Simplified get functions | ||||
| 		inline std::chrono::nanoseconds::rep nanoseconds() const | ||||
| 		{ | ||||
| 			return duration<std::chrono::nanoseconds>().count(); | ||||
| 		} | ||||
| 		inline std::chrono::microseconds::rep microseconds() const | ||||
| 		{ | ||||
| 			return duration<std::chrono::microseconds>().count(); | ||||
| 		} | ||||
| 		inline std::chrono::milliseconds::rep milliseconds() const | ||||
| 		{ | ||||
| 			return duration<std::chrono::milliseconds>().count(); | ||||
| 		} | ||||
| 		inline std::chrono::seconds::rep seconds() const | ||||
| 		{ | ||||
| 			return duration<std::chrono::seconds>().count(); | ||||
| 		} | ||||
| 		inline std::chrono::minutes::rep minutes() const | ||||
| 		{ | ||||
| 			return duration<std::chrono::minutes>().count(); | ||||
| 		} | ||||
| 		inline std::chrono::hours::rep hours() const | ||||
| 		{ | ||||
| 			return duration<std::chrono::hours>().count(); | ||||
| 		} | ||||
| 		inline float seconds_float() const | ||||
| 		{ | ||||
| 			return duration<std::chrono::duration<float>>().count(); | ||||
| 		} | ||||
|  | ||||
| 		// Addition or substraction | ||||
| 		// Allows to add or substract time periods from the timer | ||||
| 		template<typename rep, typename period> inline timer& operator+=(std::chrono::duration<rep, period> duration) | ||||
| 		{ | ||||
| 			m_start -= duration; | ||||
| 			return *this; | ||||
| 		} | ||||
| 		template<typename rep, typename period> inline timer& operator-=(std::chrono::duration<rep, period> duration) | ||||
| 		{ | ||||
| 			m_start += duration; | ||||
| 			return *this; | ||||
| 		} | ||||
|  | ||||
| 	private: | ||||
| 		std::chrono::high_resolution_clock::time_point m_start; | ||||
| 	}; | ||||
| } | ||||
|  | ||||
| #endif | ||||
		Reference in New Issue
	
	Block a user