Google OR-Tools v9.11
a fast and portable software suite for combinatorial optimization
Loading...
Searching...
No Matches
status_macros.h File Reference
#include "absl/status/status.h"
#include "absl/status/statusor.h"
#include "ortools/base/status_builder.h"

Go to the source code of this file.

Macros

#define RETURN_IF_ERROR(expr)
 
#define ASSIGN_OR_RETURN(lhs, rexpr)
 
#define STATUS_MACROS_IMPL_ASSIGN_OR_RETURN_(statusor, lhs, rexpr)
 
#define STATUS_MACROS_IMPL_UNPARENTHESIS_INNER(...)
 Internal helpers for macro expansion.
 
#define STATUS_MACROS_IMPL_UNPARENTHESIS_INNER_(...)
 
#define ISH(...)
 
#define STATUS_MACROS_IMPL_VANISH
 
#define STATUS_MACROS_IMPL_UNPARENTHESIS(...)
 
#define STATUS_MACROS_IMPL_CONCAT_INNER_(x, y)
 Internal helper for concatenating macro values.
 
#define STATUS_MACROS_IMPL_CONCAT_(x, y)
 

Macro Definition Documentation

◆ ASSIGN_OR_RETURN

#define ASSIGN_OR_RETURN ( lhs,
rexpr )
Value:
STATUS_MACROS_IMPL_CONCAT_(_status_or_value, __COUNTER__), lhs, rexpr);
#define STATUS_MACROS_IMPL_CONCAT_(x, y)
#define STATUS_MACROS_IMPL_ASSIGN_OR_RETURN_(statusor, lhs, rexpr)

Executes an expression that returns an absl::StatusOr, extracting its value into the variable defined by lhs (or returning on error).

Example: Assigning to an existing value ValueType value; ASSIGN_OR_RETURN(value, MaybeGetValue(arg)); ASSIGN_OR_RETURN((auto [key, val]), MaybeGetValue(arg));

Warning
ASSIGN_OR_RETURN expands into multiple statements; it cannot be used in a single statement (e.g. as the body of an if statement without {})!

Definition at line 46 of file status_macros.h.

◆ ISH

#define ISH ( ...)
Value:
ISH __VA_ARGS__
#define ISH(...)

Definition at line 60 of file status_macros.h.

◆ RETURN_IF_ERROR

#define RETURN_IF_ERROR ( expr)
Value:
switch (0) \
case 0: \
default: \
if (const ::absl::Status status_macro_internal_adaptor = (expr); \
status_macro_internal_adaptor.ok()) { \
} else /* NOLINT */ \
return ::util::StatusBuilder(status_macro_internal_adaptor)

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Run a command that returns a absl::Status. If the called code returns an error status, return that status up out of this method too.

Example: RETURN_IF_ERROR(DoThings(4)); RETURN_IF_ERROR(DoThings(5)) << "Additional error context";

Definition at line 27 of file status_macros.h.

◆ STATUS_MACROS_IMPL_ASSIGN_OR_RETURN_

#define STATUS_MACROS_IMPL_ASSIGN_OR_RETURN_ ( statusor,
lhs,
rexpr )
Value:
auto statusor = (rexpr); \
RETURN_IF_ERROR(statusor.status()); \
STATUS_MACROS_IMPL_UNPARENTHESIS(lhs) = std::move(statusor).value()

Definition at line 50 of file status_macros.h.

◆ STATUS_MACROS_IMPL_CONCAT_

#define STATUS_MACROS_IMPL_CONCAT_ ( x,
y )
Value:
IntegerValue y
#define STATUS_MACROS_IMPL_CONCAT_INNER_(x, y)
Internal helper for concatenating macro values.
const Variable x
Definition qp_tests.cc:127

Definition at line 70 of file status_macros.h.

◆ STATUS_MACROS_IMPL_CONCAT_INNER_

#define STATUS_MACROS_IMPL_CONCAT_INNER_ ( x,
y )
Value:
x##y

Internal helper for concatenating macro values.

Definition at line 69 of file status_macros.h.

◆ STATUS_MACROS_IMPL_UNPARENTHESIS

#define STATUS_MACROS_IMPL_UNPARENTHESIS ( ...)
Value:
#define STATUS_MACROS_IMPL_UNPARENTHESIS_INNER(...)
Internal helpers for macro expansion.

If the input is parenthesized, removes the parentheses. Otherwise expands to the input unchanged.

Definition at line 65 of file status_macros.h.

◆ STATUS_MACROS_IMPL_UNPARENTHESIS_INNER

#define STATUS_MACROS_IMPL_UNPARENTHESIS_INNER ( ...)
Value:
#define STATUS_MACROS_IMPL_UNPARENTHESIS_INNER_(...)

Internal helpers for macro expansion.

Definition at line 56 of file status_macros.h.

◆ STATUS_MACROS_IMPL_UNPARENTHESIS_INNER_

#define STATUS_MACROS_IMPL_UNPARENTHESIS_INNER_ ( ...)
Value:
STATUS_MACROS_IMPL_VAN##__VA_ARGS__

Definition at line 58 of file status_macros.h.

◆ STATUS_MACROS_IMPL_VANISH

#define STATUS_MACROS_IMPL_VANISH

Definition at line 61 of file status_macros.h.