common_funcs: Move R_ macros to result.h
These macros all interact with the result code type, so they should ideally be within this file as well, so all the common_funcs machinery doesn't need to be pulled in just to use them.
This commit is contained in:
parent
519ddfae04
commit
3aed797466
|
@ -97,17 +97,6 @@ __declspec(dllimport) void __stdcall DebugBreak(void);
|
||||||
return static_cast<T>(key) == 0; \
|
return static_cast<T>(key) == 0; \
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Evaluates a boolean expression, and returns a result unless that expression is true.
|
|
||||||
#define R_UNLESS(expr, res) \
|
|
||||||
{ \
|
|
||||||
if (!(expr)) { \
|
|
||||||
if (res.IsError()) { \
|
|
||||||
LOG_ERROR(Kernel, "Failed with result: {}", res.raw); \
|
|
||||||
} \
|
|
||||||
return res; \
|
|
||||||
} \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define YUZU_NON_COPYABLE(cls) \
|
#define YUZU_NON_COPYABLE(cls) \
|
||||||
cls(const cls&) = delete; \
|
cls(const cls&) = delete; \
|
||||||
cls& operator=(const cls&) = delete
|
cls& operator=(const cls&) = delete
|
||||||
|
@ -116,20 +105,6 @@ __declspec(dllimport) void __stdcall DebugBreak(void);
|
||||||
cls(cls&&) = delete; \
|
cls(cls&&) = delete; \
|
||||||
cls& operator=(cls&&) = delete
|
cls& operator=(cls&&) = delete
|
||||||
|
|
||||||
#define R_SUCCEEDED(res) (res.IsSuccess())
|
|
||||||
|
|
||||||
/// Evaluates an expression that returns a result, and returns the result if it would fail.
|
|
||||||
#define R_TRY(res_expr) \
|
|
||||||
{ \
|
|
||||||
const auto _tmp_r_try_rc = (res_expr); \
|
|
||||||
if (_tmp_r_try_rc.IsError()) { \
|
|
||||||
return _tmp_r_try_rc; \
|
|
||||||
} \
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Evaluates a boolean expression, and succeeds if that expression is true.
|
|
||||||
#define R_SUCCEED_IF(expr) R_UNLESS(!(expr), RESULT_SUCCESS)
|
|
||||||
|
|
||||||
namespace Common {
|
namespace Common {
|
||||||
|
|
||||||
[[nodiscard]] constexpr u32 MakeMagic(char a, char b, char c, char d) {
|
[[nodiscard]] constexpr u32 MakeMagic(char a, char b, char c, char d) {
|
||||||
|
|
|
@ -358,3 +358,28 @@ ResultVal<std::remove_reference_t<Arg>> MakeResult(Arg&& arg) {
|
||||||
return CONCAT2(check_result_L, __LINE__); \
|
return CONCAT2(check_result_L, __LINE__); \
|
||||||
} \
|
} \
|
||||||
} while (false)
|
} while (false)
|
||||||
|
|
||||||
|
#define R_SUCCEEDED(res) (res.IsSuccess())
|
||||||
|
|
||||||
|
/// Evaluates a boolean expression, and succeeds if that expression is true.
|
||||||
|
#define R_SUCCEED_IF(expr) R_UNLESS(!(expr), RESULT_SUCCESS)
|
||||||
|
|
||||||
|
/// Evaluates a boolean expression, and returns a result unless that expression is true.
|
||||||
|
#define R_UNLESS(expr, res) \
|
||||||
|
{ \
|
||||||
|
if (!(expr)) { \
|
||||||
|
if (res.IsError()) { \
|
||||||
|
LOG_ERROR(Kernel, "Failed with result: {}", res.raw); \
|
||||||
|
} \
|
||||||
|
return res; \
|
||||||
|
} \
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Evaluates an expression that returns a result, and returns the result if it would fail.
|
||||||
|
#define R_TRY(res_expr) \
|
||||||
|
{ \
|
||||||
|
const auto _tmp_r_try_rc = (res_expr); \
|
||||||
|
if (_tmp_r_try_rc.IsError()) { \
|
||||||
|
return _tmp_r_try_rc; \
|
||||||
|
} \
|
||||||
|
}
|
||||||
|
|
Reference in New Issue