32 lines
955 B
C++
32 lines
955 B
C++
|
|
#pragma once
|
|
|
|
#if !defined(MIJIN_INTERNAL_EXCEPTION_HPP_INCLUDED)
|
|
#define MIJIN_INTERNAL_EXCEPTION_HPP_INCLUDED 1
|
|
|
|
#if !defined(MIJIN_WITH_EXCEPTIONS)
|
|
#define MIJIN_WITH_EXCEPTIONS 0
|
|
#endif
|
|
|
|
#if MIJIN_WITH_EXCEPTIONS
|
|
#error "Maybe someday"
|
|
#else
|
|
#if defined(MIJIN_TEST_NO_NOEXCEPT) // only use for testing
|
|
#define MIJIN_NOEXCEPT
|
|
#define MIJIN_THROWS
|
|
#define MIJIN_CONDITIONAL_NOEXCEPT(...)
|
|
#else
|
|
#define MIJIN_NOEXCEPT noexcept
|
|
#define MIJIN_THROWS noexcept
|
|
#define MIJIN_CONDITIONAL_NOEXCEPT(...) noexcept(__VA_ARGS__)
|
|
#endif
|
|
#define MIJIN_EXCEPT_CHOOSE(noexceptType, exceptType) noexceptType
|
|
#define MIJIN_THROW_OR_RETURN(value, exception) return (value)
|
|
#define MIJIN_RETURN_SUCCESS(value) return (value)
|
|
#endif
|
|
|
|
#define MIJIN_ERROR_BOOL MIJIN_EXCEPT_CHOOSE([[nodiscard]] bool, void)
|
|
#define MIJIN_THROW_OR_RETURN_STD(value, message) MIJIN_THROW_OR_RETURN(value, std::runtime_error(message))
|
|
|
|
#endif // !defined(MIJIN_INTERNAL_EXCEPTION_HPP_INCLUDED)
|