blob: 5bd53139fd1b9b14613928077e232cda7f9622c7 [file] [log] [blame]
#ifndef PRODUCTION_BORG_MGMT_NODE_PROXY_SAFEPOWER_SAFEPOWER_AGENT_BMC_STATUS_MACROS_H_
#define PRODUCTION_BORG_MGMT_NODE_PROXY_SAFEPOWER_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_BORG_MGMT_NODE_PROXY_SAFEPOWER_SAFEPOWER_AGENT_BMC_STATUS_MACROS_H_