blob: 6d5c1e71fb8924b103205d8a7c7b1665a3f0121a [file] [log] [blame]
#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_