46 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| 
 | |
| #pragma once
 | |
| 
 | |
| #if !defined(MIJIN_INTERNAL_EXCEPTION_HPP_INCLUDED)
 | |
| #define MIJIN_INTERNAL_EXCEPTION_HPP_INCLUDED 1
 | |
| 
 | |
| #if !defined(MIJIN_ENABLE_EXCEPTIONS)
 | |
| #   define MIJIN_ENABLE_EXCEPTIONS (__cpp_exceptions)
 | |
| #endif
 | |
| 
 | |
| #define MIJIN_CATCH_EXCEPTIONS (__cpp_exceptions)
 | |
| 
 | |
| #if !defined(MIJIN_THROWING_ASSERTS)
 | |
| #   define MIJIN_THROWING_ASSERTS 0
 | |
| #endif
 | |
| 
 | |
| #if MIJIN_THROWING_ASSERTS && !defined(MIJIN_TEST_NO_NOEXCEPT)
 | |
| #define MIJIN_TEST_NO_NOEXCEPT
 | |
| #endif
 | |
| 
 | |
| #if 0 // TODO: what? MIJIN_WITH_EXCEPTIONS
 | |
| #error "Maybe someday"
 | |
| #else
 | |
| #if defined(MIJIN_TEST_NO_NOEXCEPT) // only use for testing
 | |
| #define MIJIN_NOEXCEPT
 | |
| #define MIJIN_NOEXCEPT_IF(x)
 | |
| #define MIJIN_THROWS
 | |
| #define MIJIN_CONDITIONAL_NOEXCEPT(...)
 | |
| #else
 | |
| #define MIJIN_NOEXCEPT noexcept
 | |
| #define MIJIN_NOEXCEPT_IF(x) noexcept(x)
 | |
| #define MIJIN_THROWS noexcept
 | |
| #define MIJIN_CONDITIONAL_NOEXCEPT(...) noexcept(__VA_ARGS__)
 | |
| #endif
 | |
| #endif
 | |
| 
 | |
| #if MIJIN_CATCH_EXCEPTIONS
 | |
| #   define MIJIN_TRY try
 | |
| #   define MIJIN_CATCH catch
 | |
| #else
 | |
| #   define MIJIN_TRY
 | |
| #   define MIJIN_CATCH(...) if constexpr(false)
 | |
| #endif
 | |
| 
 | |
| #endif // !defined(MIJIN_INTERNAL_EXCEPTION_HPP_INCLUDED)
 |