| #ifndef PRODUCTION_SUSHID_SAFEPOWER_AGENT_BMC_STATUS_MACROS_H_ |
| #define PRODUCTION_SUSHID_SAFEPOWER_AGENT_BMC_STATUS_MACROS_H_ |
| |
| #define RETURN_IF_ERROR(expr) \ |
| do { \ |
| if (auto status = (expr); !status.ok()) { \ |
| return status; \ |
| } \ |
| } while (0) |
| |
| #define ASSIGN_OR_RETURN_CT(lhs, expr, ct) \ |
| decltype(expr) status_or_##ct; \ |
| do { \ |
| status_or_##ct = (expr); \ |
| if (!status_or_##ct.ok()) { \ |
| return status_or_##ct.status(); \ |
| } \ |
| } while (0); \ |
| lhs = std::move(status_or_##ct).value() |
| |
| #define ASSIGN_OR_RETURN_CT_pre(lhs, exp, ct) \ |
| ASSIGN_OR_RETURN_CT(lhs, exp, ct) |
| |
| #define ASSIGN_OR_RETURN(lhs, expr ) \ |
| ASSIGN_OR_RETURN_CT_pre(lhs, expr, __COUNTER__ ) |
| |
| |
| #endif // PRODUCTION_SUSHID_SAFEPOWER_AGENT_BMC_STATUS_MACROS_H_ |