mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-10-31 20:27:11 +01:00 
			
		
		
		
	Add std::byte stringification support (#1686)
				
					
				
			* Add `std::byte` support 1. Add byte detection in Catch config 2. Add a `std::byte`specialisation for Catch2::Detail::StringMaker
This commit is contained in:
		 Stuart Dootson
					Stuart Dootson
				
			
				
					committed by
					
						 Martin Hořeňovský
						Martin Hořeňovský
					
				
			
			
				
	
			
			
			 Martin Hořeňovský
						Martin Hořeňovský
					
				
			
						parent
						
							0c27554af5
						
					
				
				
					commit
					87739ad3fe
				
			| @@ -201,6 +201,14 @@ | ||||
| #  endif // __has_include(<optional>) && defined(CATCH_CPP17_OR_GREATER) | ||||
| #endif // __has_include | ||||
|  | ||||
| //////////////////////////////////////////////////////////////////////////////// | ||||
| // Check if byte is available and usable | ||||
| #if defined(__has_include) | ||||
| #  if __has_include(<cstddef>) && defined(CATCH_CPP17_OR_GREATER) | ||||
| #    define CATCH_INTERNAL_CONFIG_CPP17_BYTE | ||||
| #  endif // __has_include(<cstddef>) && defined(CATCH_CPP17_OR_GREATER) | ||||
| #endif // __has_include | ||||
|  | ||||
| //////////////////////////////////////////////////////////////////////////////// | ||||
| // Check if variant is available and usable | ||||
| #if defined(__has_include) | ||||
| @@ -256,6 +264,11 @@ | ||||
| #  define CATCH_CONFIG_CPP17_VARIANT | ||||
| #endif | ||||
|  | ||||
| #if defined(CATCH_INTERNAL_CONFIG_CPP17_BYTE) && !defined(CATCH_CONFIG_NO_CPP17_BYTE) && !defined(CATCH_CONFIG_CPP17_BYTE) | ||||
| #  define CATCH_CONFIG_CPP17_BYTE | ||||
| #endif | ||||
|  | ||||
|  | ||||
| #if defined(CATCH_CONFIG_EXPERIMENTAL_REDIRECT) | ||||
| #  define CATCH_INTERNAL_CONFIG_NEW_CAPTURE | ||||
| #endif | ||||
|   | ||||
| @@ -170,6 +170,12 @@ std::string StringMaker<wchar_t *>::convert(wchar_t * str) { | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #if defined(CATCH_CONFIG_CPP17_BYTE) | ||||
| #include <cstddef> | ||||
| std::string StringMaker<std::byte>::convert(std::byte value) { | ||||
|     return ::Catch::Detail::stringify(std::to_integer<unsigned long long>(value)); | ||||
| } | ||||
| #endif // defined(CATCH_CONFIG_CPP17_BYTE) | ||||
|  | ||||
| std::string StringMaker<int>::convert(int value) { | ||||
|     return ::Catch::Detail::stringify(static_cast<long long>(value)); | ||||
|   | ||||
| @@ -210,6 +210,12 @@ namespace Catch { | ||||
|         } | ||||
|     }; | ||||
|  | ||||
| #if defined(CATCH_CONFIG_CPP17_BYTE) | ||||
|     template<> | ||||
|     struct StringMaker<std::byte> { | ||||
|         static std::string convert(std::byte value); | ||||
|     }; | ||||
| #endif // defined(CATCH_CONFIG_CPP17_BYTE) | ||||
|     template<> | ||||
|     struct StringMaker<int> { | ||||
|         static std::string convert(int value); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user