| /* |
| * Copyright (c) 2022, Alliance for Open Media. All rights reserved |
| * |
| * This source code is subject to the terms of the BSD 3-Clause Clear License |
| * and the Alliance for Open Media Patent License 1.0. If the BSD 3-Clause Clear |
| * License was not distributed with this source code in the LICENSE file, you |
| * can obtain it at www.aomedia.org/license/software-license/bsd-3-c-c. If the |
| * Alliance for Open Media Patent License 1.0 was not distributed with this |
| * source code in the PATENTS file, you can obtain it at |
| * www.aomedia.org/license/patent. |
| */ |
| #ifndef COMMON_UTILS_MACROS_H_ |
| #define COMMON_UTILS_MACROS_H_ |
| |
| namespace iamf_tools { |
| |
| // For propagating errors when calling a function. |
| #define RETURN_IF_NOT_OK(...) \ |
| do { \ |
| absl::Status _status = (__VA_ARGS__); \ |
| if (!_status.ok()) return _status; \ |
| } while (0) |
| |
| // For propagating errors when calling a function, but ignoring errors when |
| // built with `-DIGNORE_ERRORS_USE_ONLY_FOR_IAMF_TEST_SUITE`. Beware that |
| // defining `IGNORE_ERRORS_USE_ONLY_FOR_IAMF_TEST_SUITE` is not thoroughly |
| // tested and may result in unexpected behavior. This define should only be used |
| // when creating test files which intentionally violate the IAMF spec. |
| #ifdef IGNORE_ERRORS_USE_ONLY_FOR_IAMF_TEST_SUITE |
| #define MAYBE_RETURN_IF_NOT_OK(...) \ |
| do { \ |
| (__VA_ARGS__).IgnoreError(); \ |
| } while (0) |
| #else |
| #define MAYBE_RETURN_IF_NOT_OK(...) RETURN_IF_NOT_OK(__VA_ARGS__) |
| #endif |
| |
| } // namespace iamf_tools |
| |
| #endif // COMMON_UTILS_MACROS_H_ |