 |
OR-Tools
9.2
|
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"
29#define RETURN_IF_ERROR(expr) \
33 if (const ::absl::Status status_macro_internal_adaptor = (expr); \
34 status_macro_internal_adaptor.ok()) { \
36 return ::util::StatusBuilder(status_macro_internal_adaptor)
48#define ASSIGN_OR_RETURN(lhs, rexpr) \
49 STATUS_MACROS_IMPL_ASSIGN_OR_RETURN_( \
50 STATUS_MACROS_IMPL_CONCAT_(_status_or_value, __COUNTER__), lhs, rexpr);
52#define STATUS_MACROS_IMPL_ASSIGN_OR_RETURN_(statusor, lhs, rexpr) \
53 auto statusor = (rexpr); \
54 RETURN_IF_ERROR(statusor.status()); \
55 STATUS_MACROS_IMPL_UNPARENTHESIS(lhs) = std::move(statusor).value()
58#define STATUS_MACROS_IMPL_UNPARENTHESIS_INNER(...) \
59 STATUS_MACROS_IMPL_UNPARENTHESIS_INNER_(__VA_ARGS__)
60#define STATUS_MACROS_IMPL_UNPARENTHESIS_INNER_(...) \
61 STATUS_MACROS_IMPL_VAN##__VA_ARGS__
62#define ISH(...) ISH __VA_ARGS__
63#define STATUS_MACROS_IMPL_VANISH
67#define STATUS_MACROS_IMPL_UNPARENTHESIS(...) \
68 STATUS_MACROS_IMPL_UNPARENTHESIS_INNER(ISH __VA_ARGS__)
71#define STATUS_MACROS_IMPL_CONCAT_INNER_(x, y) x##y
72#define STATUS_MACROS_IMPL_CONCAT_(x, y) STATUS_MACROS_IMPL_CONCAT_INNER_(x, y)