summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Lioncash2021-05-31 04:15:49 -0400
committerGravatar Lioncash2021-05-31 16:41:00 -0400
commit3aed797466f6ba166a8e941c47687a345bca7576 (patch)
tree18ed4fcc2073a1228e9f2bf7e05bbf7ae7188a96
parentMerge pull request #6394 from lat9nq/mingw-fix (diff)
downloadyuzu-3aed797466f6ba166a8e941c47687a345bca7576.tar.gz
yuzu-3aed797466f6ba166a8e941c47687a345bca7576.tar.xz
yuzu-3aed797466f6ba166a8e941c47687a345bca7576.zip
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.
-rw-r--r--src/common/common_funcs.h25
-rw-r--r--src/core/hle/result.h25
2 files changed, 25 insertions, 25 deletions
diff --git a/src/common/common_funcs.h b/src/common/common_funcs.h
index 17d1ee86b..53bd7da60 100644
--- a/src/common/common_funcs.h
+++ b/src/common/common_funcs.h
@@ -97,17 +97,6 @@ __declspec(dllimport) void __stdcall DebugBreak(void);
97 return static_cast<T>(key) == 0; \ 97 return static_cast<T>(key) == 0; \
98 } 98 }
99 99
100/// Evaluates a boolean expression, and returns a result unless that expression is true.
101#define R_UNLESS(expr, res) \
102 { \
103 if (!(expr)) { \
104 if (res.IsError()) { \
105 LOG_ERROR(Kernel, "Failed with result: {}", res.raw); \
106 } \
107 return res; \
108 } \
109 }
110
111#define YUZU_NON_COPYABLE(cls) \ 100#define YUZU_NON_COPYABLE(cls) \
112 cls(const cls&) = delete; \ 101 cls(const cls&) = delete; \
113 cls& operator=(const cls&) = delete 102 cls& operator=(const cls&) = delete
@@ -116,20 +105,6 @@ __declspec(dllimport) void __stdcall DebugBreak(void);
116 cls(cls&&) = delete; \ 105 cls(cls&&) = delete; \
117 cls& operator=(cls&&) = delete 106 cls& operator=(cls&&) = delete
118 107
119#define R_SUCCEEDED(res) (res.IsSuccess())
120
121/// Evaluates an expression that returns a result, and returns the result if it would fail.
122#define R_TRY(res_expr) \
123 { \
124 const auto _tmp_r_try_rc = (res_expr); \
125 if (_tmp_r_try_rc.IsError()) { \
126 return _tmp_r_try_rc; \
127 } \
128 }
129
130/// Evaluates a boolean expression, and succeeds if that expression is true.
131#define R_SUCCEED_IF(expr) R_UNLESS(!(expr), RESULT_SUCCESS)
132
133namespace Common { 108namespace Common {
134 109
135[[nodiscard]] constexpr u32 MakeMagic(char a, char b, char c, char d) { 110[[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 43968386f..df3283fe3 100644
--- a/src/core/hle/result.h
+++ b/src/core/hle/result.h
@@ -358,3 +358,28 @@ ResultVal<std::remove_reference_t<Arg>> MakeResult(Arg&& arg) {
358 return CONCAT2(check_result_L, __LINE__); \ 358 return CONCAT2(check_result_L, __LINE__); \
359 } \ 359 } \
360 } while (false) 360 } while (false)
361
362#define R_SUCCEEDED(res) (res.IsSuccess())
363
364/// Evaluates a boolean expression, and succeeds if that expression is true.
365#define R_SUCCEED_IF(expr) R_UNLESS(!(expr), RESULT_SUCCESS)
366
367/// Evaluates a boolean expression, and returns a result unless that expression is true.
368#define R_UNLESS(expr, res) \
369 { \
370 if (!(expr)) { \
371 if (res.IsError()) { \
372 LOG_ERROR(Kernel, "Failed with result: {}", res.raw); \
373 } \
374 return res; \
375 } \
376 }
377
378/// Evaluates an expression that returns a result, and returns the result if it would fail.
379#define R_TRY(res_expr) \
380 { \
381 const auto _tmp_r_try_rc = (res_expr); \
382 if (_tmp_r_try_rc.IsError()) { \
383 return _tmp_r_try_rc; \
384 } \
385 }