From 3aed797466f6ba166a8e941c47687a345bca7576 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Mon, 31 May 2021 04:15:49 -0400 Subject: [PATCH] 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. --- src/common/common_funcs.h | 25 ------------------------- src/core/hle/result.h | 25 +++++++++++++++++++++++++ 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/src/common/common_funcs.h b/src/common/common_funcs.h index 17d1ee86b3..53bd7da608 100644 --- a/src/common/common_funcs.h +++ b/src/common/common_funcs.h @@ -97,17 +97,6 @@ __declspec(dllimport) void __stdcall DebugBreak(void); return static_cast(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) \ cls(const cls&) = delete; \ cls& operator=(const cls&) = delete @@ -116,20 +105,6 @@ __declspec(dllimport) void __stdcall DebugBreak(void); cls(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 { [[nodiscard]] constexpr u32 MakeMagic(char a, char b, char c, char d) { diff --git a/src/core/hle/result.h b/src/core/hle/result.h index 43968386fb..df3283fe3f 100644 --- a/src/core/hle/result.h +++ b/src/core/hle/result.h @@ -358,3 +358,28 @@ ResultVal> MakeResult(Arg&& arg) { return CONCAT2(check_result_L, __LINE__); \ } \ } 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; \ + } \ + }