 |
OR-Tools
9.3
|
Go to the documentation of this file.
14#ifndef OR_TOOLS_BASE_STATUS_MACROS_H_
15#define OR_TOOLS_BASE_STATUS_MACROS_H_
17#include "absl/status/status.h"
18#include "absl/status/statusor.h"
27#define RETURN_IF_ERROR(expr) \
31 if (const ::absl::Status status_macro_internal_adaptor = (expr); \
32 status_macro_internal_adaptor.ok()) { \
34 return ::util::StatusBuilder(status_macro_internal_adaptor)
46#define ASSIGN_OR_RETURN(lhs, rexpr) \
47 STATUS_MACROS_IMPL_ASSIGN_OR_RETURN_( \
48 STATUS_MACROS_IMPL_CONCAT_(_status_or_value, __COUNTER__), lhs, rexpr);
50#define STATUS_MACROS_IMPL_ASSIGN_OR_RETURN_(statusor, lhs, rexpr) \
51 auto statusor = (rexpr); \
52 RETURN_IF_ERROR(statusor.status()); \
53 STATUS_MACROS_IMPL_UNPARENTHESIS(lhs) = std::move(statusor).value()
56#define STATUS_MACROS_IMPL_UNPARENTHESIS_INNER(...) \
57 STATUS_MACROS_IMPL_UNPARENTHESIS_INNER_(__VA_ARGS__)
58#define STATUS_MACROS_IMPL_UNPARENTHESIS_INNER_(...) \
59 STATUS_MACROS_IMPL_VAN##__VA_ARGS__
60#define ISH(...) ISH __VA_ARGS__
61#define STATUS_MACROS_IMPL_VANISH
65#define STATUS_MACROS_IMPL_UNPARENTHESIS(...) \
66 STATUS_MACROS_IMPL_UNPARENTHESIS_INNER(ISH __VA_ARGS__)
69#define STATUS_MACROS_IMPL_CONCAT_INNER_(x, y) x##y
70#define STATUS_MACROS_IMPL_CONCAT_(x, y) STATUS_MACROS_IMPL_CONCAT_INNER_(x, y)