 |
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 = (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);