blob: 580f1a5bbd12b119dc46e8f641de6dce4c2f2ba8 [file] [log] [blame] [edit]
#ifndef THIRD_PARTY_MILOTIC_INTERNAL_CC_PROXY_UTILS_STATUS_MACROS_H_
#define THIRD_PARTY_MILOTIC_INTERNAL_CC_PROXY_UTILS_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 // THIRD_PARTY_MILOTIC_INTERNAL_CC_PROXY_UTILS_STATUS_MACROS_H_