 |
OR-Tools
9.0
|
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 = (expr); status.ok()) { \
35 return ::util::StatusBuilder(status)
38 #define STATUS_MACROS_CONCAT_NAME_INNER(x, y) x##y
39 #define STATUS_MACROS_CONCAT_NAME(x, y) STATUS_MACROS_CONCAT_NAME_INNER(x, y)
41 #define ASSIGN_OR_RETURN_IMPL(statusor, lhs, rexpr) \
42 auto statusor = (rexpr); \
43 RETURN_IF_ERROR(statusor.status()); \
44 lhs = *std::move(statusor)
55 #define ASSIGN_OR_RETURN(lhs, rexpr) \
56 ASSIGN_OR_RETURN_IMPL( \
57 STATUS_MACROS_CONCAT_NAME(_status_or_value, __COUNTER__), lhs, rexpr);