Prefix status macro implementation with MP_.
This makes it less likely for the implementation to conflict with other ASSIGN_OR_RETURN() and RETURN_IF_ERROR() implementations. PiperOrigin-RevId: 570726994
This commit is contained in:
		
							parent
							
								
									9bb042cc86
								
							
						
					
					
						commit
						7f1c17065a
					
				| 
						 | 
				
			
			@ -82,7 +82,7 @@
 | 
			
		|||
//     return absl::OkStatus();
 | 
			
		||||
//   }
 | 
			
		||||
#define MP_RETURN_IF_ERROR(expr)                                     \
 | 
			
		||||
  STATUS_MACROS_IMPL_ELSE_BLOCKER_                                   \
 | 
			
		||||
  MP_STATUS_MACROS_IMPL_ELSE_BLOCKER_                                \
 | 
			
		||||
  if (mediapipe::status_macro_internal::StatusAdaptorForMacros       \
 | 
			
		||||
          status_macro_internal_adaptor = {(expr), MEDIAPIPE_LOC}) { \
 | 
			
		||||
  } else /* NOLINT */                                                \
 | 
			
		||||
| 
						 | 
				
			
			@ -134,10 +134,10 @@
 | 
			
		|||
// Example: Logging the error on failure.
 | 
			
		||||
//   ASSIGN_OR_RETURN(ValueType value, MaybeGetValue(query), _.LogError());
 | 
			
		||||
//
 | 
			
		||||
#define ASSIGN_OR_RETURN(...)                                                \
 | 
			
		||||
  STATUS_MACROS_IMPL_GET_VARIADIC_((__VA_ARGS__,                             \
 | 
			
		||||
                                    STATUS_MACROS_IMPL_ASSIGN_OR_RETURN_3_,  \
 | 
			
		||||
                                    STATUS_MACROS_IMPL_ASSIGN_OR_RETURN_2_)) \
 | 
			
		||||
#define ASSIGN_OR_RETURN(...)                                  \
 | 
			
		||||
  MP_STATUS_MACROS_IMPL_GET_VARIADIC_(                         \
 | 
			
		||||
      (__VA_ARGS__, MP_STATUS_MACROS_IMPL_ASSIGN_OR_RETURN_3_, \
 | 
			
		||||
       MP_STATUS_MACROS_IMPL_ASSIGN_OR_RETURN_2_))             \
 | 
			
		||||
  (__VA_ARGS__)
 | 
			
		||||
 | 
			
		||||
// =================================================================
 | 
			
		||||
| 
						 | 
				
			
			@ -146,37 +146,39 @@
 | 
			
		|||
 | 
			
		||||
// MSVC incorrectly expands variadic macros, splice together a macro call to
 | 
			
		||||
// work around the bug.
 | 
			
		||||
#define STATUS_MACROS_IMPL_GET_VARIADIC_HELPER_(_1, _2, _3, NAME, ...) NAME
 | 
			
		||||
#define STATUS_MACROS_IMPL_GET_VARIADIC_(args) \
 | 
			
		||||
  STATUS_MACROS_IMPL_GET_VARIADIC_HELPER_ args
 | 
			
		||||
#define MP_STATUS_MACROS_IMPL_GET_VARIADIC_HELPER_(_1, _2, _3, NAME, ...) NAME
 | 
			
		||||
#define MP_STATUS_MACROS_IMPL_GET_VARIADIC_(args) \
 | 
			
		||||
  MP_STATUS_MACROS_IMPL_GET_VARIADIC_HELPER_ args
 | 
			
		||||
 | 
			
		||||
#define STATUS_MACROS_IMPL_ASSIGN_OR_RETURN_2_(lhs, rexpr)                  \
 | 
			
		||||
  STATUS_MACROS_IMPL_ASSIGN_OR_RETURN_(                                     \
 | 
			
		||||
      STATUS_MACROS_IMPL_CONCAT_(_status_or_value, __LINE__), lhs, rexpr,   \
 | 
			
		||||
      return mediapipe::StatusBuilder(                                      \
 | 
			
		||||
          std::move(STATUS_MACROS_IMPL_CONCAT_(_status_or_value, __LINE__)) \
 | 
			
		||||
              .status(),                                                    \
 | 
			
		||||
#define MP_STATUS_MACROS_IMPL_ASSIGN_OR_RETURN_2_(lhs, rexpr)                  \
 | 
			
		||||
  MP_STATUS_MACROS_IMPL_ASSIGN_OR_RETURN_(                                     \
 | 
			
		||||
      MP_STATUS_MACROS_IMPL_CONCAT_(_status_or_value, __LINE__), lhs, rexpr,   \
 | 
			
		||||
      return mediapipe::StatusBuilder(                                         \
 | 
			
		||||
          std::move(MP_STATUS_MACROS_IMPL_CONCAT_(_status_or_value, __LINE__)) \
 | 
			
		||||
              .status(),                                                       \
 | 
			
		||||
          MEDIAPIPE_LOC))
 | 
			
		||||
#define STATUS_MACROS_IMPL_ASSIGN_OR_RETURN_3_(lhs, rexpr, error_expression) \
 | 
			
		||||
  STATUS_MACROS_IMPL_ASSIGN_OR_RETURN_(                                      \
 | 
			
		||||
      STATUS_MACROS_IMPL_CONCAT_(_status_or_value, __LINE__), lhs, rexpr,    \
 | 
			
		||||
      mediapipe::StatusBuilder _(                                            \
 | 
			
		||||
          std::move(STATUS_MACROS_IMPL_CONCAT_(_status_or_value, __LINE__))  \
 | 
			
		||||
              .status(),                                                     \
 | 
			
		||||
          MEDIAPIPE_LOC);                                                    \
 | 
			
		||||
      (void)_; /* error_expression is allowed to not use this variable */    \
 | 
			
		||||
#define MP_STATUS_MACROS_IMPL_ASSIGN_OR_RETURN_3_(lhs, rexpr,                  \
 | 
			
		||||
                                                  error_expression)            \
 | 
			
		||||
  MP_STATUS_MACROS_IMPL_ASSIGN_OR_RETURN_(                                     \
 | 
			
		||||
      MP_STATUS_MACROS_IMPL_CONCAT_(_status_or_value, __LINE__), lhs, rexpr,   \
 | 
			
		||||
      mediapipe::StatusBuilder _(                                              \
 | 
			
		||||
          std::move(MP_STATUS_MACROS_IMPL_CONCAT_(_status_or_value, __LINE__)) \
 | 
			
		||||
              .status(),                                                       \
 | 
			
		||||
          MEDIAPIPE_LOC);                                                      \
 | 
			
		||||
      (void)_; /* error_expression is allowed to not use this variable */      \
 | 
			
		||||
      return (error_expression))
 | 
			
		||||
#define STATUS_MACROS_IMPL_ASSIGN_OR_RETURN_(statusor, lhs, rexpr, \
 | 
			
		||||
                                             error_expression)     \
 | 
			
		||||
  auto statusor = (rexpr);                                         \
 | 
			
		||||
  if (ABSL_PREDICT_FALSE(!statusor.ok())) {                        \
 | 
			
		||||
    error_expression;                                              \
 | 
			
		||||
  }                                                                \
 | 
			
		||||
#define MP_STATUS_MACROS_IMPL_ASSIGN_OR_RETURN_(statusor, lhs, rexpr, \
 | 
			
		||||
                                                error_expression)     \
 | 
			
		||||
  auto statusor = (rexpr);                                            \
 | 
			
		||||
  if (ABSL_PREDICT_FALSE(!statusor.ok())) {                           \
 | 
			
		||||
    error_expression;                                                 \
 | 
			
		||||
  }                                                                   \
 | 
			
		||||
  lhs = std::move(statusor).value()
 | 
			
		||||
 | 
			
		||||
// Internal helper for concatenating macro values.
 | 
			
		||||
#define STATUS_MACROS_IMPL_CONCAT_INNER_(x, y) x##y
 | 
			
		||||
#define STATUS_MACROS_IMPL_CONCAT_(x, y) STATUS_MACROS_IMPL_CONCAT_INNER_(x, y)
 | 
			
		||||
#define MP_STATUS_MACROS_IMPL_CONCAT_INNER_(x, y) x##y
 | 
			
		||||
#define MP_STATUS_MACROS_IMPL_CONCAT_(x, y) \
 | 
			
		||||
  MP_STATUS_MACROS_IMPL_CONCAT_INNER_(x, y)
 | 
			
		||||
 | 
			
		||||
// The GNU compiler emits a warning for code like:
 | 
			
		||||
//
 | 
			
		||||
| 
						 | 
				
			
			@ -189,9 +191,9 @@
 | 
			
		|||
//   if (do_expr) MP_RETURN_IF_ERROR(expr) << "Some message";
 | 
			
		||||
//
 | 
			
		||||
// The "switch (0) case 0:" idiom is used to suppress this.
 | 
			
		||||
#define STATUS_MACROS_IMPL_ELSE_BLOCKER_ \
 | 
			
		||||
  switch (0)                             \
 | 
			
		||||
  case 0:                                \
 | 
			
		||||
#define MP_STATUS_MACROS_IMPL_ELSE_BLOCKER_ \
 | 
			
		||||
  switch (0)                                \
 | 
			
		||||
  case 0:                                   \
 | 
			
		||||
  default:  // NOLINT
 | 
			
		||||
 | 
			
		||||
namespace mediapipe {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user