 |
OR-Tools
9.1
|
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); 61 #endif // OR_TOOLS_BASE_STATUS_MACROS_H_