Merge pull request #6395 from lioncash/result-move
common_funcs: Move R_ macros to result.h
This commit is contained in:
		@@ -97,17 +97,6 @@ __declspec(dllimport) void __stdcall DebugBreak(void);
 | 
			
		||||
        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)                                                                     \
 | 
			
		||||
    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) {
 | 
			
		||||
 
 | 
			
		||||
@@ -358,3 +358,28 @@ ResultVal<std::remove_reference_t<Arg>> 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;                                                                  \
 | 
			
		||||
        }                                                                                          \
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user